From b0084fb86f18bcb7c212573a87299d4cbba9e68b Mon Sep 17 00:00:00 2001 From: Roberto Scolaro Date: Tue, 10 Oct 2023 14:16:25 +0000 Subject: [PATCH] update(driver/modern_bpf): vmlinux + overlay definitions 5.15.0-86-generic s390x Signed-off-by: Roberto Scolaro --- driver/modern_bpf/definitions/s390x/overlay.h | 299 + driver/modern_bpf/definitions/s390x/vmlinux.h | 131953 +++++++-------- driver/modern_bpf/definitions/vmlinux.h | 1 + 3 files changed, 60752 insertions(+), 71501 deletions(-) create mode 100644 driver/modern_bpf/definitions/s390x/overlay.h diff --git a/driver/modern_bpf/definitions/s390x/overlay.h b/driver/modern_bpf/definitions/s390x/overlay.h new file mode 100644 index 00000000000..eed9255279b --- /dev/null +++ b/driver/modern_bpf/definitions/s390x/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 S390: 5.15.0-86-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 S390: 5.15.0-86-generic ===========================*/ + +#ifndef BPF_NO_PRESERVE_ACCESS_INDEX +#pragma clang attribute pop +#endif + +#endif /* __OVERLAY_H__ */ diff --git a/driver/modern_bpf/definitions/s390x/vmlinux.h b/driver/modern_bpf/definitions/s390x/vmlinux.h index e739ac893fc..da364b7298f 100644 --- a/driver/modern_bpf/definitions/s390x/vmlinux.h +++ b/driver/modern_bpf/definitions/s390x/vmlinux.h @@ -5,7 +5,7 @@ #pragma clang attribute push (__attribute__((preserve_access_index)), apply_to = record) #endif -/*=============================== ARCH S390: 5.18.11-100.fc35.s390x ===========================*/ +/*=============================== ARCH S390: 5.15.0-86-generic ===========================*/ typedef signed char __s8; @@ -114,8 +114,6 @@ typedef __kernel_ssize_t ssize_t; typedef s32 int32_t; -typedef u16 uint16_t; - typedef u32 uint32_t; typedef u64 sector_t; @@ -159,6 +157,205 @@ struct callback_head { void (*func)(struct callback_head *); }; +struct kernel_symbol { + long unsigned int value; + const char *name; + const char *namespace; +}; + +typedef int (*initcall_t)(); + +typedef initcall_t initcall_entry_t; + +struct lock_class_key {}; + +struct fs_context; + +struct fs_parameter_spec; + +struct dentry; + +struct super_block; + +struct module; + +struct file_system_type { + const char *name; + int fs_flags; + int (*init_fs_context)(struct fs_context *); + const struct fs_parameter_spec *parameters; + struct dentry * (*mount)(struct file_system_type *, int, const char *, void *); + void (*kill_sb)(struct super_block *); + struct module *owner; + struct file_system_type *next; + struct hlist_head fs_supers; + struct lock_class_key s_lock_key; + struct lock_class_key s_umount_key; + struct lock_class_key s_vfs_rename_key; + struct lock_class_key s_writers_key[3]; + struct lock_class_key i_lock_key; + struct lock_class_key i_mutex_key; + struct lock_class_key invalidate_lock_key; + struct lock_class_key i_mutex_dir_key; +}; + +struct obs_kernel_param { + const char *str; + int (*setup_func)(char *); + int early; +}; + +typedef struct { + int lock; +} arch_spinlock_t; + +typedef struct { + int cnts; + arch_spinlock_t wait; +} arch_rwlock_t; + +struct lockdep_map {}; + +struct raw_spinlock { + arch_spinlock_t raw_lock; +}; + +typedef struct raw_spinlock raw_spinlock_t; + +struct spinlock { + union { + struct raw_spinlock rlock; + }; +}; + +typedef struct spinlock spinlock_t; + +typedef struct { + arch_rwlock_t raw_lock; +} rwlock_t; + +struct ratelimit_state { + raw_spinlock_t lock; + int interval; + int burst; + int printed; + int missed; + long unsigned int begin; + long unsigned int flags; +}; + +struct jump_entry { + s32 code; + s32 target; + long int key; +}; + +struct static_key_mod; + +struct static_key { + atomic_t enabled; + union { + long unsigned int type; + struct jump_entry *entries; + struct static_key_mod *next; + }; +}; + +struct static_key_true { + struct static_key key; +}; + +struct static_key_false { + struct static_key key; +}; + +struct _ddebug { + const char *modname; + const char *function; + const char *filename; + const char *format; + unsigned int lineno: 18; + unsigned int flags: 8; + union { + struct static_key_true dd_key_true; + struct static_key_false dd_key_false; + } key; +}; + +typedef void *fl_owner_t; + +struct file; + +struct kiocb; + +struct iov_iter; + +struct dir_context; + +struct poll_table_struct; + +struct vm_area_struct; + +struct inode; + +struct file_lock; + +struct page; + +struct pipe_inode_info; + +struct seq_file; + +struct file_operations { + struct module *owner; + loff_t (*llseek)(struct file *, loff_t, int); + ssize_t (*read)(struct file *, char *, size_t, loff_t *); + ssize_t (*write)(struct file *, const char *, size_t, loff_t *); + ssize_t (*read_iter)(struct kiocb *, struct iov_iter *); + ssize_t (*write_iter)(struct kiocb *, struct iov_iter *); + int (*iopoll)(struct kiocb *, bool); + int (*iterate)(struct file *, struct dir_context *); + int (*iterate_shared)(struct file *, struct dir_context *); + __poll_t (*poll)(struct file *, struct poll_table_struct *); + long int (*unlocked_ioctl)(struct file *, unsigned int, long unsigned int); + long int (*compat_ioctl)(struct file *, unsigned int, long unsigned int); + int (*mmap)(struct file *, struct vm_area_struct *); + long unsigned int mmap_supported_flags; + int (*open)(struct inode *, struct file *); + int (*flush)(struct file *, fl_owner_t); + int (*release)(struct inode *, struct file *); + int (*fsync)(struct file *, loff_t, loff_t, int); + int (*fasync)(int, struct file *, int); + int (*lock)(struct file *, int, struct file_lock *); + ssize_t (*sendpage)(struct file *, struct page *, int, size_t, loff_t *, int); + long unsigned int (*get_unmapped_area)(struct file *, long unsigned int, long unsigned int, long unsigned int, long unsigned int); + int (*check_flags)(int); + int (*setfl)(struct file *, long unsigned int); + int (*flock)(struct file *, int, struct file_lock *); + ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); + ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); + int (*setlease)(struct file *, long int, struct file_lock **, void **); + long int (*fallocate)(struct file *, int, loff_t, loff_t); + void (*show_fdinfo)(struct seq_file *, struct file *); + ssize_t (*copy_file_range)(struct file *, loff_t, struct file *, loff_t, size_t, unsigned int); + loff_t (*remap_file_range)(struct file *, loff_t, struct file *, loff_t, loff_t, unsigned int); + int (*fadvise)(struct file *, loff_t, loff_t, int); +}; + +struct static_call_key { + void *func; +}; + +enum system_states { + SYSTEM_BOOTING = 0, + SYSTEM_SCHEDULING = 1, + SYSTEM_RUNNING = 2, + SYSTEM_HALT = 3, + SYSTEM_POWER_OFF = 4, + SYSTEM_RESTART = 5, + SYSTEM_SUSPEND = 6, +}; + typedef __s64 time64_t; struct __kernel_timespec { @@ -171,12 +368,6 @@ struct timespec64 { long int tv_nsec; }; -struct kernel_symbol { - long unsigned int value; - const char *name; - const char *namespace; -}; - typedef union { float f; double d; @@ -213,7 +404,8 @@ struct tpi_info { u32 adapter_IO: 1; u32 directed_irq: 1; u32 isc: 3; - short: 12; + short: 11; + char: 1; u32 type: 3; }; @@ -237,7 +429,6 @@ struct pt_regs { }; long unsigned int flags; long unsigned int cr1; - long unsigned int last_break; }; struct per_regs { @@ -252,31 +443,6 @@ struct per_event { unsigned char paid; }; -struct jump_entry { - s32 code; - s32 target; - long int key; -}; - -struct static_key_mod; - -struct static_key { - atomic_t enabled; - union { - long unsigned int type; - struct jump_entry *entries; - struct static_key_mod *next; - }; -}; - -struct static_key_true { - struct static_key key; -}; - -struct static_key_false { - struct static_key key; -}; - struct pgm_tdb { u64 data[32]; }; @@ -294,22 +460,12 @@ struct lowcore { __u32 ext_int_code_addr; }; __u32 svc_int_code; - union { - struct { - __u16 pgm_ilc; - __u16 pgm_code; - }; - __u32 pgm_int_code; - }; + __u16 pgm_ilc; + __u16 pgm_code; __u32 data_exc_code; __u16 mon_class_num; - union { - struct { - __u8 per_code; - __u8 per_atmid; - }; - __u16 per_code_combined; - }; + __u8 per_code; + __u8 per_atmid; __u64 per_address; __u8 exc_access_id; __u8 per_access_id; @@ -335,7 +491,7 @@ struct lowcore { __u32 external_damage_code; __u64 failing_storage_address; __u8 pad_0x0100[16]; - __u64 pgm_last_break; + __u64 breaking_event_addr; __u8 pad_0x0118[8]; psw_t restart_old_psw; psw_t external_old_psw; @@ -356,8 +512,8 @@ struct lowcore { __u64 cpu_flags; psw_t return_psw; psw_t return_mcck_psw; - __u64 last_break; __u64 sys_enter_timer; + __u8 pad_0x02b8[8]; __u64 mcck_enter_timer; __u64 exit_timer; __u64 user_timer; @@ -398,9 +554,10 @@ struct lowcore { __u64 machine_flags; __u64 gmap; __u8 pad_0x03d8[40]; + __u16 br_r1_trampoline; __u32 return_lpswe; __u32 return_mcck_lpswe; - __u8 pad_0x040a[2552]; + __u8 pad_0x040a[2550]; __u64 ipib; __u32 ipib_checksum; __u64 vmcore_info; @@ -420,7 +577,7 @@ struct lowcore { __u32 tod_progreg_save_area; __u32 cpu_timer_save_area[2]; __u32 clock_comp_save_area[2]; - __u64 last_break_save_area; + __u8 pad_0x1338[8]; __u32 access_regs_save_area[16]; __u64 cregs_save_area[16]; __u8 pad_0x1400[1024]; @@ -428,149 +585,6 @@ struct lowcore { __u8 pad_0x1900[1792]; } __attribute__((packed)); -typedef int (*initcall_t)(); - -typedef initcall_t initcall_entry_t; - -struct lock_class_key {}; - -struct fs_context; - -struct fs_parameter_spec; - -struct dentry; - -struct super_block; - -struct module; - -struct file_system_type { - const char *name; - int fs_flags; - int (*init_fs_context)(struct fs_context *); - const struct fs_parameter_spec *parameters; - struct dentry * (*mount)(struct file_system_type *, int, const char *, void *); - void (*kill_sb)(struct super_block *); - struct module *owner; - struct file_system_type *next; - struct hlist_head fs_supers; - struct lock_class_key s_lock_key; - struct lock_class_key s_umount_key; - struct lock_class_key s_vfs_rename_key; - struct lock_class_key s_writers_key[3]; - struct lock_class_key i_lock_key; - struct lock_class_key i_mutex_key; - struct lock_class_key invalidate_lock_key; - struct lock_class_key i_mutex_dir_key; -}; - -struct obs_kernel_param { - const char *str; - int (*setup_func)(char *); - int early; -}; - -typedef struct { - int lock; -} arch_spinlock_t; - -typedef struct { - int cnts; - arch_spinlock_t wait; -} arch_rwlock_t; - -struct lockdep_map {}; - -struct raw_spinlock { - arch_spinlock_t raw_lock; -}; - -typedef struct raw_spinlock raw_spinlock_t; - -struct ratelimit_state { - raw_spinlock_t lock; - int interval; - int burst; - int printed; - int missed; - long unsigned int begin; - long unsigned int flags; -}; - -struct _ddebug { - const char *modname; - const char *function; - const char *filename; - const char *format; - unsigned int lineno: 18; - unsigned int flags: 8; - union { - struct static_key_true dd_key_true; - struct static_key_false dd_key_false; - } key; -}; - -typedef void *fl_owner_t; - -struct file; - -struct kiocb; - -struct iov_iter; - -struct io_comp_batch; - -struct dir_context; - -struct poll_table_struct; - -struct vm_area_struct; - -struct inode; - -struct file_lock; - -struct page; - -struct pipe_inode_info; - -struct seq_file; - -struct file_operations { - struct module *owner; - loff_t (*llseek)(struct file *, loff_t, int); - ssize_t (*read)(struct file *, char *, size_t, loff_t *); - ssize_t (*write)(struct file *, const char *, size_t, loff_t *); - ssize_t (*read_iter)(struct kiocb *, struct iov_iter *); - ssize_t (*write_iter)(struct kiocb *, struct iov_iter *); - int (*iopoll)(struct kiocb *, struct io_comp_batch *, unsigned int); - int (*iterate)(struct file *, struct dir_context *); - int (*iterate_shared)(struct file *, struct dir_context *); - __poll_t (*poll)(struct file *, struct poll_table_struct *); - long int (*unlocked_ioctl)(struct file *, unsigned int, long unsigned int); - long int (*compat_ioctl)(struct file *, unsigned int, long unsigned int); - int (*mmap)(struct file *, struct vm_area_struct *); - long unsigned int mmap_supported_flags; - int (*open)(struct inode *, struct file *); - int (*flush)(struct file *, fl_owner_t); - int (*release)(struct inode *, struct file *); - int (*fsync)(struct file *, loff_t, loff_t, int); - int (*fasync)(int, struct file *, int); - int (*lock)(struct file *, int, struct file_lock *); - ssize_t (*sendpage)(struct file *, struct page *, int, size_t, loff_t *, int); - long unsigned int (*get_unmapped_area)(struct file *, long unsigned int, long unsigned int, long unsigned int, long unsigned int); - int (*check_flags)(int); - int (*flock)(struct file *, int, struct file_lock *); - ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); - ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); - int (*setlease)(struct file *, long int, struct file_lock **, void **); - long int (*fallocate)(struct file *, int, loff_t, loff_t); - void (*show_fdinfo)(struct seq_file *, struct file *); - ssize_t (*copy_file_range)(struct file *, loff_t, struct file *, loff_t, size_t, unsigned int); - loff_t (*remap_file_range)(struct file *, loff_t, struct file *, loff_t, loff_t, unsigned int); - int (*fadvise)(struct file *, loff_t, loff_t, int); -}; - struct bug_entry { int bug_addr_disp; int file_disp; @@ -653,7 +667,6 @@ typedef pte_t *pgtable_t; struct thread_info { long unsigned int flags; long unsigned int syscall_work; - unsigned int cpu; }; struct refcount_struct { @@ -828,7 +841,6 @@ struct sched_statistics { s64 sum_sleep_runtime; u64 block_start; u64 block_max; - s64 sum_block_runtime; u64 exec_max; u64 slice_max; u64 nr_migrations_cold; @@ -845,7 +857,8 @@ struct sched_statistics { u64 nr_wakeups_affine_attempts; u64 nr_wakeups_passive; u64 nr_wakeups_idle; - u64 core_forceidle_sum; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -954,14 +967,6 @@ struct syscall_user_dispatch { bool on_dispatch; }; -struct spinlock { - union { - struct raw_spinlock rlock; - }; -}; - -typedef struct spinlock spinlock_t; - struct wake_q_node { struct wake_q_node *next; }; @@ -1013,13 +1018,6 @@ struct page_frag { __u32 size; }; -struct latency_record { - long unsigned int backtrace[12]; - unsigned int count; - long unsigned int time; - long unsigned int max; -}; - struct kmap_ctrl {}; struct timer_list { @@ -1141,8 +1139,6 @@ struct rseq; struct task_delay_info; -struct kunit; - struct ftrace_ret_stack; struct mem_cgroup; @@ -1166,6 +1162,7 @@ struct task_struct { unsigned int ptrace; int on_cpu; struct __call_single_node wake_entry; + unsigned int cpu; unsigned int wakee_flips; long unsigned int wakee_flip_decay_ts; struct task_struct *last_wakee; @@ -1176,7 +1173,7 @@ struct task_struct { int static_prio; int normal_prio; unsigned int rt_priority; - long: 32; + const struct sched_class *sched_class; long: 64; long: 64; long: 64; @@ -1196,7 +1193,6 @@ struct task_struct { struct sched_entity se; struct sched_rt_entity rt; struct sched_dl_entity dl; - const struct sched_class *sched_class; struct rb_node core_node; long unsigned int core_cookie; unsigned int core_occupation; @@ -1224,6 +1220,7 @@ struct task_struct { long: 64; long: 64; long: 64; + long: 64; struct sched_statistics stats; struct hlist_head preempt_notifiers; unsigned int btrace_seq; @@ -1235,11 +1232,6 @@ struct task_struct { void *migration_pending; short unsigned int migration_disabled; short unsigned int migration_flags; - long unsigned int rcu_tasks_nvcsw; - u8 rcu_tasks_holdout; - u8 rcu_tasks_idx; - int rcu_tasks_idle_cpu; - struct list_head rcu_tasks_holdout_list; int trc_reader_nesting; int trc_ipi_to_cpu; union rcu_special trc_reader_special; @@ -1263,7 +1255,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; @@ -1272,8 +1264,7 @@ struct task_struct { unsigned int frozen: 1; unsigned int use_memdelay: 1; unsigned int in_memstall: 1; - unsigned int in_page_owner: 1; - unsigned int in_eventfd_signal: 1; + unsigned int in_eventfd: 1; long unsigned int atomic_flags; struct restart_block restart_block; pid_t pid; @@ -1292,7 +1283,7 @@ struct task_struct { struct completion *vfork_done; int *set_child_tid; int *clear_child_tid; - void *worker_private; + void *pf_io_worker; u64 utime; u64 stime; u64 utimescaled; @@ -1314,6 +1305,8 @@ struct task_struct { struct nameidata *nameidata; struct sysv_sem sysvsem; struct sysv_shm sysvshm; + long unsigned int last_switch_count; + long unsigned int last_switch_time; struct fs_struct *fs; struct files_struct *files; struct io_uring_task *io_uring; @@ -1341,6 +1334,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; @@ -1401,11 +1395,8 @@ struct task_struct { int nr_dirtied; int nr_dirtied_pause; long unsigned int dirty_paused_when; - int latency_record_count; - struct latency_record latency_record[32]; u64 timer_slack_ns; u64 default_timer_slack_ns; - struct kunit *kunit_test; int curr_ret_stack; int curr_ret_depth; struct ftrace_ret_stack *ret_stack; @@ -1437,35 +1428,6 @@ struct task_struct { struct thread_struct thread; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 uid_gid_extent { @@ -1600,21 +1562,6 @@ struct kstat { u64 mnt_id; }; -struct static_call_key { - void *func; -}; - -enum system_states { - SYSTEM_BOOTING = 0, - SYSTEM_SCHEDULING = 1, - SYSTEM_FREEING_INITMEM = 2, - SYSTEM_RUNNING = 3, - SYSTEM_HALT = 4, - SYSTEM_POWER_OFF = 5, - SYSTEM_RESTART = 6, - SYSTEM_SUSPEND = 7, -}; - typedef struct cpumask cpumask_var_t[1]; struct userfaultfd_ctx; @@ -1623,8 +1570,6 @@ struct vm_userfaultfd_ctx { struct userfaultfd_ctx *ctx; }; -struct anon_vma_name; - struct anon_vma; struct vm_operations_struct; @@ -1639,32 +1584,22 @@ struct vm_area_struct { struct mm_struct *vm_mm; pgprot_t vm_page_prot; long unsigned int vm_flags; - union { - struct { - struct rb_node rb; - long unsigned int rb_subtree_last; - } shared; - struct anon_vma_name *anon_name; - }; + struct { + struct rb_node rb; + long unsigned int rb_subtree_last; + } shared; struct list_head anon_vma_chain; struct anon_vma *anon_vma; const struct vm_operations_struct *vm_ops; long unsigned int vm_pgoff; struct file *vm_file; + struct file *vm_prfile; void *vm_private_data; atomic_long_t swap_readahead_info; struct mempolicy *vm_policy; struct vm_userfaultfd_ctx vm_userfaultfd_ctx; }; -enum { - MM_FILEPAGES = 0, - MM_ANONPAGES = 1, - MM_SWAPENTS = 2, - MM_SHMEMPAGES = 3, - NR_MM_COUNTERS = 4, -}; - struct mm_rss_stat { atomic_long_t count[4]; }; @@ -1673,19 +1608,15 @@ struct address_space; struct page_pool; +struct kmem_cache; + struct dev_pagemap; struct page { long unsigned int flags; union { struct { - union { - struct list_head lru; - struct { - void *__filler; - unsigned int mlock_count; - }; - }; + struct list_head lru; struct address_space *mapping; long unsigned int index; long unsigned int private; @@ -1700,17 +1631,37 @@ struct page { atomic_long_t pp_frag_count; }; }; + struct { + union { + struct list_head slab_list; + struct { + struct page *next; + int pages; + int pobjects; + }; + }; + struct kmem_cache *slab_cache; + void *freelist; + union { + void *s_mem; + long unsigned int counters; + struct { + unsigned int inuse: 16; + unsigned int objects: 15; + unsigned int frozen: 1; + }; + }; + }; struct { long unsigned int compound_head; unsigned char compound_dtor; unsigned char compound_order; atomic_t compound_mapcount; - atomic_t compound_pincount; unsigned int compound_nr; }; struct { long unsigned int _compound_pad_1; - long unsigned int _compound_pad_2; + atomic_t hpage_pinned_refcount; struct list_head deferred_list; }; struct { @@ -1732,11 +1683,21 @@ struct page { union { atomic_t _mapcount; unsigned int page_type; + unsigned int active; + int units; }; atomic_t _refcount; long unsigned int memcg_data; }; +typedef void (*smp_call_func_t)(void *); + +struct __call_single_data { + struct __call_single_node node; + smp_call_func_t func; + void *info; +}; + struct runtime_instr_cb { __u64 rca; __u64 roa; @@ -1799,22 +1760,6 @@ struct gs_cb { __u64 gs_epl_a; }; -typedef struct { - arch_rwlock_t raw_lock; -} rwlock_t; - -enum refcount_saturation_type { - REFCOUNT_ADD_NOT_ZERO_OVF = 0, - REFCOUNT_ADD_OVF = 1, - REFCOUNT_ADD_UAF = 2, - REFCOUNT_SUB_UAF = 3, - REFCOUNT_DEC_LEAK = 4, -}; - -struct kref { - refcount_t refcount; -}; - struct wait_queue_entry; typedef int (*wait_queue_func_t)(struct wait_queue_entry *, unsigned int, int, void *); @@ -1872,6 +1817,8 @@ struct uprobes_state { struct linux_binfmt; +struct core_state; + struct kioctx_table; struct mmu_notifier_subscriptions; @@ -1922,6 +1869,7 @@ struct mm_struct { struct linux_binfmt *binfmt; mm_context_t context; long unsigned int flags; + struct core_state *core_state; spinlock_t ioctx_lock; struct kioctx_table *ioctx_table; struct task_struct *owner; @@ -1935,6 +1883,7 @@ struct mm_struct { struct uprobes_state uprobes_state; atomic_long_t hugetlb_usage; struct work_struct async_put_work; + u32 pasid; }; long unsigned int cpu_bitmap[0]; }; @@ -2188,8 +2137,6 @@ struct page_pool_params { enum dma_data_direction dma_dir; unsigned int max_len; unsigned int offset; - void (*init_callback)(struct page *, void *); - void *init_arg; }; struct pp_alloc_cache { @@ -2234,7 +2181,6 @@ struct ptr_ring { int consumer_head; int consumer_tail; spinlock_t consumer_lock; - long: 32; long: 64; long: 64; long: 64; @@ -2310,8 +2256,9 @@ struct page_pool { unsigned int frag_offset; struct page *frag_page; long int frag_users; - u32 xdp_mem_id; - long: 32; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -2387,25 +2334,48 @@ struct page_pool { long: 64; }; -struct folio { +struct vmem_altmap { + long unsigned int base_pfn; + const long unsigned int end_pfn; + const long unsigned int reserve; + long unsigned int free; + long unsigned int align; + long unsigned int alloc; +}; + +struct percpu_ref_data; + +struct percpu_ref { + long unsigned int percpu_count_ptr; + struct percpu_ref_data *data; +}; + +enum memory_type { + MEMORY_DEVICE_PRIVATE = 1, + MEMORY_DEVICE_FS_DAX = 2, + MEMORY_DEVICE_GENERIC = 3, + MEMORY_DEVICE_PCI_P2PDMA = 4, +}; + +struct range { + u64 start; + u64 end; +}; + +struct dev_pagemap_ops; + +struct dev_pagemap { + struct vmem_altmap altmap; + struct percpu_ref ref; + struct completion done; + enum memory_type type; + unsigned int flags; + const struct dev_pagemap_ops *ops; + void *owner; + int nr_range; union { - struct { - long unsigned int flags; - union { - struct list_head lru; - struct { - void *__filler; - unsigned int mlock_count; - }; - }; - struct address_space *mapping; - long unsigned int index; - void *private; - atomic_t _mapcount; - atomic_t _refcount; - long unsigned int memcg_data; - }; - struct page page; + struct range range; + struct range ranges[0]; }; }; @@ -2416,6 +2386,15 @@ struct path { struct dentry *dentry; }; +enum rw_hint { + WRITE_LIFE_NOT_SET = 0, + WRITE_LIFE_NONE = 1, + WRITE_LIFE_SHORT = 2, + WRITE_LIFE_MEDIUM = 3, + WRITE_LIFE_LONG = 4, + WRITE_LIFE_EXTREME = 5, +}; + enum pid_type { PIDTYPE_PID = 0, PIDTYPE_TGID = 1, @@ -2451,6 +2430,7 @@ struct file { struct inode *f_inode; const struct file_operations *f_op; spinlock_t f_lock; + enum rw_hint f_write_hint; atomic_long_t f_count; unsigned int f_flags; fmode_t f_mode; @@ -2468,16 +2448,12 @@ struct file { errseq_t f_sb_err; }; -struct anon_vma_name { - struct kref kref; - char name[0]; -}; - 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; }; @@ -2516,13 +2492,23 @@ struct mempolicy { short unsigned int mode; short unsigned int flags; nodemask_t nodes; - int home_node; union { nodemask_t cpuset_mems_allowed; nodemask_t user_nodemask; } w; }; +struct core_thread { + struct task_struct *task; + struct core_thread *next; +}; + +struct core_state { + atomic_t nr_threads; + struct core_thread dumper; + struct completion startup; +}; + struct linux_binprm; struct coredump_params; @@ -2555,7 +2541,6 @@ struct vm_fault { gfp_t gfp_mask; long unsigned int pgoff; long unsigned int address; - long unsigned int real_address; }; enum fault_flag flags; pmd_t *pmd; @@ -2629,15 +2614,13 @@ enum node_stat_item { NR_VMSCAN_IMMEDIATE = 30, NR_DIRTIED = 31, NR_WRITTEN = 32, - NR_THROTTLED_WRITTEN = 33, - NR_KERNEL_MISC_RECLAIMABLE = 34, - NR_FOLL_PIN_ACQUIRED = 35, - NR_FOLL_PIN_RELEASED = 36, - NR_KERNEL_STACK_KB = 37, - NR_PAGETABLE = 38, - NR_SWAPCACHE = 39, - PGPROMOTE_SUCCESS = 40, - NR_VM_NODE_STAT_ITEMS = 41, + NR_KERNEL_MISC_RECLAIMABLE = 33, + NR_FOLL_PIN_ACQUIRED = 34, + NR_FOLL_PIN_RELEASED = 35, + NR_KERNEL_STACK_KB = 36, + NR_PAGETABLE = 37, + NR_SWAPCACHE = 38, + NR_VM_NODE_STAT_ITEMS = 39, }; enum lru_list { @@ -2667,7 +2650,7 @@ struct per_cpu_pages; struct per_cpu_zonestat; struct zone { - long unsigned int _watermark[4]; + long unsigned int _watermark[3]; long unsigned int watermark_boost; long unsigned int nr_reserved_highatomic; long int lowmem_reserve[3]; @@ -2687,7 +2670,7 @@ struct zone { long unsigned int nr_isolate_pageblock; seqlock_t span_seqlock; int initialized; - long: 32; + long: 64; long: 64; long: 64; long: 64; @@ -2700,7 +2683,6 @@ struct zone { struct free_area free_area[11]; long unsigned int flags; spinlock_t lock; - long: 32; long: 64; long: 64; long: 64; @@ -2727,7 +2709,6 @@ struct zone { int compact_order_failed; bool compact_blockskip_flush; bool contiguous; - long: 16; long: 64; long: 64; long: 64; @@ -2788,6 +2769,12 @@ enum zone_type { __MAX_NR_ZONES = 3, }; +struct deferred_split { + spinlock_t split_queue_lock; + struct list_head split_queue; + long unsigned int split_queue_len; +}; + struct per_cpu_nodestat; struct pglist_data { @@ -2801,9 +2788,6 @@ struct pglist_data { int node_id; wait_queue_head_t kswapd_wait; wait_queue_head_t pfmemalloc_wait; - wait_queue_head_t reclaim_wait[4]; - atomic_t nr_writeback_throttled; - long unsigned int nr_reclaim_start; struct task_struct *kswapd; int kswapd_order; enum zone_type kswapd_highest_zoneidx; @@ -2829,25 +2813,8 @@ struct pglist_data { long: 64; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 zone_padding _pad1_; + struct deferred_split deferred_split_queue; struct lruvec __lruvec; long unsigned int flags; long: 64; @@ -2859,13 +2826,11 @@ struct pglist_data { long: 64; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - long: 64; struct zone_padding _pad2_; struct per_cpu_nodestat *per_cpu_nodestats; - atomic_long_t vm_stat[41]; + atomic_long_t vm_stat[39]; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -2898,7 +2863,7 @@ struct per_cpu_pages { int batch; short int free_factor; short int expire; - struct list_head lists[12]; + struct list_head lists[15]; }; struct per_cpu_zonestat { @@ -2909,7 +2874,7 @@ struct per_cpu_zonestat { struct per_cpu_nodestat { s8 stat_threshold; - s8 vm_node_stat_diff[41]; + s8 vm_node_stat_diff[39]; }; typedef struct pglist_data pg_data_t; @@ -3033,6 +2998,14 @@ struct rhashtable { atomic_t nelems; }; +enum refcount_saturation_type { + REFCOUNT_ADD_NOT_ZERO_OVF = 0, + REFCOUNT_ADD_OVF = 1, + REFCOUNT_ADD_UAF = 2, + REFCOUNT_SUB_UAF = 3, + REFCOUNT_DEC_LEAK = 4, +}; + struct iovec { void *iov_base; __kernel_size_t iov_len; @@ -3107,11 +3080,15 @@ struct wait_page_queue; struct kiocb { struct file *ki_filp; loff_t ki_pos; - void (*ki_complete)(struct kiocb *, long int); + void (*ki_complete)(struct kiocb *, long int, long int); void *private; int ki_flags; + u16 ki_hint; u16 ki_ioprio; - struct wait_page_queue *ki_waitq; + union { + unsigned int ki_cookie; + struct wait_page_queue *ki_waitq; + }; }; struct hlist_bl_node; @@ -3373,7 +3350,6 @@ struct list_lru { struct list_head list; int shrinker_id; bool memcg_aware; - struct xarray xa; }; struct super_operations; @@ -3388,6 +3364,8 @@ struct xattr_handler; struct fscrypt_operations; +struct fscrypt_keyring; + struct fsverity_operations; struct unicode_map; @@ -3415,7 +3393,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; @@ -3441,6 +3419,7 @@ struct super_block { struct mutex s_vfs_rename_mutex; const char *s_subtype; const struct dentry_operations *s_d_op; + int cleancache_poolid; struct shrinker s_shrink; atomic_long_t s_remove_count; atomic_long_t s_fsnotify_connectors; @@ -3455,7 +3434,9 @@ struct super_block { struct work_struct destroy_work; struct mutex s_sync_lock; int s_stack_depth; - long: 32; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -3524,13 +3505,6 @@ struct shrink_control { struct mem_cgroup *memcg; }; -struct percpu_ref_data; - -struct percpu_ref { - long unsigned int percpu_count_ptr; - struct percpu_ref_data *data; -}; - struct cgroup; struct cgroup_subsys; @@ -3604,10 +3578,16 @@ struct memcg_padding { }; struct memcg_vmstats { - long int state[46]; - long unsigned int events[80]; - long int state_pending[46]; - long unsigned int events_pending[80]; + long int state[42]; + long unsigned int events[96]; + long int state_pending[42]; + long unsigned int events_pending[96]; +}; + +enum memcg_kmem_state { + KMEM_NONE = 0, + KMEM_ALLOCATED = 1, + KMEM_ONLINE = 2, }; struct percpu_counter { @@ -3702,12 +3682,13 @@ struct mem_cgroup { long: 64; struct memcg_padding _pad1_; struct memcg_vmstats vmstats; - atomic_long_t memory_events[9]; - atomic_long_t memory_events_local[9]; + atomic_long_t memory_events[8]; + atomic_long_t memory_events_local[8]; long unsigned int socket_pressure; bool tcpmem_active; int tcpmem_pressure; int kmemcg_id; + enum memcg_kmem_state kmem_state; struct obj_cgroup *objcg; struct list_head objcg_list; long: 64; @@ -3722,6 +3703,16 @@ struct mem_cgroup { long: 64; 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 memcg_padding _pad2_; atomic_t moving_account; struct task_struct *move_lock_task; @@ -3731,6 +3722,7 @@ struct mem_cgroup { struct memcg_cgwb_frn cgwb_frn[4]; struct list_head event_list; spinlock_t event_list_lock; + struct deferred_split deferred_split_queue; struct mem_cgroup_per_node *nodeinfo[0]; long: 64; long: 64; @@ -3749,10 +3741,6 @@ struct mem_cgroup { long: 64; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - long: 64; }; struct list_lru_one { @@ -3760,9 +3748,15 @@ struct list_lru_one { long int nr_items; }; +struct list_lru_memcg { + struct callback_head rcu; + struct list_lru_one *lru[0]; +}; + struct list_lru_node { spinlock_t lock; struct list_lru_one lru; + struct list_lru_memcg *memcg_lrus; long int nr_items; long: 64; long: 64; @@ -3790,7 +3784,6 @@ struct list_lru_node { long: 64; long: 64; long: 64; - long: 64; }; struct pid_namespace; @@ -3806,8 +3799,6 @@ struct idr { unsigned int idr_next; }; -struct kmem_cache; - struct fs_pin; struct pid_namespace { @@ -4058,8 +4049,6 @@ struct pacct_struct { long unsigned int ac_majflt; }; -struct core_state; - struct tty_struct; struct autogroup; @@ -4079,10 +4068,9 @@ struct signal_struct { struct hlist_head multiprocess; int group_exit_code; int notify_count; - struct task_struct *group_exec_task; + struct task_struct *group_exit_task; int group_stop_count; unsigned int flags; - struct core_state *core_state; unsigned int is_child_subreaper: 1; unsigned int has_child_subreaper: 1; int posix_timer_id; @@ -4134,12 +4122,15 @@ struct signal_struct { struct rw_semaphore exec_update_lock; }; +enum { + TASK_COMM_LEN = 16, +}; + struct rseq { __u32 cpu_id_start; __u32 cpu_id; __u64 rseq_cs; __u32 flags; - long: 32; long: 64; }; @@ -4297,23 +4288,22 @@ struct bio_list { struct bio *tail; }; -struct request; - struct blk_plug { - struct request *mq_list; - struct request *cached_rq; - short unsigned int nr_ios; + struct list_head mq_list; + struct list_head cb_list; short unsigned int rq_count; bool multiple_queues; - bool has_elevator; bool nowait; - struct list_head cb_list; }; struct reclaim_state { long unsigned int reclaimed_slab; }; +struct kref { + refcount_t refcount; +}; + struct fprop_local_percpu { struct percpu_counter events; unsigned int period; @@ -4404,8 +4394,9 @@ struct io_cq; struct io_context { atomic_long_t refcount; atomic_t active_ref; - short unsigned int ioprio; + atomic_t nr_tasks; spinlock_t lock; + short unsigned int ioprio; struct xarray icq_tree; struct io_cq *icq_hint; struct hlist_head icq_list; @@ -4413,7 +4404,7 @@ struct io_context { }; struct css_set { - struct cgroup_subsys_state *subsys[12]; + struct cgroup_subsys_state *subsys[14]; refcount_t refcount; struct css_set *dom_cset; struct cgroup *dfl_cgrp; @@ -4422,12 +4413,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[12]; + 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; @@ -4455,6 +4447,10 @@ struct perf_event_groups { u64 index; }; +typedef struct { + atomic_long_t a; +} local_t; + struct pmu; struct perf_event_context { @@ -4469,7 +4465,6 @@ struct perf_event_context { struct list_head flexible_active; int nr_events; int nr_active; - int nr_user; int is_active; int nr_stat; int nr_freq; @@ -4487,13 +4482,14 @@ struct perf_event_context { int nr_cgroups; void *task_ctx_data; struct callback_head callback_head; + local_t nr_pending; }; struct task_delay_info { raw_spinlock_t lock; + unsigned int flags; u64 blkio_start; u64 blkio_delay; - u64 swapin_start; u64 swapin_delay; u32 blkio_count; u32 swapin_count; @@ -4501,41 +4497,8 @@ struct task_delay_info { u64 freepages_delay; u64 thrashing_start; u64 thrashing_delay; - u64 compact_start; - u64 compact_delay; u32 freepages_count; u32 thrashing_count; - u32 compact_count; -}; - -typedef void (*kunit_try_catch_func_t)(void *); - -struct kunit_try_catch { - struct kunit *test; - struct completion *try_completion; - int try_result; - kunit_try_catch_func_t try; - kunit_try_catch_func_t catch; - void *context; -}; - -enum kunit_status { - KUNIT_SUCCESS = 0, - KUNIT_FAILURE = 1, - KUNIT_SKIPPED = 2, -}; - -struct kunit { - void *priv; - const char *name; - char *log; - struct kunit_try_catch try_catch; - const void *param_value; - int param_index; - spinlock_t lock; - enum kunit_status status; - struct list_head resources; - char status_comment[256]; }; struct ftrace_ret_stack { @@ -4555,7 +4518,7 @@ struct kobject { struct list_head entry; struct kobject *parent; struct kset *kset; - const struct kobj_type *ktype; + struct kobj_type *ktype; struct kernfs_node *sd; struct kref kref; unsigned int state_initialized: 1; @@ -4575,6 +4538,36 @@ struct blk_integrity { unsigned char tag_size; }; +struct blk_rq_stat { + u64 mean; + u64 min; + u64 max; + u32 nr_samples; + 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, @@ -4602,6 +4595,7 @@ struct queue_limits { unsigned int io_opt; unsigned int max_discard_sectors; unsigned int max_hw_discard_sectors; + unsigned int max_write_same_sectors; unsigned int max_write_zeroes_sectors; unsigned int max_zone_append_sectors; unsigned int discard_granularity; @@ -4651,6 +4645,8 @@ struct bio_set { struct hlist_node cpuhp_dead; }; +struct request; + struct elevator_queue; struct blk_queue_stats; @@ -4661,16 +4657,14 @@ struct blk_mq_ops; struct blk_mq_ctx; +struct blk_mq_hw_ctx; + struct gendisk; -struct blk_crypto_profile; +struct blk_keyslot_manager; struct blk_stat_callback; -struct blk_rq_stat; - -struct blk_mq_tags; - struct blkcg_gq; struct blk_trace; @@ -4681,8 +4675,6 @@ struct throtl_data; struct blk_mq_tag_set; -struct blk_independent_access_ranges; - struct request_queue { struct request *last_merge; struct elevator_queue *elevator; @@ -4692,7 +4684,7 @@ struct request_queue { const struct blk_mq_ops *mq_ops; struct blk_mq_ctx *queue_ctx; unsigned int queue_depth; - struct xarray hctx_table; + struct blk_mq_hw_ctx **queue_hw_ctx; unsigned int nr_hw_queues; void *queuedata; long unsigned int queue_flags; @@ -4706,16 +4698,16 @@ struct request_queue { long unsigned int nr_requests; unsigned int dma_pad_mask; unsigned int dma_alignment; - struct blk_crypto_profile *crypto_profile; - struct kobject *crypto_kobject; + struct blk_keyslot_manager *ksm; unsigned int rq_timeout; int poll_nsec; struct blk_stat_callback *poll_cb; - struct blk_rq_stat *poll_stat; + struct blk_rq_stat poll_stat[16]; struct timer_list timeout; struct work_struct timeout_work; - atomic_t nr_active_requests_shared_tags; - struct blk_mq_tags *sched_shared_tags; + 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; @@ -4743,7 +4735,6 @@ struct request_queue { struct callback_head callback_head; wait_queue_head_t mq_freeze_wq; struct mutex mq_freeze_lock; - int quiesce_depth; struct blk_mq_tag_set *tag_set; struct list_head tag_set_list; struct bio_set bio_split; @@ -4751,8 +4742,8 @@ struct request_queue { struct dentry *sched_debugfs_dir; struct dentry *rqos_debugfs_dir; bool mq_sysfs_init_done; - struct blk_independent_access_ranges *ia_ranges; - struct srcu_struct srcu[0]; + size_t cmd_size; + u64 write_hints[5]; }; struct vm_struct { @@ -4766,11 +4757,12 @@ struct vm_struct { const void *caller; }; +struct bpf_run_ctx {}; + struct exception_table_entry { int insn; int fixup; - short int type; - short int data; + long int handler; }; struct cgroup_base_stat { @@ -4844,10 +4836,10 @@ struct cgroup { u16 subtree_ss_mask; u16 old_subtree_control; u16 old_subtree_ss_mask; - struct cgroup_subsys_state *subsys[12]; + struct cgroup_subsys_state *subsys[14]; struct cgroup_root *root; struct list_head cset_links; - struct list_head e_csets[12]; + struct list_head e_csets[14]; struct cgroup *dom_cgrp; struct cgroup *old_dom_cgrp; struct cgroup_rstat_cpu *rstat_cpu; @@ -4932,17 +4924,6 @@ struct group_info { kgid_t gid[0]; }; -struct core_thread { - struct task_struct *task; - struct core_thread *next; -}; - -struct core_state { - atomic_t nr_threads; - struct core_thread dumper; - struct completion startup; -}; - struct taskstats { __u16 version; __u32 ac_exitcode; @@ -4959,7 +4940,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; @@ -4991,8 +4972,6 @@ struct taskstats { __u64 thrashing_count; __u64 thrashing_delay_total; __u64 ac_btime64; - __u64 compact_count; - __u64 compact_delay_total; }; struct delayed_call { @@ -5014,26 +4993,6 @@ struct io_cq { unsigned int flags; }; -typedef void percpu_ref_func_t(struct percpu_ref *); - -struct percpu_ref_data { - atomic_long_t count; - percpu_ref_func_t *release; - percpu_ref_func_t *confirm_switch; - bool force_atomic: 1; - bool allow_reinit: 1; - struct callback_head rcu; - struct percpu_ref *ref; -}; - -enum kmalloc_cache_type { - KMALLOC_NORMAL = 0, - KMALLOC_CGROUP = 1, - KMALLOC_RECLAIM = 2, - KMALLOC_DMA = 3, - NR_KMALLOC_TYPES = 4, -}; - struct iattr { unsigned int ia_valid; umode_t ia_mode; @@ -5367,7 +5326,6 @@ struct module { atomic_t refcnt; struct error_injection_entry *ei_funcs; unsigned int num_ei_funcs; - long: 32; long: 64; long: 64; long: 64; @@ -5393,7 +5351,7 @@ struct module { }; struct wait_page_queue { - struct folio *folio; + struct page *page; int bit_nr; wait_queue_entry_t wait; }; @@ -5408,20 +5366,21 @@ struct address_space_operations { int (*writepage)(struct page *, struct writeback_control *); int (*readpage)(struct file *, struct page *); int (*writepages)(struct address_space *, struct writeback_control *); - bool (*dirty_folio)(struct address_space *, struct folio *); + int (*set_page_dirty)(struct page *); + int (*readpages)(struct file *, struct address_space *, struct list_head *, unsigned int); void (*readahead)(struct readahead_control *); int (*write_begin)(struct file *, struct address_space *, loff_t, unsigned int, unsigned int, struct page **, void **); int (*write_end)(struct file *, struct address_space *, loff_t, unsigned int, unsigned int, struct page *, void *); sector_t (*bmap)(struct address_space *, sector_t); - void (*invalidate_folio)(struct folio *, size_t, size_t); + void (*invalidatepage)(struct page *, unsigned int, unsigned int); int (*releasepage)(struct page *, gfp_t); void (*freepage)(struct page *); ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *); int (*migratepage)(struct address_space *, struct page *, struct page *, enum migrate_mode); bool (*isolate_page)(struct page *, isolate_mode_t); void (*putback_page)(struct page *); - int (*launder_folio)(struct folio *); - bool (*is_partially_uptodate)(struct folio *, size_t, size_t); + int (*launder_page)(struct page *); + int (*is_partially_uptodate)(struct page *, long unsigned int, long unsigned int); void (*is_dirty_writeback)(struct page *, bool *, bool *); int (*error_remove_page)(struct address_space *, struct page *); int (*swap_activate)(struct swap_info_struct *, struct file *, sector_t *); @@ -5445,7 +5404,6 @@ struct writeback_control { unsigned int for_reclaim: 1; unsigned int range_cyclic: 1; unsigned int for_sync: 1; - unsigned int unpinned_fscache_wb: 1; unsigned int no_cgroup_owner: 1; unsigned int punt_to_cgroup: 1; struct bdi_writeback *wb; @@ -5667,6 +5625,7 @@ struct super_operations { struct dquot ** (*get_dquots)(struct inode *); 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 *); }; struct fid; @@ -5705,6 +5664,7 @@ struct fscrypt_operations { int (*set_context)(struct inode *, const void *, size_t, void *); const union fscrypt_policy * (*get_dummy_policy)(struct super_block *); bool (*empty_dir)(struct inode *); + unsigned int max_namelen; bool (*has_stable_inodes)(struct super_block *); void (*get_ino_and_lblk_bits)(struct super_block *, int *, int *); int (*get_num_devices)(struct super_block *); @@ -5763,15 +5723,6 @@ struct dev_pm_info { struct dev_pm_qos *qos; }; -struct irq_domain; - -struct msi_device_data; - -struct dev_msi_info { - struct irq_domain *domain; - struct msi_device_data *data; -}; - struct dev_archdata {}; enum device_removable { @@ -5791,6 +5742,8 @@ struct device_driver; struct dev_pm_domain; +struct irq_domain; + struct dma_map_ops; struct bus_dma_region; @@ -5825,7 +5778,9 @@ struct device { struct dev_links_info links; struct dev_pm_info power; struct dev_pm_domain *pm_domain; - struct dev_msi_info msi; + struct irq_domain *msi_domain; + raw_spinlock_t msi_lock; + struct list_head msi_list; const struct dma_map_ops *dma_ops; u64 *dma_mask; u64 coherent_dma_mask; @@ -5861,7 +5816,6 @@ struct partition_meta_info; struct block_device { sector_t bd_start_sect; - sector_t bd_nr_sectors; struct disk_stats *bd_stats; long unsigned int bd_stamp; bool bd_read_only; @@ -5878,7 +5832,6 @@ struct block_device { u8 bd_partno; spinlock_t bd_size_lock; struct gendisk *bd_disk; - struct request_queue *bd_queue; int bd_fsfreeze_count; struct mutex bd_fsfreeze_mutex; struct super_block *bd_fsfreeze_sb; @@ -5892,12 +5845,6 @@ struct dir_context { loff_t pos; }; -struct io_comp_batch { - struct request *req_list; - bool need_ts; - void (*complete)(struct io_comp_batch *); -}; - typedef void (*poll_queue_proc)(struct file *, wait_queue_head_t *, struct poll_table_struct *); struct poll_table_struct { @@ -6001,9 +5948,7 @@ struct bvec_iter { unsigned int bi_size; unsigned int bi_idx; unsigned int bi_bvec_done; -} __attribute__((packed)); - -typedef unsigned int blk_qc_t; +}; typedef void bio_end_io_t(struct bio *); @@ -6021,10 +5966,10 @@ struct bio { 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; atomic_t __bi_remaining; struct bvec_iter bi_iter; - blk_qc_t bi_cookie; bio_end_io_t *bi_end_io; void *bi_private; struct blkcg_gq *bi_blkg; @@ -6067,6 +6012,23 @@ struct bpf_raw_event_map { long: 64; }; +typedef void percpu_ref_func_t(struct percpu_ref *); + +struct percpu_ref_data { + atomic_long_t count; + percpu_ref_func_t *release; + percpu_ref_func_t *confirm_switch; + bool force_atomic: 1; + bool allow_reinit: 1; + struct callback_head rcu; + struct percpu_ref *ref; +}; + +struct dev_pagemap_ops { + void (*page_free)(struct page *); + vm_fault_t (*migrate_to_ram)(struct vm_fault *); +}; + enum vm_event_item { PGPGIN = 0, PGPGOUT = 1, @@ -6142,13 +6104,29 @@ enum vm_event_item { UNEVICTABLE_PGMUNLOCKED = 71, UNEVICTABLE_PGCLEARED = 72, UNEVICTABLE_PGSTRANDED = 73, - BALLOON_INFLATE = 74, - BALLOON_DEFLATE = 75, - BALLOON_MIGRATE = 76, - SWAP_RA = 77, - SWAP_RA_HIT = 78, - KSM_SWPIN_COPY = 79, - NR_VM_EVENT_ITEMS = 80, + THP_FAULT_ALLOC = 74, + THP_FAULT_FALLBACK = 75, + THP_FAULT_FALLBACK_CHARGE = 76, + THP_COLLAPSE_ALLOC = 77, + THP_COLLAPSE_ALLOC_FAILED = 78, + THP_FILE_ALLOC = 79, + THP_FILE_FALLBACK = 80, + THP_FILE_FALLBACK_CHARGE = 81, + THP_FILE_MAPPED = 82, + THP_SPLIT_PAGE = 83, + THP_SPLIT_PAGE_FAILED = 84, + THP_DEFERRED_SPLIT_PAGE = 85, + THP_SPLIT_PMD = 86, + THP_ZERO_PAGE_ALLOC = 87, + THP_ZERO_PAGE_ALLOC_FAILED = 88, + THP_SWPOUT = 89, + THP_SWPOUT_FALLBACK = 90, + BALLOON_INFLATE = 91, + BALLOON_DEFLATE = 92, + BALLOON_MIGRATE = 93, + SWAP_RA = 94, + SWAP_RA_HIT = 95, + NR_VM_EVENT_ITEMS = 96, }; typedef __u64 Elf64_Addr; @@ -6213,6 +6191,19 @@ struct kernfs_elem_dir { long unsigned int rev; }; +struct kernfs_syscall_ops; + +struct kernfs_root { + struct kernfs_node *kn; + unsigned int flags; + struct idr ino_idr; + u32 last_id_lowbits; + u32 id_highbits; + struct kernfs_syscall_ops *syscall_ops; + struct list_head supers; + wait_queue_head_t deactivate_waitq; +}; + struct kernfs_elem_symlink { struct kernfs_node *target_kn; }; @@ -6267,6 +6258,14 @@ struct kernfs_ops { int (*mmap)(struct kernfs_open_file *, struct vm_area_struct *); }; +struct kernfs_syscall_ops { + int (*show_options)(struct seq_file *, struct kernfs_root *); + int (*mkdir)(struct kernfs_node *, const char *, umode_t); + int (*rmdir)(struct kernfs_node *); + int (*rename)(struct kernfs_node *, struct kernfs_node *, const char *); + int (*show_path)(struct seq_file *, struct kernfs_node *, struct kernfs_root *); +}; + struct kernfs_open_file { struct kernfs_node *kn; struct file *file; @@ -6342,6 +6341,7 @@ struct kset { struct kobj_type { void (*release)(struct kobject *); const struct sysfs_ops *sysfs_ops; + struct attribute **default_attrs; const struct attribute_group **default_groups; const struct kobj_ns_type_operations * (*child_ns_type)(struct kobject *); const void * (*namespace)(struct kobject *); @@ -6357,9 +6357,9 @@ struct kobj_uevent_env { }; struct kset_uevent_ops { - int (* const filter)(struct kobject *); - const char * (* const name)(struct kobject *); - int (* const uevent)(struct kobject *, struct kobj_uevent_env *); + int (* const filter)(struct kset *, struct kobject *); + const char * (* const name)(struct kset *, struct kobject *); + int (* const uevent)(struct kset *, struct kobject *, struct kobj_uevent_env *); }; struct kernel_param_ops { @@ -6500,6 +6500,22 @@ struct linux_binprm { char buf[256]; }; +struct core_vma_metadata; + +struct coredump_params { + const kernel_siginfo_t *siginfo; + struct pt_regs *regs; + struct file *file; + long unsigned int limit; + long unsigned int mm_flags; + loff_t written; + loff_t pos; + loff_t to_skip; + int vma_count; + size_t vma_data_size; + struct core_vma_metadata *vma_meta; +}; + struct dev_pm_ops { int (*prepare)(struct device *); void (*complete)(struct device *); @@ -6610,15 +6626,22 @@ enum iommu_cap { IOMMU_CAP_NOEXEC = 2, }; +typedef u64 dma_addr_t; + enum iommu_dev_features { - IOMMU_DEV_FEAT_SVA = 0, - IOMMU_DEV_FEAT_IOPF = 1, + IOMMU_DEV_FEAT_AUX = 0, + IOMMU_DEV_FEAT_SVA = 1, + IOMMU_DEV_FEAT_IOPF = 2, }; struct iommu_domain; +struct iommu_iotlb_gather; + struct iommu_device; +struct iommu_resv_region; + struct of_phandle_args; struct iommu_sva; @@ -6627,29 +6650,50 @@ struct iommu_fault_event; struct iommu_page_response; -struct iommu_domain_ops; +struct iommu_cache_invalidate_info; + +struct iommu_gpasid_bind_data; struct iommu_ops { bool (*capable)(enum iommu_cap); struct iommu_domain * (*domain_alloc)(unsigned int); + void (*domain_free)(struct iommu_domain *); + 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 *, 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 (*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 (*of_xlate)(struct device *, struct of_phandle_args *); - bool (*is_attach_deferred)(struct device *); + bool (*is_attach_deferred)(struct iommu_domain *, struct device *); bool (*dev_has_feat)(struct device *, enum iommu_dev_features); bool (*dev_feat_enabled)(struct device *, enum iommu_dev_features); int (*dev_enable_feat)(struct device *, enum iommu_dev_features); int (*dev_disable_feat)(struct device *, enum iommu_dev_features); + int (*aux_attach_dev)(struct iommu_domain *, struct device *); + void (*aux_detach_dev)(struct iommu_domain *, struct device *); + int (*aux_get_pasid)(struct iommu_domain *, struct device *); struct iommu_sva * (*sva_bind)(struct device *, struct mm_struct *, void *); void (*sva_unbind)(struct iommu_sva *); u32 (*sva_get_pasid)(struct iommu_sva *); int (*page_response)(struct device *, struct iommu_fault_event *, struct iommu_page_response *); + int (*cache_invalidate)(struct iommu_domain *, struct device *, struct iommu_cache_invalidate_info *); + int (*sva_bind_gpasid)(struct iommu_domain *, struct device *, struct iommu_gpasid_bind_data *); + int (*sva_unbind_gpasid)(struct device *, u32); int (*def_domain_type)(struct device *); - const struct iommu_domain_ops *default_domain_ops; long unsigned int pgsize_bitmap; struct module *owner; }; @@ -6691,7 +6735,7 @@ struct of_device_id { typedef long unsigned int kernel_ulong_t; struct acpi_device_id { - __u8 id[16]; + __u8 id[9]; kernel_ulong_t driver_data; __u32 cls; __u32 cls_msk; @@ -6733,7 +6777,6 @@ struct irq_domain { struct fwnode_handle *fwnode; enum irq_domain_bus_token bus_token; struct irq_domain_chip_generic *gc; - struct device *dev; struct irq_domain *parent; irq_hw_number_t hwirq_max; unsigned int revmap_size; @@ -6742,8 +6785,6 @@ struct irq_domain { struct irq_data *revmap[0]; }; -typedef u64 dma_addr_t; - struct sg_table; struct scatterlist; @@ -6852,152 +6893,148 @@ enum cpuhp_state { CPUHP_LUSTRE_CFS_DEAD = 37, CPUHP_AP_ARM_CACHE_B15_RAC_DEAD = 38, CPUHP_PADATA_DEAD = 39, - CPUHP_AP_DTPM_CPU_DEAD = 40, - CPUHP_RANDOM_PREPARE = 41, - CPUHP_WORKQUEUE_PREP = 42, - CPUHP_POWER_NUMA_PREPARE = 43, - CPUHP_HRTIMERS_PREPARE = 44, - CPUHP_PROFILE_PREPARE = 45, - CPUHP_X2APIC_PREPARE = 46, - CPUHP_SMPCFD_PREPARE = 47, - CPUHP_RELAY_PREPARE = 48, - CPUHP_SLAB_PREPARE = 49, - CPUHP_MD_RAID5_PREPARE = 50, - CPUHP_RCUTREE_PREP = 51, - CPUHP_CPUIDLE_COUPLED_PREPARE = 52, - CPUHP_POWERPC_PMAC_PREPARE = 53, - CPUHP_POWERPC_MMU_CTX_PREPARE = 54, - CPUHP_XEN_PREPARE = 55, - CPUHP_XEN_EVTCHN_PREPARE = 56, - CPUHP_ARM_SHMOBILE_SCU_PREPARE = 57, - CPUHP_SH_SH3X_PREPARE = 58, - CPUHP_NET_FLOW_PREPARE = 59, - CPUHP_TOPOLOGY_PREPARE = 60, - CPUHP_NET_IUCV_PREPARE = 61, - CPUHP_ARM_BL_PREPARE = 62, - CPUHP_TRACE_RB_PREPARE = 63, - CPUHP_MM_ZS_PREPARE = 64, - CPUHP_MM_ZSWP_MEM_PREPARE = 65, - CPUHP_MM_ZSWP_POOL_PREPARE = 66, - CPUHP_KVM_PPC_BOOK3S_PREPARE = 67, - CPUHP_ZCOMP_PREPARE = 68, - CPUHP_TIMERS_PREPARE = 69, - CPUHP_MIPS_SOC_PREPARE = 70, - CPUHP_BP_PREPARE_DYN = 71, - CPUHP_BP_PREPARE_DYN_END = 91, - CPUHP_BRINGUP_CPU = 92, - CPUHP_AP_IDLE_DEAD = 93, - CPUHP_AP_OFFLINE = 94, - CPUHP_AP_SCHED_STARTING = 95, - CPUHP_AP_RCUTREE_DYING = 96, - CPUHP_AP_CPU_PM_STARTING = 97, - CPUHP_AP_IRQ_GIC_STARTING = 98, - CPUHP_AP_IRQ_HIP04_STARTING = 99, - CPUHP_AP_IRQ_APPLE_AIC_STARTING = 100, - CPUHP_AP_IRQ_ARMADA_XP_STARTING = 101, - CPUHP_AP_IRQ_BCM2836_STARTING = 102, - CPUHP_AP_IRQ_MIPS_GIC_STARTING = 103, - CPUHP_AP_IRQ_RISCV_STARTING = 104, - CPUHP_AP_IRQ_SIFIVE_PLIC_STARTING = 105, - CPUHP_AP_ARM_MVEBU_COHERENCY = 106, - CPUHP_AP_MICROCODE_LOADER = 107, - CPUHP_AP_PERF_X86_AMD_UNCORE_STARTING = 108, - CPUHP_AP_PERF_X86_STARTING = 109, - CPUHP_AP_PERF_X86_AMD_IBS_STARTING = 110, - CPUHP_AP_PERF_X86_CQM_STARTING = 111, - CPUHP_AP_PERF_X86_CSTATE_STARTING = 112, - CPUHP_AP_PERF_XTENSA_STARTING = 113, - CPUHP_AP_MIPS_OP_LOONGSON3_STARTING = 114, - CPUHP_AP_ARM_SDEI_STARTING = 115, - CPUHP_AP_ARM_VFP_STARTING = 116, - CPUHP_AP_ARM64_DEBUG_MONITORS_STARTING = 117, - CPUHP_AP_PERF_ARM_HW_BREAKPOINT_STARTING = 118, - CPUHP_AP_PERF_ARM_ACPI_STARTING = 119, - CPUHP_AP_PERF_ARM_STARTING = 120, - CPUHP_AP_PERF_RISCV_STARTING = 121, - CPUHP_AP_ARM_L2X0_STARTING = 122, - CPUHP_AP_EXYNOS4_MCT_TIMER_STARTING = 123, - CPUHP_AP_ARM_ARCH_TIMER_STARTING = 124, - CPUHP_AP_ARM_GLOBAL_TIMER_STARTING = 125, - CPUHP_AP_JCORE_TIMER_STARTING = 126, - CPUHP_AP_ARM_TWD_STARTING = 127, - CPUHP_AP_QCOM_TIMER_STARTING = 128, - CPUHP_AP_TEGRA_TIMER_STARTING = 129, - CPUHP_AP_ARMADA_TIMER_STARTING = 130, - CPUHP_AP_MARCO_TIMER_STARTING = 131, - CPUHP_AP_MIPS_GIC_TIMER_STARTING = 132, - CPUHP_AP_ARC_TIMER_STARTING = 133, - CPUHP_AP_RISCV_TIMER_STARTING = 134, - CPUHP_AP_CLINT_TIMER_STARTING = 135, - CPUHP_AP_CSKY_TIMER_STARTING = 136, - CPUHP_AP_TI_GP_TIMER_STARTING = 137, - CPUHP_AP_HYPERV_TIMER_STARTING = 138, - CPUHP_AP_KVM_STARTING = 139, - CPUHP_AP_KVM_ARM_VGIC_INIT_STARTING = 140, - CPUHP_AP_KVM_ARM_VGIC_STARTING = 141, - CPUHP_AP_KVM_ARM_TIMER_STARTING = 142, - CPUHP_AP_DUMMY_TIMER_STARTING = 143, - CPUHP_AP_ARM_XEN_STARTING = 144, - CPUHP_AP_ARM_CORESIGHT_STARTING = 145, - CPUHP_AP_ARM_CORESIGHT_CTI_STARTING = 146, - CPUHP_AP_ARM64_ISNDEP_STARTING = 147, - CPUHP_AP_SMPCFD_DYING = 148, - CPUHP_AP_X86_TBOOT_DYING = 149, - CPUHP_AP_ARM_CACHE_B15_RAC_DYING = 150, - CPUHP_AP_ONLINE = 151, - CPUHP_TEARDOWN_CPU = 152, - CPUHP_AP_ONLINE_IDLE = 153, - CPUHP_AP_SCHED_WAIT_EMPTY = 154, - CPUHP_AP_SMPBOOT_THREADS = 155, - CPUHP_AP_X86_VDSO_VMA_ONLINE = 156, - CPUHP_AP_IRQ_AFFINITY_ONLINE = 157, - CPUHP_AP_BLK_MQ_ONLINE = 158, - CPUHP_AP_ARM_MVEBU_SYNC_CLOCKS = 159, - CPUHP_AP_X86_INTEL_EPB_ONLINE = 160, - CPUHP_AP_PERF_ONLINE = 161, - CPUHP_AP_PERF_X86_ONLINE = 162, - CPUHP_AP_PERF_X86_UNCORE_ONLINE = 163, - CPUHP_AP_PERF_X86_AMD_UNCORE_ONLINE = 164, - CPUHP_AP_PERF_X86_AMD_POWER_ONLINE = 165, - CPUHP_AP_PERF_X86_RAPL_ONLINE = 166, - CPUHP_AP_PERF_X86_CQM_ONLINE = 167, - CPUHP_AP_PERF_X86_CSTATE_ONLINE = 168, - CPUHP_AP_PERF_X86_IDXD_ONLINE = 169, - CPUHP_AP_PERF_S390_CF_ONLINE = 170, - CPUHP_AP_PERF_S390_SF_ONLINE = 171, - CPUHP_AP_PERF_ARM_CCI_ONLINE = 172, - CPUHP_AP_PERF_ARM_CCN_ONLINE = 173, - CPUHP_AP_PERF_ARM_HISI_DDRC_ONLINE = 174, - CPUHP_AP_PERF_ARM_HISI_HHA_ONLINE = 175, - CPUHP_AP_PERF_ARM_HISI_L3_ONLINE = 176, - CPUHP_AP_PERF_ARM_HISI_PA_ONLINE = 177, - CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE = 178, - CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE = 179, - CPUHP_AP_PERF_ARM_L2X0_ONLINE = 180, - CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE = 181, - CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE = 182, - CPUHP_AP_PERF_ARM_APM_XGENE_ONLINE = 183, - CPUHP_AP_PERF_ARM_CAVIUM_TX2_UNCORE_ONLINE = 184, - CPUHP_AP_PERF_ARM_MARVELL_CN10K_DDR_ONLINE = 185, - CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE = 186, - CPUHP_AP_PERF_POWERPC_CORE_IMC_ONLINE = 187, - CPUHP_AP_PERF_POWERPC_THREAD_IMC_ONLINE = 188, - CPUHP_AP_PERF_POWERPC_TRACE_IMC_ONLINE = 189, - CPUHP_AP_PERF_POWERPC_HV_24x7_ONLINE = 190, - CPUHP_AP_PERF_POWERPC_HV_GPCI_ONLINE = 191, - CPUHP_AP_PERF_CSKY_ONLINE = 192, - CPUHP_AP_WATCHDOG_ONLINE = 193, - CPUHP_AP_WORKQUEUE_ONLINE = 194, - CPUHP_AP_RANDOM_ONLINE = 195, - CPUHP_AP_RCUTREE_ONLINE = 196, - CPUHP_AP_BASE_CACHEINFO_ONLINE = 197, - CPUHP_AP_ONLINE_DYN = 198, - CPUHP_AP_ONLINE_DYN_END = 228, - CPUHP_AP_MM_DEMOTION_ONLINE = 229, - CPUHP_AP_X86_HPET_ONLINE = 230, - CPUHP_AP_X86_KVM_CLK_ONLINE = 231, - CPUHP_AP_ACTIVE = 232, - CPUHP_ONLINE = 233, + 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_VFP_STARTING = 114, + CPUHP_AP_ARM64_DEBUG_MONITORS_STARTING = 115, + CPUHP_AP_PERF_ARM_HW_BREAKPOINT_STARTING = 116, + CPUHP_AP_PERF_ARM_ACPI_STARTING = 117, + CPUHP_AP_PERF_ARM_STARTING = 118, + CPUHP_AP_ARM_L2X0_STARTING = 119, + CPUHP_AP_EXYNOS4_MCT_TIMER_STARTING = 120, + CPUHP_AP_ARM_ARCH_TIMER_STARTING = 121, + CPUHP_AP_ARM_GLOBAL_TIMER_STARTING = 122, + CPUHP_AP_JCORE_TIMER_STARTING = 123, + CPUHP_AP_ARM_TWD_STARTING = 124, + CPUHP_AP_QCOM_TIMER_STARTING = 125, + CPUHP_AP_TEGRA_TIMER_STARTING = 126, + CPUHP_AP_ARMADA_TIMER_STARTING = 127, + CPUHP_AP_MARCO_TIMER_STARTING = 128, + CPUHP_AP_MIPS_GIC_TIMER_STARTING = 129, + CPUHP_AP_ARC_TIMER_STARTING = 130, + CPUHP_AP_RISCV_TIMER_STARTING = 131, + CPUHP_AP_CLINT_TIMER_STARTING = 132, + CPUHP_AP_CSKY_TIMER_STARTING = 133, + CPUHP_AP_TI_GP_TIMER_STARTING = 134, + CPUHP_AP_HYPERV_TIMER_STARTING = 135, + CPUHP_AP_KVM_STARTING = 136, + CPUHP_AP_KVM_ARM_VGIC_INIT_STARTING = 137, + CPUHP_AP_KVM_ARM_VGIC_STARTING = 138, + CPUHP_AP_KVM_ARM_TIMER_STARTING = 139, + CPUHP_AP_DUMMY_TIMER_STARTING = 140, + CPUHP_AP_ARM_XEN_STARTING = 141, + CPUHP_AP_ARM_CORESIGHT_STARTING = 142, + CPUHP_AP_ARM_CORESIGHT_CTI_STARTING = 143, + CPUHP_AP_ARM64_ISNDEP_STARTING = 144, + CPUHP_AP_SMPCFD_DYING = 145, + CPUHP_AP_X86_TBOOT_DYING = 146, + CPUHP_AP_ARM_CACHE_B15_RAC_DYING = 147, + CPUHP_AP_ONLINE = 148, + CPUHP_TEARDOWN_CPU = 149, + CPUHP_AP_ONLINE_IDLE = 150, + CPUHP_AP_SCHED_WAIT_EMPTY = 151, + CPUHP_AP_SMPBOOT_THREADS = 152, + CPUHP_AP_X86_VDSO_VMA_ONLINE = 153, + CPUHP_AP_IRQ_AFFINITY_ONLINE = 154, + CPUHP_AP_BLK_MQ_ONLINE = 155, + CPUHP_AP_ARM_MVEBU_SYNC_CLOCKS = 156, + CPUHP_AP_X86_INTEL_EPB_ONLINE = 157, + CPUHP_AP_PERF_ONLINE = 158, + CPUHP_AP_PERF_X86_ONLINE = 159, + CPUHP_AP_PERF_X86_UNCORE_ONLINE = 160, + CPUHP_AP_PERF_X86_AMD_UNCORE_ONLINE = 161, + CPUHP_AP_PERF_X86_AMD_POWER_ONLINE = 162, + CPUHP_AP_PERF_X86_RAPL_ONLINE = 163, + CPUHP_AP_PERF_X86_CQM_ONLINE = 164, + CPUHP_AP_PERF_X86_CSTATE_ONLINE = 165, + CPUHP_AP_PERF_X86_IDXD_ONLINE = 166, + CPUHP_AP_PERF_S390_CF_ONLINE = 167, + CPUHP_AP_PERF_S390_SF_ONLINE = 168, + CPUHP_AP_PERF_ARM_CCI_ONLINE = 169, + CPUHP_AP_PERF_ARM_CCN_ONLINE = 170, + CPUHP_AP_PERF_ARM_HISI_DDRC_ONLINE = 171, + CPUHP_AP_PERF_ARM_HISI_HHA_ONLINE = 172, + CPUHP_AP_PERF_ARM_HISI_L3_ONLINE = 173, + CPUHP_AP_PERF_ARM_HISI_PA_ONLINE = 174, + CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE = 175, + CPUHP_AP_PERF_ARM_L2X0_ONLINE = 176, + CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE = 177, + CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE = 178, + CPUHP_AP_PERF_ARM_APM_XGENE_ONLINE = 179, + CPUHP_AP_PERF_ARM_CAVIUM_TX2_UNCORE_ONLINE = 180, + CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE = 181, + CPUHP_AP_PERF_POWERPC_CORE_IMC_ONLINE = 182, + CPUHP_AP_PERF_POWERPC_THREAD_IMC_ONLINE = 183, + CPUHP_AP_PERF_POWERPC_TRACE_IMC_ONLINE = 184, + CPUHP_AP_PERF_POWERPC_HV_24x7_ONLINE = 185, + CPUHP_AP_PERF_POWERPC_HV_GPCI_ONLINE = 186, + CPUHP_AP_PERF_CSKY_ONLINE = 187, + CPUHP_AP_WATCHDOG_ONLINE = 188, + CPUHP_AP_WORKQUEUE_ONLINE = 189, + CPUHP_AP_RANDOM_ONLINE = 190, + CPUHP_AP_RCUTREE_ONLINE = 191, + CPUHP_AP_BASE_CACHEINFO_ONLINE = 192, + CPUHP_AP_ONLINE_DYN = 193, + CPUHP_AP_ONLINE_DYN_END = 223, + CPUHP_AP_MM_DEMOTION_ONLINE = 224, + CPUHP_AP_X86_HPET_ONLINE = 225, + CPUHP_AP_X86_KVM_CLK_ONLINE = 226, + CPUHP_AP_DTPM_CPU_ONLINE = 227, + CPUHP_AP_ACTIVE = 228, + CPUHP_ONLINE = 229, }; struct ring_buffer_event { @@ -7116,8 +7153,7 @@ struct perf_event_attr { union perf_mem_data_src { __u64 val; struct { - __u64 mem_rsvd: 18; - __u64 mem_hops: 3; + __u64 mem_rsvd: 21; __u64 mem_blk: 3; __u64 mem_snoopx: 2; __u64 mem_remote: 1; @@ -7167,14 +7203,12 @@ struct uts_namespace { struct ns_common ns; }; -struct ref_tracker_dir {}; - struct prot_inuse; struct netns_core { struct ctl_table_header *sysctl_hdr; int sysctl_somaxconn; - u8 sysctl_txrehash; + int *sock_inuse; struct prot_inuse *prot_inuse; }; @@ -7239,6 +7273,15 @@ struct netns_nexthop { struct blocking_notifier_head notifier_chain; }; +struct inet_hashinfo; + +struct inet_timewait_death_row { + atomic_t tw_count; + char tw_pad[252]; + struct inet_hashinfo *hashinfo; + int sysctl_max_tw_buckets; +}; + struct local_ports { seqlock_t lock; int range[2]; @@ -7254,8 +7297,6 @@ typedef struct { u64 key[2]; } siphash_key_t; -struct inet_timewait_death_row; - struct ipv4_devconf; struct ip_ra_chain; @@ -7275,7 +7316,7 @@ struct tcp_fastopen_context; struct fib_notifier_ops; struct netns_ipv4 { - struct inet_timewait_death_row *tcp_death_row; + 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; @@ -7295,6 +7336,7 @@ struct netns_ipv4 { 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; @@ -7305,9 +7347,6 @@ struct netns_ipv4 { u8 sysctl_icmp_errors_use_inbound_ifaddr; int sysctl_icmp_ratelimit; int sysctl_icmp_ratemask; - u32 ip_rt_min_pmtu; - int ip_rt_mtu_expires; - int ip_rt_min_advmss; struct local_ports ip_local_ports; u8 sysctl_tcp_ecn; u8 sysctl_tcp_ecn_fallback; @@ -7339,7 +7378,6 @@ struct netns_ipv4 { u8 sysctl_tcp_synack_retries; u8 sysctl_tcp_syncookies; u8 sysctl_tcp_migrate_req; - u8 sysctl_tcp_comp_sack_nr; int sysctl_tcp_reordering; u8 sysctl_tcp_retries1; u8 sysctl_tcp_retries2; @@ -7373,9 +7411,9 @@ struct netns_ipv4 { int sysctl_tcp_challenge_ack_limit; int sysctl_tcp_min_rtt_wlen; u8 sysctl_tcp_min_tso_segs; - u8 sysctl_tcp_tso_rtt_log; u8 sysctl_tcp_autocorking; u8 sysctl_tcp_reflect_tos; + u8 sysctl_tcp_comp_sack_nr; int sysctl_tcp_invalid_ratelimit; int sysctl_tcp_pacing_ss_ratio; int sysctl_tcp_pacing_ca_ratio; @@ -7413,6 +7451,28 @@ struct netns_ipv4 { 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; + long: 64; + long: 64; + long: 64; + 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 dst_entry; @@ -7526,7 +7586,7 @@ struct netns_sysctl_ipv6 { int seg6_flowlabel; u32 ioam6_id; u64 ioam6_id_wide; - bool skip_notify_on_dev_down; + int skip_notify_on_dev_down; u8 fib_notify_on_flag_change; }; @@ -7570,13 +7630,11 @@ struct netns_ipv6 { 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 hlist_head *inet6_addr_lst; - spinlock_t addrconf_hash_lock; - struct delayed_work addr_chk_work; struct list_head mr6_tables; struct fib_rules_ops *mr6_rules_ops; atomic_t dev_addr_genid; @@ -7591,35 +7649,6 @@ struct netns_ipv6 { u32 seq; } ip6addrlbl_table; struct ioam6_pernet_data *ioam6_data; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 netns_sysctl_lowpan { - struct ctl_table_header *frags_hdr; -}; - -struct netns_ieee802154_lowpan { - struct netns_sysctl_lowpan sysctl; - struct fqdir *fqdir; }; struct sctp_mib; @@ -7884,17 +7913,6 @@ struct netns_xdp { 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; @@ -7903,9 +7921,6 @@ struct netns_smc { struct smc_stats *smc_stats; struct mutex mutex_fback_rsn; struct smc_stats_rsn *fback_rsn; - bool limit_smc_hs; - struct ctl_table_header *smc_hdr; - unsigned int sysctl_autocorking_size; }; struct uevent_sock; @@ -7915,7 +7930,7 @@ struct net_generic; struct net { refcount_t passive; spinlock_t rules_mod_lock; - atomic_t dev_unreg_count; + unsigned int dev_unreg_count; unsigned int dev_base_seq; int ifindex; spinlock_t nsid_lock; @@ -7928,7 +7943,6 @@ struct net { struct ucounts *ucounts; struct idr netns_ids; struct ns_common ns; - struct ref_tracker_dir refcnt_tracker; struct list_head dev_base_head; struct proc_dir_entry *proc_net; struct proc_dir_entry *proc_net_stat; @@ -7947,7 +7961,6 @@ struct net { struct netns_packet packet; struct netns_unix unx; struct netns_nexthop nexthop; - struct netns_ipv4 ipv4; long: 64; long: 64; long: 64; @@ -7956,8 +7969,16 @@ struct net { long: 64; long: 64; long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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; @@ -7979,12 +8000,13 @@ struct net { 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_xdp xdp; - struct netns_mctp mctp; struct sock *crypto_nlsk; struct sock *diag_nlsk; struct netns_smc smc; @@ -8001,19 +8023,6 @@ struct net { long: 64; long: 64; long: 64; - long: 64; - 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 cgroup_namespace { @@ -8041,10 +8050,6 @@ struct proc_ns_operations { struct ns_common * (*get_parent)(struct ns_common *); }; -typedef struct { - atomic_long_t a; -} local_t; - typedef struct { local_t a; } local64_t; @@ -8082,7 +8087,6 @@ struct ftrace_ops { struct irq_work { struct __call_single_node node; void (*func)(struct irq_work *); - struct rcuwait irqwait; }; struct perf_regs { @@ -8092,6 +8096,343 @@ struct perf_regs { struct u64_stats_sync {}; +struct bpf_cgroup_storage_key { + __u64 cgroup_inode_id; + __u32 attach_type; +}; + +enum kmalloc_cache_type { + KMALLOC_NORMAL = 0, + KMALLOC_CGROUP = 1, + KMALLOC_RECLAIM = 2, + KMALLOC_DMA = 3, + NR_KMALLOC_TYPES = 4, +}; + +enum perf_event_state { + PERF_EVENT_STATE_DEAD = 4294967292, + PERF_EVENT_STATE_EXIT = 4294967293, + PERF_EVENT_STATE_ERROR = 4294967294, + PERF_EVENT_STATE_OFF = 4294967295, + PERF_EVENT_STATE_INACTIVE = 0, + PERF_EVENT_STATE_ACTIVE = 1, +}; + +struct hw_perf_event_extra { + u64 config; + unsigned int reg; + int alloc; + int idx; +}; + +struct hw_perf_event { + union { + struct { + u64 config; + u64 last_tag; + long unsigned int config_base; + long unsigned int event_base; + int event_base_rdpmc; + int idx; + int last_cpu; + int flags; + struct hw_perf_event_extra extra_reg; + struct hw_perf_event_extra branch_reg; + }; + struct { + struct hrtimer hrtimer; + }; + struct { + struct list_head tp_list; + }; + struct { + u64 pwr_acc; + u64 ptsc; + }; + struct { + u8 iommu_bank; + u8 iommu_cntr; + u16 padding; + u64 conf; + u64 conf1; + }; + }; + struct task_struct *target; + void *addr_filters; + long unsigned int addr_filters_gen; + int state; + local64_t prev_count; + u64 sample_period; + union { + struct { + u64 last_period; + local64_t period_left; + }; + struct { + u64 saved_metric; + u64 saved_slots; + }; + }; + u64 interrupts_seq; + u64 interrupts; + u64 freq_time_stamp; + u64 freq_count_stamp; +}; + +struct perf_addr_filters_head { + struct list_head list; + raw_spinlock_t lock; + unsigned int nr_file_filters; +}; + +struct perf_sample_data; + +typedef void (*perf_overflow_handler_t)(struct perf_event *, struct perf_sample_data *, struct pt_regs *); + +struct perf_buffer; + +struct perf_addr_filter_range; + +struct perf_cgroup; + +struct perf_event { + struct list_head event_entry; + struct list_head sibling_list; + struct list_head active_list; + struct rb_node group_node; + u64 group_index; + struct list_head migrate_entry; + struct hlist_node hlist_entry; + struct list_head active_entry; + int nr_siblings; + int event_caps; + int group_caps; + struct perf_event *group_leader; + struct pmu *pmu; + void *pmu_private; + enum perf_event_state state; + unsigned int attach_state; + local64_t count; + atomic64_t child_count; + u64 total_time_enabled; + u64 total_time_running; + u64 tstamp; + struct perf_event_attr attr; + u16 header_size; + u16 id_header_size; + u16 read_size; + struct hw_perf_event hw; + struct perf_event_context *ctx; + atomic_long_t refcount; + atomic64_t child_total_time_enabled; + atomic64_t child_total_time_running; + struct mutex child_mutex; + struct list_head child_list; + struct perf_event *parent; + int oncpu; + int cpu; + struct list_head owner_entry; + struct task_struct *owner; + struct mutex mmap_mutex; + atomic_t mmap_count; + struct perf_buffer *rb; + struct list_head rb_entry; + long unsigned int rcu_batches; + int rcu_pending; + wait_queue_head_t waitq; + struct fasync_struct *fasync; + unsigned int pending_wakeup; + unsigned int pending_kill; + unsigned int pending_disable; + unsigned int pending_sigtrap; + 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; + long unsigned int addr_filters_gen; + struct perf_event *aux_event; + void (*destroy)(struct perf_event *); + struct callback_head callback_head; + struct pid_namespace *ns; + u64 id; + u64 (*clock)(); + perf_overflow_handler_t overflow_handler; + void *overflow_handler_context; + perf_overflow_handler_t orig_overflow_handler; + struct bpf_prog *prog; + u64 bpf_cookie; + struct trace_event_call *tp_event; + struct event_filter *filter; + struct ftrace_ops ftrace_ops; + struct perf_cgroup *cgrp; + void *security; + struct list_head sb_list; +}; + +struct bpf_storage_buffer; + +struct bpf_cgroup_storage_map; + +struct bpf_cgroup_storage { + union { + 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_prog_array_item { + struct bpf_prog *prog; + union { + struct bpf_cgroup_storage *cgroup_storage[2]; + u64 bpf_cookie; + }; +}; + +struct bpf_prog_array { + struct callback_head rcu; + struct bpf_prog_array_item items[0]; +}; + +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 _sk_redir; + }; + 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 { + __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 bpf_storage_buffer { + struct callback_head rcu; + char data[0]; +}; + struct psi_group_cpu { seqcount_t seq; unsigned int tasks[5]; @@ -8259,67 +8600,6 @@ struct perf_branch_stack { struct perf_branch_entry entries[0]; }; -struct hw_perf_event_extra { - u64 config; - unsigned int reg; - int alloc; - int idx; -}; - -struct hw_perf_event { - union { - struct { - u64 config; - u64 last_tag; - long unsigned int config_base; - long unsigned int event_base; - int event_base_rdpmc; - int idx; - int last_cpu; - int flags; - struct hw_perf_event_extra extra_reg; - struct hw_perf_event_extra branch_reg; - }; - struct { - struct hrtimer hrtimer; - }; - struct { - struct list_head tp_list; - }; - struct { - u64 pwr_acc; - u64 ptsc; - }; - struct { - u8 iommu_bank; - u8 iommu_cntr; - u16 padding; - u64 conf; - u64 conf1; - }; - }; - struct task_struct *target; - void *addr_filters; - long unsigned int addr_filters_gen; - int state; - local64_t prev_count; - u64 sample_period; - union { - struct { - u64 last_period; - local64_t period_left; - }; - struct { - u64 saved_metric; - u64 saved_slots; - }; - }; - u64 interrupts_seq; - u64 interrupts; - u64 freq_time_stamp; - u64 freq_count_stamp; -}; - struct perf_cpu_context; struct perf_output_handle; @@ -8366,8 +8646,6 @@ struct pmu { int (*check_period)(struct perf_event *, u64); }; -struct perf_cgroup; - struct perf_cpu_context { struct perf_event_context ctx; struct perf_event_context *task_ctx; @@ -8387,103 +8665,6 @@ struct perf_cpu_context { struct perf_event *heap_default[2]; }; -enum perf_event_state { - PERF_EVENT_STATE_DEAD = 4294967292, - PERF_EVENT_STATE_EXIT = 4294967293, - PERF_EVENT_STATE_ERROR = 4294967294, - PERF_EVENT_STATE_OFF = 4294967295, - PERF_EVENT_STATE_INACTIVE = 0, - PERF_EVENT_STATE_ACTIVE = 1, -}; - -struct perf_addr_filters_head { - struct list_head list; - raw_spinlock_t lock; - unsigned int nr_file_filters; -}; - -struct perf_sample_data; - -typedef void (*perf_overflow_handler_t)(struct perf_event *, struct perf_sample_data *, struct pt_regs *); - -struct perf_buffer; - -struct perf_addr_filter_range; - -struct perf_event { - struct list_head event_entry; - struct list_head sibling_list; - struct list_head active_list; - struct rb_node group_node; - u64 group_index; - struct list_head migrate_entry; - struct hlist_node hlist_entry; - struct list_head active_entry; - int nr_siblings; - int event_caps; - int group_caps; - struct perf_event *group_leader; - struct pmu *pmu; - void *pmu_private; - enum perf_event_state state; - unsigned int attach_state; - local64_t count; - atomic64_t child_count; - u64 total_time_enabled; - u64 total_time_running; - u64 tstamp; - struct perf_event_attr attr; - u16 header_size; - u16 id_header_size; - u16 read_size; - struct hw_perf_event hw; - struct perf_event_context *ctx; - atomic_long_t refcount; - atomic64_t child_total_time_enabled; - atomic64_t child_total_time_running; - struct mutex child_mutex; - struct list_head child_list; - struct perf_event *parent; - int oncpu; - int cpu; - struct list_head owner_entry; - struct task_struct *owner; - struct mutex mmap_mutex; - atomic_t mmap_count; - struct perf_buffer *rb; - struct list_head rb_entry; - long unsigned int rcu_batches; - int rcu_pending; - wait_queue_head_t waitq; - struct fasync_struct *fasync; - int pending_wakeup; - int pending_kill; - int pending_disable; - long unsigned int pending_addr; - struct irq_work pending; - atomic_t event_limit; - struct perf_addr_filters_head addr_filters; - struct perf_addr_filter_range *addr_filter_ranges; - long unsigned int addr_filters_gen; - struct perf_event *aux_event; - void (*destroy)(struct perf_event *); - struct callback_head callback_head; - struct pid_namespace *ns; - u64 id; - u64 (*clock)(); - perf_overflow_handler_t overflow_handler; - void *overflow_handler_context; - perf_overflow_handler_t orig_overflow_handler; - struct bpf_prog *prog; - u64 bpf_cookie; - struct trace_event_call *tp_event; - struct event_filter *filter; - struct ftrace_ops ftrace_ops; - struct perf_cgroup *cgrp; - void *security; - struct list_head sb_list; -}; - struct perf_output_handle { struct perf_event *event; struct perf_buffer *rb; @@ -8583,6 +8764,7 @@ struct trace_iterator { 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; @@ -8687,7 +8869,6 @@ enum { TRACE_EVENT_FL_KPROBE_BIT = 6, TRACE_EVENT_FL_UPROBE_BIT = 7, TRACE_EVENT_FL_EPROBE_BIT = 8, - TRACE_EVENT_FL_CUSTOM_BIT = 9, }; enum { @@ -8700,7 +8881,6 @@ enum { TRACE_EVENT_FL_KPROBE = 64, TRACE_EVENT_FL_UPROBE = 128, TRACE_EVENT_FL_EPROBE = 256, - TRACE_EVENT_FL_CUSTOM = 512, }; enum { @@ -8731,15 +8911,25 @@ enum { EVENT_FILE_FL_WAS_ENABLED = 1024, }; +enum event_trigger_type { + ETT_NONE = 0, + ETT_TRACE_ONOFF = 1, + ETT_SNAPSHOT = 2, + ETT_STACKTRACE = 4, + ETT_EVENT_ENABLE = 8, + ETT_EVENT_HIST = 16, + ETT_HIST_ENABLE = 32, + ETT_EVENT_EPROBE = 64, +}; + enum { FILTER_OTHER = 0, FILTER_STATIC_STRING = 1, FILTER_DYN_STRING = 2, - FILTER_RDYN_STRING = 3, - FILTER_PTR_STRING = 4, - FILTER_TRACE_FN = 5, - FILTER_COMM = 6, - FILTER_CPU = 7, + FILTER_PTR_STRING = 3, + FILTER_TRACE_FN = 4, + FILTER_COMM = 5, + FILTER_CPU = 6, }; struct fwnode_reference_args; @@ -8806,10 +8996,10 @@ struct irq_domain_ops { }; struct xbc_node { - uint16_t next; - uint16_t child; - uint16_t parent; - uint16_t data; + u16 next; + u16 child; + u16 parent; + u16 data; }; enum wb_stat_item { @@ -8872,181 +9062,51 @@ struct bio_integrity_payload { short unsigned int bip_max_vcnt; short unsigned int bip_flags; struct bvec_iter bio_iter; - short: 16; struct work_struct bip_work; struct bio_vec *bip_vec; struct bio_vec bip_inline_vecs[0]; -} __attribute__((packed)); - -struct blk_rq_stat { - u64 mean; - u64 min; - u64 max; - u32 nr_samples; - u64 batch; -}; - -enum memcg_stat_item { - MEMCG_SWAP = 41, - MEMCG_SOCK = 42, - MEMCG_PERCPU_B = 43, - MEMCG_VMALLOC = 44, - MEMCG_KMEM = 45, - MEMCG_NR_STAT = 46, -}; - -enum memcg_memory_event { - MEMCG_LOW = 0, - MEMCG_HIGH = 1, - MEMCG_MAX = 2, - MEMCG_OOM = 3, - MEMCG_OOM_KILL = 4, - MEMCG_OOM_GROUP_KILL = 5, - MEMCG_SWAP_HIGH = 6, - MEMCG_SWAP_MAX = 7, - MEMCG_SWAP_FAIL = 8, - MEMCG_NR_MEMORY_EVENTS = 9, -}; - -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[46]; - long unsigned int events[80]; - long int state_prev[46]; - long unsigned int events_prev[80]; - 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[41]; - long int state_prev[41]; }; -struct lruvec_stats { - long int state[41]; - long int state_pending[41]; +struct blkg_iostat { + u64 bytes[3]; + u64 ios[3]; }; -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[15]; - 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 blkg_iostat_set { + struct u64_stats_sync sync; + struct blkg_iostat cur; + struct blkg_iostat last; }; -struct eventfd_ctx; - -struct mem_cgroup_threshold { - struct eventfd_ctx *eventfd; - long unsigned int threshold; -}; +struct blkcg; -struct mem_cgroup_threshold_ary { - int current_threshold; - unsigned int size; - struct mem_cgroup_threshold entries[0]; -}; +struct blkg_policy_data; -struct obj_cgroup { +struct blkcg_gq { + struct request_queue *q; + struct list_head q_node; + struct hlist_node blkcg_node; + struct blkcg *blkcg; + struct blkcg_gq *parent; struct percpu_ref refcnt; - 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 *); + bool online; + struct blkg_iostat_set *iostat_cpu; + struct blkg_iostat_set iostat; + struct blkg_policy_data *pd[6]; + spinlock_t async_bio_lock; + struct bio_list async_bios; + struct work_struct async_bio_work; + atomic_t use_delay; + atomic64_t delay_nsec; + atomic64_t delay_start; + u64 last_delay; + int last_use; + struct callback_head callback_head; }; -struct fs_parse_result { - bool negated; - union { - bool boolean; - int int_32; - unsigned int uint_32; - u64 uint_64; - }; -}; +typedef __u32 blk_mq_req_flags_t; -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]; -}; +typedef unsigned int blk_qc_t; struct blk_integrity_iter; @@ -9064,21 +9124,16 @@ struct blk_integrity_profile { const char *name; }; -typedef int (*report_zones_cb)(struct blk_zone *, unsigned int, void *); +struct blk_zone; -enum blk_unique_id { - BLK_UID_T10 = 1, - BLK_UID_EUI64 = 2, - BLK_UID_NAA = 3, -}; +typedef int (*report_zones_cb)(struct blk_zone *, unsigned int, void *); struct hd_geometry; struct pr_ops; struct block_device_operations { - void (*submit_bio)(struct bio *); - int (*poll_bio)(struct bio *, struct io_comp_batch *, unsigned int); + blk_qc_t (*submit_bio)(struct bio *); int (*open)(struct block_device *, fmode_t); void (*release)(struct gendisk *, fmode_t); int (*rw_page)(struct block_device *, sector_t, struct page *, unsigned int); @@ -9088,314 +9143,716 @@ struct block_device_operations { void (*unlock_native_capacity)(struct gendisk *); int (*getgeo)(struct block_device *, struct hd_geometry *); int (*set_read_only)(struct block_device *, bool); - void (*free_disk)(struct gendisk *); void (*swap_slot_free_notify)(struct block_device *, long unsigned int); int (*report_zones)(struct gendisk *, sector_t, unsigned int, report_zones_cb, void *); char * (*devnode)(struct gendisk *, umode_t *); - int (*get_unique_id)(struct gendisk *, u8 *, enum blk_unique_id); struct module *owner; const struct pr_ops *pr_ops; int (*alternative_gpt_sector)(struct gendisk *, sector_t *); }; -struct blk_independent_access_range { - struct kobject kobj; - struct request_queue *queue; - sector_t sector; - sector_t nr_sectors; -}; - -struct blk_independent_access_ranges { - struct kobject kobj; - bool sysfs_registered; - unsigned int nr_ia_ranges; - struct blk_independent_access_range ia_range[0]; -}; - -enum blk_eh_timer_return { - BLK_EH_DONE = 0, - BLK_EH_RESET_TIMER = 1, +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_hw_ctx; - -struct blk_mq_queue_data; - -struct blk_mq_ops { - blk_status_t (*queue_rq)(struct blk_mq_hw_ctx *, const struct blk_mq_queue_data *); - void (*commit_rqs)(struct blk_mq_hw_ctx *); - void (*queue_rqs)(struct request **); - int (*get_budget)(struct request_queue *); - void (*put_budget)(struct request_queue *, int); - void (*set_rq_budget_token)(struct request *, int); - int (*get_rq_budget_token)(struct request *); - enum blk_eh_timer_return (*timeout)(struct request *, bool); - int (*poll)(struct blk_mq_hw_ctx *, struct io_comp_batch *); - void (*complete)(struct request *); - int (*init_hctx)(struct blk_mq_hw_ctx *, void *, unsigned int); - void (*exit_hctx)(struct blk_mq_hw_ctx *, unsigned int); - int (*init_request)(struct blk_mq_tag_set *, struct request *, unsigned int, unsigned int); - void (*exit_request)(struct blk_mq_tag_set *, struct request *, unsigned int); - void (*cleanup_rq)(struct request *); - bool (*busy)(struct request_queue *); - int (*map_queues)(struct blk_mq_tag_set *); - void (*show_rq)(struct seq_file *, struct request *); +struct sbitmap_word { + long unsigned int depth; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -enum 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 sbq_wait_state { + atomic_t wait_cnt; + wait_queue_head_t wait; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 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); -}; +typedef void rq_end_io_fn(struct request *, blk_status_t); -struct in6_addr { - union { - __u8 u6_addr8[16]; - __be16 u6_addr16[8]; - __be32 u6_addr32[4]; - } in6_u; -}; +typedef __u32 req_flags_t; -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 mq_rq_state { + MQ_RQ_IDLE = 0, + MQ_RQ_IN_FLIGHT = 1, + MQ_RQ_COMPLETE = 2, }; -typedef unsigned int sk_buff_data_t; - -struct skb_ext; +struct blk_ksm_keyslot; -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; - struct llist_node ll_node; - }; +struct request { + struct request_queue *q; + struct blk_mq_ctx *mq_ctx; + struct blk_mq_hw_ctx *mq_hctx; + unsigned int cmd_flags; + req_flags_t rq_flags; + int tag; + int internal_tag; + unsigned int __data_len; + sector_t __sector; + struct bio *bio; + struct bio *biotail; + struct list_head queuelist; union { - struct sock *sk; - int ip_defrag_offset; + struct hlist_node hash; + struct llist_node ipi_list; }; union { - ktime_t tstamp; - u64 skb_mstamp_ns; + struct rb_node rb_node; + struct bio_vec special_vec; + void *completion_data; + int error_count; }; - char cb[48]; union { struct { - long unsigned int _skb_refdst; - void (*destructor)(struct sk_buff *); - }; - struct list_head tcp_tsorted_anchor; - long unsigned int _sk_redir; + struct io_cq *icq; + void *priv[2]; + } elv; + struct { + unsigned int seq; + struct list_head list; + rq_end_io_fn *saved_end_io; + } flush; }; - 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; + struct gendisk *rq_disk; + struct block_device *part; + u64 alloc_time_ns; + u64 start_time_ns; + u64 io_start_time_ns; + short unsigned int wbt_flags; + short unsigned int stats_sectors; + short unsigned int nr_phys_segments; + short unsigned int nr_integrity_segments; + struct bio_crypt_ctx *crypt_ctx; + struct blk_ksm_keyslot *crypt_keyslot; + short unsigned int write_hint; + short unsigned int ioprio; + enum mq_rq_state state; + refcount_t ref; + unsigned int timeout; + long unsigned int deadline; union { - struct { - __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 dst_pending_confirm: 1; - __u8 mono_delivery_time: 1; - __u8 tc_skip_classify: 1; - __u8 tc_at_ingress: 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 redirected: 1; - __u8 from_ingress: 1; - __u8 nf_skip_egress: 1; - __u8 decrypted: 1; - __u8 slow_gro: 1; - __u8 csum_not_inet: 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; - }; - struct { - __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 dst_pending_confirm: 1; - __u8 mono_delivery_time: 1; - __u8 tc_skip_classify: 1; - __u8 tc_at_ingress: 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 redirected: 1; - __u8 from_ingress: 1; - __u8 nf_skip_egress: 1; - __u8 decrypted: 1; - __u8 slow_gro: 1; - __u8 csum_not_inet: 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; - } headers; + struct __call_single_data csd; + u64 fifo_time; }; - 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; + rq_end_io_fn *end_io; + void *end_io_data; +}; + +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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; + +enum elv_merge { + ELEVATOR_NO_MERGE = 0, + ELEVATOR_FRONT_MERGE = 1, + ELEVATOR_BACK_MERGE = 2, + ELEVATOR_DISCARD_MERGE = 3, +}; + +struct elevator_type; + +struct blk_mq_alloc_data; + +struct elevator_mq_ops { + int (*init_sched)(struct request_queue *, struct elevator_type *); + void (*exit_sched)(struct elevator_queue *); + int (*init_hctx)(struct blk_mq_hw_ctx *, unsigned int); + void (*exit_hctx)(struct blk_mq_hw_ctx *, unsigned int); + void (*depth_updated)(struct blk_mq_hw_ctx *); + bool (*allow_merge)(struct request_queue *, struct request *, struct bio *); + bool (*bio_merge)(struct request_queue *, struct bio *, unsigned int); + int (*request_merge)(struct request_queue *, struct request **, struct bio *); + void (*request_merged)(struct request_queue *, struct request *, enum elv_merge); + void (*requests_merged)(struct request_queue *, struct request *, struct request *); + void (*limit_depth)(unsigned int, struct blk_mq_alloc_data *); + void (*prepare_request)(struct request *); + void (*finish_request)(struct request *); + void (*insert_requests)(struct blk_mq_hw_ctx *, struct list_head *, bool); + struct request * (*dispatch_request)(struct blk_mq_hw_ctx *); + bool (*has_work)(struct blk_mq_hw_ctx *); + void (*completed_request)(struct request *, u64); + void (*requeue_request)(struct request *); + struct request * (*former_request)(struct request_queue *, struct request *); + struct request * (*next_request)(struct request_queue *, struct request *); + void (*init_icq)(struct io_cq *); + void (*exit_icq)(struct io_cq *); +}; + +struct elv_fs_entry; + +struct blk_mq_debugfs_attr; + +struct elevator_type { + struct kmem_cache *icq_cache; + struct elevator_mq_ops ops; + size_t icq_size; + size_t icq_align; + struct elv_fs_entry *elevator_attrs; + const char *elevator_name; + const char *elevator_alias; + const unsigned int elevator_features; + struct module *elevator_owner; + const struct blk_mq_debugfs_attr *queue_debugfs_attrs; + const struct blk_mq_debugfs_attr *hctx_debugfs_attrs; + char icq_cache_name[22]; + struct list_head list; +}; + +struct elevator_queue { + struct elevator_type *type; + void *elevator_data; + struct kobject kobj; + struct mutex sysfs_lock; + unsigned int registered: 1; + struct hlist_head hash[64]; +}; + +struct elv_fs_entry { + struct attribute attr; + ssize_t (*show)(struct elevator_queue *, char *); + ssize_t (*store)(struct elevator_queue *, const char *, size_t); +}; + +struct blk_mq_debugfs_attr { + const char *name; + umode_t mode; + int (*show)(void *, struct seq_file *); + ssize_t (*write)(void *, const char *, size_t, loff_t *); + const struct seq_operations *seq_ops; +}; + +enum blk_eh_timer_return { + BLK_EH_DONE = 0, + BLK_EH_RESET_TIMER = 1, +}; + +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 *); + 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 *); + int (*init_hctx)(struct blk_mq_hw_ctx *, void *, unsigned int); + void (*exit_hctx)(struct blk_mq_hw_ctx *, unsigned int); + int (*init_request)(struct blk_mq_tag_set *, struct request *, unsigned int, unsigned int); + void (*exit_request)(struct blk_mq_tag_set *, struct request *, unsigned int); + void (*initialize_rq_fn)(struct request *); + void (*cleanup_rq)(struct request *); + bool (*busy)(struct request_queue *); + int (*map_queues)(struct blk_mq_tag_set *); + 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; + sector_t seed; + unsigned int data_size; + short unsigned int interval; + 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, +}; + +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[96]; + long int state_prev[42]; + long unsigned int events_prev[96]; + 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[15]; + 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 { @@ -9744,7 +10201,6 @@ struct fqdir { struct inet_frags *f; struct net *net; bool dead; - long: 56; long: 64; long: 64; long: 64; @@ -9864,118 +10320,46 @@ struct inet_frag_queue { ktime_t stamp; int len; int meat; - u8 mono_delivery_time; __u8 flags; u16 max_size; struct fqdir *fqdir; struct callback_head rcu; }; -struct inet_hashinfo; +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 inet_timewait_death_row { - refcount_t tw_refcount; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - 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 inet_hashinfo *hashinfo; - int sysctl_max_tw_buckets; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -enum 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 *); +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; @@ -9991,8 +10375,6 @@ struct tcp_congestion_ops { long: 64; }; -typedef struct {} netdevice_tracker; - struct xfrm_state; struct lwtunnel_state; @@ -10017,7 +10399,6 @@ struct dst_entry { short int error; short int __pad; __u32 tclassid; - netdevice_tracker dev_tracker; }; enum nf_inet_hooks { @@ -10195,7 +10576,7 @@ struct skb_ext { refcount_t refcnt; u8 offset[4]; u8 chunks; - long: 56; + long: 0; char data[0]; }; @@ -10272,16 +10653,20 @@ enum hrtimer_base_type { HRTIMER_MAX_CLOCK_BASES = 8, }; +enum { + MM_FILEPAGES = 0, + MM_ANONPAGES = 1, + MM_SWAPENTS = 2, + MM_SHMEMPAGES = 3, + NR_MM_COUNTERS = 4, +}; + enum rseq_cs_flags_bit { RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT = 0, RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT = 1, RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT = 2, }; -enum { - TASK_COMM_LEN = 16, -}; - enum perf_event_task_context { perf_invalid_context = 4294967295, perf_hw_context = 0, @@ -10305,35 +10690,6 @@ enum { PROC_TIME_INIT_INO = 4026531834, }; -struct subprocess_info { - struct work_struct work; - struct completion *complete; - const char *path; - char **argv; - char **envp; - int wait; - int retval; - int (*init)(struct subprocess_info *, struct cred *); - void (*cleanup)(struct subprocess_info *); - void *data; -}; - -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, -}; - -typedef __u16 __le16; - typedef __u64 __be64; typedef unsigned int slab_flags_t; @@ -10560,6 +10916,16 @@ struct tty_struct { struct tty_port *port; }; +typedef struct { + size_t written; + size_t count; + union { + char *buf; + void *data; + } arg; + int error; +} read_descriptor_t; + struct posix_acl_entry { short int e_tag; short unsigned int e_perm; @@ -10653,19 +11019,9 @@ typedef struct { wait_queue_head_t wq; } socket_lock_t; -struct sk_buff_list { +struct sk_buff_head { struct sk_buff *next; struct sk_buff *prev; -}; - -struct sk_buff_head { - union { - struct { - struct sk_buff *next; - struct sk_buff *prev; - }; - struct sk_buff_list list; - }; __u32 qlen; spinlock_t lock; }; @@ -10678,8 +11034,6 @@ struct sock_cgroup_data { u16 prioidx; }; -typedef struct {} netns_tracker; - struct sk_filter; struct socket_wq; @@ -10692,13 +11046,11 @@ struct sock_reuseport; struct sock { struct sock_common __sk_common; - struct dst_entry *sk_rx_dst; - int sk_rx_dst_ifindex; - u32 sk_rx_dst_cookie; socket_lock_t sk_lock; atomic_t sk_drops; int sk_rcvlowat; struct sk_buff_head sk_error_queue; + struct sk_buff *sk_rx_skb_cache; struct sk_buff_head sk_receive_queue; struct { atomic_t rmem_alloc; @@ -10706,18 +11058,20 @@ struct sock { struct sk_buff *head; struct sk_buff *tail; } sk_backlog; - struct llist_head defer_list; int sk_forward_alloc; - u32 sk_reserved_mem; unsigned int sk_ll_usec; unsigned int sk_napi_id; int sk_rcvbuf; + int sk_wait_pending; struct sk_filter *sk_filter; union { struct socket_wq *sk_wq; struct socket_wq *sk_wq_raw; }; 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; @@ -10728,6 +11082,7 @@ struct sock { struct sk_buff *sk_send_head; struct rb_root tcp_rtx_queue; }; + struct sk_buff *sk_tx_skb_cache; struct sk_buff_head sk_write_queue; __s32 sk_peek_off; int sk_write_pending; @@ -10741,11 +11096,13 @@ struct sock { long unsigned int sk_max_pacing_rate; struct page_frag sk_frag; netdev_features_t sk_route_caps; + netdev_features_t sk_route_nocaps; + netdev_features_t sk_route_forced_caps; int sk_gso_type; unsigned int sk_gso_max_size; gfp_t sk_allocation; __u32 sk_txhash; - u8 sk_gso_disabled: 1; + u8 sk_padding: 1; u8 sk_kern_sock: 1; u8 sk_no_check_tx: 1; u8 sk_no_check_rx: 1; @@ -10762,16 +11119,15 @@ struct sock { u32 sk_ack_backlog; u32 sk_max_ack_backlog; kuid_t sk_uid; - u8 sk_txrehash; u8 sk_prefer_busy_poll; u16 sk_busy_poll_budget; spinlock_t sk_peer_lock; - int sk_bind_phc; struct pid *sk_peer_pid; const struct cred *sk_peer_cred; long int sk_rcvtimeo; ktime_t sk_stamp; u16 sk_tsflags; + int sk_bind_phc; u8 sk_shutdown; atomic_t sk_tskey; atomic_t sk_zckey; @@ -10794,7 +11150,6 @@ struct sock { struct sock_reuseport *sk_reuseport_cb; struct bpf_local_storage *sk_bpf_storage; struct callback_head sk_rcu; - netns_tracker ns_tracker; }; struct tty_buffer { @@ -10887,14 +11242,6 @@ struct tty_driver { struct list_head tty_drivers; }; -struct __kfifo { - unsigned int in; - unsigned int out; - unsigned int mask; - unsigned int esize; - void *data; -}; - struct tty_port_operations; struct tty_port_client_operations; @@ -10916,17 +11263,6 @@ struct tty_port { struct mutex mutex; struct mutex buf_mutex; unsigned char *xmit_buf; - struct { - union { - struct __kfifo kfifo; - unsigned char *type; - const unsigned char *const_type; - char (*rectype)[0]; - unsigned char *ptr; - const unsigned char *ptr_const; - }; - unsigned char buf[0]; - } xmit_fifo; unsigned int close_delay; unsigned int closing_wait; int drain_delay; @@ -10937,16 +11273,17 @@ struct tty_port { struct tty_ldisc_ops { char *name; int num; + int flags; int (*open)(struct tty_struct *); void (*close)(struct tty_struct *); void (*flush_buffer)(struct tty_struct *); ssize_t (*read)(struct tty_struct *, struct file *, unsigned char *, size_t, void **, long unsigned int); ssize_t (*write)(struct tty_struct *, struct file *, const unsigned char *, size_t); - int (*ioctl)(struct tty_struct *, unsigned int, long unsigned int); - int (*compat_ioctl)(struct tty_struct *, unsigned int, long unsigned int); + int (*ioctl)(struct tty_struct *, struct file *, unsigned int, long unsigned int); + int (*compat_ioctl)(struct tty_struct *, struct file *, unsigned int, long unsigned int); void (*set_termios)(struct tty_struct *, struct ktermios *); __poll_t (*poll)(struct tty_struct *, struct file *, struct poll_table_struct *); - void (*hangup)(struct tty_struct *); + int (*hangup)(struct tty_struct *); 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); @@ -10976,405 +11313,427 @@ typedef struct { local64_t v; } u64_stats_t; -enum { - IPPROTO_IP = 0, - IPPROTO_ICMP = 1, - IPPROTO_IGMP = 2, - IPPROTO_IPIP = 4, - IPPROTO_TCP = 6, - IPPROTO_EGP = 8, - IPPROTO_PUP = 12, - IPPROTO_UDP = 17, - IPPROTO_IDP = 22, - IPPROTO_TP = 29, - IPPROTO_DCCP = 33, - IPPROTO_IPV6 = 41, - IPPROTO_RSVP = 46, - IPPROTO_GRE = 47, - IPPROTO_ESP = 50, - IPPROTO_AH = 51, - IPPROTO_MTP = 92, - IPPROTO_BEETPH = 94, - IPPROTO_ENCAP = 98, - IPPROTO_PIM = 103, - IPPROTO_COMP = 108, - IPPROTO_SCTP = 132, - IPPROTO_UDPLITE = 136, - IPPROTO_MPLS = 137, - IPPROTO_ETHERNET = 143, - IPPROTO_RAW = 255, - IPPROTO_MPTCP = 262, - IPPROTO_MAX = 263, +struct bpf_insn { + __u8 code; + __u8 dst_reg: 4; + __u8 src_reg: 4; + __s16 off; + __s32 imm; }; -struct flowi_tunnel { - __be64 tun_id; +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 flowi_common { - int flowic_oif; - int flowic_iif; - int flowic_l3mdev; - __u32 flowic_mark; - __u8 flowic_tos; - __u8 flowic_scope; - __u8 flowic_proto; - __u8 flowic_flags; - __u32 flowic_secid; - kuid_t flowic_uid; - struct flowi_tunnel flowic_tun_key; - __u32 flowic_multipath_hash; +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, }; -union flowi_uli { +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, +}; + +union bpf_attr { struct { - __be16 dport; - __be16 sport; - } ports; + __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 { - __u8 type; - __u8 code; - } icmpt; + __u32 map_fd; + __u64 key; + union { + __u64 value; + __u64 next_key; + }; + __u64 flags; + }; struct { - __le16 dport; - __le16 sport; - } dnports; - __be32 gre_key; + __u64 in_batch; + __u64 out_batch; + __u64 keys; + __u64 values; + __u32 count; + __u32 map_fd; + __u64 elem_flags; + __u64 flags; + } batch; struct { - __u8 type; - } mht; -}; - -struct flowi4 { - struct flowi_common __fl_common; - __be32 saddr; - __be32 daddr; - union flowi_uli uli; -}; - -struct flowi6 { - struct flowi_common __fl_common; - struct in6_addr daddr; - struct in6_addr saddr; - __be32 flowlabel; - union flowi_uli uli; - __u32 mp_hash; -}; - -struct flowidn { - struct flowi_common __fl_common; - __le16 daddr; - __le16 saddr; - union flowi_uli uli; -}; - -struct flowi { - union { - struct flowi_common __fl_common; - struct flowi4 ip4; - struct flowi6 ip6; - struct flowidn dn; - } u; -}; - -struct prot_inuse { - int all; - int val[64]; -}; - -struct icmpv6_mib_device { - atomic_long_t mibs[6]; -}; - -struct icmpv6msg_mib_device { - atomic_long_t mibs[512]; -}; - -struct fib_rule; - -struct fib_lookup_arg; - -struct fib_rule_hdr; - -struct nlattr; - -struct netlink_ext_ack; - -struct fib_rules_ops { - int family; - struct list_head list; - int rule_size; - int addr_size; - int unresolved_rules; - int nr_goto_rules; - unsigned int fib_rules_seq; - int (*action)(struct fib_rule *, struct flowi *, int, struct fib_lookup_arg *); - bool (*suppress)(struct fib_rule *, int, struct fib_lookup_arg *); - int (*match)(struct fib_rule *, struct flowi *, int); - int (*configure)(struct fib_rule *, struct sk_buff *, struct fib_rule_hdr *, struct nlattr **, struct netlink_ext_ack *); - int (*delete)(struct fib_rule *); - int (*compare)(struct fib_rule *, struct fib_rule_hdr *, struct nlattr **); - int (*fill)(struct fib_rule *, struct sk_buff *, struct fib_rule_hdr *); - size_t (*nlmsg_payload)(struct fib_rule *); - void (*flush_cache)(struct fib_rules_ops *); - int nlgroup; - struct list_head rules_list; - struct module *owner; - struct net *fro_net; - struct callback_head rcu; -}; - -struct fib_notifier_ops { - int family; - struct list_head list; - unsigned int (*fib_seq_read)(struct net *); - int (*fib_dump)(struct net *, struct notifier_block *, struct netlink_ext_ack *); - struct module *owner; - struct callback_head rcu; -}; - -struct 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; -}; - -struct netdev_hw_addr_list { - struct list_head list; - int count; - struct rb_root tree; -}; - -struct tipc_bearer; - -struct wireless_dev; - -struct mpls_dev; - -enum rx_handler_result { - RX_HANDLER_CONSUMED = 0, - RX_HANDLER_ANOTHER = 1, - RX_HANDLER_EXACT = 2, - RX_HANDLER_PASS = 3, -}; - -typedef enum rx_handler_result rx_handler_result_t; - -typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **); - -enum netdev_ml_priv_type { - ML_PRIV_NONE = 0, - ML_PRIV_CAN = 1, -}; - -struct pcpu_dstats; - -struct garp_port; - -struct mrp_port; - -struct netdev_tc_txq { - u16 count; - u16 offset; -}; - -struct macsec_ops; - -struct udp_tunnel_nic; - -struct bpf_xdp_link; - -struct bpf_xdp_entity { - struct bpf_prog *prog; - struct bpf_xdp_link *link; + __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 { + __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 netdev_name_node; - -struct dev_ifalias; - -struct net_device_ops; - -struct net_device_core_stats; - -struct ethtool_ops; - -struct l3mdev_ops; - -struct ndisc_ops; - -struct xfrmdev_ops; - -struct tlsdev_ops; - -struct header_ops; - -struct vlan_info; - -struct dsa_port; - -struct in_device; - -struct inet6_dev; - -struct wpan_dev; - -struct mctp_dev; - -struct netdev_rx_queue; - -struct mini_Qdisc; - -struct netdev_queue; +struct bpf_func_info { + __u32 insn_off; + __u32 type_id; +}; -struct cpu_rmap; +struct bpf_line_info { + __u32 insn_off; + __u32 file_name_off; + __u32 line_off; + __u32 line_col; +}; -struct Qdisc; +typedef struct { + union { + void *kernel; + void *user; + }; + bool is_kernel: 1; +} sockptr_t; -struct xdp_dev_bulk_queue; +struct bpf_iter_aux_info; -struct xps_dev_maps; +typedef int (*bpf_iter_init_seq_priv_t)(void *, struct bpf_iter_aux_info *); -struct netpoll_info; +struct bpf_map; -struct pcpu_lstats; +struct bpf_iter_aux_info { + struct bpf_map *map; +}; -struct pcpu_sw_netstats; +typedef void (*bpf_iter_fini_seq_priv_t)(void *); -struct dm_hw_stat_delta; +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 rtnl_link_ops; +struct btf; -struct dcbnl_rtnl_ops; +struct btf_type; -struct netprio_map; +struct bpf_prog_aux; -struct phy_device; +struct bpf_local_storage_map; -struct sfp_bus; +struct bpf_verifier_env; -struct udp_tunnel_nic_info; +struct bpf_func_state; -struct rtnl_hw_stats64; +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 net_device { +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]; - 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; - long long 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; - struct net_device_core_stats *core_stats; - atomic_t carrier_up_count; - atomic_t carrier_down_count; - 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 inet6_dev *ip6_ptr; - struct wireless_dev *ieee80211_ptr; - struct wpan_dev *ieee802154_ptr; - struct mpls_dev *mpls_ptr; - struct mctp_dev *mctp_ptr; - const unsigned char *dev_addr; - struct netdev_rx_queue *_rx; - unsigned int num_rx_queues; - unsigned int real_num_rx_queues; - struct bpf_prog *xdp_prog; - long unsigned int gro_flush_timeout; - int napi_defer_hard_irqs; - unsigned int gro_max_size; - 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; + u32 btf_vmlinux_value_type_id; + bool bypass_spec_v1; + bool frozen; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -11384,78 +11743,19 @@ struct net_device { 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 nf_hook_entries *nf_hooks_egress; - struct hlist_head qdisc_hash[16]; - struct timer_list watchdog_timer; - int watchdog_timeo; - u32 proto_down_reason; - struct list_head todo_list; - int *pcpu_refcnt; - struct ref_tracker_dir refcnt_tracker; - struct list_head link_watch_list; - enum { - NETREG_UNINITIALIZED = 0, - NETREG_REGISTERED = 1, - NETREG_UNREGISTERING = 2, - NETREG_UNREGISTERED = 3, - NETREG_RELEASED = 4, - NETREG_DUMMY = 5, - } reg_state: 8; - bool dismantle; - enum { - RTNL_LINK_INITIALIZED = 0, - RTNL_LINK_INITIALIZING = 1, - } rtnl_link_state: 16; - bool needs_free_netdev; - void (*priv_destructor)(struct net_device *); - 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 dm_hw_stat_delta *dm_private; - 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]; - struct netprio_map *priomap; - struct phy_device *phydev; - struct sfp_bus *sfp_bus; - struct lock_class_key *qdisc_tx_busylock; - bool proto_down; - unsigned int wol_enabled: 1; - unsigned int threaded: 1; - struct list_head net_notifier_list; - const struct macsec_ops *macsec_ops; - const struct udp_tunnel_nic_info *udp_tunnel_nic_info; - struct udp_tunnel_nic *udp_tunnel_nic; - struct bpf_xdp_entity xdp_state[3]; - u8 dev_addr_shadow[32]; - netdevice_tracker linkwatch_dev_tracker; - netdevice_tracker watchdog_dev_tracker; - netdevice_tracker dev_registered_tracker; - struct rtnl_hw_stats64 *offload_xstats_l3; + long: 64; + long: 64; + 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; long: 64; long: 64; @@ -11475,302 +11775,191 @@ struct net_device { long: 64; }; -struct hh_cache { - unsigned int hh_len; - seqlock_t hh_lock; - long unsigned int hh_data[4]; +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 neigh_table; - -struct neigh_parms; +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 neigh_ops; +struct btf_type { + __u32 name_off; + __u32 info; + union { + __u32 size; + __u32 type; + }; +}; -struct neighbour { - struct neighbour *next; - struct neigh_table *tbl; - struct neigh_parms *parms; - long unsigned int confirmed; - long unsigned int updated; - rwlock_t lock; - refcount_t refcnt; - unsigned int arp_queue_len_bytes; - struct sk_buff_head arp_queue; - struct timer_list timer; - long unsigned int used; - atomic_t probes; - u8 nud_state; - u8 type; - u8 dead; - u8 protocol; - u32 flags; - seqlock_t ha_lock; - int: 32; - unsigned char ha[32]; - struct hh_cache hh; - int (*output)(struct neighbour *, struct sk_buff *); - const struct neigh_ops *ops; - struct list_head gc_list; - struct list_head managed_list; - struct callback_head rcu; - struct net_device *dev; - netdevice_tracker dev_tracker; - u8 primary_key[0]; +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 ipv6_stable_secret { - bool initialized; - struct in6_addr secret; -}; +struct bpf_ctx_arg_aux; -struct ipv6_devconf { - __s32 forwarding; - __s32 hop_limit; - __s32 mtu6; - __s32 accept_ra; - __s32 accept_redirects; - __s32 autoconf; - __s32 dad_transmits; - __s32 rtr_solicits; - __s32 rtr_solicit_interval; - __s32 rtr_solicit_max_interval; - __s32 rtr_solicit_delay; - __s32 force_mld_version; - __s32 mldv1_unsolicited_report_interval; - __s32 mldv2_unsolicited_report_interval; - __s32 use_tempaddr; - __s32 temp_valid_lft; - __s32 temp_prefered_lft; - __s32 regen_max_retry; - __s32 max_desync_factor; - __s32 max_addresses; - __s32 accept_ra_defrtr; - __u32 ra_defrtr_metric; - __s32 accept_ra_min_hop_limit; - __s32 accept_ra_pinfo; - __s32 ignore_routes_with_linkdown; - __s32 accept_ra_rtr_pref; - __s32 rtr_probe_interval; - __s32 accept_ra_rt_info_min_plen; - __s32 accept_ra_rt_info_max_plen; - __s32 proxy_ndp; - __s32 accept_source_route; - __s32 accept_ra_from_local; - __s32 optimistic_dad; - __s32 use_optimistic; - atomic_t mc_forwarding; - __s32 disable_ipv6; - __s32 drop_unicast_in_l2_multicast; - __s32 accept_dad; - __s32 force_tllao; - __s32 ndisc_notify; - __s32 suppress_frag_ndisc; - __s32 accept_ra_mtu; - __s32 drop_unsolicited_na; - struct ipv6_stable_secret stable_secret; - __s32 use_oif_addrs_only; - __s32 keep_addr_on_down; - __s32 seg6_enabled; - __s32 seg6_require_hmac; - __u32 enhanced_dad; - __u32 addr_gen_mode; - __s32 disable_policy; - __s32 ndisc_tclass; - __s32 rpl_seg_enabled; - __u32 ioam6_id; - __u32 ioam6_id_wide; - __u8 ioam6_enabled; - __u8 ndisc_evict_nocarrier; - struct ctl_table_header *sysctl_header; -}; +struct bpf_trampoline; -typedef struct { - union { - void *kernel; - void *user; - }; - bool is_kernel: 1; -} sockptr_t; +struct bpf_jit_poke_descriptor; -typedef enum { - SS_FREE = 0, - SS_UNCONNECTED = 1, - SS_CONNECTING = 2, - SS_CONNECTED = 3, - SS_DISCONNECTING = 4, -} socket_state; +struct bpf_kfunc_desc_tab; -struct socket_wq { - wait_queue_head_t wait; - struct fasync_struct *fasync_list; - long unsigned int flags; - struct callback_head rcu; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; +struct bpf_prog_ops; -struct proto_ops; +struct btf_mod_pair; -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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 socket_wq wq; -}; +struct bpf_prog_offload; -typedef struct { - size_t written; - size_t count; +struct bpf_func_info_aux; + +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 { - char *buf; - void *data; - } arg; - int error; -} read_descriptor_t; + struct work_struct work; + struct callback_head rcu; + }; +}; -typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *, unsigned int, size_t); +struct sock_filter { + __u16 code; + __u8 jt; + __u8 jf; + __u32 k; +}; -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 bpf_prog_stats; + +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; + 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]; }; -enum rpc_display_format_t { - RPC_DISPLAY_ADDR = 0, - RPC_DISPLAY_PORT = 1, - RPC_DISPLAY_PROTO = 2, - RPC_DISPLAY_HEX_ADDR = 3, - RPC_DISPLAY_HEX_PORT = 4, - RPC_DISPLAY_NETID = 5, - RPC_DISPLAY_MAX = 6, +struct bpf_offloaded_map; + +struct bpf_map_dev_ops { + int (*map_get_next_key)(struct bpf_offloaded_map *, void *, void *); + int (*map_lookup_elem)(struct bpf_offloaded_map *, void *, void *); + int (*map_update_elem)(struct bpf_offloaded_map *, void *, void *, u64); + int (*map_delete_elem)(struct bpf_offloaded_map *, void *); }; -struct dql { - unsigned int num_queued; - unsigned int adj_limit; - unsigned int last_obj_cnt; - 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; - long: 64; - long: 64; - 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 bpf_offloaded_map { + struct bpf_map map; + struct net_device *netdev; + const struct bpf_map_dev_ops *dev_ops; + void *dev_priv; + struct list_head offloads; long: 64; - unsigned int limit; - unsigned int num_completed; - unsigned int prev_ovlimit; - unsigned int prev_num_queued; - unsigned int prev_last_obj_cnt; - unsigned int lowest_slack; - long unsigned int slack_start_time; - unsigned int max_limit; - unsigned int min_limit; - unsigned int slack_hold_time; - long: 32; long: 64; long: 64; long: 64; @@ -11799,427 +11988,308 @@ struct dql { long: 64; }; -struct ieee_ets { - __u8 willing; - __u8 ets_cap; - __u8 cbs; - __u8 tc_tx_bw[8]; - __u8 tc_rx_bw[8]; - __u8 tc_tsa[8]; - __u8 prio_tc[8]; - __u8 tc_reco_bw[8]; - __u8 tc_reco_tsa[8]; - __u8 reco_prio_tc[8]; +struct net_device_stats { + 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 ieee_maxrate { - __u64 tc_maxrate[8]; +struct netdev_hw_addr_list { + struct list_head list; + int count; + struct rb_root tree; }; -struct ieee_qcn { - __u8 rpg_enable[8]; - __u32 rppp_max_rps[8]; - __u32 rpg_time_reset[8]; - __u32 rpg_byte_reset[8]; - __u32 rpg_threshold[8]; - __u32 rpg_max_rate[8]; - __u32 rpg_ai_rate[8]; - __u32 rpg_hai_rate[8]; - __u32 rpg_gd[8]; - __u32 rpg_min_dec_fac[8]; - __u32 rpg_min_rate[8]; - __u32 cndd_state_machine[8]; -}; +struct tipc_bearer; -struct ieee_qcn_stats { - __u64 rppp_rp_centiseconds[8]; - __u32 rppp_created_rps[8]; -}; +struct wireless_dev; -struct ieee_pfc { - __u8 pfc_cap; - __u8 pfc_en; - __u8 mbc; - __u16 delay; - __u64 requests[8]; - __u64 indications[8]; -}; +struct mpls_dev; -struct dcbnl_buffer { - __u8 prio2buffer[8]; - __u32 buffer_size[8]; - __u32 total_size; +enum rx_handler_result { + RX_HANDLER_CONSUMED = 0, + RX_HANDLER_ANOTHER = 1, + RX_HANDLER_EXACT = 2, + RX_HANDLER_PASS = 3, }; -struct cee_pg { - __u8 willing; - __u8 error; - __u8 pg_en; - __u8 tcs_supported; - __u8 pg_bw[8]; - __u8 prio_pg[8]; -}; +typedef enum rx_handler_result rx_handler_result_t; -struct cee_pfc { - __u8 willing; - __u8 error; - __u8 pfc_en; - __u8 tcs_supported; -}; +typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **); -struct dcb_app { - __u8 selector; - __u8 priority; - __u16 protocol; +enum netdev_ml_priv_type { + ML_PRIV_NONE = 0, + ML_PRIV_CAN = 1, }; -struct dcb_peer_app_info { - __u8 willing; - __u8 error; +struct pcpu_dstats; + +struct garp_port; + +struct mrp_port; + +struct netdev_tc_txq { + u16 count; + u16 offset; }; -struct dcbnl_rtnl_ops { - int (*ieee_getets)(struct net_device *, struct ieee_ets *); - int (*ieee_setets)(struct net_device *, struct ieee_ets *); - int (*ieee_getmaxrate)(struct net_device *, struct ieee_maxrate *); - int (*ieee_setmaxrate)(struct net_device *, struct ieee_maxrate *); - int (*ieee_getqcn)(struct net_device *, struct ieee_qcn *); - int (*ieee_setqcn)(struct net_device *, struct ieee_qcn *); - int (*ieee_getqcnstats)(struct net_device *, struct ieee_qcn_stats *); - int (*ieee_getpfc)(struct net_device *, struct ieee_pfc *); - int (*ieee_setpfc)(struct net_device *, struct ieee_pfc *); - int (*ieee_getapp)(struct net_device *, struct dcb_app *); - int (*ieee_setapp)(struct net_device *, struct dcb_app *); - int (*ieee_delapp)(struct net_device *, struct dcb_app *); - int (*ieee_peer_getets)(struct net_device *, struct ieee_ets *); - int (*ieee_peer_getpfc)(struct net_device *, struct ieee_pfc *); - u8 (*getstate)(struct net_device *); - u8 (*setstate)(struct net_device *, u8); - void (*getpermhwaddr)(struct net_device *, u8 *); - void (*setpgtccfgtx)(struct net_device *, int, u8, u8, u8, u8); - void (*setpgbwgcfgtx)(struct net_device *, int, u8); - void (*setpgtccfgrx)(struct net_device *, int, u8, u8, u8, u8); - void (*setpgbwgcfgrx)(struct net_device *, int, u8); - void (*getpgtccfgtx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *); - void (*getpgbwgcfgtx)(struct net_device *, int, u8 *); - void (*getpgtccfgrx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *); - void (*getpgbwgcfgrx)(struct net_device *, int, u8 *); - void (*setpfccfg)(struct net_device *, int, u8); - void (*getpfccfg)(struct net_device *, int, u8 *); - u8 (*setall)(struct net_device *); - u8 (*getcap)(struct net_device *, int, u8 *); - int (*getnumtcs)(struct net_device *, int, u8 *); - int (*setnumtcs)(struct net_device *, int, u8); - u8 (*getpfcstate)(struct net_device *); - void (*setpfcstate)(struct net_device *, u8); - void (*getbcncfg)(struct net_device *, int, u32 *); - void (*setbcncfg)(struct net_device *, int, u32); - void (*getbcnrp)(struct net_device *, int, u8 *); - void (*setbcnrp)(struct net_device *, int, u8); - int (*setapp)(struct net_device *, u8, u16, u8); - int (*getapp)(struct net_device *, u8, u16); - u8 (*getfeatcfg)(struct net_device *, int, u8 *); - u8 (*setfeatcfg)(struct net_device *, int, u8); - u8 (*getdcbx)(struct net_device *); - u8 (*setdcbx)(struct net_device *, u8); - int (*peer_getappinfo)(struct net_device *, struct dcb_peer_app_info *, u16 *); - int (*peer_getapptable)(struct net_device *, struct dcb_app *); - int (*cee_peer_getpg)(struct net_device *, struct cee_pg *); - int (*cee_peer_getpfc)(struct net_device *, struct cee_pfc *); - int (*dcbnl_getbuffer)(struct net_device *, struct dcbnl_buffer *); - int (*dcbnl_setbuffer)(struct net_device *, struct dcbnl_buffer *); -}; +struct macsec_ops; -struct netprio_map { - struct callback_head rcu; - u32 priomap_len; - u32 priomap[0]; -}; +struct udp_tunnel_nic; -struct xdp_mem_info { - u32 type; - u32 id; -}; +struct bpf_xdp_link; -struct xdp_rxq_info { - struct net_device *dev; - u32 queue_index; - u32 reg_state; - struct xdp_mem_info mem; - unsigned int napi_id; - u32 frag_size; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 bpf_xdp_entity { + struct bpf_prog *prog; + struct bpf_xdp_link *link; }; -struct xdp_txq_info { - struct net_device *dev; -}; +struct netdev_name_node; -struct xdp_buff { - void *data; - void *data_end; - void *data_meta; - void *data_hard_start; - struct xdp_rxq_info *rxq; - struct xdp_txq_info *txq; - u32 frame_sz; - u32 flags; -}; +struct dev_ifalias; -struct xdp_frame { - void *data; - u16 len; - u16 headroom; - u32 metasize: 8; - u32 frame_sz: 24; - struct xdp_mem_info mem; - struct net_device *dev_rx; - u32 flags; -}; +struct net_device_ops; -struct nlmsghdr { - __u32 nlmsg_len; - __u16 nlmsg_type; - __u16 nlmsg_flags; - __u32 nlmsg_seq; - __u32 nlmsg_pid; -}; +struct ethtool_ops; -struct nlattr { - __u16 nla_len; - __u16 nla_type; -}; +struct l3mdev_ops; -struct nla_policy; +struct ndisc_ops; -struct netlink_ext_ack { - const char *_msg; - const struct nlattr *bad_attr; - const struct nla_policy *policy; - u8 cookie[20]; - u8 cookie_len; -}; +struct xfrmdev_ops; -struct netlink_range_validation; +struct tlsdev_ops; -struct netlink_range_validation_signed; +struct header_ops; -struct nla_policy { - u8 type; - u8 validation_type; - u16 len; - union { - const u32 bitfield32_valid; - const u32 mask; - const char *reject_message; - const struct nla_policy *nested_policy; - struct netlink_range_validation *range; - struct netlink_range_validation_signed *range_signed; - struct { - s16 min; - s16 max; - }; - int (*validate)(const struct nlattr *, struct netlink_ext_ack *); - u16 strict_start_type; - }; -}; +struct vlan_info; -struct netlink_callback { - struct sk_buff *skb; - const struct nlmsghdr *nlh; - int (*dump)(struct sk_buff *, struct netlink_callback *); - int (*done)(struct netlink_callback *); - void *data; - struct module *module; - struct netlink_ext_ack *extack; - u16 family; - u16 answer_flags; - u32 min_dump_alloc; - unsigned int prev_seq; - unsigned int seq; - bool strict_check; - union { - u8 ctx[48]; - long int args[6]; - }; -}; +struct in_device; -struct ndmsg { - __u8 ndm_family; - __u8 ndm_pad1; - __u16 ndm_pad2; - __s32 ndm_ifindex; - __u16 ndm_state; - __u8 ndm_flags; - __u8 ndm_type; -}; +struct inet6_dev; -struct rtnl_link_stats64 { - __u64 rx_packets; - __u64 tx_packets; - __u64 rx_bytes; - __u64 tx_bytes; - __u64 rx_errors; - __u64 tx_errors; - __u64 rx_dropped; - __u64 tx_dropped; - __u64 multicast; - __u64 collisions; - __u64 rx_length_errors; - __u64 rx_over_errors; - __u64 rx_crc_errors; - __u64 rx_frame_errors; - __u64 rx_fifo_errors; - __u64 rx_missed_errors; - __u64 tx_aborted_errors; - __u64 tx_carrier_errors; - __u64 tx_fifo_errors; - __u64 tx_heartbeat_errors; - __u64 tx_window_errors; - __u64 rx_compressed; - __u64 tx_compressed; - __u64 rx_nohandler; -}; +struct wpan_dev; -struct rtnl_hw_stats64 { - __u64 rx_packets; - __u64 tx_packets; - __u64 rx_bytes; - __u64 tx_bytes; - __u64 rx_errors; - __u64 tx_errors; - __u64 rx_dropped; - __u64 tx_dropped; - __u64 multicast; -}; +struct netdev_rx_queue; -struct ifla_vf_guid { - __u32 vf; - __u64 guid; -}; +struct mini_Qdisc; -struct ifla_vf_stats { - __u64 rx_packets; - __u64 tx_packets; - __u64 rx_bytes; - __u64 tx_bytes; - __u64 broadcast; - __u64 multicast; - __u64 rx_dropped; - __u64 tx_dropped; -}; +struct netdev_queue; -struct ifla_vf_info { - __u32 vf; - __u8 mac[32]; - __u32 vlan; - __u32 qos; - __u32 spoofchk; - __u32 linkstate; - __u32 min_tx_rate; - __u32 max_tx_rate; - __u32 rss_query_en; - __u32 trusted; - __be16 vlan_proto; -}; +struct cpu_rmap; -enum netdev_tx { - __NETDEV_TX_MIN = 2147483648, - NETDEV_TX_OK = 0, - NETDEV_TX_BUSY = 16, -}; +struct Qdisc; -typedef enum netdev_tx netdev_tx_t; +struct xdp_dev_bulk_queue; -struct net_device_core_stats { - long unsigned int rx_dropped; - long unsigned int tx_dropped; - long unsigned int rx_nohandler; - long: 64; -}; +struct xps_dev_maps; -struct header_ops { - int (*create)(struct sk_buff *, struct net_device *, short unsigned int, const void *, const void *, unsigned int); - int (*parse)(const struct sk_buff *, unsigned char *); - int (*cache)(const struct neighbour *, struct hh_cache *, __be16); - void (*cache_update)(struct hh_cache *, const struct net_device *, const unsigned char *); - bool (*validate)(const char *, unsigned int); - __be16 (*parse_protocol)(const struct sk_buff *); -}; +struct netpoll_info; -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, -}; +struct pcpu_lstats; -struct xsk_buff_pool; +struct pcpu_sw_netstats; -struct netdev_queue { - struct net_device *dev; - netdevice_tracker dev_tracker; - struct Qdisc *qdisc; - struct Qdisc *qdisc_sleeping; - struct kobject kobj; - int numa_node; - long unsigned int tx_maxrate; - atomic_long_t trans_timeout; - struct net_device *sb_dev; - struct xsk_buff_pool *pool; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +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; + 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 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 tipc_bearer *tipc_ptr; + struct in_device *ip_ptr; + struct inet6_dev *ip6_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; - spinlock_t _xmit_lock; - int xmit_lock_owner; - long unsigned int trans_start; - long unsigned int state; long: 64; long: 64; long: 64; @@ -12228,6 +12298,72 @@ struct netdev_queue { 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; long: 64; long: 64; @@ -12249,3099 +12385,3201 @@ struct netdev_queue { long: 64; long: 64; long: 64; - struct dql dql; -}; - -struct rps_map { - unsigned int len; - struct callback_head rcu; - u16 cpus[0]; }; -struct rps_dev_flow { - u16 cpu; - u16 filter; - unsigned int last_qtail; -}; - -struct rps_dev_flow_table { - unsigned int mask; - struct callback_head rcu; - struct rps_dev_flow flows[0]; -}; - -struct 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; - netdevice_tracker dev_tracker; - struct xsk_buff_pool *pool; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -enum xps_map_type { - XPS_CPUS = 0, - XPS_RXQS = 1, - XPS_MAPS_MAX = 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_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 xps_map { - unsigned int len; - unsigned int alloc_len; - struct callback_head rcu; - u16 queues[0]; +struct bpf_prog_ops { + int (*test_run)(struct bpf_prog *, const union bpf_attr *, union bpf_attr *); }; -struct xps_dev_maps { - struct callback_head rcu; - unsigned int nr_ids; - s16 num_tc; - struct xps_map *attr_map[0]; -}; +struct bpf_offload_dev; -struct netdev_phys_item_id { - unsigned char id[32]; - unsigned char id_len; +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; }; -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 btf_func_model { + u8 ret_size; + u8 nr_args; + u8 arg_size[12]; }; -struct net_device_path { - enum net_device_path_type type; - const struct net_device *dev; +struct bpf_tramp_image { + void *image; + struct bpf_ksym ksym; + struct percpu_ref pcref; + void *ip_after_call; + void *ip_epilogue; 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 callback_head rcu; + struct work_struct work; }; }; -struct net_device_path_ctx { - const struct net_device *dev; - u8 daddr[6]; - int num_vlans; +struct bpf_trampoline { + struct hlist_node hlist; + struct mutex mutex; + refcount_t refcnt; + u64 key; struct { - u16 id; - __be16 proto; - } vlan[2]; -}; - -enum tc_setup_type { - TC_SETUP_QDISC_MQPRIO = 0, - TC_SETUP_CLSU32 = 1, - TC_SETUP_CLSFLOWER = 2, - TC_SETUP_CLSMATCHALL = 3, - TC_SETUP_CLSBPF = 4, - TC_SETUP_BLOCK = 5, - TC_SETUP_QDISC_CBS = 6, - TC_SETUP_QDISC_RED = 7, - TC_SETUP_QDISC_PRIO = 8, - TC_SETUP_QDISC_MQ = 9, - TC_SETUP_QDISC_ETF = 10, - TC_SETUP_ROOT_QDISC = 11, - TC_SETUP_QDISC_GRED = 12, - TC_SETUP_QDISC_TAPRIO = 13, - TC_SETUP_FT = 14, - TC_SETUP_QDISC_ETS = 15, - TC_SETUP_QDISC_TBF = 16, - TC_SETUP_QDISC_FIFO = 17, - TC_SETUP_QDISC_HTB = 18, - TC_SETUP_ACT = 19, -}; - -enum bpf_netdev_command { - XDP_SETUP_PROG = 0, - XDP_SETUP_PROG_HW = 1, - BPF_OFFLOAD_MAP_ALLOC = 2, - BPF_OFFLOAD_MAP_FREE = 3, - XDP_SETUP_XSK_POOL = 4, + struct 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; }; -enum bpf_xdp_mode { - XDP_MODE_SKB = 0, - XDP_MODE_DRV = 1, - XDP_MODE_HW = 2, - __MAX_XDP_MODE = 3, +struct bpf_func_info_aux { + u16 linkage; + bool unreliable; }; -struct bpf_offloaded_map; - -struct netdev_bpf { - enum bpf_netdev_command command; +struct bpf_jit_poke_descriptor { + void *tailcall_target; + void *tailcall_bypass; + void *bypass_addr; + void *aux; union { struct { - u32 flags; - struct bpf_prog *prog; - struct netlink_ext_ack *extack; - }; - struct { - struct bpf_offloaded_map *offmap; - }; - struct { - struct xsk_buff_pool *pool; - u16 queue_id; - } xsk; + struct bpf_map *map; + u32 key; + } tail_call; }; + bool tailcall_target_stable; + u8 adj_off; + u16 reason; + u32 insn_idx; }; -struct xfrmdev_ops { - int (*xdo_dev_state_add)(struct xfrm_state *); - void (*xdo_dev_state_delete)(struct xfrm_state *); - void (*xdo_dev_state_free)(struct xfrm_state *); - bool (*xdo_dev_offload_ok)(struct sk_buff *, struct xfrm_state *); - void (*xdo_dev_state_advance_esn)(struct xfrm_state *); +struct bpf_ctx_arg_aux { + u32 offset; + enum bpf_reg_type reg_type; + u32 btf_id; }; -struct dev_ifalias { - struct callback_head rcuhead; - char ifalias[0]; +struct btf_mod_pair { + struct btf *btf; + struct module *module; }; -struct netdev_name_node { - struct hlist_node hlist; - struct list_head list; - struct net_device *dev; - const char *name; +struct scatterlist { + long unsigned int page_link; + unsigned int offset; + unsigned int length; + dma_addr_t dma_address; + unsigned int dma_length; }; -struct devlink_port; - -struct ip_tunnel_parm; - -struct net_device_ops { - int (*ndo_init)(struct net_device *); - void (*ndo_uninit)(struct net_device *); - int (*ndo_open)(struct net_device *); - int (*ndo_stop)(struct net_device *); - netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *); - netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t); - u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *); - void (*ndo_change_rx_flags)(struct net_device *, int); - void (*ndo_set_rx_mode)(struct net_device *); - int (*ndo_set_mac_address)(struct net_device *, void *); - int (*ndo_validate_addr)(struct net_device *); - int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int); - int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int); - int (*ndo_siocbond)(struct net_device *, struct ifreq *, int); - int (*ndo_siocwandev)(struct net_device *, struct if_settings *); - int (*ndo_siocdevprivate)(struct net_device *, struct ifreq *, void *, int); - int (*ndo_set_config)(struct net_device *, struct ifmap *); - int (*ndo_change_mtu)(struct net_device *, int); - int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *); - void (*ndo_tx_timeout)(struct net_device *, unsigned int); - void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *); - bool (*ndo_has_offload_stats)(const struct net_device *, int); - int (*ndo_get_offload_stats)(int, const struct net_device *, void *); - struct net_device_stats * (*ndo_get_stats)(struct net_device *); - int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16); - int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16); - void (*ndo_poll_controller)(struct net_device *); - int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *); - void (*ndo_netpoll_cleanup)(struct net_device *); - int (*ndo_set_vf_mac)(struct net_device *, int, u8 *); - int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16); - int (*ndo_set_vf_rate)(struct net_device *, int, int, int); - int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool); - int (*ndo_set_vf_trust)(struct net_device *, int, bool); - int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *); - int (*ndo_set_vf_link_state)(struct net_device *, int, int); - int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *); - int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **); - int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *); - int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *); - int (*ndo_set_vf_guid)(struct net_device *, int, u64, int); - int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool); - int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *); - int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int); - int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32); - int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *); - int (*ndo_del_slave)(struct net_device *, struct net_device *); - struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool); - struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *); - netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t); - int (*ndo_set_features)(struct net_device *, netdev_features_t); - int (*ndo_neigh_construct)(struct net_device *, struct neighbour *); - void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *); - int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *); - int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16); - int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *); - int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *); - int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *); - int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int); - int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16); - int (*ndo_change_carrier)(struct net_device *, bool); - int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *); - int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *); - int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t); - void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *); - void (*ndo_dfwd_del_station)(struct net_device *, void *); - int (*ndo_set_tx_maxrate)(struct net_device *, int, u32); - int (*ndo_get_iflink)(const struct net_device *); - int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *); - void (*ndo_set_rx_headroom)(struct net_device *, int); - int (*ndo_bpf)(struct net_device *, struct netdev_bpf *); - int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32); - struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *, struct xdp_buff *); - int (*ndo_xsk_wakeup)(struct net_device *, u32, u32); - 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 *); +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 neigh_parms { - possible_net_t net; - struct net_device *dev; - netdevice_tracker dev_tracker; - struct list_head list; - int (*neigh_setup)(struct neighbour *); - struct neigh_table *tbl; - void *sysctl_table; - int dead; - refcount_t refcnt; - struct callback_head callback_head; - int reachable_time; - int data[13]; - long unsigned int data_state[1]; +struct flowi_tunnel { + __be64 tun_id; }; -struct pcpu_lstats { - u64_stats_t packets; - u64_stats_t bytes; - struct u64_stats_sync syncp; +struct flowi_common { + int flowic_oif; + int flowic_iif; + __u32 flowic_mark; + __u8 flowic_tos; + __u8 flowic_scope; + __u8 flowic_proto; + __u8 flowic_flags; + __u32 flowic_secid; + kuid_t flowic_uid; + struct flowi_tunnel flowic_tun_key; + __u32 flowic_multipath_hash; }; -struct pcpu_sw_netstats { - u64 rx_packets; - u64 rx_bytes; - u64 tx_packets; - u64 tx_bytes; - struct u64_stats_sync syncp; +union flowi_uli { + struct { + __be16 dport; + __be16 sport; + } ports; + struct { + __u8 type; + __u8 code; + } icmpt; + __be32 gre_key; + struct { + __u8 type; + } mht; }; -enum ethtool_phys_id_state { - ETHTOOL_ID_INACTIVE = 0, - ETHTOOL_ID_ACTIVE = 1, - ETHTOOL_ID_ON = 2, - ETHTOOL_ID_OFF = 3, +struct flowi4 { + struct flowi_common __fl_common; + __be32 saddr; + __be32 daddr; + union flowi_uli uli; }; -struct ethtool_drvinfo; +struct flowi6 { + struct flowi_common __fl_common; + struct in6_addr daddr; + struct in6_addr saddr; + __be32 flowlabel; + union flowi_uli uli; + __u32 mp_hash; +}; -struct ethtool_regs; +struct flowi { + union { + struct flowi_common __fl_common; + struct flowi4 ip4; + struct flowi6 ip6; + } u; +}; -struct ethtool_wolinfo; +struct icmpv6_mib_device { + atomic_long_t mibs[6]; +}; -struct ethtool_link_ext_state_info; +struct icmpv6msg_mib_device { + atomic_long_t mibs[512]; +}; -struct ethtool_eeprom; +struct fib_rule; -struct ethtool_coalesce; +struct fib_lookup_arg; -struct kernel_ethtool_coalesce; +struct fib_rule_hdr; -struct ethtool_ringparam; +struct nlattr; -struct kernel_ethtool_ringparam; +struct netlink_ext_ack; -struct ethtool_pause_stats; +struct nla_policy; -struct ethtool_pauseparam; +struct fib_rules_ops { + int family; + struct list_head list; + int rule_size; + int addr_size; + int unresolved_rules; + int nr_goto_rules; + unsigned int fib_rules_seq; + int (*action)(struct fib_rule *, struct flowi *, int, struct fib_lookup_arg *); + bool (*suppress)(struct fib_rule *, int, struct fib_lookup_arg *); + int (*match)(struct fib_rule *, struct flowi *, int); + int (*configure)(struct fib_rule *, struct sk_buff *, struct fib_rule_hdr *, struct nlattr **, struct netlink_ext_ack *); + int (*delete)(struct fib_rule *); + int (*compare)(struct fib_rule *, struct fib_rule_hdr *, struct nlattr **); + int (*fill)(struct fib_rule *, struct sk_buff *, struct fib_rule_hdr *); + size_t (*nlmsg_payload)(struct fib_rule *); + void (*flush_cache)(struct fib_rules_ops *); + int nlgroup; + const struct nla_policy *policy; + struct list_head rules_list; + struct module *owner; + struct net *fro_net; + struct callback_head rcu; +}; -struct ethtool_test; +struct fib_notifier_ops { + int family; + struct list_head list; + unsigned int (*fib_seq_read)(struct net *); + int (*fib_dump)(struct net *, struct notifier_block *, struct netlink_ext_ack *); + struct module *owner; + struct callback_head rcu; +}; -struct ethtool_stats; +struct hh_cache { + unsigned int hh_len; + seqlock_t hh_lock; + long unsigned int hh_data[4]; +}; -struct ethtool_rxnfc; +struct neigh_table; -struct ethtool_flash; +struct neigh_parms; -struct ethtool_channels; +struct neigh_ops; -struct ethtool_dump; +struct neighbour { + struct neighbour *next; + struct neigh_table *tbl; + struct neigh_parms *parms; + long unsigned int confirmed; + long unsigned int updated; + rwlock_t lock; + refcount_t refcnt; + unsigned int arp_queue_len_bytes; + struct sk_buff_head arp_queue; + struct timer_list timer; + long unsigned int used; + atomic_t probes; + __u8 flags; + __u8 nud_state; + __u8 type; + __u8 dead; + u8 protocol; + seqlock_t ha_lock; + long: 0; + unsigned char ha[32]; + struct hh_cache hh; + int (*output)(struct neighbour *, struct sk_buff *); + const struct neigh_ops *ops; + struct list_head gc_list; + struct callback_head rcu; + struct net_device *dev; + u8 primary_key[0]; +}; -struct ethtool_ts_info; +struct ipv6_stable_secret { + bool initialized; + struct in6_addr secret; +}; -struct ethtool_modinfo; +struct ipv6_devconf { + __s32 forwarding; + __s32 hop_limit; + __s32 mtu6; + __s32 accept_ra; + __s32 accept_redirects; + __s32 autoconf; + __s32 dad_transmits; + __s32 rtr_solicits; + __s32 rtr_solicit_interval; + __s32 rtr_solicit_max_interval; + __s32 rtr_solicit_delay; + __s32 force_mld_version; + __s32 mldv1_unsolicited_report_interval; + __s32 mldv2_unsolicited_report_interval; + __s32 use_tempaddr; + __s32 temp_valid_lft; + __s32 temp_prefered_lft; + __s32 regen_max_retry; + __s32 max_desync_factor; + __s32 max_addresses; + __s32 accept_ra_defrtr; + __u32 ra_defrtr_metric; + __s32 accept_ra_min_hop_limit; + __s32 accept_ra_pinfo; + __s32 ignore_routes_with_linkdown; + __s32 accept_ra_rtr_pref; + __s32 rtr_probe_interval; + __s32 accept_ra_rt_info_min_plen; + __s32 accept_ra_rt_info_max_plen; + __s32 proxy_ndp; + __s32 accept_source_route; + __s32 accept_ra_from_local; + atomic_t mc_forwarding; + __s32 disable_ipv6; + __s32 drop_unicast_in_l2_multicast; + __s32 accept_dad; + __s32 force_tllao; + __s32 ndisc_notify; + __s32 suppress_frag_ndisc; + __s32 accept_ra_mtu; + __s32 drop_unsolicited_na; + struct ipv6_stable_secret stable_secret; + __s32 use_oif_addrs_only; + __s32 keep_addr_on_down; + __s32 seg6_enabled; + __s32 seg6_require_hmac; + __u32 enhanced_dad; + __u32 addr_gen_mode; + __s32 disable_policy; + __s32 ndisc_tclass; + __s32 rpl_seg_enabled; + __u32 ioam6_id; + __u32 ioam6_id_wide; + __u8 ioam6_enabled; + struct ctl_table_header *sysctl_header; +}; -struct ethtool_eee; +typedef enum { + SS_FREE = 0, + SS_UNCONNECTED = 1, + SS_CONNECTING = 2, + SS_CONNECTED = 3, + SS_DISCONNECTING = 4, +} socket_state; -struct ethtool_tunable; +struct socket_wq { + wait_queue_head_t wait; + struct fasync_struct *fasync_list; + long unsigned int flags; + struct callback_head rcu; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; -struct ethtool_link_ksettings; +struct proto_ops; -struct ethtool_fec_stats; +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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 socket_wq wq; +}; -struct ethtool_fecparam; +typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *, unsigned int, size_t); -struct ethtool_module_eeprom; +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 ethtool_eth_phy_stats; +struct dql { + unsigned int num_queued; + unsigned int adj_limit; + unsigned int last_obj_cnt; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + unsigned int limit; + unsigned int num_completed; + unsigned int prev_ovlimit; + unsigned int prev_num_queued; + unsigned int prev_last_obj_cnt; + unsigned int lowest_slack; + long unsigned int slack_start_time; + unsigned int max_limit; + unsigned int min_limit; + unsigned int slack_hold_time; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 ethtool_eth_mac_stats; +struct ieee_ets { + __u8 willing; + __u8 ets_cap; + __u8 cbs; + __u8 tc_tx_bw[8]; + __u8 tc_rx_bw[8]; + __u8 tc_tsa[8]; + __u8 prio_tc[8]; + __u8 tc_reco_bw[8]; + __u8 tc_reco_tsa[8]; + __u8 reco_prio_tc[8]; +}; -struct ethtool_eth_ctrl_stats; +struct ieee_maxrate { + __u64 tc_maxrate[8]; +}; -struct ethtool_rmon_stats; +struct ieee_qcn { + __u8 rpg_enable[8]; + __u32 rppp_max_rps[8]; + __u32 rpg_time_reset[8]; + __u32 rpg_byte_reset[8]; + __u32 rpg_threshold[8]; + __u32 rpg_max_rate[8]; + __u32 rpg_ai_rate[8]; + __u32 rpg_hai_rate[8]; + __u32 rpg_gd[8]; + __u32 rpg_min_dec_fac[8]; + __u32 rpg_min_rate[8]; + __u32 cndd_state_machine[8]; +}; -struct ethtool_rmon_hist_range; +struct ieee_qcn_stats { + __u64 rppp_rp_centiseconds[8]; + __u32 rppp_created_rps[8]; +}; -struct ethtool_module_power_mode_params; +struct ieee_pfc { + __u8 pfc_cap; + __u8 pfc_en; + __u8 mbc; + __u16 delay; + __u64 requests[8]; + __u64 indications[8]; +}; -struct ethtool_ops { - u32 cap_link_lanes_supported: 1; - u32 supported_coalesce_params; - u32 supported_ring_params; - void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *); - int (*get_regs_len)(struct net_device *); - void (*get_regs)(struct net_device *, struct ethtool_regs *, void *); - void (*get_wol)(struct net_device *, struct ethtool_wolinfo *); - int (*set_wol)(struct net_device *, struct ethtool_wolinfo *); - u32 (*get_msglevel)(struct net_device *); - void (*set_msglevel)(struct net_device *, u32); - int (*nway_reset)(struct net_device *); - u32 (*get_link)(struct net_device *); - int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *); - int (*get_eeprom_len)(struct net_device *); - int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); - int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); - int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *); - int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *); - void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *); - int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *); - void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *); - void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *); - int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *); - void (*self_test)(struct net_device *, struct ethtool_test *, u64 *); - void (*get_strings)(struct net_device *, u32, u8 *); - int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state); - void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *); - int (*begin)(struct net_device *); - void (*complete)(struct net_device *); - u32 (*get_priv_flags)(struct net_device *); - int (*set_priv_flags)(struct net_device *, u32); - int (*get_sset_count)(struct net_device *, int); - int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *); - int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); - int (*flash_device)(struct net_device *, struct ethtool_flash *); - int (*reset)(struct net_device *, u32 *); - u32 (*get_rxfh_key_size)(struct net_device *); - u32 (*get_rxfh_indir_size)(struct net_device *); - int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *); - int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8); - int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32); - int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool); - void (*get_channels)(struct net_device *, struct ethtool_channels *); - int (*set_channels)(struct net_device *, struct ethtool_channels *); - int (*get_dump_flag)(struct net_device *, struct ethtool_dump *); - int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *); - int (*set_dump)(struct net_device *, struct ethtool_dump *); - int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *); - int (*get_module_info)(struct net_device *, struct ethtool_modinfo *); - int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); - int (*get_eee)(struct net_device *, struct ethtool_eee *); - int (*set_eee)(struct net_device *, struct ethtool_eee *); - int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *); - int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *); - int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *); - int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *); - int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *); - int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *); - void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *); - int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *); - int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *); - void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *); - int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *); - int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *); - int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *); - void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *); - void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *); - void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *); - void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **); - int (*get_module_power_mode)(struct net_device *, struct ethtool_module_power_mode_params *, struct netlink_ext_ack *); - int (*set_module_power_mode)(struct net_device *, const struct ethtool_module_power_mode_params *, struct netlink_ext_ack *); +struct dcbnl_buffer { + __u8 prio2buffer[8]; + __u32 buffer_size[8]; + __u32 total_size; }; -struct l3mdev_ops { - u32 (*l3mdev_fib_table)(const struct net_device *); - struct sk_buff * (*l3mdev_l3_rcv)(struct net_device *, struct sk_buff *, u16); - struct sk_buff * (*l3mdev_l3_out)(struct net_device *, struct sock *, struct sk_buff *, u16); - struct dst_entry * (*l3mdev_link_scope_lookup)(const struct net_device *, struct flowi6 *); +struct cee_pg { + __u8 willing; + __u8 error; + __u8 pg_en; + __u8 tcs_supported; + __u8 pg_bw[8]; + __u8 prio_pg[8]; }; -struct nd_opt_hdr; +struct cee_pfc { + __u8 willing; + __u8 error; + __u8 pfc_en; + __u8 tcs_supported; +}; -struct ndisc_options; +struct dcb_app { + __u8 selector; + __u8 priority; + __u16 protocol; +}; -struct prefix_info; +struct dcb_peer_app_info { + __u8 willing; + __u8 error; +}; -struct ndisc_ops { - int (*is_useropt)(u8); - int (*parse_options)(const struct net_device *, struct nd_opt_hdr *, struct ndisc_options *); - void (*update)(const struct net_device *, struct neighbour *, u32, u8, const struct ndisc_options *); - int (*opt_addr_space)(const struct net_device *, u8, struct neighbour *, u8 *, u8 **); - void (*fill_addr_option)(const struct net_device *, struct sk_buff *, u8, const u8 *); - void (*prefix_rcv_add_addr)(struct net *, struct net_device *, const struct prefix_info *, struct inet6_dev *, struct in6_addr *, int, u32, bool, bool, __u32, u32, bool); +struct dcbnl_rtnl_ops { + int (*ieee_getets)(struct net_device *, struct ieee_ets *); + int (*ieee_setets)(struct net_device *, struct ieee_ets *); + int (*ieee_getmaxrate)(struct net_device *, struct ieee_maxrate *); + int (*ieee_setmaxrate)(struct net_device *, struct ieee_maxrate *); + int (*ieee_getqcn)(struct net_device *, struct ieee_qcn *); + int (*ieee_setqcn)(struct net_device *, struct ieee_qcn *); + int (*ieee_getqcnstats)(struct net_device *, struct ieee_qcn_stats *); + int (*ieee_getpfc)(struct net_device *, struct ieee_pfc *); + int (*ieee_setpfc)(struct net_device *, struct ieee_pfc *); + int (*ieee_getapp)(struct net_device *, struct dcb_app *); + int (*ieee_setapp)(struct net_device *, struct dcb_app *); + int (*ieee_delapp)(struct net_device *, struct dcb_app *); + int (*ieee_peer_getets)(struct net_device *, struct ieee_ets *); + int (*ieee_peer_getpfc)(struct net_device *, struct ieee_pfc *); + u8 (*getstate)(struct net_device *); + u8 (*setstate)(struct net_device *, u8); + void (*getpermhwaddr)(struct net_device *, u8 *); + void (*setpgtccfgtx)(struct net_device *, int, u8, u8, u8, u8); + void (*setpgbwgcfgtx)(struct net_device *, int, u8); + void (*setpgtccfgrx)(struct net_device *, int, u8, u8, u8, u8); + void (*setpgbwgcfgrx)(struct net_device *, int, u8); + void (*getpgtccfgtx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *); + void (*getpgbwgcfgtx)(struct net_device *, int, u8 *); + void (*getpgtccfgrx)(struct net_device *, int, u8 *, u8 *, u8 *, u8 *); + void (*getpgbwgcfgrx)(struct net_device *, int, u8 *); + void (*setpfccfg)(struct net_device *, int, u8); + void (*getpfccfg)(struct net_device *, int, u8 *); + u8 (*setall)(struct net_device *); + u8 (*getcap)(struct net_device *, int, u8 *); + int (*getnumtcs)(struct net_device *, int, u8 *); + int (*setnumtcs)(struct net_device *, int, u8); + u8 (*getpfcstate)(struct net_device *); + void (*setpfcstate)(struct net_device *, u8); + void (*getbcncfg)(struct net_device *, int, u32 *); + void (*setbcncfg)(struct net_device *, int, u32); + void (*getbcnrp)(struct net_device *, int, u8 *); + void (*setbcnrp)(struct net_device *, int, u8); + int (*setapp)(struct net_device *, u8, u16, u8); + int (*getapp)(struct net_device *, u8, u16); + u8 (*getfeatcfg)(struct net_device *, int, u8 *); + u8 (*setfeatcfg)(struct net_device *, int, u8); + u8 (*getdcbx)(struct net_device *); + u8 (*setdcbx)(struct net_device *, u8); + int (*peer_getappinfo)(struct net_device *, struct dcb_peer_app_info *, u16 *); + int (*peer_getapptable)(struct net_device *, struct dcb_app *); + int (*cee_peer_getpg)(struct net_device *, struct cee_pg *); + int (*cee_peer_getpfc)(struct net_device *, struct cee_pfc *); + int (*dcbnl_getbuffer)(struct net_device *, struct dcbnl_buffer *); + int (*dcbnl_setbuffer)(struct net_device *, struct dcbnl_buffer *); }; -enum tls_offload_ctx_dir { - TLS_OFFLOAD_CTX_DIR_RX = 0, - TLS_OFFLOAD_CTX_DIR_TX = 1, +struct netprio_map { + struct callback_head rcu; + u32 priomap_len; + u32 priomap[0]; }; -struct tls_crypto_info; +struct xdp_mem_info { + u32 type; + u32 id; +}; -struct tls_context; +struct xdp_rxq_info { + struct net_device *dev; + u32 queue_index; + u32 reg_state; + struct xdp_mem_info mem; + unsigned int napi_id; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 tlsdev_ops { - int (*tls_dev_add)(struct net_device *, struct sock *, enum tls_offload_ctx_dir, struct tls_crypto_info *, u32); - void (*tls_dev_del)(struct net_device *, struct tls_context *, enum tls_offload_ctx_dir); - int (*tls_dev_resync)(struct net_device *, struct sock *, u32, u8 *, enum tls_offload_ctx_dir); +struct xdp_txq_info { + struct net_device *dev; }; -struct ipv6_devstat { - struct proc_dir_entry *proc_dir_entry; - struct ipstats_mib *ipv6; - struct icmpv6_mib_device *icmpv6dev; - struct icmpv6msg_mib_device *icmpv6msgdev; +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 ifmcaddr6; - -struct ifacaddr6; +struct xdp_frame { + void *data; + u16 len; + u16 headroom; + u32 metasize: 8; + u32 frame_sz: 24; + struct xdp_mem_info mem; + struct net_device *dev_rx; +}; -struct inet6_dev { - struct net_device *dev; - netdevice_tracker dev_tracker; - struct list_head addr_list; - struct ifmcaddr6 *mc_list; - struct ifmcaddr6 *mc_tomb; - unsigned char mc_qrv; - unsigned char mc_gq_running; - unsigned char mc_ifc_count; - unsigned char mc_dad_count; - long unsigned int mc_v1_seen; - long unsigned int mc_qi; - long unsigned int mc_qri; - long unsigned int mc_maxdelay; - struct delayed_work mc_gq_work; - struct delayed_work mc_ifc_work; - struct delayed_work mc_dad_work; - struct delayed_work mc_query_work; - struct delayed_work mc_report_work; - struct sk_buff_head mc_query_queue; - struct sk_buff_head mc_report_queue; - spinlock_t mc_query_lock; - spinlock_t mc_report_lock; - struct mutex mc_lock; - struct ifacaddr6 *ac_list; - rwlock_t lock; - refcount_t refcnt; - __u32 if_flags; - int dead; - u32 desync_factor; - struct list_head tempaddr_list; - struct in6_addr token; - struct neigh_parms *nd_parms; - struct ipv6_devconf cnf; - struct ipv6_devstat stats; - struct timer_list rs_timer; - __s32 rs_interval; - __u8 rs_probes; - long unsigned int tstamp; - struct callback_head rcu; - unsigned int ra_mtu; +struct nlmsghdr { + __u32 nlmsg_len; + __u16 nlmsg_type; + __u16 nlmsg_flags; + __u32 nlmsg_seq; + __u32 nlmsg_pid; }; -struct rtnl_link_ops { - struct list_head list; - const char *kind; - size_t priv_size; - struct net_device * (*alloc)(struct nlattr **, const char *, unsigned char, unsigned int, unsigned int); - void (*setup)(struct net_device *); - bool netns_refund; - unsigned int maxtype; - const struct nla_policy *policy; - int (*validate)(struct nlattr **, struct nlattr **, struct netlink_ext_ack *); - int (*newlink)(struct net *, struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *); - int (*changelink)(struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *); - void (*dellink)(struct net_device *, struct list_head *); - size_t (*get_size)(const struct net_device *); - int (*fill_info)(struct sk_buff *, const struct net_device *); - size_t (*get_xstats_size)(const struct net_device *); - int (*fill_xstats)(struct sk_buff *, const struct net_device *); - unsigned int (*get_num_tx_queues)(); - unsigned int (*get_num_rx_queues)(); - unsigned int slave_maxtype; - const struct nla_policy *slave_policy; - int (*slave_changelink)(struct net_device *, struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *); - size_t (*get_slave_size)(const struct net_device *, const struct net_device *); - int (*fill_slave_info)(struct sk_buff *, const struct net_device *, const struct net_device *); - struct net * (*get_link_net)(const struct net_device *); - size_t (*get_linkxstats_size)(const struct net_device *, int); - int (*fill_linkxstats)(struct sk_buff *, const struct net_device *, int *, int); +struct nlattr { + __u16 nla_len; + __u16 nla_type; }; -struct udp_tunnel_nic_table_info { - unsigned int n_entries; - unsigned int tunnel_types; +struct netlink_ext_ack { + const char *_msg; + const struct nlattr *bad_attr; + const struct nla_policy *policy; + u8 cookie[20]; + u8 cookie_len; }; -struct udp_tunnel_info; +struct netlink_range_validation; -struct udp_tunnel_nic_shared; +struct netlink_range_validation_signed; -struct udp_tunnel_nic_info { - int (*set_port)(struct net_device *, unsigned int, unsigned int, struct udp_tunnel_info *); - int (*unset_port)(struct net_device *, unsigned int, unsigned int, struct udp_tunnel_info *); - int (*sync_table)(struct net_device *, unsigned int); - struct udp_tunnel_nic_shared *shared; - unsigned int flags; - struct udp_tunnel_nic_table_info tables[4]; +struct nla_policy { + u8 type; + u8 validation_type; + u16 len; + union { + const u32 bitfield32_valid; + const u32 mask; + const char *reject_message; + const struct nla_policy *nested_policy; + struct netlink_range_validation *range; + struct netlink_range_validation_signed *range_signed; + struct { + s16 min; + s16 max; + }; + int (*validate)(const struct nlattr *, struct netlink_ext_ack *); + u16 strict_start_type; + }; }; -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 netlink_callback { + struct sk_buff *skb; + const struct nlmsghdr *nlh; + int (*dump)(struct sk_buff *, struct netlink_callback *); + int (*done)(struct netlink_callback *); + void *data; + struct module *module; + struct netlink_ext_ack *extack; + u16 family; + u16 answer_flags; + u32 min_dump_alloc; + unsigned int prev_seq; + unsigned int seq; + bool strict_check; + union { + u8 ctx[48]; + long int args[6]; + }; }; -enum { - RTAX_UNSPEC = 0, - RTAX_LOCK = 1, - RTAX_MTU = 2, - RTAX_WINDOW = 3, - RTAX_RTT = 4, - RTAX_RTTVAR = 5, - RTAX_SSTHRESH = 6, - RTAX_CWND = 7, - RTAX_ADVMSS = 8, - RTAX_REORDERING = 9, - RTAX_HOPLIMIT = 10, - RTAX_INITCWND = 11, - RTAX_FEATURES = 12, - RTAX_RTO_MIN = 13, - RTAX_INITRWND = 14, - RTAX_QUICKACK = 15, - RTAX_CC_ALGO = 16, - RTAX_FASTOPEN_NO_COOKIE = 17, - __RTAX_MAX = 18, +struct ndmsg { + __u8 ndm_family; + __u8 ndm_pad1; + __u16 ndm_pad2; + __s32 ndm_ifindex; + __u16 ndm_state; + __u8 ndm_flags; + __u8 ndm_type; }; -struct netlink_range_validation { - u64 min; - u64 max; +struct rtnl_link_stats64 { + __u64 rx_packets; + __u64 tx_packets; + __u64 rx_bytes; + __u64 tx_bytes; + __u64 rx_errors; + __u64 tx_errors; + __u64 rx_dropped; + __u64 tx_dropped; + __u64 multicast; + __u64 collisions; + __u64 rx_length_errors; + __u64 rx_over_errors; + __u64 rx_crc_errors; + __u64 rx_frame_errors; + __u64 rx_fifo_errors; + __u64 rx_missed_errors; + __u64 tx_aborted_errors; + __u64 tx_carrier_errors; + __u64 tx_fifo_errors; + __u64 tx_heartbeat_errors; + __u64 tx_window_errors; + __u64 rx_compressed; + __u64 tx_compressed; + __u64 rx_nohandler; }; -struct netlink_range_validation_signed { - s64 min; - s64 max; +struct ifla_vf_guid { + __u32 vf; + __u64 guid; }; -enum { - NEIGH_VAR_MCAST_PROBES = 0, - NEIGH_VAR_UCAST_PROBES = 1, - NEIGH_VAR_APP_PROBES = 2, - NEIGH_VAR_MCAST_REPROBES = 3, - NEIGH_VAR_RETRANS_TIME = 4, - NEIGH_VAR_BASE_REACHABLE_TIME = 5, - NEIGH_VAR_DELAY_PROBE_TIME = 6, - NEIGH_VAR_GC_STALETIME = 7, - NEIGH_VAR_QUEUE_LEN_BYTES = 8, - NEIGH_VAR_PROXY_QLEN = 9, - NEIGH_VAR_ANYCAST_DELAY = 10, - NEIGH_VAR_PROXY_DELAY = 11, - NEIGH_VAR_LOCKTIME = 12, - NEIGH_VAR_QUEUE_LEN = 13, - NEIGH_VAR_RETRANS_TIME_MS = 14, - NEIGH_VAR_BASE_REACHABLE_TIME_MS = 15, - NEIGH_VAR_GC_INTERVAL = 16, - NEIGH_VAR_GC_THRESH1 = 17, - NEIGH_VAR_GC_THRESH2 = 18, - NEIGH_VAR_GC_THRESH3 = 19, - NEIGH_VAR_MAX = 20, +struct ifla_vf_stats { + __u64 rx_packets; + __u64 tx_packets; + __u64 rx_bytes; + __u64 tx_bytes; + __u64 broadcast; + __u64 multicast; + __u64 rx_dropped; + __u64 tx_dropped; }; -struct pneigh_entry; - -struct neigh_statistics; - -struct neigh_hash_table; - -struct neigh_table { - int family; - unsigned int entry_size; - unsigned int key_len; - __be16 protocol; - __u32 (*hash)(const void *, const struct net_device *, __u32 *); - bool (*key_eq)(const struct neighbour *, const void *); - int (*constructor)(struct neighbour *); - int (*pconstructor)(struct pneigh_entry *); - void (*pdestructor)(struct pneigh_entry *); - void (*proxy_redo)(struct sk_buff *); - int (*is_multicast)(const void *); - bool (*allow_add)(const struct net_device *, struct netlink_ext_ack *); - char *id; - struct neigh_parms parms; - struct list_head parms_list; - int gc_interval; - int gc_thresh1; - int gc_thresh2; - int gc_thresh3; - long unsigned int last_flush; - struct delayed_work gc_work; - struct delayed_work managed_work; - struct timer_list proxy_timer; - struct sk_buff_head proxy_queue; - atomic_t entries; - atomic_t gc_entries; - struct list_head gc_list; - struct list_head managed_list; - rwlock_t lock; - long unsigned int last_rand; - struct neigh_statistics *stats; - struct neigh_hash_table *nht; - struct pneigh_entry **phash_buckets; +struct ifla_vf_info { + __u32 vf; + __u8 mac[32]; + __u32 vlan; + __u32 qos; + __u32 spoofchk; + __u32 linkstate; + __u32 min_tx_rate; + __u32 max_tx_rate; + __u32 rss_query_en; + __u32 trusted; + __be16 vlan_proto; }; -struct neigh_statistics { - long unsigned int allocs; - long unsigned int destroys; - long unsigned int hash_grows; - long unsigned int res_failed; - long unsigned int lookups; - long unsigned int hits; - long unsigned int rcv_probes_mcast; - long unsigned int rcv_probes_ucast; - long unsigned int periodic_gc_runs; - long unsigned int forced_gc_runs; - long unsigned int unres_discards; - long unsigned int table_fulls; +struct tc_stats { + __u64 bytes; + __u32 packets; + __u32 drops; + __u32 overlimits; + __u32 bps; + __u32 pps; + __u32 qlen; + __u32 backlog; }; -struct neigh_ops { - int family; - void (*solicit)(struct neighbour *, struct sk_buff *); - void (*error_report)(struct neighbour *, struct sk_buff *); - int (*output)(struct neighbour *, struct sk_buff *); - int (*connected_output)(struct neighbour *, struct sk_buff *); +struct tc_sizespec { + unsigned char cell_log; + unsigned char size_log; + short int cell_align; + int overhead; + unsigned int linklayer; + unsigned int mpu; + unsigned int mtu; + unsigned int tsize; }; -struct pneigh_entry { - struct pneigh_entry *next; - possible_net_t net; - struct net_device *dev; - netdevice_tracker dev_tracker; - u32 flags; - u8 protocol; - u8 key[0]; +enum netdev_tx { + __NETDEV_TX_MIN = 2147483648, + NETDEV_TX_OK = 0, + NETDEV_TX_BUSY = 16, }; -struct neigh_hash_table { - struct neighbour **hash_buckets; - unsigned int hash_shift; - __u32 hash_rnd[4]; - struct callback_head rcu; -}; +typedef enum netdev_tx netdev_tx_t; -enum { - TCP_ESTABLISHED = 1, - TCP_SYN_SENT = 2, - TCP_SYN_RECV = 3, - TCP_FIN_WAIT1 = 4, - TCP_FIN_WAIT2 = 5, - TCP_TIME_WAIT = 6, - TCP_CLOSE = 7, - TCP_CLOSE_WAIT = 8, - TCP_LAST_ACK = 9, - TCP_LISTEN = 10, - TCP_CLOSING = 11, - TCP_NEW_SYN_RECV = 12, - TCP_MAX_STATES = 13, +struct header_ops { + int (*create)(struct sk_buff *, struct net_device *, short unsigned int, const void *, const void *, unsigned int); + int (*parse)(const struct sk_buff *, unsigned char *); + int (*cache)(const struct neighbour *, struct hh_cache *, __be16); + void (*cache_update)(struct hh_cache *, const struct net_device *, const unsigned char *); + bool (*validate)(const char *, unsigned int); + __be16 (*parse_protocol)(const struct sk_buff *); }; -struct fib_rule_hdr { - __u8 family; - __u8 dst_len; - __u8 src_len; - __u8 tos; - __u8 table; - __u8 res1; - __u8 res2; - __u8 action; - __u32 flags; -}; +struct xsk_buff_pool; -struct fib_rule_port_range { - __u16 start; - __u16 end; +struct netdev_queue { + struct net_device *dev; + struct Qdisc *qdisc; + struct Qdisc *qdisc_sleeping; + struct kobject kobj; + int numa_node; + long unsigned int tx_maxrate; + long unsigned int trans_timeout; + struct net_device *sb_dev; + struct xsk_buff_pool *pool; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + spinlock_t _xmit_lock; + int xmit_lock_owner; + long unsigned int trans_start; + long unsigned int state; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct dql dql; }; -struct fib_kuid_range { - kuid_t start; - kuid_t end; +struct qdisc_skb_head { + struct sk_buff *head; + struct sk_buff *tail; + __u32 qlen; + spinlock_t lock; }; -struct fib_rule { - struct list_head list; - int iifindex; - int oifindex; - u32 mark; - u32 mark_mask; - u32 flags; - u32 table; - u8 action; - u8 l3mdev; - u8 proto; - u8 ip_proto; - u32 target; - __be64 tun_id; - struct fib_rule *ctarget; - struct net *fr_net; - refcount_t refcnt; - u32 pref; - int suppress_ifgroup; - int suppress_prefixlen; - char iifname[16]; - char oifname[16]; - struct fib_kuid_range uid_range; - struct fib_rule_port_range sport_range; - struct fib_rule_port_range dport_range; - struct callback_head rcu; +struct gnet_stats_basic_packed { + __u64 bytes; + __u64 packets; }; -struct fib_lookup_arg { - void *lookup_ptr; - const void *lookup_data; - void *result; - struct fib_rule *rule; - u32 table; - int flags; +struct gnet_stats_queue { + __u32 qlen; + __u32 backlog; + __u32 drops; + __u32 requeues; + __u32 overlimits; }; -struct smc_hashinfo; - -struct sk_psock; +struct Qdisc_ops; -struct request_sock_ops; +struct qdisc_size_table; -struct timewait_sock_ops; +struct net_rate_estimator; -struct udp_table; +struct gnet_stats_basic_cpu; -struct raw_hashinfo; - -struct proto { - void (*close)(struct sock *, long int); - int (*pre_connect)(struct sock *, struct sockaddr *, int); - int (*connect)(struct sock *, struct sockaddr *, int); - int (*disconnect)(struct sock *, int); - struct sock * (*accept)(struct sock *, int, int *, bool); - int (*ioctl)(struct sock *, int, long unsigned int); - int (*init)(struct sock *); - void (*destroy)(struct sock *); - void (*shutdown)(struct sock *, int); - int (*setsockopt)(struct sock *, int, int, sockptr_t, unsigned int); - int (*getsockopt)(struct sock *, int, int, char *, int *); - void (*keepalive)(struct sock *, int); - int (*compat_ioctl)(struct sock *, unsigned int, long unsigned int); - int (*sendmsg)(struct sock *, struct msghdr *, size_t); - int (*recvmsg)(struct sock *, struct msghdr *, size_t, int, int, int *); - int (*sendpage)(struct sock *, struct page *, int, size_t, int); - 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); - void (*put_port)(struct sock *); - int (*psock_update_sk_prot)(struct sock *, struct sk_psock *, bool); - unsigned int inuse_idx; - int (*forward_alloc_get)(const struct sock *); - bool (*stream_memory_free)(const struct sock *, int); - bool (*sock_is_readable)(struct sock *); - void (*enter_memory_pressure)(struct sock *); - void (*leave_memory_pressure)(struct sock *); - atomic_long_t *memory_allocated; - struct percpu_counter *sockets_allocated; - long unsigned int *memory_pressure; - long int *sysctl_mem; - int *sysctl_wmem; - int *sysctl_rmem; - u32 sysctl_wmem_offset; - u32 sysctl_rmem_offset; - int max_header; - bool no_autobind; - struct kmem_cache *slab; - unsigned int obj_size; - slab_flags_t slab_flags; - unsigned int useroffset; - unsigned int usersize; - unsigned int *orphan_count; - struct request_sock_ops *rsk_prot; - struct timewait_sock_ops *twsk_prot; - union { - struct inet_hashinfo *hashinfo; - struct udp_table *udp_table; - struct raw_hashinfo *raw_hash; - struct smc_hashinfo *smc_hash; - } h; - struct module *owner; - char name[32]; - struct list_head node; - int (*diag_destroy)(struct sock *, int); +struct Qdisc { + int (*enqueue)(struct sk_buff *, struct Qdisc *, struct sk_buff **); + struct sk_buff * (*dequeue)(struct Qdisc *); + unsigned int flags; + u32 limit; + const struct Qdisc_ops *ops; + struct qdisc_size_table *stab; + struct hlist_node hash; + u32 handle; + u32 parent; + struct netdev_queue *dev_queue; + struct net_rate_estimator *rate_est; + struct gnet_stats_basic_cpu *cpu_bstats; + struct gnet_stats_queue *cpu_qstats; + int pad; + refcount_t refcnt; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 sk_buff_head gso_skb; + struct qdisc_skb_head q; + struct gnet_stats_basic_packed bstats; + seqcount_t running; + struct gnet_stats_queue qstats; + long unsigned int state; + struct Qdisc *next_sched; + struct sk_buff_head skb_bad_txq; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + spinlock_t busylock; + spinlock_t seqlock; + struct callback_head rcu; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long int privdata[0]; }; -struct request_sock; - -struct request_sock_ops { - int family; - unsigned int obj_size; - struct kmem_cache *slab; - char *slab_name; - int (*rtx_syn_ack)(const struct sock *, struct request_sock *); - void (*send_ack)(const struct sock *, struct sk_buff *, struct request_sock *); - void (*send_reset)(const struct sock *, struct sk_buff *); - void (*destructor)(struct request_sock *); - void (*syn_ack_timeout)(const struct request_sock *); +struct rps_map { + unsigned int len; + struct callback_head rcu; + u16 cpus[0]; }; -struct timewait_sock_ops { - struct kmem_cache *twsk_slab; - char *twsk_slab_name; - unsigned int twsk_obj_size; - int (*twsk_unique)(struct sock *, struct sock *, void *); - void (*twsk_destructor)(struct sock *); +struct rps_dev_flow { + u16 cpu; + u16 filter; + unsigned int last_qtail; }; -struct saved_syn; - -struct request_sock { - struct sock_common __req_common; - struct request_sock *dl_next; - u16 mss; - u8 num_retrans; - u8 syncookie: 1; - u8 num_timeout: 7; - u32 ts_recent; - struct timer_list rsk_timer; - const struct request_sock_ops *rsk_ops; - struct sock *sk; - struct saved_syn *saved_syn; - u32 secid; - u32 peer_secid; - u32 timeout; +struct rps_dev_flow_table { + unsigned int mask; + struct callback_head rcu; + struct rps_dev_flow flows[0]; }; -struct saved_syn { - u32 mac_hdrlen; - u32 network_hdrlen; - u32 tcp_hdrlen; - u8 data[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; + struct xsk_buff_pool *pool; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -enum tsq_enum { - TSQ_THROTTLED = 0, - TSQ_QUEUED = 1, - TCP_TSQ_DEFERRED = 2, - TCP_WRITE_TIMER_DEFERRED = 3, - TCP_DELACK_TIMER_DEFERRED = 4, - TCP_MTU_REDUCED_DEFERRED = 5, +struct xps_map { + unsigned int len; + unsigned int alloc_len; + struct callback_head rcu; + u16 queues[0]; }; -struct ip6_sf_list { - struct ip6_sf_list *sf_next; - struct in6_addr sf_addr; - long unsigned int sf_count[2]; - unsigned char sf_gsresp; - unsigned char sf_oldin; - unsigned char sf_crcount; +struct xps_dev_maps { struct callback_head rcu; + unsigned int nr_ids; + s16 num_tc; + struct xps_map *attr_map[0]; }; -struct ifmcaddr6 { - struct in6_addr mca_addr; - struct inet6_dev *idev; - struct ifmcaddr6 *next; - struct ip6_sf_list *mca_sources; - struct ip6_sf_list *mca_tomb; - unsigned int mca_sfmode; - unsigned char mca_crcount; - long unsigned int mca_sfcount[2]; - struct delayed_work mca_work; - unsigned int mca_flags; - int mca_users; - refcount_t mca_refcnt; - long unsigned int mca_cstamp; - long unsigned int mca_tstamp; - struct callback_head rcu; +struct netdev_fcoe_hbainfo { + char manufacturer[64]; + char serial_number[64]; + char hardware_version[64]; + char driver_version[64]; + char optionrom_version[64]; + char firmware_version[64]; + char model[256]; + char model_description[256]; }; -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 netdev_phys_item_id { + unsigned char id[32]; + unsigned char id_len; }; -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 net_device_path_type { + DEV_PATH_ETHERNET = 0, + DEV_PATH_VLAN = 1, + DEV_PATH_BRIDGE = 2, + DEV_PATH_PPPOE = 3, + DEV_PATH_DSA = 4, }; -enum { - UNAME26 = 131072, - ADDR_NO_RANDOMIZE = 262144, - FDPIC_FUNCPTRS = 524288, - MMAP_PAGE_ZERO = 1048576, - ADDR_COMPAT_LAYOUT = 2097152, - READ_IMPLIES_EXEC = 4194304, - ADDR_LIMIT_32BIT = 8388608, - SHORT_INODE = 16777216, - WHOLE_SECONDS = 33554432, - STICKY_TIMEOUTS = 67108864, - ADDR_LIMIT_3GB = 134217728, +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; + }; }; -enum perf_branch_sample_type_shift { - PERF_SAMPLE_BRANCH_USER_SHIFT = 0, - PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 1, - PERF_SAMPLE_BRANCH_HV_SHIFT = 2, - PERF_SAMPLE_BRANCH_ANY_SHIFT = 3, - PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 4, - PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 5, - PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 6, - PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 7, - PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 8, - PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 9, - PERF_SAMPLE_BRANCH_COND_SHIFT = 10, - PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 11, - PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT = 12, - PERF_SAMPLE_BRANCH_CALL_SHIFT = 13, - PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT = 14, - PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15, - PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16, - PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17, - PERF_SAMPLE_BRANCH_MAX_SHIFT = 18, +struct net_device_path_ctx { + const struct net_device *dev; + u8 daddr[6]; + int num_vlans; + struct { + u16 id; + __be16 proto; + } vlan[2]; }; -enum { - TSK_TRACE_FL_TRACE_BIT = 0, - TSK_TRACE_FL_GRAPH_BIT = 1, +enum tc_setup_type { + TC_SETUP_QDISC_MQPRIO = 0, + TC_SETUP_CLSU32 = 1, + TC_SETUP_CLSFLOWER = 2, + TC_SETUP_CLSMATCHALL = 3, + TC_SETUP_CLSBPF = 4, + TC_SETUP_BLOCK = 5, + TC_SETUP_QDISC_CBS = 6, + TC_SETUP_QDISC_RED = 7, + TC_SETUP_QDISC_PRIO = 8, + TC_SETUP_QDISC_MQ = 9, + TC_SETUP_QDISC_ETF = 10, + TC_SETUP_ROOT_QDISC = 11, + TC_SETUP_QDISC_GRED = 12, + TC_SETUP_QDISC_TAPRIO = 13, + TC_SETUP_FT = 14, + TC_SETUP_QDISC_ETS = 15, + TC_SETUP_QDISC_TBF = 16, + TC_SETUP_QDISC_FIFO = 17, + TC_SETUP_QDISC_HTB = 18, }; -struct uuidcmp { - const char *uuid; - int len; +enum bpf_netdev_command { + XDP_SETUP_PROG = 0, + XDP_SETUP_PROG_HW = 1, + BPF_OFFLOAD_MAP_ALLOC = 2, + BPF_OFFLOAD_MAP_FREE = 3, + XDP_SETUP_XSK_POOL = 4, }; -typedef phys_addr_t resource_size_t; +struct netdev_bpf { + enum bpf_netdev_command command; + union { + struct { + u32 flags; + struct bpf_prog *prog; + struct netlink_ext_ack *extack; + }; + struct { + struct bpf_offloaded_map *offmap; + }; + struct { + struct xsk_buff_pool *pool; + u16 queue_id; + } xsk; + }; +}; -struct __va_list_tag { - long int __gpr; - long int __fpr; - void *__overflow_arg_area; - void *__reg_save_area; +struct xfrmdev_ops { + int (*xdo_dev_state_add)(struct xfrm_state *); + void (*xdo_dev_state_delete)(struct xfrm_state *); + void (*xdo_dev_state_free)(struct xfrm_state *); + bool (*xdo_dev_offload_ok)(struct sk_buff *, struct xfrm_state *); + void (*xdo_dev_state_advance_esn)(struct xfrm_state *); }; -typedef __builtin_va_list va_list; +struct dev_ifalias { + struct callback_head rcuhead; + char ifalias[0]; +}; -struct resource { - resource_size_t start; - resource_size_t end; +struct netdev_name_node { + struct hlist_node hlist; + struct list_head list; + struct net_device *dev; const char *name; - long unsigned int flags; - long unsigned int desc; - struct resource *parent; - struct resource *sibling; - struct resource *child; }; -enum umh_disable_depth { - UMH_ENABLED = 0, - UMH_FREEZING = 1, - UMH_DISABLED = 2, -}; +struct devlink_port; -typedef u64 async_cookie_t; +struct ip_tunnel_parm; -typedef void (*async_func_t)(void *, async_cookie_t); +struct net_device_ops { + int (*ndo_init)(struct net_device *); + void (*ndo_uninit)(struct net_device *); + int (*ndo_open)(struct net_device *); + int (*ndo_stop)(struct net_device *); + netdev_tx_t (*ndo_start_xmit)(struct sk_buff *, struct net_device *); + netdev_features_t (*ndo_features_check)(struct sk_buff *, struct net_device *, netdev_features_t); + u16 (*ndo_select_queue)(struct net_device *, struct sk_buff *, struct net_device *); + void (*ndo_change_rx_flags)(struct net_device *, int); + void (*ndo_set_rx_mode)(struct net_device *); + int (*ndo_set_mac_address)(struct net_device *, void *); + int (*ndo_validate_addr)(struct net_device *); + int (*ndo_do_ioctl)(struct net_device *, struct ifreq *, int); + int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int); + int (*ndo_siocbond)(struct net_device *, struct ifreq *, int); + int (*ndo_siocwandev)(struct net_device *, struct if_settings *); + int (*ndo_siocdevprivate)(struct net_device *, struct ifreq *, void *, int); + int (*ndo_set_config)(struct net_device *, struct ifmap *); + int (*ndo_change_mtu)(struct net_device *, int); + int (*ndo_neigh_setup)(struct net_device *, struct neigh_parms *); + void (*ndo_tx_timeout)(struct net_device *, unsigned int); + void (*ndo_get_stats64)(struct net_device *, struct rtnl_link_stats64 *); + bool (*ndo_has_offload_stats)(const struct net_device *, int); + int (*ndo_get_offload_stats)(int, const struct net_device *, void *); + struct net_device_stats * (*ndo_get_stats)(struct net_device *); + int (*ndo_vlan_rx_add_vid)(struct net_device *, __be16, u16); + int (*ndo_vlan_rx_kill_vid)(struct net_device *, __be16, u16); + void (*ndo_poll_controller)(struct net_device *); + int (*ndo_netpoll_setup)(struct net_device *, struct netpoll_info *); + void (*ndo_netpoll_cleanup)(struct net_device *); + int (*ndo_set_vf_mac)(struct net_device *, int, u8 *); + int (*ndo_set_vf_vlan)(struct net_device *, int, u16, u8, __be16); + int (*ndo_set_vf_rate)(struct net_device *, int, int, int); + int (*ndo_set_vf_spoofchk)(struct net_device *, int, bool); + int (*ndo_set_vf_trust)(struct net_device *, int, bool); + int (*ndo_get_vf_config)(struct net_device *, int, struct ifla_vf_info *); + int (*ndo_set_vf_link_state)(struct net_device *, int, int); + int (*ndo_get_vf_stats)(struct net_device *, int, struct ifla_vf_stats *); + int (*ndo_set_vf_port)(struct net_device *, int, struct nlattr **); + int (*ndo_get_vf_port)(struct net_device *, int, struct sk_buff *); + int (*ndo_get_vf_guid)(struct net_device *, int, struct ifla_vf_guid *, struct ifla_vf_guid *); + int (*ndo_set_vf_guid)(struct net_device *, int, u64, int); + int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool); + int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *); + int (*ndo_fcoe_enable)(struct net_device *); + int (*ndo_fcoe_disable)(struct net_device *); + int (*ndo_fcoe_ddp_setup)(struct net_device *, u16, struct scatterlist *, unsigned int); + int (*ndo_fcoe_ddp_done)(struct net_device *, u16); + int (*ndo_fcoe_ddp_target)(struct net_device *, u16, struct scatterlist *, unsigned int); + int (*ndo_fcoe_get_hbainfo)(struct net_device *, struct netdev_fcoe_hbainfo *); + int (*ndo_fcoe_get_wwn)(struct net_device *, u64 *, int); + int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32); + int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *); + int (*ndo_del_slave)(struct net_device *, struct net_device *); + struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool); + struct net_device * (*ndo_sk_get_lower_dev)(struct net_device *, struct sock *); + netdev_features_t (*ndo_fix_features)(struct net_device *, netdev_features_t); + int (*ndo_set_features)(struct net_device *, netdev_features_t); + int (*ndo_neigh_construct)(struct net_device *, struct neighbour *); + void (*ndo_neigh_destroy)(struct net_device *, struct neighbour *); + int (*ndo_fdb_add)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16, u16, struct netlink_ext_ack *); + int (*ndo_fdb_del)(struct ndmsg *, struct nlattr **, struct net_device *, const unsigned char *, u16); + int (*ndo_fdb_dump)(struct sk_buff *, struct netlink_callback *, struct net_device *, struct net_device *, int *); + int (*ndo_fdb_get)(struct sk_buff *, struct nlattr **, struct net_device *, const unsigned char *, u16, u32, u32, struct netlink_ext_ack *); + int (*ndo_bridge_setlink)(struct net_device *, struct nlmsghdr *, u16, struct netlink_ext_ack *); + int (*ndo_bridge_getlink)(struct sk_buff *, u32, u32, struct net_device *, u32, int); + int (*ndo_bridge_dellink)(struct net_device *, struct nlmsghdr *, u16); + int (*ndo_change_carrier)(struct net_device *, bool); + int (*ndo_get_phys_port_id)(struct net_device *, struct netdev_phys_item_id *); + int (*ndo_get_port_parent_id)(struct net_device *, struct netdev_phys_item_id *); + int (*ndo_get_phys_port_name)(struct net_device *, char *, size_t); + void * (*ndo_dfwd_add_station)(struct net_device *, struct net_device *); + void (*ndo_dfwd_del_station)(struct net_device *, void *); + int (*ndo_set_tx_maxrate)(struct net_device *, int, u32); + int (*ndo_get_iflink)(const struct net_device *); + int (*ndo_change_proto_down)(struct net_device *, bool); + int (*ndo_fill_metadata_dst)(struct net_device *, struct sk_buff *); + void (*ndo_set_rx_headroom)(struct net_device *, int); + int (*ndo_bpf)(struct net_device *, struct netdev_bpf *); + int (*ndo_xdp_xmit)(struct net_device *, int, struct xdp_frame **, u32); + struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *, struct xdp_buff *); + int (*ndo_xsk_wakeup)(struct net_device *, u32, u32); + 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 async_domain { - struct list_head pending; - unsigned int registered: 1; +struct neigh_parms { + possible_net_t net; + struct net_device *dev; + struct list_head list; + int (*neigh_setup)(struct neighbour *); + struct neigh_table *tbl; + void *sysctl_table; + int dead; + refcount_t refcnt; + struct callback_head callback_head; + int reachable_time; + int data[13]; + long unsigned int data_state[1]; }; -struct hash { - int ino; - int minor; - int major; - umode_t mode; - struct hash *next; - char name[4098]; +struct pcpu_lstats { + u64_stats_t packets; + u64_stats_t bytes; + struct u64_stats_sync syncp; }; -struct dir_entry { - struct list_head list; - char *name; - time64_t mtime; +struct pcpu_sw_netstats { + u64 rx_packets; + u64 rx_bytes; + u64 tx_packets; + u64 tx_bytes; + struct u64_stats_sync syncp; }; -enum state { - Start = 0, - Collect = 1, - GotHeader = 2, - SkipIt = 3, - GotName = 4, - CopyFile = 5, - GotSymlink = 6, - Reset = 7, +enum ethtool_phys_id_state { + ETHTOOL_ID_INACTIVE = 0, + ETHTOOL_ID_ACTIVE = 1, + ETHTOOL_ID_ON = 2, + ETHTOOL_ID_OFF = 3, }; -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 *)); +struct ethtool_drvinfo; -enum interruption_class { - IRQEXT_CLK = 0, - IRQEXT_EXC = 1, - IRQEXT_EMS = 2, - IRQEXT_TMR = 3, - IRQEXT_TLA = 4, - IRQEXT_PFL = 5, - IRQEXT_DSD = 6, - IRQEXT_VRT = 7, - IRQEXT_SCP = 8, - IRQEXT_IUC = 9, - IRQEXT_CMS = 10, - IRQEXT_CMC = 11, - IRQEXT_FTP = 12, - IRQIO_CIO = 13, - IRQIO_DAS = 14, - IRQIO_C15 = 15, - IRQIO_C70 = 16, - IRQIO_TAP = 17, - IRQIO_VMR = 18, - IRQIO_LCS = 19, - IRQIO_CTC = 20, - IRQIO_ADM = 21, - IRQIO_CSC = 22, - IRQIO_VIR = 23, - IRQIO_QAI = 24, - IRQIO_APB = 25, - IRQIO_PCF = 26, - IRQIO_PCD = 27, - IRQIO_MSI = 28, - IRQIO_VAI = 29, - IRQIO_GAL = 30, - NMI_NMI = 31, - CPU_RST = 32, - NR_ARCH_IRQS = 33, -}; +struct ethtool_regs; -enum { - HI_SOFTIRQ = 0, - TIMER_SOFTIRQ = 1, - NET_TX_SOFTIRQ = 2, - NET_RX_SOFTIRQ = 3, - BLOCK_SOFTIRQ = 4, - IRQ_POLL_SOFTIRQ = 5, - TASKLET_SOFTIRQ = 6, - SCHED_SOFTIRQ = 7, - HRTIMER_SOFTIRQ = 8, - RCU_SOFTIRQ = 9, - NR_SOFTIRQS = 10, -}; +struct ethtool_wolinfo; -enum migratetype { - MIGRATE_UNMOVABLE = 0, - MIGRATE_MOVABLE = 1, - MIGRATE_RECLAIMABLE = 2, - MIGRATE_PCPTYPES = 3, - MIGRATE_HIGHATOMIC = 3, - MIGRATE_CMA = 4, - MIGRATE_ISOLATE = 5, - MIGRATE_TYPES = 6, -}; +struct ethtool_link_ext_state_info; -enum numa_stat_item { - NUMA_HIT = 0, - NUMA_MISS = 1, - NUMA_FOREIGN = 2, - NUMA_INTERLEAVE_HIT = 3, - NUMA_LOCAL = 4, - NUMA_OTHER = 5, - NR_VM_NUMA_EVENT_ITEMS = 6, -}; +struct ethtool_eeprom; -enum zone_stat_item { - NR_FREE_PAGES = 0, - NR_ZONE_LRU_BASE = 1, - NR_ZONE_INACTIVE_ANON = 1, - NR_ZONE_ACTIVE_ANON = 2, - NR_ZONE_INACTIVE_FILE = 3, - NR_ZONE_ACTIVE_FILE = 4, - NR_ZONE_UNEVICTABLE = 5, - NR_ZONE_WRITE_PENDING = 6, - NR_MLOCK = 7, - NR_BOUNCE = 8, - NR_ZSPAGES = 9, - NR_FREE_CMA_PAGES = 10, - NR_VM_ZONE_STAT_ITEMS = 11, -}; +struct ethtool_coalesce; -enum vmscan_throttle_state { - VMSCAN_THROTTLE_WRITEBACK = 0, - VMSCAN_THROTTLE_ISOLATED = 1, - VMSCAN_THROTTLE_NOPROGRESS = 2, - VMSCAN_THROTTLE_CONGESTED = 3, - NR_VMSCAN_THROTTLE = 4, -}; +struct kernel_ethtool_coalesce; -enum zone_watermarks { - WMARK_MIN = 0, - WMARK_LOW = 1, - WMARK_HIGH = 2, - WMARK_PROMO = 3, - NR_WMARK = 4, -}; +struct ethtool_ringparam; -enum { - ZONELIST_FALLBACK = 0, - ZONELIST_NOFALLBACK = 1, - MAX_ZONELISTS = 2, -}; +struct ethtool_pause_stats; -enum { - PG_DIRECT_MAP_4K = 0, - PG_DIRECT_MAP_1M = 1, - PG_DIRECT_MAP_2G = 2, - PG_DIRECT_MAP_MAX = 3, -}; +struct ethtool_pauseparam; -enum { - DQF_ROOT_SQUASH_B = 0, - DQF_SYS_FILE_B = 16, - DQF_PRIVATE = 17, -}; +struct ethtool_test; -enum { - DQST_LOOKUPS = 0, - DQST_DROPS = 1, - DQST_READS = 2, - DQST_WRITES = 3, - DQST_CACHE_HITS = 4, - DQST_ALLOC_DQUOTS = 5, - DQST_FREE_DQUOTS = 6, - DQST_SYNCS = 7, - _DQST_DQSTAT_LAST = 8, -}; +struct ethtool_stats; -enum { - SB_UNFROZEN = 0, - SB_FREEZE_WRITE = 1, - SB_FREEZE_PAGEFAULT = 2, - SB_FREEZE_FS = 3, - SB_FREEZE_COMPLETE = 4, -}; +struct ethtool_rxnfc; -enum compound_dtor_id { - NULL_COMPOUND_DTOR = 0, - COMPOUND_PAGE_DTOR = 1, - HUGETLB_PAGE_DTOR = 2, - NR_COMPOUND_DTORS = 3, -}; +struct ethtool_flash; -enum ucount_type { - UCOUNT_USER_NAMESPACES = 0, - UCOUNT_PID_NAMESPACES = 1, - UCOUNT_UTS_NAMESPACES = 2, - UCOUNT_IPC_NAMESPACES = 3, - UCOUNT_NET_NAMESPACES = 4, - UCOUNT_MNT_NAMESPACES = 5, - UCOUNT_CGROUP_NAMESPACES = 6, - UCOUNT_TIME_NAMESPACES = 7, - UCOUNT_INOTIFY_INSTANCES = 8, - UCOUNT_INOTIFY_WATCHES = 9, - UCOUNT_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, -}; +struct ethtool_channels; -enum cpu_idle_type { - CPU_IDLE = 0, - CPU_NOT_IDLE = 1, - CPU_NEWLY_IDLE = 2, - CPU_MAX_IDLE_TYPES = 3, -}; +struct ethtool_dump; -enum { - __SD_BALANCE_NEWIDLE = 0, - __SD_BALANCE_EXEC = 1, - __SD_BALANCE_FORK = 2, - __SD_BALANCE_WAKE = 3, - __SD_WAKE_AFFINE = 4, - __SD_ASYM_CPUCAPACITY = 5, - __SD_ASYM_CPUCAPACITY_FULL = 6, - __SD_SHARE_CPUCAPACITY = 7, - __SD_SHARE_PKG_RESOURCES = 8, - __SD_SERIALIZE = 9, - __SD_ASYM_PACKING = 10, - __SD_PREFER_SIBLING = 11, - __SD_OVERLAP = 12, - __SD_NUMA = 13, - __SD_FLAG_CNT = 14, -}; +struct ethtool_ts_info; -enum audit_ntp_type { - AUDIT_NTP_OFFSET = 0, - AUDIT_NTP_FREQ = 1, - AUDIT_NTP_STATUS = 2, - AUDIT_NTP_TAI = 3, - AUDIT_NTP_TICK = 4, - AUDIT_NTP_ADJUST = 5, - AUDIT_NTP_NVALS = 6, -}; +struct ethtool_modinfo; -enum { - PSW_BITS_AS_PRIMARY = 0, - PSW_BITS_AS_ACCREG = 1, - PSW_BITS_AS_SECONDARY = 2, - PSW_BITS_AS_HOME = 3, -}; +struct ethtool_eee; -enum bug_trap_type { - BUG_TRAP_TYPE_NONE = 0, - BUG_TRAP_TYPE_WARN = 1, - BUG_TRAP_TYPE_BUG = 2, +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 *); + void (*get_regs)(struct net_device *, struct ethtool_regs *, void *); + void (*get_wol)(struct net_device *, struct ethtool_wolinfo *); + int (*set_wol)(struct net_device *, struct ethtool_wolinfo *); + u32 (*get_msglevel)(struct net_device *); + void (*set_msglevel)(struct net_device *, u32); + int (*nway_reset)(struct net_device *); + u32 (*get_link)(struct net_device *); + int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *); + int (*get_eeprom_len)(struct net_device *); + int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); + int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); + int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *); + int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *); + void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *); + int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *); + void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *); + void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *); + int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *); + void (*self_test)(struct net_device *, struct ethtool_test *, u64 *); + void (*get_strings)(struct net_device *, u32, u8 *); + int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state); + void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *); + int (*begin)(struct net_device *); + void (*complete)(struct net_device *); + u32 (*get_priv_flags)(struct net_device *); + int (*set_priv_flags)(struct net_device *, u32); + int (*get_sset_count)(struct net_device *, int); + int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *); + int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); + int (*flash_device)(struct net_device *, struct ethtool_flash *); + int (*reset)(struct net_device *, u32 *); + u32 (*get_rxfh_key_size)(struct net_device *); + u32 (*get_rxfh_indir_size)(struct net_device *); + int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *); + int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8); + int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32); + int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool); + void (*get_channels)(struct net_device *, struct ethtool_channels *); + int (*set_channels)(struct net_device *, struct ethtool_channels *); + int (*get_dump_flag)(struct net_device *, struct ethtool_dump *); + int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *); + int (*set_dump)(struct net_device *, struct ethtool_dump *); + int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *); + int (*get_module_info)(struct net_device *, struct ethtool_modinfo *); + int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *); + int (*get_eee)(struct net_device *, struct ethtool_eee *); + int (*set_eee)(struct net_device *, struct ethtool_eee *); + int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *); + int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *); + int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *); + int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *); + int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *); + int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *); + void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *); + int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *); + int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *); + void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *); + int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *); + int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *); + int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *); + void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *); + void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *); + void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *); + void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **); }; -union oac { - unsigned int val; - struct { - struct { - short unsigned int key: 4; - char: 4; - short unsigned int as: 2; - char: 4; - short unsigned int k: 1; - short unsigned int a: 1; - } oac1; - struct { - short unsigned int key: 4; - char: 4; - short unsigned int as: 2; - char: 4; - short unsigned int k: 1; - short unsigned int a: 1; - } oac2; - }; +struct l3mdev_ops { + u32 (*l3mdev_fib_table)(const struct net_device *); + struct sk_buff * (*l3mdev_l3_rcv)(struct net_device *, struct sk_buff *, u16); + struct sk_buff * (*l3mdev_l3_out)(struct net_device *, struct sock *, struct sk_buff *, u16); + struct dst_entry * (*l3mdev_link_scope_lookup)(const struct net_device *, struct flowi6 *); }; -enum die_val { - DIE_OOPS = 1, - DIE_BPT = 2, - DIE_SSTEP = 3, - DIE_PANIC = 4, - DIE_NMI = 5, - DIE_DIE = 6, - DIE_NMIWATCHDOG = 7, - DIE_KERNELDEBUG = 8, - DIE_TRAP = 9, - DIE_GPF = 10, - DIE_CALL = 11, - DIE_NMI_IPI = 12, +struct nd_opt_hdr; + +struct ndisc_options; + +struct prefix_info; + +struct ndisc_ops { + int (*is_useropt)(u8); + int (*parse_options)(const struct net_device *, struct nd_opt_hdr *, struct ndisc_options *); + void (*update)(const struct net_device *, struct neighbour *, u32, u8, const struct ndisc_options *); + int (*opt_addr_space)(const struct net_device *, u8, struct neighbour *, u8 *, u8 **); + void (*fill_addr_option)(const struct net_device *, struct sk_buff *, u8, const u8 *); + void (*prefix_rcv_add_addr)(struct net *, struct net_device *, const struct prefix_info *, struct inet6_dev *, struct in6_addr *, int, u32, bool, bool, __u32, u32, bool); }; -struct irqentry_state { - union { - bool exit_rcu; - bool lockdep; - }; +enum tls_offload_ctx_dir { + TLS_OFFLOAD_CTX_DIR_RX = 0, + TLS_OFFLOAD_CTX_DIR_TX = 1, }; -typedef struct irqentry_state irqentry_state_t; +struct tls_crypto_info; -typedef u64 uint64_t; +struct tls_context; -typedef s64 int64_t; +struct tlsdev_ops { + int (*tls_dev_add)(struct net_device *, struct sock *, enum tls_offload_ctx_dir, struct tls_crypto_info *, u32); + void (*tls_dev_del)(struct net_device *, struct tls_context *, enum tls_offload_ctx_dir); + int (*tls_dev_resync)(struct net_device *, struct sock *, u32, u8 *, enum tls_offload_ctx_dir); +}; -struct __kernel_timex_timeval { - __kernel_time64_t tv_sec; - long long int tv_usec; +struct ipv6_devstat { + struct proc_dir_entry *proc_dir_entry; + struct ipstats_mib *ipv6; + struct icmpv6_mib_device *icmpv6dev; + struct icmpv6msg_mib_device *icmpv6msgdev; }; -struct __kernel_timex { - unsigned int modes; - long long int offset; - long long int freq; - long long int maxerror; - long long int esterror; - int status; - long long int constant; - long long int precision; - long long int tolerance; - struct __kernel_timex_timeval time; - long long int tick; - long long int ppsfreq; - long long int jitter; - int shift; - long long int stabil; - long long int jitcnt; - long long int calcnt; - long long int errcnt; - long long int stbcnt; - int tai; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -union tod_clock { - __int128 unsigned val; - struct { - __int128 unsigned ei: 8; - __int128 unsigned tod: 64; - long: 40; - __int128 unsigned pf: 16; - }; - struct { - __int128 unsigned eitod: 72; - }; - struct { - __int128 unsigned us: 60; - __int128 unsigned sus: 12; - }; -}; +struct ifmcaddr6; -struct ptff_qto { - long unsigned int physical_clock; - long unsigned int tod_offset; - long unsigned int logical_tod_offset; - long unsigned int tod_epoch_difference; -}; +struct ifacaddr6; -struct ptff_qui { - unsigned int tm: 2; - unsigned int ts: 2; - unsigned int pad_0x04; - long unsigned int leap_event; - short int old_leap; - short int new_leap; - unsigned int pad_0x14; - long unsigned int prt[5]; - long unsigned int cst[3]; - unsigned int skew; - unsigned int pad_0x5c[41]; +struct inet6_dev { + struct net_device *dev; + struct list_head addr_list; + struct ifmcaddr6 *mc_list; + struct ifmcaddr6 *mc_tomb; + unsigned char mc_qrv; + unsigned char mc_gq_running; + unsigned char mc_ifc_count; + unsigned char mc_dad_count; + long unsigned int mc_v1_seen; + long unsigned int mc_qi; + long unsigned int mc_qri; + long unsigned int mc_maxdelay; + struct delayed_work mc_gq_work; + struct delayed_work mc_ifc_work; + struct delayed_work mc_dad_work; + struct delayed_work mc_query_work; + struct delayed_work mc_report_work; + struct sk_buff_head mc_query_queue; + struct sk_buff_head mc_report_queue; + spinlock_t mc_query_lock; + spinlock_t mc_report_lock; + struct mutex mc_lock; + struct ifacaddr6 *ac_list; + rwlock_t lock; + refcount_t refcnt; + __u32 if_flags; + int dead; + u32 desync_factor; + struct list_head tempaddr_list; + struct in6_addr token; + struct neigh_parms *nd_parms; + struct ipv6_devconf cnf; + struct ipv6_devstat stats; + struct timer_list rs_timer; + __s32 rs_interval; + __u8 rs_probes; + long unsigned int tstamp; + struct callback_head rcu; + unsigned int ra_mtu; }; -struct timens_offset { - s64 sec; - u64 nsec; -}; +struct tcf_proto; -enum clocksource_ids { - CSID_GENERIC = 0, - CSID_ARM_ARCH_COUNTER = 1, - CSID_MAX = 2, -}; +struct tcf_block; -enum vdso_clock_mode { - VDSO_CLOCKMODE_NONE = 0, - VDSO_CLOCKMODE_TOD = 1, - VDSO_CLOCKMODE_MAX = 2, - VDSO_CLOCKMODE_TIMENS = 2147483647, +struct mini_Qdisc { + struct tcf_proto *filter_list; + struct tcf_block *block; + struct gnet_stats_basic_cpu *cpu_bstats; + struct gnet_stats_queue *cpu_qstats; + struct callback_head rcu; }; -struct clocksource { - u64 (*read)(struct clocksource *); - u64 mask; - u32 mult; - u32 shift; - u64 max_idle_ns; - u32 maxadj; - u32 uncertainty_margin; - u64 max_cycles; - const char *name; +struct rtnl_link_ops { 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 *); - void (*disable)(struct clocksource *); - void (*suspend)(struct clocksource *); - void (*resume)(struct clocksource *); - void (*mark_unstable)(struct clocksource *); - void (*tick_stable)(struct clocksource *); - struct module *owner; -}; - -enum { - WORK_STRUCT_PENDING_BIT = 0, - WORK_STRUCT_INACTIVE_BIT = 1, - WORK_STRUCT_PWQ_BIT = 2, - WORK_STRUCT_LINKED_BIT = 3, - WORK_STRUCT_COLOR_SHIFT = 4, - WORK_STRUCT_COLOR_BITS = 4, - WORK_STRUCT_PENDING = 1, - WORK_STRUCT_INACTIVE = 2, - WORK_STRUCT_PWQ = 4, - WORK_STRUCT_LINKED = 8, - WORK_STRUCT_STATIC = 0, - WORK_NR_COLORS = 16, - WORK_CPU_UNBOUND = 512, - WORK_STRUCT_FLAG_BITS = 8, - WORK_OFFQ_FLAG_BASE = 4, - __WORK_OFFQ_CANCELING = 4, - WORK_OFFQ_CANCELING = 16, - WORK_OFFQ_FLAG_BITS = 1, - WORK_OFFQ_POOL_SHIFT = 5, - WORK_OFFQ_LEFT = 59, - WORK_OFFQ_POOL_BITS = 31, - WORK_OFFQ_POOL_NONE = 2147483647, - WORK_STRUCT_FLAG_MASK = 255, - WORK_STRUCT_WQ_DATA_MASK = 4294967040, - WORK_STRUCT_NO_POOL = 4294967264, - WORK_BUSY_PENDING = 1, - WORK_BUSY_RUNNING = 2, - WORKER_DESC_LEN = 24, -}; - -enum { - WQ_UNBOUND = 2, - WQ_FREEZABLE = 4, - WQ_MEM_RECLAIM = 8, - WQ_HIGHPRI = 16, - WQ_CPU_INTENSIVE = 32, - WQ_SYSFS = 64, - WQ_POWER_EFFICIENT = 128, - __WQ_DRAINING = 65536, - __WQ_ORDERED = 131072, - __WQ_LEGACY = 262144, - __WQ_ORDERED_EXPLICIT = 524288, - WQ_MAX_ACTIVE = 512, - WQ_MAX_UNBOUND_PER_CPU = 4, - WQ_DFL_ACTIVE = 256, + const char *kind; + size_t priv_size; + struct net_device * (*alloc)(struct nlattr **, const char *, unsigned char, unsigned int, unsigned int); + void (*setup)(struct net_device *); + bool netns_refund; + unsigned int maxtype; + const struct nla_policy *policy; + int (*validate)(struct nlattr **, struct nlattr **, struct netlink_ext_ack *); + int (*newlink)(struct net *, struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *); + int (*changelink)(struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *); + void (*dellink)(struct net_device *, struct list_head *); + size_t (*get_size)(const struct net_device *); + int (*fill_info)(struct sk_buff *, const struct net_device *); + size_t (*get_xstats_size)(const struct net_device *); + int (*fill_xstats)(struct sk_buff *, const struct net_device *); + unsigned int (*get_num_tx_queues)(); + unsigned int (*get_num_rx_queues)(); + unsigned int slave_maxtype; + const struct nla_policy *slave_policy; + int (*slave_changelink)(struct net_device *, struct net_device *, struct nlattr **, struct nlattr **, struct netlink_ext_ack *); + size_t (*get_slave_size)(const struct net_device *, const struct net_device *); + int (*fill_slave_info)(struct sk_buff *, const struct net_device *, const struct net_device *); + struct net * (*get_link_net)(const struct net_device *); + size_t (*get_linkxstats_size)(const struct net_device *, int); + int (*fill_linkxstats)(struct sk_buff *, const struct net_device *, int *, int); }; -struct irq_stat { - unsigned int irqs[33]; +struct udp_tunnel_nic_table_info { + unsigned int n_entries; + unsigned int tunnel_types; }; -struct ext_code { - union { - struct { - short unsigned int subcode; - short unsigned int code; - }; - unsigned int int_code; - }; -}; +struct udp_tunnel_info; -typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, long unsigned int); +struct udp_tunnel_nic_shared; -enum cpu_usage_stat { - CPUTIME_USER = 0, - CPUTIME_NICE = 1, - CPUTIME_SYSTEM = 2, - CPUTIME_SOFTIRQ = 3, - CPUTIME_IRQ = 4, - CPUTIME_IDLE = 5, - CPUTIME_IOWAIT = 6, - CPUTIME_STEAL = 7, - CPUTIME_GUEST = 8, - CPUTIME_GUEST_NICE = 9, - NR_STATS = 10, +struct udp_tunnel_nic_info { + int (*set_port)(struct net_device *, unsigned int, unsigned int, struct udp_tunnel_info *); + int (*unset_port)(struct net_device *, unsigned int, unsigned int, struct udp_tunnel_info *); + int (*sync_table)(struct net_device *, unsigned int); + struct udp_tunnel_nic_shared *shared; + unsigned int flags; + struct udp_tunnel_nic_table_info tables[4]; }; -struct atomic_notifier_head { - spinlock_t lock; - struct notifier_block *head; +enum { + RTAX_UNSPEC = 0, + RTAX_LOCK = 1, + RTAX_MTU = 2, + RTAX_WINDOW = 3, + RTAX_RTT = 4, + RTAX_RTTVAR = 5, + RTAX_SSTHRESH = 6, + RTAX_CWND = 7, + RTAX_ADVMSS = 8, + RTAX_REORDERING = 9, + RTAX_HOPLIMIT = 10, + RTAX_INITCWND = 11, + RTAX_FEATURES = 12, + RTAX_RTO_MIN = 13, + RTAX_INITRWND = 14, + RTAX_QUICKACK = 15, + RTAX_CC_ALGO = 16, + RTAX_FASTOPEN_NO_COOKIE = 17, + __RTAX_MAX = 18, }; -struct 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 tcmsg { + unsigned char tcm_family; + unsigned char tcm__pad1; + short unsigned int tcm__pad2; + int tcm_ifindex; + __u32 tcm_handle; + __u32 tcm_parent; + __u32 tcm_info; }; -typedef int (*cpu_stop_fn_t)(void *); - -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 gnet_stats_basic_cpu { + struct gnet_stats_basic_packed bstats; + struct u64_stats_sync syncp; }; -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; +struct gnet_dump { + spinlock_t *lock; + struct sk_buff *skb; + struct nlattr *tail; + int compat_tc_stats; + int compat_xstats; + int padattr; + void *xstats; + int xstats_len; + struct tc_stats tc_stats; }; -struct arch_vdso_data { - __s64 tod_steering_delta; - __u64 tod_steering_end; +struct netlink_range_validation { + u64 min; + u64 max; }; -struct vdso_timestamp { - u64 sec; - u64 nsec; +struct netlink_range_validation_signed { + s64 min; + s64 max; }; -struct vdso_data { - u32 seq; - s32 clock_mode; - u64 cycle_last; - u64 mask; - u32 mult; - u32 shift; - union { - struct vdso_timestamp basetime[12]; - struct timens_offset offset[12]; - }; - s32 tz_minuteswest; - s32 tz_dsttime; - u32 hrtimer_res; - u32 __unused; - struct arch_vdso_data arch_data; +enum flow_action_hw_stats_bit { + FLOW_ACTION_HW_STATS_IMMEDIATE_BIT = 0, + FLOW_ACTION_HW_STATS_DELAYED_BIT = 1, + FLOW_ACTION_HW_STATS_DISABLED_BIT = 2, + FLOW_ACTION_HW_STATS_NUM_BITS = 3, }; -struct stp_irq_parm { - short: 14; - u32 tsc: 1; - u32 lac: 1; - u32 tcpc: 1; +struct flow_block { + struct list_head cb_list; }; -struct stp_sstpi { - int: 32; - u32 tu: 1; - u32 lu: 1; - char: 6; - u32 stratum: 8; - u32 vbits: 16; - u32 leaps: 16; - u32 tmd: 4; - u32 ctn: 4; - char: 3; - u32 c: 1; - u32 tst: 4; - u32 tzo: 16; - u32 dsto: 16; - u32 ctrl: 16; - u32 tto; - int: 32; - u32 ctnid[3]; - int: 32; - u32 todoff[4]; - u32 rsvd[48]; -}; +typedef int flow_setup_cb_t(enum tc_setup_type, void *, void *); -struct stp_tzib { - u32 tzan: 16; - short: 16; - u32 tzo: 16; - u32 dsto: 16; - u32 stn; - u32 dstn; - u64 dst_on_alg; - u64 dst_off_alg; +struct qdisc_size_table { + struct callback_head rcu; + struct list_head list; + struct tc_sizespec szopts; + int refcnt; + u16 data[0]; }; -struct stp_tcpib { - u32 atcode: 4; - u32 ntcode: 4; - u32 d: 1; - s32 tto; - struct stp_tzib atzib; - struct stp_tzib ntzib; - s32 adst_offset: 16; - s32 ndst_offset: 16; - u32 rsvd1; - u64 ntzib_update; - u64 ndsto_update; -}; +struct Qdisc_class_ops; -struct stp_lsoib { - u32 p: 1; - int: 31; - s32 also: 16; - s32 nlso: 16; - u64 nlsout; +struct Qdisc_ops { + struct Qdisc_ops *next; + const struct Qdisc_class_ops *cl_ops; + char id[16]; + int priv_size; + unsigned int static_flags; + int (*enqueue)(struct sk_buff *, struct Qdisc *, struct sk_buff **); + struct sk_buff * (*dequeue)(struct Qdisc *); + struct sk_buff * (*peek)(struct Qdisc *); + int (*init)(struct Qdisc *, struct nlattr *, struct netlink_ext_ack *); + void (*reset)(struct Qdisc *); + void (*destroy)(struct Qdisc *); + int (*change)(struct Qdisc *, struct nlattr *, struct netlink_ext_ack *); + void (*attach)(struct Qdisc *); + int (*change_tx_queue_len)(struct Qdisc *, unsigned int); + void (*change_real_num_tx)(struct Qdisc *, unsigned int); + int (*dump)(struct Qdisc *, struct sk_buff *); + int (*dump_stats)(struct Qdisc *, struct gnet_dump *); + void (*ingress_block_set)(struct Qdisc *, u32); + void (*egress_block_set)(struct Qdisc *, u32); + u32 (*ingress_block_get)(struct Qdisc *); + u32 (*egress_block_get)(struct Qdisc *); + struct module *owner; }; -struct stp_stzi { - u32 rsvd0[3]; - u64 data_ts; - u32 rsvd1[22]; - struct stp_tcpib tcpib; - struct stp_lsoib lsoib; -} __attribute__((packed)); +struct qdisc_walker; -struct clock_sync_data { - atomic_t cpus; - int in_sync; - long int clock_delta; +struct Qdisc_class_ops { + unsigned int flags; + struct netdev_queue * (*select_queue)(struct Qdisc *, struct tcmsg *); + int (*graft)(struct Qdisc *, long unsigned int, struct Qdisc *, struct Qdisc **, struct netlink_ext_ack *); + struct Qdisc * (*leaf)(struct Qdisc *, long unsigned int); + 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, 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); + void (*unbind_tcf)(struct Qdisc *, long unsigned int); + int (*dump)(struct Qdisc *, long unsigned int, struct sk_buff *, struct tcmsg *); + int (*dump_stats)(struct Qdisc *, long unsigned int, struct gnet_dump *); }; -struct addrtype { - char _[32]; -}; +struct tcf_chain; -struct addrtype___2 { - char _[16]; +struct tcf_block { + struct mutex lock; + struct list_head chain_list; + u32 index; + u32 classid; + refcount_t refcnt; + struct net *net; + struct Qdisc *q; + struct rw_semaphore cb_lock; + struct flow_block flow_block; + struct list_head owner_list; + bool keep_dst; + atomic_t offloadcnt; + unsigned int nooffloaddevcnt; + unsigned int lockeddevcnt; + struct { + struct tcf_chain *chain; + struct list_head filter_chain_list; + } chain0; + struct callback_head rcu; + struct hlist_head proto_destroy_ht[128]; + struct mutex proto_destroy_lock; }; -struct addrtype___3 { - char _[256]; -}; +struct tcf_result; -typedef struct { - char _[8]; -} addrtype; - -struct vx_array { - __vector128 _[32]; -}; - -enum diag_stat_enum { - DIAG_STAT_X008 = 0, - DIAG_STAT_X00C = 1, - DIAG_STAT_X010 = 2, - DIAG_STAT_X014 = 3, - DIAG_STAT_X044 = 4, - DIAG_STAT_X064 = 5, - DIAG_STAT_X09C = 6, - DIAG_STAT_X0DC = 7, - DIAG_STAT_X204 = 8, - DIAG_STAT_X210 = 9, - DIAG_STAT_X224 = 10, - DIAG_STAT_X250 = 11, - DIAG_STAT_X258 = 12, - DIAG_STAT_X26C = 13, - DIAG_STAT_X288 = 14, - DIAG_STAT_X2C4 = 15, - DIAG_STAT_X2FC = 16, - DIAG_STAT_X304 = 17, - DIAG_STAT_X308 = 18, - DIAG_STAT_X318 = 19, - DIAG_STAT_X500 = 20, - NR_DIAG_STAT = 21, -}; +struct tcf_proto_ops; -struct sysinfo_1_1_1 { - unsigned char p: 1; - char: 6; - unsigned char t: 1; - char: 8; - unsigned char ccr; - unsigned char cai; - char reserved_0[20]; - long unsigned int lic; - char manufacturer[16]; - char type[4]; - char reserved_1[12]; - char model_capacity[16]; - char sequence[16]; - char plant[4]; - char model[16]; - char model_perm_cap[16]; - char model_temp_cap[16]; - unsigned int model_cap_rating; - unsigned int model_perm_cap_rating; - unsigned int model_temp_cap_rating; - unsigned char typepct[5]; - unsigned char reserved_2[3]; - unsigned int ncr; - unsigned int npr; - unsigned int ntr; +struct tcf_proto { + struct tcf_proto *next; + void *root; + int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *); + __be16 protocol; + u32 prio; + void *data; + const struct tcf_proto_ops *ops; + struct tcf_chain *chain; + spinlock_t lock; + bool deleting; + refcount_t refcnt; + struct callback_head rcu; + struct hlist_node destroy_ht_node; }; -struct sysinfo_3_2_2 { - char reserved_0[31]; - char: 4; - unsigned char count: 4; - struct { - char reserved_0[4]; - short unsigned int cpus_total; - short unsigned int cpus_configured; - short unsigned int cpus_standby; - short unsigned int cpus_reserved; - char name[8]; - unsigned int caf; - char cpi[16]; - char reserved_1[3]; - unsigned char evmne; - unsigned int reserved_2; - uuid_t uuid; - } vm[8]; - char reserved_3[1504]; - char ext_names[2048]; +struct tcf_result { + union { + struct { + long unsigned int class; + u32 classid; + }; + const struct tcf_proto *goto_tp; + struct { + bool ingress; + struct gnet_stats_queue *qstats; + }; + }; }; -typedef struct { - int _[16]; -} acrstype; +struct tcf_walker; -enum stack_type { - STACK_TYPE_UNKNOWN = 0, - STACK_TYPE_TASK = 1, - STACK_TYPE_IRQ = 2, - STACK_TYPE_NODAT = 3, - STACK_TYPE_RESTART = 4, - STACK_TYPE_MCCK = 5, +struct tcf_proto_ops { + struct list_head head; + char kind[16]; + int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *); + int (*init)(struct tcf_proto *); + void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *); + void * (*get)(struct tcf_proto *, u32); + void (*put)(struct tcf_proto *, void *); + int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, 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); + int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *); + void (*hw_add)(struct tcf_proto *, void *); + void (*hw_del)(struct tcf_proto *, void *); + void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int); + void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *); + void (*tmplt_destroy)(void *); + int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool); + int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool); + int (*tmplt_dump)(struct sk_buff *, struct net *, void *); + struct module *owner; + int flags; }; -struct stack_info { - enum stack_type type; - long unsigned int begin; - long unsigned int end; +struct tcf_chain { + struct mutex filter_chain_lock; + struct tcf_proto *filter_chain; + struct list_head list; + struct tcf_block *block; + u32 index; + unsigned int refcnt; + unsigned int action_refcnt; + bool explicitly_created; + bool flushing; + const struct tcf_proto_ops *tmplt_ops; + void *tmplt_priv; + struct callback_head rcu; }; -struct stack_frame { - long unsigned int empty1[5]; - unsigned int empty2[8]; - long unsigned int gprs[10]; - long unsigned int back_chain; +struct sock_fprog_kern { + u16 len; + struct sock_filter *filter; }; -struct unwind_state { - struct stack_info stack_info; - long unsigned int stack_mask; - struct task_struct *task; - struct pt_regs *regs; - long unsigned int sp; - long unsigned int ip; - int graph_idx; - struct llist_node *kr_cur; - bool reliable; - bool error; +struct bpf_prog_stats { + u64_stats_t cnt; + u64_stats_t nsecs; + u64_stats_t misses; + struct u64_stats_sync syncp; + long: 64; }; -struct fake_frame { - struct stack_frame sf; - struct pt_regs childregs; +struct sk_filter { + refcount_t refcnt; + struct callback_head rcu; + struct bpf_prog *prog; }; -struct initrd_data { - long unsigned int start; - long unsigned int size; +enum { + NEIGH_VAR_MCAST_PROBES = 0, + NEIGH_VAR_UCAST_PROBES = 1, + NEIGH_VAR_APP_PROBES = 2, + NEIGH_VAR_MCAST_REPROBES = 3, + NEIGH_VAR_RETRANS_TIME = 4, + NEIGH_VAR_BASE_REACHABLE_TIME = 5, + NEIGH_VAR_DELAY_PROBE_TIME = 6, + NEIGH_VAR_GC_STALETIME = 7, + NEIGH_VAR_QUEUE_LEN_BYTES = 8, + NEIGH_VAR_PROXY_QLEN = 9, + NEIGH_VAR_ANYCAST_DELAY = 10, + NEIGH_VAR_PROXY_DELAY = 11, + NEIGH_VAR_LOCKTIME = 12, + NEIGH_VAR_QUEUE_LEN = 13, + NEIGH_VAR_RETRANS_TIME_MS = 14, + NEIGH_VAR_BASE_REACHABLE_TIME_MS = 15, + NEIGH_VAR_GC_INTERVAL = 16, + NEIGH_VAR_GC_THRESH1 = 17, + NEIGH_VAR_GC_THRESH2 = 18, + NEIGH_VAR_GC_THRESH3 = 19, + NEIGH_VAR_MAX = 20, }; -struct oldmem_data { - long unsigned int start; - long unsigned int size; -}; +struct pneigh_entry; -union ctlreg2 { - long unsigned int val; - struct { - long: 33; - long unsigned int ducto: 25; - char: 1; - long unsigned int gse: 1; - char: 1; - long unsigned int tds: 1; - long unsigned int tdc: 2; - }; -}; +struct neigh_statistics; -union ctlreg5 { - long unsigned int val; - struct { - long: 33; - long unsigned int pasteo: 25; - }; -}; +struct neigh_hash_table; -union ctlreg15 { - long unsigned int val; - struct { - long unsigned int lsea: 61; - }; +struct neigh_table { + int family; + unsigned int entry_size; + unsigned int key_len; + __be16 protocol; + __u32 (*hash)(const void *, const struct net_device *, __u32 *); + bool (*key_eq)(const struct neighbour *, const void *); + int (*constructor)(struct neighbour *); + int (*pconstructor)(struct pneigh_entry *); + void (*pdestructor)(struct pneigh_entry *); + void (*proxy_redo)(struct sk_buff *); + int (*is_multicast)(const void *); + bool (*allow_add)(const struct net_device *, struct netlink_ext_ack *); + char *id; + struct neigh_parms parms; + struct list_head parms_list; + int gc_interval; + int gc_thresh1; + int gc_thresh2; + int gc_thresh3; + long unsigned int last_flush; + struct delayed_work gc_work; + struct timer_list proxy_timer; + struct sk_buff_head proxy_queue; + atomic_t entries; + atomic_t gc_entries; + struct list_head gc_list; + rwlock_t lock; + long unsigned int last_rand; + struct neigh_statistics *stats; + struct neigh_hash_table *nht; + struct pneigh_entry **phash_buckets; }; -union thread_union { - struct task_struct task; - long unsigned int stack[2048]; +struct neigh_statistics { + long unsigned int allocs; + long unsigned int destroys; + long unsigned int hash_grows; + long unsigned int res_failed; + long unsigned int lookups; + long unsigned int hits; + long unsigned int rcv_probes_mcast; + long unsigned int rcv_probes_ucast; + long unsigned int periodic_gc_runs; + long unsigned int forced_gc_runs; + long unsigned int unres_discards; + long unsigned int table_fulls; }; -enum memblock_flags { - MEMBLOCK_NONE = 0, - MEMBLOCK_HOTPLUG = 1, - MEMBLOCK_MIRROR = 2, - MEMBLOCK_NOMAP = 4, - MEMBLOCK_DRIVER_MANAGED = 8, +struct neigh_ops { + int family; + void (*solicit)(struct neighbour *, struct sk_buff *); + void (*error_report)(struct neighbour *, struct sk_buff *); + int (*output)(struct neighbour *, struct sk_buff *); + int (*connected_output)(struct neighbour *, struct sk_buff *); }; -struct memblock_region { - phys_addr_t base; - phys_addr_t size; - enum memblock_flags flags; - int nid; +struct pneigh_entry { + struct pneigh_entry *next; + possible_net_t net; + struct net_device *dev; + u8 flags; + u8 protocol; + u32 key[0]; }; -struct memblock_type { - long unsigned int cnt; - long unsigned int max; - phys_addr_t total_size; - struct memblock_region *regions; - char *name; +struct neigh_hash_table { + struct neighbour **hash_buckets; + unsigned int hash_shift; + __u32 hash_rnd[4]; + struct callback_head rcu; }; -struct memblock { - bool bottom_up; - phys_addr_t current_limit; - struct memblock_type memory; - struct memblock_type reserved; +enum { + TCP_ESTABLISHED = 1, + TCP_SYN_SENT = 2, + TCP_SYN_RECV = 3, + TCP_FIN_WAIT1 = 4, + TCP_FIN_WAIT2 = 5, + TCP_TIME_WAIT = 6, + TCP_CLOSE = 7, + TCP_CLOSE_WAIT = 8, + TCP_LAST_ACK = 9, + TCP_LISTEN = 10, + TCP_CLOSING = 11, + TCP_NEW_SYN_RECV = 12, + TCP_MAX_STATES = 13, }; -typedef struct { - unsigned char bytes[16]; -} cpacf_mask_t; - -struct scatterlist { - long unsigned int page_link; - unsigned int offset; - unsigned int length; - dma_addr_t dma_address; - unsigned int dma_length; +struct fib_rule_hdr { + __u8 family; + __u8 dst_len; + __u8 src_len; + __u8 tos; + __u8 table; + __u8 res1; + __u8 res2; + __u8 action; + __u32 flags; }; -struct sg_table { - struct scatterlist *sgl; - unsigned int nents; - unsigned int orig_nents; +struct fib_rule_port_range { + __u16 start; + __u16 end; }; -struct memory_notify { - long unsigned int start_pfn; - long unsigned int nr_pages; - int status_change_nid_normal; - int status_change_nid; +struct fib_kuid_range { + kuid_t start; + kuid_t end; }; -enum lockdown_reason { - LOCKDOWN_NONE = 0, - LOCKDOWN_MODULE_SIGNATURE = 1, - LOCKDOWN_DEV_MEM = 2, - LOCKDOWN_EFI_TEST = 3, - LOCKDOWN_KEXEC = 4, - LOCKDOWN_HIBERNATION = 5, - LOCKDOWN_PCI_ACCESS = 6, - LOCKDOWN_IOPORT = 7, - LOCKDOWN_MSR = 8, - LOCKDOWN_ACPI_TABLES = 9, - LOCKDOWN_PCMCIA_CIS = 10, - LOCKDOWN_TIOCSSERIAL = 11, - LOCKDOWN_MODULE_PARAMETERS = 12, - LOCKDOWN_MMIOTRACE = 13, - LOCKDOWN_DEBUGFS = 14, - LOCKDOWN_XMON_WR = 15, - LOCKDOWN_BPF_WRITE_USER = 16, - LOCKDOWN_DBG_WRITE_KERNEL = 17, - LOCKDOWN_INTEGRITY_MAX = 18, - LOCKDOWN_KCORE = 19, - LOCKDOWN_KPROBES = 20, - LOCKDOWN_BPF_READ_KERNEL = 21, - LOCKDOWN_DBG_READ_KERNEL = 22, - LOCKDOWN_PERF = 23, - LOCKDOWN_TRACEFS = 24, - LOCKDOWN_XMON_RW = 25, - LOCKDOWN_XFRM_SECRET = 26, - LOCKDOWN_CONFIDENTIALITY_MAX = 27, +struct fib_rule { + struct list_head list; + int iifindex; + int oifindex; + u32 mark; + u32 mark_mask; + u32 flags; + u32 table; + u8 action; + u8 l3mdev; + u8 proto; + u8 ip_proto; + u32 target; + __be64 tun_id; + struct fib_rule *ctarget; + struct net *fr_net; + refcount_t refcnt; + u32 pref; + int suppress_ifgroup; + int suppress_prefixlen; + char iifname[16]; + char oifname[16]; + struct fib_kuid_range uid_range; + struct fib_rule_port_range sport_range; + struct fib_rule_port_range dport_range; + struct callback_head rcu; }; -enum { - TASKSTATS_CMD_UNSPEC = 0, - TASKSTATS_CMD_GET = 1, - TASKSTATS_CMD_NEW = 2, - __TASKSTATS_CMD_MAX = 3, +struct fib_lookup_arg { + void *lookup_ptr; + const void *lookup_data; + void *result; + struct fib_rule *rule; + u32 table; + int flags; }; -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, -}; +struct smc_hashinfo; -enum psi_task_count { - NR_IOWAIT = 0, - NR_MEMSTALL = 1, - NR_RUNNING = 2, - NR_ONCPU = 3, - NR_MEMSTALL_RUNNING = 4, - NR_PSI_TASK_COUNTS = 5, -}; +struct sk_psock; -enum psi_states { - PSI_IO_SOME = 0, - PSI_IO_FULL = 1, - PSI_MEM_SOME = 2, - PSI_MEM_FULL = 3, - PSI_CPU_SOME = 4, - PSI_CPU_FULL = 5, - PSI_NONIDLE = 6, - NR_PSI_STATES = 7, -}; +struct request_sock_ops; -enum psi_aggregators { - PSI_AVGS = 0, - PSI_POLL = 1, - NR_PSI_AGGREGATORS = 2, -}; +struct timewait_sock_ops; -enum cgroup_subsys_id { - cpuset_cgrp_id = 0, - cpu_cgrp_id = 1, - cpuacct_cgrp_id = 2, - io_cgrp_id = 3, - memory_cgrp_id = 4, - devices_cgrp_id = 5, - freezer_cgrp_id = 6, - net_cls_cgrp_id = 7, - perf_event_cgrp_id = 8, - net_prio_cgrp_id = 9, - pids_cgrp_id = 10, - misc_cgrp_id = 11, - CGROUP_SUBSYS_COUNT = 12, -}; +struct udp_table; -struct ccw_dev_id { - u8 ssid; - u16 devno; -}; +struct raw_hashinfo; -struct ipl_pl_hdr { - __u32 len; - __u8 flags; - __u8 reserved1[2]; - __u8 version; +struct proto { + void (*close)(struct sock *, long int); + int (*pre_connect)(struct sock *, struct sockaddr *, int); + int (*connect)(struct sock *, struct sockaddr *, int); + int (*disconnect)(struct sock *, int); + struct sock * (*accept)(struct sock *, int, int *, bool); + int (*ioctl)(struct sock *, int, long unsigned int); + int (*init)(struct sock *); + void (*destroy)(struct sock *); + void (*shutdown)(struct sock *, int); + int (*setsockopt)(struct sock *, int, int, sockptr_t, unsigned int); + int (*getsockopt)(struct sock *, int, int, char *, int *); + void (*keepalive)(struct sock *, int); + int (*compat_ioctl)(struct sock *, unsigned int, long unsigned int); + int (*sendmsg)(struct sock *, struct msghdr *, size_t); + int (*recvmsg)(struct sock *, struct msghdr *, size_t, int, int, int *); + int (*sendpage)(struct sock *, struct page *, int, size_t, int); + 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 (*sock_is_readable)(struct sock *); + void (*enter_memory_pressure)(struct sock *); + void (*leave_memory_pressure)(struct sock *); + atomic_long_t *memory_allocated; + struct percpu_counter *sockets_allocated; + long unsigned int *memory_pressure; + long int *sysctl_mem; + int *sysctl_wmem; + int *sysctl_rmem; + u32 sysctl_wmem_offset; + u32 sysctl_rmem_offset; + int max_header; + bool no_autobind; + struct kmem_cache *slab; + unsigned int obj_size; + slab_flags_t slab_flags; + unsigned int useroffset; + unsigned int usersize; + unsigned int *orphan_count; + struct request_sock_ops *rsk_prot; + struct timewait_sock_ops *twsk_prot; + union { + struct inet_hashinfo *hashinfo; + struct udp_table *udp_table; + struct raw_hashinfo *raw_hash; + struct smc_hashinfo *smc_hash; + } h; + struct module *owner; + char name[32]; + struct list_head node; + int (*diag_destroy)(struct sock *, int); }; -struct ipl_pb_hdr { - __u32 len; - __u8 pbt; -} __attribute__((packed)); +struct request_sock; -struct ipl_pb0_common { - __u32 len; - __u8 pbt; - __u8 flags; - __u8 reserved1[2]; - __u8 loadparm[8]; - __u8 reserved2[84]; +struct request_sock_ops { + int family; + unsigned int obj_size; + struct kmem_cache *slab; + char *slab_name; + int (*rtx_syn_ack)(const struct sock *, struct request_sock *); + void (*send_ack)(const struct sock *, struct sk_buff *, struct request_sock *); + void (*send_reset)(const struct sock *, struct sk_buff *); + void (*destructor)(struct request_sock *); + void (*syn_ack_timeout)(const struct request_sock *); }; -struct ipl_pb0_fcp { - __u32 len; - __u8 pbt; - __u8 reserved1[3]; - __u8 loadparm[8]; - __u8 reserved2[304]; - __u8 opt; - __u8 reserved3[3]; - __u8 cssid; - __u8 reserved4[1]; - __u16 devno; - __u8 reserved5[4]; - __u64 wwpn; - __u64 lun; - __u32 bootprog; - __u8 reserved6[12]; - __u64 br_lba; - __u32 scp_data_len; - __u8 reserved7[260]; - __u8 scp_data[0]; -} __attribute__((packed)); +struct timewait_sock_ops { + struct kmem_cache *twsk_slab; + char *twsk_slab_name; + unsigned int twsk_obj_size; + int (*twsk_unique)(struct sock *, struct sock *, void *); + void (*twsk_destructor)(struct sock *); +}; -struct ipl_pb0_nvme { - __u32 len; - __u8 pbt; - __u8 reserved1[3]; - __u8 loadparm[8]; - __u8 reserved2[304]; - __u8 opt; - __u8 reserved3[3]; - __u32 fid; - __u8 reserved4[12]; - __u32 nsid; - __u8 reserved5[4]; - __u32 bootprog; - __u8 reserved6[12]; - __u64 br_lba; - __u32 scp_data_len; - __u8 reserved7[260]; - __u8 scp_data[0]; -} __attribute__((packed)); +struct saved_syn; -struct ipl_pb0_ccw { - __u32 len; - __u8 pbt; - __u8 flags; - __u8 reserved1[2]; - __u8 loadparm[8]; - __u8 reserved2[84]; - __u16 reserved3: 13; - __u8 ssid: 3; - __u16 devno; - __u8 vm_flags; - __u8 reserved4[3]; - __u32 vm_parm_len; - __u8 nss_name[8]; - __u8 vm_parm[64]; - __u8 reserved5[8]; +struct request_sock { + struct sock_common __req_common; + struct request_sock *dl_next; + u16 mss; + u8 num_retrans; + u8 syncookie: 1; + u8 num_timeout: 7; + u32 ts_recent; + struct timer_list rsk_timer; + const struct request_sock_ops *rsk_ops; + struct sock *sk; + struct saved_syn *saved_syn; + u32 secid; + u32 peer_secid; }; -struct ipl_rb_component_entry { - __u64 addr; - __u64 len; - __u8 flags; - __u8 reserved1[5]; - __u16 certificate_index; - __u8 reserved2[8]; +struct saved_syn { + u32 mac_hdrlen; + u32 network_hdrlen; + u32 tcp_hdrlen; + u8 data[0]; }; -struct ipl_parameter_block { - struct ipl_pl_hdr hdr; - union { - struct ipl_pb_hdr pb0_hdr; - struct ipl_pb0_common common; - struct ipl_pb0_fcp fcp; - struct ipl_pb0_ccw ccw; - struct ipl_pb0_nvme nvme; - char raw[4088]; - }; +enum tsq_enum { + TSQ_THROTTLED = 0, + TSQ_QUEUED = 1, + TCP_TSQ_DEFERRED = 2, + TCP_WRITE_TIMER_DEFERRED = 3, + TCP_DELACK_TIMER_DEFERRED = 4, + TCP_MTU_REDUCED_DEFERRED = 5, }; -enum ipl_type { - IPL_TYPE_UNKNOWN = 1, - IPL_TYPE_CCW = 2, - IPL_TYPE_FCP = 4, - IPL_TYPE_FCP_DUMP = 8, - IPL_TYPE_NSS = 16, - IPL_TYPE_NVME = 32, - IPL_TYPE_NVME_DUMP = 64, +struct ip6_sf_list { + struct ip6_sf_list *sf_next; + struct in6_addr sf_addr; + long unsigned int sf_count[2]; + unsigned char sf_gsresp; + unsigned char sf_oldin; + unsigned char sf_crcount; + struct callback_head rcu; }; -struct ipl_info { - enum ipl_type type; - union { - struct { - struct ccw_dev_id dev_id; - } ccw; - struct { - struct ccw_dev_id dev_id; - u64 wwpn; - u64 lun; - } fcp; - struct { - u32 fid; - u32 nsid; - } nvme; - struct { - char name[9]; - } nss; - } data; +struct ifmcaddr6 { + struct in6_addr mca_addr; + struct inet6_dev *idev; + struct ifmcaddr6 *next; + struct ip6_sf_list *mca_sources; + struct ip6_sf_list *mca_tomb; + unsigned int mca_sfmode; + unsigned char mca_crcount; + long unsigned int mca_sfcount[2]; + struct delayed_work mca_work; + unsigned int mca_flags; + int mca_users; + refcount_t mca_refcnt; + long unsigned int mca_cstamp; + long unsigned int mca_tstamp; + struct callback_head rcu; }; -union diag318_info { - long unsigned int val; - struct { - long unsigned int cpnc: 8; - long unsigned int cpvc: 56; - }; +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 sclp_info { - unsigned char has_linemode: 1; - unsigned char has_vt220: 1; - unsigned char has_siif: 1; - unsigned char has_sigpif: 1; - unsigned char has_core_type: 1; - unsigned char has_sprp: 1; - unsigned char has_hvs: 1; - unsigned char has_esca: 1; - unsigned char has_sief2: 1; - unsigned char has_64bscao: 1; - unsigned char has_gpere: 1; - unsigned char has_cmma: 1; - unsigned char has_gsls: 1; - unsigned char has_ib: 1; - unsigned char has_cei: 1; - unsigned char has_pfmfi: 1; - unsigned char has_ibs: 1; - unsigned char has_skey: 1; - unsigned char has_kss: 1; - unsigned char has_gisaf: 1; - unsigned char has_diag318: 1; - unsigned char has_sipl: 1; - unsigned char has_dirq: 1; - unsigned int ibc; - unsigned int mtid; - unsigned int mtid_cp; - unsigned int mtid_prev; - long unsigned int rzm; - long unsigned int rnmax; - long unsigned int hamax; - unsigned int max_cores; - long unsigned int hsa_size; - long unsigned int facilities; - unsigned int hmfai; +enum { + __ND_OPT_PREFIX_INFO_END = 0, + ND_OPT_SOURCE_LL_ADDR = 1, + ND_OPT_TARGET_LL_ADDR = 2, + ND_OPT_PREFIX_INFO = 3, + ND_OPT_REDIRECT_HDR = 4, + ND_OPT_MTU = 5, + ND_OPT_NONCE = 14, + __ND_OPT_ARRAY_MAX = 15, + ND_OPT_ROUTE_INFO = 24, + ND_OPT_RDNSS = 25, + ND_OPT_DNSSL = 31, + ND_OPT_6CO = 34, + ND_OPT_CAPTIVE_PORTAL = 37, + ND_OPT_PREF64 = 38, + __ND_OPT_MAX = 39, }; -enum mem_info_source { - MEM_DETECT_NONE = 0, - MEM_DETECT_SCLP_STOR_INFO = 1, - MEM_DETECT_DIAG260 = 2, - MEM_DETECT_SCLP_READ_INFO = 3, - MEM_DETECT_BIN_SEARCH = 4, +struct nd_opt_hdr { + __u8 nd_opt_type; + __u8 nd_opt_len; }; -struct mem_detect_block { - u64 start; - u64 end; +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 mem_detect_info { - u32 count; - u8 info_source; - struct mem_detect_block entries[255]; - struct mem_detect_block *entries_extended; +struct prefix_info { + __u8 type; + __u8 length; + __u8 prefix_len; + __u8 onlink: 1; + __u8 autoconf: 1; + __u8 reserved: 6; + __be32 valid; + __be32 prefered; + __be32 reserved2; + struct in6_addr prefix; }; -typedef struct { - char _[128]; -} addrtype___2; +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 plist_head { - struct list_head node_list; +enum { + UNAME26 = 131072, + ADDR_NO_RANDOMIZE = 262144, + FDPIC_FUNCPTRS = 524288, + MMAP_PAGE_ZERO = 1048576, + ADDR_COMPAT_LAYOUT = 2097152, + READ_IMPLIES_EXEC = 4194304, + ADDR_LIMIT_32BIT = 8388608, + SHORT_INODE = 16777216, + WHOLE_SECONDS = 33554432, + STICKY_TIMEOUTS = 67108864, + ADDR_LIMIT_3GB = 134217728, }; -enum pm_qos_type { - PM_QOS_UNITIALIZED = 0, - PM_QOS_MAX = 1, - PM_QOS_MIN = 2, +enum perf_branch_sample_type_shift { + PERF_SAMPLE_BRANCH_USER_SHIFT = 0, + PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 1, + PERF_SAMPLE_BRANCH_HV_SHIFT = 2, + PERF_SAMPLE_BRANCH_ANY_SHIFT = 3, + PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 4, + PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 5, + PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 6, + PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 7, + PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 8, + PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 9, + PERF_SAMPLE_BRANCH_COND_SHIFT = 10, + PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 11, + PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT = 12, + PERF_SAMPLE_BRANCH_CALL_SHIFT = 13, + PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT = 14, + PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15, + PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16, + PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17, + PERF_SAMPLE_BRANCH_MAX_SHIFT = 18, }; -struct pm_qos_constraints { - struct plist_head list; - s32 target_value; - s32 default_value; - s32 no_constraint_value; - enum pm_qos_type type; - struct blocking_notifier_head *notifiers; +enum { + TSK_TRACE_FL_TRACE_BIT = 0, + TSK_TRACE_FL_GRAPH_BIT = 1, }; -struct freq_constraints { - struct pm_qos_constraints min_freq; - struct blocking_notifier_head min_freq_notifiers; - struct pm_qos_constraints max_freq; - struct blocking_notifier_head max_freq_notifiers; +struct uuidcmp { + const char *uuid; + int len; }; -struct pm_qos_flags { - struct list_head list; - s32 effective_flags; +struct subprocess_info { + struct work_struct work; + struct completion *complete; + const char *path; + char **argv; + char **envp; + int wait; + int retval; + int (*init)(struct subprocess_info *, struct cred *); + void (*cleanup)(struct subprocess_info *); + void *data; }; -struct dev_pm_qos_request; +typedef phys_addr_t resource_size_t; -struct dev_pm_qos { - struct pm_qos_constraints resume_latency; - struct pm_qos_constraints latency_tolerance; - struct freq_constraints freq; - struct pm_qos_flags flags; - struct dev_pm_qos_request *resume_latency_req; - struct dev_pm_qos_request *latency_tolerance_req; - struct dev_pm_qos_request *flags_req; +struct __va_list_tag { + long int __gpr; + long int __fpr; + void *__overflow_arg_area; + void *__reg_save_area; }; -struct pm_qos_flags_request { - struct list_head node; - s32 flags; -}; +typedef __builtin_va_list va_list; -enum freq_qos_req_type { - FREQ_QOS_MIN = 1, - FREQ_QOS_MAX = 2, +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 freq_qos_request { - enum freq_qos_req_type type; - struct plist_node pnode; - struct freq_constraints *qos; -}; +typedef u64 async_cookie_t; -enum dev_pm_qos_req_type { - DEV_PM_QOS_RESUME_LATENCY = 1, - DEV_PM_QOS_LATENCY_TOLERANCE = 2, - DEV_PM_QOS_MIN_FREQUENCY = 3, - DEV_PM_QOS_MAX_FREQUENCY = 4, - DEV_PM_QOS_FLAGS = 5, -}; +typedef void (*async_func_t)(void *, async_cookie_t); -struct dev_pm_qos_request { - enum dev_pm_qos_req_type type; - union { - struct plist_node pnode; - struct pm_qos_flags_request flr; - struct freq_qos_request freq; - } data; - struct device *dev; +struct async_domain { + struct list_head pending; + unsigned int registered: 1; }; -enum stcctm_ctr_set { - EXTENDED = 0, - BASIC = 1, - PROBLEM_STATE = 2, - CRYPTO_ACTIVITY = 3, - MT_DIAG = 5, - MT_DIAG_CLEARING = 9, +enum umh_disable_depth { + UMH_ENABLED = 0, + UMH_FREEZING = 1, + UMH_DISABLED = 2, }; -struct s390_idle_data { - seqcount_t seqcount; - long unsigned int idle_count; - long unsigned int idle_time; - long unsigned int clock_idle_enter; - long unsigned int clock_idle_exit; - long unsigned int timer_idle_enter; - long unsigned int timer_idle_exit; - long unsigned int mt_cycles_enter[8]; +struct hash { + int ino; + int minor; + int major; + umode_t mode; + struct hash *next; + char name[4098]; }; -typedef u64 pcp_op_T__; - -struct vtimer_list { - struct list_head entry; - u64 expires; - u64 interval; - void (*function)(long unsigned int); - long unsigned int data; +struct dir_entry { + struct list_head list; + char *name; + time64_t mtime; }; -struct cpuid { - unsigned int version: 8; - unsigned int ident: 24; - unsigned int machine: 16; - unsigned int unused: 16; +enum state { + Start = 0, + Collect = 1, + GotHeader = 2, + SkipIt = 3, + GotName = 4, + CopyFile = 5, + GotSymlink = 6, + Reset = 7, }; -typedef void (*smp_call_func_t)(void *); +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 bool (*smp_cond_func_t)(int, void *); +enum key_being_used_for { + VERIFYING_MODULE_SIGNATURE = 0, + VERIFYING_FIRMWARE_SIGNATURE = 1, + VERIFYING_KEXEC_PE_SIGNATURE = 2, + VERIFYING_KEY_SIGNATURE = 3, + VERIFYING_KEY_SELF_SIGNATURE = 4, + VERIFYING_UNSPECIFIED_SIGNATURE = 5, + NR__KEY_BEING_USED_FOR = 6, +}; -struct cpu_topology_s390 { - short unsigned int thread_id; - short unsigned int core_id; - short unsigned int socket_id; - short unsigned int book_id; - short unsigned int drawer_id; - short unsigned int dedicated: 1; - int booted_cores; - cpumask_t thread_mask; - cpumask_t core_mask; - cpumask_t book_mask; - cpumask_t drawer_mask; +enum audit_ntp_type { + AUDIT_NTP_OFFSET = 0, + AUDIT_NTP_FREQ = 1, + AUDIT_NTP_STATUS = 2, + AUDIT_NTP_TAI = 3, + AUDIT_NTP_TICK = 4, + AUDIT_NTP_ADJUST = 5, + AUDIT_NTP_NVALS = 6, }; enum { - HWCAP_NR_ESAN3 = 0, - HWCAP_NR_ZARCH = 1, - HWCAP_NR_STFLE = 2, - HWCAP_NR_MSA = 3, - HWCAP_NR_LDISP = 4, - HWCAP_NR_EIMM = 5, - HWCAP_NR_DFP = 6, - HWCAP_NR_HPAGE = 7, - HWCAP_NR_ETF3EH = 8, - HWCAP_NR_HIGH_GPRS = 9, - HWCAP_NR_TE = 10, - HWCAP_NR_VXRS = 11, - HWCAP_NR_VXRS_BCD = 12, - HWCAP_NR_VXRS_EXT = 13, - HWCAP_NR_GS = 14, - HWCAP_NR_VXRS_EXT2 = 15, - HWCAP_NR_VXRS_PDE = 16, - HWCAP_NR_SORT = 17, - HWCAP_NR_DFLT = 18, - HWCAP_NR_VXRS_PDE2 = 19, - HWCAP_NR_NNPA = 20, - HWCAP_NR_PCI_MIO = 21, - HWCAP_NR_SIE = 22, - HWCAP_NR_MAX = 23, + PSW_BITS_AS_PRIMARY = 0, + PSW_BITS_AS_ACCREG = 1, + PSW_BITS_AS_SECONDARY = 2, + PSW_BITS_AS_HOME = 3, }; -struct cpu_info { - unsigned int cpu_mhz_dynamic; - unsigned int cpu_mhz_static; - struct cpuid cpu_id; +enum bug_trap_type { + BUG_TRAP_TYPE_NONE = 0, + BUG_TRAP_TYPE_WARN = 1, + BUG_TRAP_TYPE_BUG = 2, }; -typedef unsigned int uint; - enum { - PER_LINUX = 0, - PER_LINUX_32BIT = 8388608, - PER_LINUX_FDPIC = 524288, - PER_SVR4 = 68157441, - PER_SVR3 = 83886082, - PER_SCOSVR3 = 117440515, - PER_OSR5 = 100663299, - PER_WYSEV386 = 83886084, - PER_ISCR4 = 67108869, - PER_BSD = 6, - PER_SUNOS = 67108870, - PER_XENIX = 83886087, - PER_LINUX32 = 8, - PER_LINUX32_3GB = 134217736, - PER_IRIX32 = 67108873, - PER_IRIXN32 = 67108874, - PER_IRIX64 = 67108875, - PER_RISCOS = 12, - PER_SOLARIS = 67108877, - PER_UW7 = 68157454, - PER_OSF4 = 15, - PER_HPUX = 16, - PER_MASK = 255, + HI_SOFTIRQ = 0, + TIMER_SOFTIRQ = 1, + NET_TX_SOFTIRQ = 2, + NET_RX_SOFTIRQ = 3, + BLOCK_SOFTIRQ = 4, + IRQ_POLL_SOFTIRQ = 5, + TASKLET_SOFTIRQ = 6, + SCHED_SOFTIRQ = 7, + HRTIMER_SOFTIRQ = 8, + RCU_SOFTIRQ = 9, + NR_SOFTIRQS = 10, }; -enum { - EI_ETYPE_NONE = 0, - EI_ETYPE_NULL = 1, - EI_ETYPE_ERRNO = 2, - EI_ETYPE_ERRNO_NULL = 3, - EI_ETYPE_TRUE = 4, -}; +typedef bool (*ex_handler_t)(const struct exception_table_entry *, struct pt_regs *); -struct syscall_metadata { - const char *name; - int syscall_nr; - int nb_args; - const char **types; - const char **args; - struct list_head enter_fields; - struct trace_event_call *enter_event; - struct trace_event_call *exit_event; +union oac { + unsigned int val; + struct { + struct { + short unsigned int key: 4; + char: 4; + short unsigned int as: 2; + char: 4; + short unsigned int k: 1; + short unsigned int a: 1; + } oac1; + struct { + short unsigned int key: 4; + char: 4; + short unsigned int as: 2; + char: 4; + short unsigned int k: 1; + short unsigned int a: 1; + } oac2; + }; }; -struct s390_mmap_arg_struct { - long unsigned int addr; - long unsigned int len; - long unsigned int prot; - long unsigned int flags; - long unsigned int fd; - long unsigned int offset; +enum die_val { + DIE_OOPS = 1, + DIE_BPT = 2, + DIE_SSTEP = 3, + DIE_PANIC = 4, + DIE_NMI = 5, + DIE_DIE = 6, + DIE_NMIWATCHDOG = 7, + DIE_KERNELDEBUG = 8, + DIE_TRAP = 9, + DIE_GPF = 10, + DIE_CALL = 11, + DIE_NMI_IPI = 12, }; -typedef long unsigned int addr_t; - -typedef struct { - unsigned int len; - long unsigned int kernel_addr; - long unsigned int process_addr; -} ptrace_area; - -typedef struct { - unsigned int fpc; - unsigned int pad; - double fprs[16]; -} _s390_fp_regs; +enum { + TASKSTATS_CMD_UNSPEC = 0, + TASKSTATS_CMD_GET = 1, + TASKSTATS_CMD_NEW = 2, + __TASKSTATS_CMD_MAX = 3, +}; -union ctlreg0 { - long unsigned int val; - struct { - char: 8; - long unsigned int tcx: 1; - long unsigned int pifo: 1; - int: 25; - long unsigned int lap: 1; - char: 4; - long unsigned int edat: 1; - char: 2; - long unsigned int iep: 1; - char: 1; - long unsigned int afp: 1; - long unsigned int vx: 1; - char: 7; - long unsigned int sssm: 1; - }; +enum ucount_type { + UCOUNT_USER_NAMESPACES = 0, + UCOUNT_PID_NAMESPACES = 1, + UCOUNT_UTS_NAMESPACES = 2, + UCOUNT_IPC_NAMESPACES = 3, + UCOUNT_NET_NAMESPACES = 4, + UCOUNT_MNT_NAMESPACES = 5, + UCOUNT_CGROUP_NAMESPACES = 6, + UCOUNT_TIME_NAMESPACES = 7, + UCOUNT_INOTIFY_INSTANCES = 8, + UCOUNT_INOTIFY_WATCHES = 9, + UCOUNT_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, }; -typedef u32 compat_ulong_t; +enum cpu_usage_stat { + CPUTIME_USER = 0, + CPUTIME_NICE = 1, + CPUTIME_SYSTEM = 2, + CPUTIME_SOFTIRQ = 3, + CPUTIME_IRQ = 4, + CPUTIME_IDLE = 5, + CPUTIME_IOWAIT = 6, + CPUTIME_STEAL = 7, + CPUTIME_GUEST = 8, + CPUTIME_GUEST_NICE = 9, + NR_STATS = 10, +}; -struct membuf { - void *p; - size_t left; +enum bpf_type_flag { + PTR_MAYBE_NULL = 256, + MEM_RDONLY = 512, + __BPF_TYPE_LAST_FLAG = 512, }; -struct user_regset; +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, +}; -typedef int user_regset_active_fn(struct task_struct *, const struct user_regset *); +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, +}; -typedef int user_regset_get2_fn(struct task_struct *, const struct user_regset *, struct membuf); +enum bpf_cgroup_storage_type { + BPF_CGROUP_STORAGE_SHARED = 0, + BPF_CGROUP_STORAGE_PERCPU = 1, + __BPF_CGROUP_STORAGE_MAX = 2, +}; -typedef int user_regset_set_fn(struct task_struct *, const struct user_regset *, unsigned int, unsigned int, const void *, const void *); +enum bpf_tramp_prog_type { + BPF_TRAMP_FENTRY = 0, + BPF_TRAMP_FEXIT = 1, + BPF_TRAMP_MODIFY_RETURN = 2, + BPF_TRAMP_MAX = 3, + BPF_TRAMP_REPLACE = 4, +}; -typedef int user_regset_writeback_fn(struct task_struct *, const struct user_regset *, int); +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, +}; -struct user_regset { - user_regset_get2_fn *regset_get; - user_regset_set_fn *set; - user_regset_active_fn *active; - user_regset_writeback_fn *writeback; - unsigned int n; - unsigned int size; - unsigned int align; - unsigned int bias; - unsigned int core_note_type; +enum psi_task_count { + NR_IOWAIT = 0, + NR_MEMSTALL = 1, + NR_RUNNING = 2, + NR_ONCPU = 3, + NR_MEMSTALL_RUNNING = 4, + NR_PSI_TASK_COUNTS = 5, }; -struct user_regset_view { - const char *name; - const struct user_regset *regsets; - unsigned int n; - u32 e_flags; - u16 e_machine; - u8 ei_osabi; +enum psi_states { + PSI_IO_SOME = 0, + PSI_IO_FULL = 1, + PSI_MEM_SOME = 2, + PSI_MEM_FULL = 3, + PSI_CPU_SOME = 4, + PSI_CPU_FULL = 5, + PSI_NONIDLE = 6, + NR_PSI_STATES = 7, }; -typedef struct { - __u32 len; - __u32 kernel_addr; - __u32 process_addr; -} compat_ptrace_area; +enum psi_aggregators { + PSI_AVGS = 0, + PSI_POLL = 1, + NR_PSI_AGGREGATORS = 2, +}; -typedef struct { - char _[24]; -} addrtype___3; +enum cgroup_subsys_id { + cpuset_cgrp_id = 0, + cpu_cgrp_id = 1, + cpuacct_cgrp_id = 2, + io_cgrp_id = 3, + memory_cgrp_id = 4, + devices_cgrp_id = 5, + freezer_cgrp_id = 6, + net_cls_cgrp_id = 7, + perf_event_cgrp_id = 8, + net_prio_cgrp_id = 9, + hugetlb_cgrp_id = 10, + pids_cgrp_id = 11, + rdma_cgrp_id = 12, + misc_cgrp_id = 13, + CGROUP_SUBSYS_COUNT = 14, +}; -typedef struct { - long unsigned int mask; - long unsigned int addr; -} _psw_t; +struct irqentry_state { + union { + bool exit_rcu; + bool lockdep; + }; +}; -typedef struct { - _psw_t psw; - long unsigned int gprs[16]; - unsigned int acrs[16]; -} _s390_regs_common; +typedef struct irqentry_state irqentry_state_t; -typedef struct { - _s390_regs_common regs; - _s390_fp_regs fpregs; -} _sigregs; +typedef u64 uint64_t; -typedef struct { - long long unsigned int vxrs_low[16]; - __vector128 vxrs_high[16]; - unsigned char __reserved[128]; -} _sigregs_ext; +typedef s64 int64_t; -struct sigcontext { - long unsigned int oldmask[1]; - _sigregs *sregs; +struct __kernel_timex_timeval { + __kernel_time64_t tv_sec; + long long int tv_usec; }; -struct sigaltstack { - void *ss_sp; - int ss_flags; - __kernel_size_t ss_size; +struct __kernel_timex { + unsigned int modes; + long long int offset; + long long int freq; + long long int maxerror; + long long int esterror; + int status; + long long int constant; + long long int precision; + long long int tolerance; + struct __kernel_timex_timeval time; + long long int tick; + long long int ppsfreq; + long long int jitter; + int shift; + long long int stabil; + long long int jitcnt; + long long int calcnt; + long long int errcnt; + long long int stbcnt; + int tai; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -typedef struct sigaltstack stack_t; - -struct siginfo { - union { - struct { - int si_signo; - int si_errno; - int si_code; - union __sifields _sifields; - }; - int _si_pad[32]; +union tod_clock { + __int128 unsigned val; + struct { + __int128 unsigned ei: 8; + __int128 unsigned tod: 64; + int: 24; + short: 16; + __int128 unsigned pf: 16; + }; + struct { + __int128 unsigned eitod: 72; + }; + struct { + __int128 unsigned us: 60; + __int128 unsigned sus: 12; }; }; -typedef struct siginfo siginfo_t; - -struct ksignal { - struct k_sigaction ka; - kernel_siginfo_t info; - int sig; +struct ptff_qto { + long unsigned int physical_clock; + long unsigned int tod_offset; + long unsigned int logical_tod_offset; + long unsigned int tod_epoch_difference; }; -struct ucontext; +struct ptff_qui { + unsigned int tm: 2; + unsigned int ts: 2; + unsigned int pad_0x04; + long unsigned int leap_event; + short int old_leap; + short int new_leap; + unsigned int pad_0x14; + long unsigned int prt[5]; + long unsigned int cst[3]; + unsigned int skew; + unsigned int pad_0x5c[41]; +}; -struct ucontext_extended { - long unsigned int uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - _sigregs uc_mcontext; - sigset_t uc_sigmask; - unsigned char __unused[120]; - _sigregs_ext uc_mcontext_ext; +struct timens_offset { + s64 sec; + u64 nsec; }; -struct ucontext { - long unsigned int uc_flags; - struct ucontext *uc_link; - stack_t uc_stack; - _sigregs uc_mcontext; - sigset_t uc_sigmask; - unsigned char __unused[120]; +enum clocksource_ids { + CSID_GENERIC = 0, + CSID_ARM_ARCH_COUNTER = 1, + CSID_MAX = 2, }; -struct sigframe { - __u8 callee_used_stack[160]; - struct sigcontext sc; - _sigregs sregs; - int signo; - _sigregs_ext sregs_ext; - __u16 svc_insn; +enum vdso_clock_mode { + VDSO_CLOCKMODE_NONE = 0, + VDSO_CLOCKMODE_TOD = 1, + VDSO_CLOCKMODE_MAX = 2, + VDSO_CLOCKMODE_TIMENS = 2147483647, }; -struct rt_sigframe { - __u8 callee_used_stack[160]; - __u16 svc_insn; - struct siginfo info; - struct ucontext_extended uc; +struct clocksource { + u64 (*read)(struct clocksource *); + u64 mask; + u32 mult; + u32 shift; + u64 max_idle_ns; + u32 maxadj; + u32 uncertainty_margin; + u64 max_cycles; + const char *name; + struct list_head list; + int rating; + enum clocksource_ids id; + enum vdso_clock_mode vdso_clock_mode; + long unsigned int flags; + int (*enable)(struct clocksource *); + void (*disable)(struct clocksource *); + void (*suspend)(struct clocksource *); + void (*resume)(struct clocksource *); + void (*mark_unstable)(struct clocksource *); + void (*tick_stable)(struct clocksource *); + struct module *owner; }; -union mci { - long unsigned int val; - struct { - u64 sd: 1; - u64 pd: 1; - u64 sr: 1; - char: 1; - u64 cd: 1; - u64 ed: 1; - char: 1; - u64 dg: 1; - u64 w: 1; - u64 cp: 1; - u64 sp: 1; - u64 ck: 1; - char: 2; - u64 b: 1; - char: 1; - u64 se: 1; - u64 sc: 1; - u64 ke: 1; - u64 ds: 1; - u64 wp: 1; - u64 ms: 1; - u64 pm: 1; - u64 ia: 1; - u64 fa: 1; - u64 vr: 1; - u64 ec: 1; - u64 fp: 1; - u64 gr: 1; - u64 cr: 1; - char: 1; - u64 st: 1; - u64 ie: 1; - u64 ar: 1; - u64 da: 1; - char: 1; - u64 gs: 1; - char: 5; - u64 pr: 1; - u64 fc: 1; - u64 ap: 1; - char: 1; - u64 ct: 1; - u64 cc: 1; - }; +enum { + WORK_STRUCT_PENDING_BIT = 0, + WORK_STRUCT_INACTIVE_BIT = 1, + WORK_STRUCT_PWQ_BIT = 2, + WORK_STRUCT_LINKED_BIT = 3, + WORK_STRUCT_COLOR_SHIFT = 4, + WORK_STRUCT_COLOR_BITS = 4, + WORK_STRUCT_PENDING = 1, + WORK_STRUCT_INACTIVE = 2, + WORK_STRUCT_PWQ = 4, + WORK_STRUCT_LINKED = 8, + WORK_STRUCT_STATIC = 0, + WORK_NR_COLORS = 16, + WORK_CPU_UNBOUND = 512, + WORK_STRUCT_FLAG_BITS = 8, + WORK_OFFQ_FLAG_BASE = 4, + __WORK_OFFQ_CANCELING = 4, + WORK_OFFQ_FLAG_BITS = 1, + WORK_OFFQ_POOL_SHIFT = 5, + WORK_OFFQ_LEFT = 59, + WORK_OFFQ_POOL_BITS = 31, + WORK_BUSY_PENDING = 1, + WORK_BUSY_RUNNING = 2, + WORKER_DESC_LEN = 24, }; -struct mcesa { - u8 vector_save_area[1024]; - u8 guarded_storage_save_area[32]; +enum { + WQ_UNBOUND = 2, + WQ_FREEZABLE = 4, + WQ_MEM_RECLAIM = 8, + WQ_HIGHPRI = 16, + WQ_CPU_INTENSIVE = 32, + WQ_SYSFS = 64, + WQ_POWER_EFFICIENT = 128, + __WQ_DRAINING = 65536, + __WQ_ORDERED = 131072, + __WQ_LEGACY = 262144, + __WQ_ORDERED_EXPLICIT = 524288, + WQ_MAX_ACTIVE = 512, + WQ_MAX_UNBOUND_PER_CPU = 4, + WQ_DFL_ACTIVE = 256, }; -struct platform_msi_priv_data; +enum interruption_class { + IRQEXT_CLK = 0, + IRQEXT_EXC = 1, + IRQEXT_EMS = 2, + IRQEXT_TMR = 3, + IRQEXT_TLA = 4, + IRQEXT_PFL = 5, + IRQEXT_DSD = 6, + IRQEXT_VRT = 7, + IRQEXT_SCP = 8, + IRQEXT_IUC = 9, + IRQEXT_CMS = 10, + IRQEXT_CMC = 11, + IRQEXT_FTP = 12, + IRQIO_CIO = 13, + IRQIO_DAS = 14, + IRQIO_C15 = 15, + IRQIO_C70 = 16, + IRQIO_TAP = 17, + IRQIO_VMR = 18, + IRQIO_LCS = 19, + IRQIO_CTC = 20, + IRQIO_ADM = 21, + IRQIO_CSC = 22, + IRQIO_VIR = 23, + IRQIO_QAI = 24, + IRQIO_APB = 25, + IRQIO_PCF = 26, + IRQIO_PCD = 27, + IRQIO_MSI = 28, + IRQIO_VAI = 29, + IRQIO_GAL = 30, + NMI_NMI = 31, + CPU_RST = 32, + NR_ARCH_IRQS = 33, +}; -struct msi_device_data { - long unsigned int properties; - struct platform_msi_priv_data *platform_data; - struct mutex mutex; - struct xarray __store; - long unsigned int __iter_idx; +struct irq_stat { + unsigned int irqs[33]; }; -struct mcck_volatile_info { - __u64 mcic; - __u64 failing_storage_address; - __u32 ext_damage_code; - __u32 reserved; +struct ext_code { + short unsigned int subcode; + short unsigned int code; }; -struct kvm_s390_sie_block { - atomic_t cpuflags; - char: 1; - __u32 prefix: 18; - char: 1; - __u32 ibc: 12; - __u8 reserved08[4]; - __u32 prog0c; - union { - __u8 reserved10[16]; - struct { - __u64 pv_handle_cpu; - __u64 pv_handle_config; - }; - }; - atomic_t prog20; - __u8 reserved24[4]; - __u64 cputm; - __u64 ckc; - __u64 epoch; - __u32 svcc; - __u16 lctl; - __s16 icpua; - __u32 ictl; - __u32 eca; - __u8 icptcode; - __u8 icptstatus; - __u16 ihcpu; - __u8 reserved54; - __u8 iictl; - __u16 ipa; - __u32 ipb; - __u32 scaoh; - __u8 fpf; - __u8 ecb; - __u8 ecb2; - __u8 ecb3; - __u32 scaol; - __u8 sdf; - __u8 epdx; - __u8 cpnc; - __u8 reserved6b; - __u32 todpr; - __u32 gd; - __u8 reserved74[12]; - __u64 mso; - __u64 msl; - psw_t gpsw; - __u64 gg14; - __u64 gg15; - __u8 reservedb0[8]; - __u8 hpid; - __u8 reservedb9[7]; - union { - struct { - __u32 eiparams; - __u16 extcpuaddr; - __u16 eic; - }; - __u64 mcic; - }; - __u32 reservedc8; - union { - struct { - __u16 pgmilc; - __u16 iprcc; - }; - __u32 edc; - }; - union { - struct { - __u32 dxc; - __u16 mcn; - __u8 perc; - __u8 peratmid; - }; - __u64 faddr; - }; - __u64 peraddr; - __u8 eai; - __u8 peraid; - __u8 oai; - __u8 armid; - __u8 reservede4[4]; - union { - __u64 tecmc; - struct { - __u16 subchannel_id; - __u16 subchannel_nr; - __u32 io_int_parm; - __u32 io_int_word; - }; - }; - __u8 reservedf4[8]; - __u32 crycbd; - __u64 gcr[16]; - union { - __u64 gbea; - __u64 sidad; - }; - __u8 reserved188[8]; - __u64 sdnxo; - __u8 reserved198[8]; - __u32 fac; - __u8 reserved1a4[20]; - __u64 cbrlo; - __u8 reserved1c0[8]; - __u32 ecd; - __u8 reserved1cc[18]; - __u64 pp; - __u8 reserved1e6[2]; - __u64 itdba; - __u64 riccbd; - __u64 gvrd; -} __attribute__((packed)); +typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, long unsigned int); -struct kvm_s390_itdb { - __u8 data[256]; +struct atomic_notifier_head { + spinlock_t lock; + struct notifier_block *head; }; -struct sie_page { - struct kvm_s390_sie_block sie_block; - struct mcck_volatile_info mcck_info; - __u8 reserved218[360]; - __u64 pv_grregs[16]; - __u8 reserved400[512]; - struct kvm_s390_itdb itdb; - __u8 reserved700[2304]; +enum migratetype { + MIGRATE_UNMOVABLE = 0, + MIGRATE_MOVABLE = 1, + MIGRATE_RECLAIMABLE = 2, + MIGRATE_PCPTYPES = 3, + MIGRATE_HIGHATOMIC = 3, + MIGRATE_CMA = 4, + MIGRATE_ISOLATE = 5, + MIGRATE_TYPES = 6, }; -enum kvm_bus { - KVM_MMIO_BUS = 0, - KVM_PIO_BUS = 1, - KVM_VIRTIO_CCW_NOTIFY_BUS = 2, - KVM_FAST_MMIO_BUS = 3, - KVM_NR_BUSES = 4, +enum numa_stat_item { + NUMA_HIT = 0, + NUMA_MISS = 1, + NUMA_FOREIGN = 2, + NUMA_INTERLEAVE_HIT = 3, + NUMA_LOCAL = 4, + NUMA_OTHER = 5, + NR_VM_NUMA_EVENT_ITEMS = 6, }; -struct mcck_struct { - unsigned int kill_task: 1; - unsigned int channel_report: 1; - unsigned int warning: 1; - unsigned int stp_queue: 1; - long unsigned int mcck_code; +enum zone_stat_item { + NR_FREE_PAGES = 0, + NR_ZONE_LRU_BASE = 1, + NR_ZONE_INACTIVE_ANON = 1, + NR_ZONE_ACTIVE_ANON = 2, + NR_ZONE_INACTIVE_FILE = 3, + NR_ZONE_ACTIVE_FILE = 4, + NR_ZONE_UNEVICTABLE = 5, + NR_ZONE_WRITE_PENDING = 6, + NR_MLOCK = 7, + NR_BOUNCE = 8, + NR_ZSPAGES = 9, + NR_FREE_CMA_PAGES = 10, + NR_VM_ZONE_STAT_ITEMS = 11, }; -struct __debug_entry { - long unsigned int clock: 60; - long unsigned int exception: 1; - long unsigned int level: 3; - void *caller; - short unsigned int cpu; -} __attribute__((packed)); +enum zone_watermarks { + WMARK_MIN = 0, + WMARK_LOW = 1, + WMARK_HIGH = 2, + NR_WMARK = 3, +}; -typedef struct __debug_entry debug_entry_t; +enum { + ZONELIST_FALLBACK = 0, + ZONELIST_NOFALLBACK = 1, + MAX_ZONELISTS = 2, +}; -struct debug_view; +enum { + PG_DIRECT_MAP_4K = 0, + PG_DIRECT_MAP_1M = 1, + PG_DIRECT_MAP_2G = 2, + PG_DIRECT_MAP_MAX = 3, +}; -struct debug_info { - struct debug_info *next; - struct debug_info *prev; - refcount_t ref_count; - spinlock_t lock; - int level; - int nr_areas; - int pages_per_area; - int buf_size; - int entry_size; - debug_entry_t ***areas; - int active_area; - int *active_pages; - int *active_entries; - struct dentry *debugfs_root_entry; - struct dentry *debugfs_entries[10]; - struct debug_view *views[10]; - char name[64]; - umode_t mode; +enum { + DQF_ROOT_SQUASH_B = 0, + DQF_SYS_FILE_B = 16, + DQF_PRIVATE = 17, }; -typedef struct debug_info debug_info_t; +enum { + DQST_LOOKUPS = 0, + DQST_DROPS = 1, + DQST_READS = 2, + DQST_WRITES = 3, + DQST_CACHE_HITS = 4, + DQST_ALLOC_DQUOTS = 5, + DQST_FREE_DQUOTS = 6, + DQST_SYNCS = 7, + _DQST_DQSTAT_LAST = 8, +}; -typedef int debug_prolog_proc_t(debug_info_t *, struct debug_view *, char *); +enum { + SB_UNFROZEN = 0, + SB_FREEZE_WRITE = 1, + SB_FREEZE_PAGEFAULT = 2, + SB_FREEZE_FS = 3, + SB_FREEZE_COMPLETE = 4, +}; -typedef int debug_header_proc_t(debug_info_t *, struct debug_view *, int, debug_entry_t *, char *); - -typedef int debug_format_proc_t(debug_info_t *, struct debug_view *, char *, const char *); - -typedef int debug_input_proc_t(debug_info_t *, struct debug_view *, struct file *, const char *, size_t, loff_t *); - -struct debug_view { - char name[64]; - debug_prolog_proc_t *prolog_proc; - debug_header_proc_t *header_proc; - debug_format_proc_t *format_proc; - debug_input_proc_t *input_proc; - void *private_data; +enum compound_dtor_id { + NULL_COMPOUND_DTOR = 0, + COMPOUND_PAGE_DTOR = 1, + HUGETLB_PAGE_DTOR = 2, + TRANSHUGE_PAGE_DTOR = 3, + NR_COMPOUND_DTORS = 4, }; -struct file_private_info { - loff_t offset; - int act_area; - int act_page; - int act_entry; - size_t act_entry_offset; - char temp_buf[2048]; - debug_info_t *debug_info_org; - debug_info_t *debug_info_snap; - struct debug_view *view; +enum cpu_idle_type { + CPU_IDLE = 0, + CPU_NOT_IDLE = 1, + CPU_NEWLY_IDLE = 2, + CPU_MAX_IDLE_TYPES = 3, }; -typedef struct file_private_info file_private_info_t; - -typedef struct { - char *string; - long int args[0]; -} debug_sprintf_entry_t; - -typedef long unsigned int uintptr_t; - -typedef void (*rcu_callback_t)(struct callback_head *); +enum { + __SD_BALANCE_NEWIDLE = 0, + __SD_BALANCE_EXEC = 1, + __SD_BALANCE_FORK = 2, + __SD_BALANCE_WAKE = 3, + __SD_WAKE_AFFINE = 4, + __SD_ASYM_CPUCAPACITY = 5, + __SD_ASYM_CPUCAPACITY_FULL = 6, + __SD_SHARE_CPUCAPACITY = 7, + __SD_SHARE_PKG_RESOURCES = 8, + __SD_SERIALIZE = 9, + __SD_ASYM_PACKING = 10, + __SD_PREFER_SIBLING = 11, + __SD_OVERLAP = 12, + __SD_NUMA = 13, + __SD_FLAG_CNT = 14, +}; -enum irqreturn { - IRQ_NONE = 0, - IRQ_HANDLED = 1, - IRQ_WAKE_THREAD = 2, +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); }; -typedef enum irqreturn irqreturn_t; +typedef int (*cpu_stop_fn_t)(void *); -enum irq_subclass { - IRQ_SUBCLASS_MEASUREMENT_ALERT = 5, - IRQ_SUBCLASS_SERVICE_SIGNAL = 9, +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, }; -typedef irqreturn_t (*irq_handler_t)(int, void *); - -struct irqaction { - irq_handler_t handler; - void *dev_id; - void *percpu_dev_id; - struct irqaction *next; - irq_handler_t thread_fn; - struct task_struct *thread; - struct irqaction *secondary; - unsigned int irq; - unsigned int flags; - long unsigned int thread_flags; - long unsigned int thread_mask; +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; - struct proc_dir_entry *dir; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; + int rating; + int irq; + int bound_on; + const struct cpumask *cpumask; + struct list_head list; + struct module *owner; long: 64; long: 64; long: 64; @@ -15350,6208 +15588,5904 @@ struct irqaction { long: 64; }; -struct irq_affinity_notify { - unsigned int irq; - struct kref kref; - struct work_struct work; - void (*notify)(struct irq_affinity_notify *, const cpumask_t *); - void (*release)(struct kref *); -}; - -struct irq_affinity_desc { - struct cpumask mask; - unsigned int is_managed: 1; +struct arch_vdso_data { + __s64 tod_steering_delta; + __u64 tod_steering_end; }; -enum irqchip_irq_state { - IRQCHIP_STATE_PENDING = 0, - IRQCHIP_STATE_ACTIVE = 1, - IRQCHIP_STATE_MASKED = 2, - IRQCHIP_STATE_LINE_LEVEL = 3, +struct vdso_timestamp { + u64 sec; + u64 nsec; }; -struct iopf_device_param; - -struct iommu_fault_param; - -struct iommu_fwspec; - -struct dev_iommu { - struct mutex lock; - struct iommu_fault_param *fault_param; - struct iopf_device_param *iopf_param; - struct iommu_fwspec *fwspec; - struct iommu_device *iommu_dev; - void *priv; +struct vdso_data { + u32 seq; + s32 clock_mode; + u64 cycle_last; + u64 mask; + u32 mult; + u32 shift; + union { + struct vdso_timestamp basetime[12]; + struct timens_offset offset[12]; + }; + s32 tz_minuteswest; + s32 tz_dsttime; + u32 hrtimer_res; + u32 __unused; + struct arch_vdso_data arch_data; }; -struct irq_desc; - -typedef void (*irq_flow_handler_t)(struct irq_desc *); - -struct msi_desc; - -struct irq_common_data { - unsigned int state_use_accessors; - unsigned int node; - void *handler_data; - struct msi_desc *msi_desc; - cpumask_var_t affinity; +struct stp_irq_parm { + short: 14; + u32 tsc: 1; + u32 lac: 1; + u32 tcpc: 1; }; -struct irq_chip; - -struct irq_data { - u32 mask; - unsigned int irq; - long unsigned int hwirq; - struct irq_common_data *common; - struct irq_chip *chip; - struct irq_domain *domain; - struct irq_data *parent_data; - void *chip_data; +struct stp_sstpi { + int: 32; + u32 tu: 1; + u32 lu: 1; + char: 6; + u32 stratum: 8; + u32 vbits: 16; + u32 leaps: 16; + u32 tmd: 4; + u32 ctn: 4; + char: 3; + u32 c: 1; + u32 tst: 4; + u32 tzo: 16; + u32 dsto: 16; + u32 ctrl: 16; + u32 tto; + int: 32; + u32 ctnid[3]; + int: 32; + u32 todoff[4]; + u32 rsvd[48]; }; -struct irq_desc { - struct irq_common_data irq_common_data; - struct irq_data irq_data; - unsigned int *kstat_irqs; - irq_flow_handler_t handle_irq; - struct irqaction *action; - unsigned int status_use_accessors; - unsigned int core_internal_state__do_not_mess_with_it; - unsigned int depth; - unsigned int wake_depth; - unsigned int tot_count; - unsigned int irq_count; - long unsigned int last_unhandled; - unsigned int irqs_unhandled; - atomic_t threads_handled; - int threads_handled_last; - raw_spinlock_t lock; - struct cpumask *percpu_enabled; - const struct cpumask *percpu_affinity; - const struct cpumask *affinity_hint; - struct irq_affinity_notify *affinity_notify; - long unsigned int threads_oneshot; - atomic_t threads_active; - wait_queue_head_t wait_for_threads; - struct proc_dir_entry *dir; - struct callback_head rcu; - struct kobject kobj; - struct mutex request_mutex; - int parent_irq; - struct module *owner; - const char *name; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct stp_tzib { + u32 tzan: 16; + int: 16; + u32 tzo: 16; + u32 dsto: 16; + u32 stn; + u32 dstn; + u64 dst_on_alg; + u64 dst_off_alg; }; -struct arch_msi_msg_addr_lo { - u32 address_lo; +struct stp_tcpib { + u32 atcode: 4; + u32 ntcode: 4; + u32 d: 1; + s32 tto; + struct stp_tzib atzib; + struct stp_tzib ntzib; + s32 adst_offset: 16; + s32 ndst_offset: 16; + u32 rsvd1; + u64 ntzib_update; + u64 ndsto_update; }; -typedef struct arch_msi_msg_addr_lo arch_msi_msg_addr_lo_t; - -struct arch_msi_msg_addr_hi { - u32 address_hi; +struct stp_lsoib { + u32 p: 1; + int: 31; + s32 also: 16; + s32 nlso: 16; + u64 nlsout; }; -typedef struct arch_msi_msg_addr_hi arch_msi_msg_addr_hi_t; +struct stp_stzi { + u32 rsvd0[3]; + u64 data_ts; + u32 rsvd1[22]; + struct stp_tcpib tcpib; + struct stp_lsoib lsoib; +} __attribute__((packed)); -struct arch_msi_msg_data { - u32 data; +struct clock_sync_data { + atomic_t cpus; + int in_sync; + long int clock_delta; }; -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 addrtype { + char _[32]; }; -struct pci_msi_desc { - union { - u32 msi_mask; - u32 msix_ctrl; - }; - struct { - u8 is_msix: 1; - u8 multiple: 3; - u8 multi_cap: 3; - u8 can_mask: 1; - u8 is_64: 1; - u8 is_virtual: 1; - unsigned int default_irq; - } msi_attrib; - union { - u8 mask_pos; - void *mask_base; - }; +struct addrtype___2 { + char _[16]; }; -struct msi_desc { - unsigned int irq; - unsigned int nvec_used; - struct device *dev; - struct msi_msg msg; - struct irq_affinity_desc *affinity; - struct device_attribute *sysfs_attrs; - void (*write_msi_msg)(struct msi_desc *, void *); - void *write_msi_msg_data; - u16 msi_index; - struct pci_msi_desc pci; +struct addrtype___3 { + char _[256]; }; -struct irq_chip { - const char *name; - unsigned int (*irq_startup)(struct irq_data *); - void (*irq_shutdown)(struct irq_data *); - void (*irq_enable)(struct irq_data *); - void (*irq_disable)(struct irq_data *); - void (*irq_ack)(struct irq_data *); - void (*irq_mask)(struct irq_data *); - void (*irq_mask_ack)(struct irq_data *); - void (*irq_unmask)(struct irq_data *); - void (*irq_eoi)(struct irq_data *); - int (*irq_set_affinity)(struct irq_data *, const struct cpumask *, bool); - int (*irq_retrigger)(struct irq_data *); - int (*irq_set_type)(struct irq_data *, unsigned int); - int (*irq_set_wake)(struct irq_data *, unsigned int); - void (*irq_bus_lock)(struct irq_data *); - void (*irq_bus_sync_unlock)(struct irq_data *); - void (*irq_suspend)(struct irq_data *); - void (*irq_resume)(struct irq_data *); - void (*irq_pm_shutdown)(struct irq_data *); - void (*irq_calc_mask)(struct irq_data *); - void (*irq_print_chip)(struct irq_data *, struct seq_file *); - int (*irq_request_resources)(struct irq_data *); - void (*irq_release_resources)(struct irq_data *); - void (*irq_compose_msi_msg)(struct irq_data *, struct msi_msg *); - void (*irq_write_msi_msg)(struct irq_data *, struct msi_msg *); - int (*irq_get_irqchip_state)(struct irq_data *, enum irqchip_irq_state, bool *); - int (*irq_set_irqchip_state)(struct irq_data *, enum irqchip_irq_state, bool); - int (*irq_set_vcpu_affinity)(struct irq_data *, void *); - void (*ipi_send_single)(struct irq_data *, unsigned int); - void (*ipi_send_mask)(struct irq_data *, const struct cpumask *); - int (*irq_nmi_setup)(struct irq_data *); - void (*irq_nmi_teardown)(struct irq_data *); - long unsigned int flags; -}; +typedef struct { + char _[8]; +} addrtype; -struct of_phandle_args { - struct device_node *np; - int args_count; - uint32_t args[16]; +enum stack_type { + STACK_TYPE_UNKNOWN = 0, + STACK_TYPE_TASK = 1, + STACK_TYPE_IRQ = 2, + STACK_TYPE_NODAT = 3, + STACK_TYPE_RESTART = 4, + STACK_TYPE_MCCK = 5, }; -struct iommu_fault_unrecoverable { - __u32 reason; - __u32 flags; - __u32 pasid; - __u32 perm; - __u64 addr; - __u64 fetch_addr; +struct stack_info { + enum stack_type type; + long unsigned int begin; + long unsigned int end; }; -struct iommu_fault_page_request { - __u32 flags; - __u32 pasid; - __u32 grpid; - __u32 perm; - __u64 addr; - __u64 private_data[2]; +struct stack_frame { + long unsigned int empty1[5]; + unsigned int empty2[8]; + long unsigned int gprs[10]; + long unsigned int back_chain; }; -struct iommu_fault { - __u32 type; - __u32 padding; - union { - struct iommu_fault_unrecoverable event; - struct iommu_fault_page_request prm; - __u8 padding2[56]; - }; +struct unwind_state { + struct stack_info stack_info; + long unsigned int stack_mask; + struct task_struct *task; + struct pt_regs *regs; + long unsigned int sp; + long unsigned int ip; + int graph_idx; + struct llist_node *kr_cur; + bool reliable; + bool error; }; -struct iommu_page_response { - __u32 argsz; - __u32 version; - __u32 flags; - __u32 pasid; - __u32 grpid; - __u32 code; +struct fake_frame { + struct stack_frame sf; + struct pt_regs childregs; }; -typedef int (*iommu_fault_handler_t)(struct iommu_domain *, struct device *, long unsigned int, int, void *); +typedef struct { + int _[16]; +} acrstype; -struct iommu_domain_geometry { - dma_addr_t aperture_start; - dma_addr_t aperture_end; - bool force_aperture; +struct vx_array { + __vector128 _[32]; }; -struct iommu_dma_cookie; - -struct iommu_domain { - unsigned int type; - const struct iommu_domain_ops *ops; - long unsigned int pgsize_bitmap; - iommu_fault_handler_t handler; - void *handler_token; - struct iommu_domain_geometry geometry; - struct iommu_dma_cookie *iova_cookie; +enum diag_stat_enum { + DIAG_STAT_X008 = 0, + DIAG_STAT_X00C = 1, + DIAG_STAT_X010 = 2, + DIAG_STAT_X014 = 3, + DIAG_STAT_X044 = 4, + DIAG_STAT_X064 = 5, + DIAG_STAT_X09C = 6, + DIAG_STAT_X0DC = 7, + DIAG_STAT_X204 = 8, + DIAG_STAT_X210 = 9, + DIAG_STAT_X224 = 10, + DIAG_STAT_X250 = 11, + DIAG_STAT_X258 = 12, + DIAG_STAT_X26C = 13, + DIAG_STAT_X288 = 14, + DIAG_STAT_X2C4 = 15, + DIAG_STAT_X2FC = 16, + DIAG_STAT_X304 = 17, + DIAG_STAT_X308 = 18, + DIAG_STAT_X318 = 19, + DIAG_STAT_X500 = 20, + NR_DIAG_STAT = 21, }; -typedef int (*iommu_dev_fault_handler_t)(struct iommu_fault *, void *); - -struct iommu_iotlb_gather; - -struct iommu_domain_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 *, 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); - int (*enable_nesting)(struct iommu_domain *); - int (*set_pgtable_quirks)(struct iommu_domain *, long unsigned int); - void (*free)(struct iommu_domain *); +struct sysinfo_1_1_1 { + unsigned char p: 1; + char: 6; + unsigned char t: 1; + short: 0; + unsigned char ccr; + unsigned char cai; + char reserved_0[20]; + long unsigned int lic; + char manufacturer[16]; + char type[4]; + char reserved_1[12]; + char model_capacity[16]; + char sequence[16]; + char plant[4]; + char model[16]; + char model_perm_cap[16]; + char model_temp_cap[16]; + unsigned int model_cap_rating; + unsigned int model_perm_cap_rating; + unsigned int model_temp_cap_rating; + unsigned char typepct[5]; + unsigned char reserved_2[3]; + unsigned int ncr; + unsigned int npr; + unsigned int ntr; }; -struct iommu_iotlb_gather { +struct sysinfo_3_2_2 { + char reserved_0[31]; + char: 4; + unsigned char count: 4; + struct { + char reserved_0[4]; + short unsigned int cpus_total; + short unsigned int cpus_configured; + short unsigned int cpus_standby; + short unsigned int cpus_reserved; + char name[8]; + unsigned int caf; + char cpi[16]; + char reserved_1[3]; + unsigned char evmne; + unsigned int reserved_2; + uuid_t uuid; + } vm[8]; + char reserved_3[1504]; + char ext_names[2048]; +}; + +struct initrd_data { long unsigned int start; - long unsigned int end; - size_t pgsize; - struct list_head freelist; - bool queued; + long unsigned int size; }; -struct iommu_device { - struct list_head list; - const struct iommu_ops *ops; - struct fwnode_handle *fwnode; - struct device *dev; +struct oldmem_data { + long unsigned int start; + long unsigned int size; }; -struct iommu_sva { - struct device *dev; +union ctlreg2 { + long unsigned int val; + struct { + long: 33; + long unsigned int ducto: 25; + char: 1; + long unsigned int gse: 1; + char: 1; + long unsigned int tds: 1; + long unsigned int tdc: 2; + }; }; -struct iommu_fault_event { - struct iommu_fault fault; - struct list_head list; +union ctlreg5 { + long unsigned int val; + struct { + long: 33; + long unsigned int pasteo: 25; + }; }; -struct iommu_fault_param { - iommu_dev_fault_handler_t handler; - void *data; - struct list_head faults; - struct mutex lock; +union ctlreg15 { + long unsigned int val; + struct { + long unsigned int lsea: 61; + }; }; -struct iommu_fwspec { - const struct iommu_ops *ops; - struct fwnode_handle *iommu_fwnode; - u32 flags; - unsigned int num_ids; - u32 ids[0]; +union thread_union { + struct task_struct task; + long unsigned int stack[2048]; }; -struct irq_class { - int irq; +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; - char *desc; }; -struct ext_int_info { - ext_int_handler_t handler; - struct hlist_node entry; - struct callback_head rcu; - u16 code; +struct memblock { + bool bottom_up; + phys_addr_t current_limit; + struct memblock_type memory; + struct memblock_type reserved; }; -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); +typedef struct { + unsigned char bytes[16]; +} cpacf_mask_t; + +struct sg_table { + struct scatterlist *sgl; + unsigned int nents; + unsigned int orig_nents; }; -struct ipl_report { - struct ipl_parameter_block *ipib; - struct list_head components; - struct list_head certificates; - size_t size; +struct memory_notify { + long unsigned int start_pfn; + long unsigned int nr_pages; + int status_change_nid_normal; + int status_change_nid_high; + int status_change_nid; }; -struct kimage_arch { - void *ipl_buf; +enum lockdown_reason { + LOCKDOWN_NONE = 0, + LOCKDOWN_MODULE_SIGNATURE = 1, + LOCKDOWN_DEV_MEM = 2, + LOCKDOWN_EFI_TEST = 3, + LOCKDOWN_KEXEC = 4, + LOCKDOWN_HIBERNATION = 5, + LOCKDOWN_PCI_ACCESS = 6, + LOCKDOWN_IOPORT = 7, + LOCKDOWN_MSR = 8, + LOCKDOWN_ACPI_TABLES = 9, + LOCKDOWN_PCMCIA_CIS = 10, + LOCKDOWN_TIOCSSERIAL = 11, + LOCKDOWN_MODULE_PARAMETERS = 12, + LOCKDOWN_MMIOTRACE = 13, + LOCKDOWN_DEBUGFS = 14, + LOCKDOWN_XMON_WR = 15, + LOCKDOWN_BPF_WRITE_USER = 16, + 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 ccw_dev_id { + u8 ssid; + u16 devno; }; -typedef int kexec_probe_t(const char *, long unsigned int); +struct ipl_pl_hdr { + __u32 len; + __u8 flags; + __u8 reserved1[2]; + __u8 version; +}; -struct kimage; +struct ipl_pb_hdr { + __u32 len; + __u8 pbt; +} __attribute__((packed)); -typedef void *kexec_load_t(struct kimage *, char *, long unsigned int, char *, long unsigned int, char *, long unsigned int); +struct ipl_pb0_common { + __u32 len; + __u8 pbt; + __u8 flags; + __u8 reserved1[2]; + __u8 loadparm[8]; + __u8 reserved2[84]; +}; -typedef int kexec_cleanup_t(void *); +struct ipl_pb0_fcp { + __u32 len; + __u8 pbt; + __u8 reserved1[3]; + __u8 loadparm[8]; + __u8 reserved2[304]; + __u8 opt; + __u8 reserved3[3]; + __u8 cssid; + __u8 reserved4[1]; + __u16 devno; + __u8 reserved5[4]; + __u64 wwpn; + __u64 lun; + __u32 bootprog; + __u8 reserved6[12]; + __u64 br_lba; + __u32 scp_data_len; + __u8 reserved7[260]; + __u8 scp_data[0]; +} __attribute__((packed)); -typedef int kexec_verify_sig_t(const char *, long unsigned int); +struct ipl_pb0_nvme { + __u32 len; + __u8 pbt; + __u8 reserved1[3]; + __u8 loadparm[8]; + __u8 reserved2[304]; + __u8 opt; + __u8 reserved3[3]; + __u32 fid; + __u8 reserved4[12]; + __u32 nsid; + __u8 reserved5[4]; + __u32 bootprog; + __u8 reserved6[12]; + __u64 br_lba; + __u32 scp_data_len; + __u8 reserved7[260]; + __u8 scp_data[0]; +} __attribute__((packed)); -struct kexec_file_ops { - kexec_probe_t *probe; - kexec_load_t *load; - kexec_cleanup_t *cleanup; - kexec_verify_sig_t *verify_sig; +struct ipl_pb0_ccw { + __u32 len; + __u8 pbt; + __u8 flags; + __u8 reserved1[2]; + __u8 loadparm[8]; + __u8 reserved2[84]; + __u16 reserved3: 13; + __u8 ssid: 3; + __u16 devno; + __u8 vm_flags; + __u8 reserved4[3]; + __u32 vm_parm_len; + __u8 nss_name[8]; + __u8 vm_parm[64]; + __u8 reserved5[8]; }; -typedef long unsigned int kimage_entry_t; +struct ipl_rb_component_entry { + __u64 addr; + __u64 len; + __u8 flags; + __u8 reserved1[5]; + __u16 certificate_index; + __u8 reserved2[8]; +}; -struct kexec_segment { +struct ipl_parameter_block { + struct ipl_pl_hdr hdr; union { - void *buf; - void *kbuf; + struct ipl_pb_hdr pb0_hdr; + struct ipl_pb0_common common; + struct ipl_pb0_fcp fcp; + struct ipl_pb0_ccw ccw; + struct ipl_pb0_nvme nvme; + char raw[4088]; }; - size_t bufsz; - long unsigned int mem; - size_t memsz; }; -struct purgatory_info { - const Elf64_Ehdr *ehdr; - Elf64_Shdr *sechdrs; - void *purgatory_buf; +enum ipl_type { + IPL_TYPE_UNKNOWN = 1, + IPL_TYPE_CCW = 2, + IPL_TYPE_FCP = 4, + IPL_TYPE_FCP_DUMP = 8, + IPL_TYPE_NSS = 16, + IPL_TYPE_NVME = 32, + IPL_TYPE_NVME_DUMP = 64, }; -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 *elf_headers; - long unsigned int elf_headers_sz; - long unsigned int elf_load_addr; +struct ipl_info { + enum ipl_type type; + union { + struct { + struct ccw_dev_id dev_id; + } ccw; + struct { + struct ccw_dev_id dev_id; + u64 wwpn; + u64 lun; + } fcp; + struct { + u32 fid; + u32 nsid; + } nvme; + struct { + char name[9]; + } nss; + } data; }; -struct kexec_buf { - struct kimage *image; - void *buffer; - long unsigned int bufsz; - long unsigned int mem; - long unsigned int memsz; - long unsigned int buf_align; - long unsigned int buf_min; - long unsigned int buf_max; - bool top_down; +union diag318_info { + long unsigned int val; + struct { + long unsigned int cpnc: 8; + long unsigned int cpvc: 56; + }; }; -struct diag210 { - u16 vrdcdvno; - u16 vrdclen; - u8 vrdcvcla; - u8 vrdcvtyp; - u8 vrdcvsta; - u8 vrdcvfla; - u8 vrdcrccl; - u8 vrdccrty; - u8 vrdccrmd; - u8 vrdccrft; +struct sclp_info { + unsigned char has_linemode: 1; + unsigned char has_vt220: 1; + unsigned char has_siif: 1; + unsigned char has_sigpif: 1; + unsigned char has_core_type: 1; + unsigned char has_sprp: 1; + unsigned char has_hvs: 1; + unsigned char has_esca: 1; + unsigned char has_sief2: 1; + unsigned char has_64bscao: 1; + unsigned char has_gpere: 1; + unsigned char has_cmma: 1; + unsigned char has_gsls: 1; + unsigned char has_ib: 1; + unsigned char has_cei: 1; + unsigned char has_pfmfi: 1; + unsigned char has_ibs: 1; + unsigned char has_skey: 1; + unsigned char has_kss: 1; + unsigned char has_gisaf: 1; + unsigned char has_diag318: 1; + unsigned char has_sipl: 1; + unsigned char has_dirq: 1; + unsigned char has_iplcc: 1; + unsigned char has_zpci_lsi: 1; + unsigned char has_aisii: 1; + unsigned char has_aeni: 1; + unsigned char has_aisi: 1; + unsigned int ibc; + unsigned int mtid; + unsigned int mtid_cp; + unsigned int mtid_prev; + long unsigned int rzm; + long unsigned int rnmax; + long unsigned int hamax; + unsigned int max_cores; + long unsigned int hsa_size; + long unsigned int facilities; + unsigned int hmfai; }; -enum diag26c_sc { - DIAG26C_PORT_VNIC = 36, - DIAG26C_MAC_SERVICES = 48, +enum mem_info_source { + MEM_DETECT_NONE = 0, + MEM_DETECT_SCLP_STOR_INFO = 1, + MEM_DETECT_DIAG260 = 2, + MEM_DETECT_SCLP_READ_INFO = 3, + MEM_DETECT_BIN_SEARCH = 4, }; -struct hypfs_diag0c_entry; - -struct diag_ops { - int (*diag210)(struct diag210 *); - int (*diag26c)(void *, void *, enum diag26c_sc); - int (*diag14)(long unsigned int, long unsigned int, long unsigned int); - void (*diag0c)(struct hypfs_diag0c_entry *); - void (*diag308_reset)(); +struct mem_detect_block { + u64 start; + u64 end; }; -enum ipl_pbt { - IPL_PBT_FCP = 0, - IPL_PBT_SCP_DATA = 1, - IPL_PBT_CCW = 2, - IPL_PBT_NVME = 4, +struct mem_detect_info { + u32 count; + u8 info_source; + struct mem_detect_block entries[255]; + struct mem_detect_block *entries_extended; }; -struct ipl_rl_hdr { - __u32 len; - __u8 flags; - __u8 reserved1[2]; - __u8 version; - __u8 reserved2[8]; -}; +typedef struct { + char _[128]; +} addrtype___2; -enum ipl_rbt { - IPL_RBT_CERTIFICATES = 1, - IPL_RBT_COMPONENTS = 2, +struct plist_head { + struct list_head node_list; }; -struct ipl_rb_certificate_entry { - __u64 addr; - __u64 len; +enum pm_qos_type { + PM_QOS_UNITIALIZED = 0, + PM_QOS_MAX = 1, + PM_QOS_MIN = 2, }; -struct ipl_rb_certificates { - __u32 len; - __u8 rbt; - __u8 reserved1[11]; - struct ipl_rb_certificate_entry entries[0]; +struct pm_qos_constraints { + struct plist_head list; + s32 target_value; + s32 default_value; + s32 no_constraint_value; + enum pm_qos_type type; + struct blocking_notifier_head *notifiers; }; -struct ipl_rb_components { - __u32 len; - __u8 rbt; - __u8 reserved1[11]; - struct ipl_rb_component_entry entries[0]; +struct freq_constraints { + struct pm_qos_constraints min_freq; + struct blocking_notifier_head min_freq_notifiers; + struct pm_qos_constraints max_freq; + struct blocking_notifier_head max_freq_notifiers; }; -struct ipl_report_component { +struct pm_qos_flags { struct list_head list; - struct ipl_rb_component_entry entry; + s32 effective_flags; }; -struct ipl_report_certificate { - struct list_head list; - struct ipl_rb_certificate_entry entry; - void *key; -}; +struct dev_pm_qos_request; -enum diag308_subcode { - DIAG308_REL_HSA = 2, - DIAG308_LOAD_CLEAR = 3, - DIAG308_LOAD_NORMAL_DUMP = 4, - DIAG308_SET = 5, - DIAG308_STORE = 6, - DIAG308_LOAD_NORMAL = 7, +struct dev_pm_qos { + struct pm_qos_constraints resume_latency; + struct pm_qos_constraints latency_tolerance; + struct freq_constraints freq; + struct pm_qos_flags flags; + struct dev_pm_qos_request *resume_latency_req; + struct dev_pm_qos_request *latency_tolerance_req; + struct dev_pm_qos_request *flags_req; }; -struct sclp_ipl_info { - int is_valid; - int has_dump; - char loadparm[8]; +struct pm_qos_flags_request { + struct list_head node; + s32 flags; }; -struct shutdown_action; +enum freq_qos_req_type { + FREQ_QOS_MIN = 1, + FREQ_QOS_MAX = 2, +}; -struct shutdown_trigger { - char *name; - struct shutdown_action *action; +struct freq_qos_request { + enum freq_qos_req_type type; + struct plist_node pnode; + struct freq_constraints *qos; }; -struct shutdown_action { - char *name; - void (*fn)(struct shutdown_trigger *); - int (*init)(); - int init_rc; +enum dev_pm_qos_req_type { + DEV_PM_QOS_RESUME_LATENCY = 1, + DEV_PM_QOS_LATENCY_TOLERANCE = 2, + DEV_PM_QOS_MIN_FREQUENCY = 3, + DEV_PM_QOS_MAX_FREQUENCY = 4, + DEV_PM_QOS_FLAGS = 5, }; -enum dump_type { - DUMP_TYPE_NONE = 1, - DUMP_TYPE_CCW = 2, - DUMP_TYPE_FCP = 4, - DUMP_TYPE_NVME = 8, +struct dev_pm_qos_request { + enum dev_pm_qos_req_type type; + union { + struct plist_node pnode; + struct pm_qos_flags_request flr; + struct freq_qos_request freq; + } data; + struct device *dev; }; -enum { - INSTR_E = 0, - INSTR_IE_UU = 1, - INSTR_MII_UPP = 2, - INSTR_RIE_R0IU = 3, - INSTR_RIE_R0UU = 4, - INSTR_RIE_RRI0 = 5, - INSTR_RIE_RRP = 6, - INSTR_RIE_RRPU = 7, - INSTR_RIE_RRUUU = 8, - INSTR_RIE_RUI0 = 9, - INSTR_RIE_RUPI = 10, - INSTR_RIE_RUPU = 11, - INSTR_RIL_RI = 12, - INSTR_RIL_RP = 13, - INSTR_RIL_RU = 14, - INSTR_RIL_UP = 15, - INSTR_RIS_RURDI = 16, - INSTR_RIS_RURDU = 17, - INSTR_RI_RI = 18, - INSTR_RI_RP = 19, - INSTR_RI_RU = 20, - INSTR_RI_UP = 21, - INSTR_RRE_00 = 22, - INSTR_RRE_AA = 23, - INSTR_RRE_AR = 24, - INSTR_RRE_F0 = 25, - INSTR_RRE_FF = 26, - INSTR_RRE_FR = 27, - INSTR_RRE_R0 = 28, - INSTR_RRE_RA = 29, - INSTR_RRE_RF = 30, - INSTR_RRE_RR = 31, - INSTR_RRF_0UFF = 32, - INSTR_RRF_0URF = 33, - INSTR_RRF_F0FF = 34, - INSTR_RRF_F0FF2 = 35, - INSTR_RRF_F0FR = 36, - INSTR_RRF_FFRU = 37, - INSTR_RRF_FUFF = 38, - INSTR_RRF_FUFF2 = 39, - INSTR_RRF_R0RR = 40, - INSTR_RRF_R0RR2 = 41, - INSTR_RRF_RURR = 42, - INSTR_RRF_RURR2 = 43, - INSTR_RRF_U0FF = 44, - INSTR_RRF_U0RF = 45, - INSTR_RRF_U0RR = 46, - INSTR_RRF_URR = 47, - INSTR_RRF_UUFF = 48, - INSTR_RRF_UUFR = 49, - INSTR_RRF_UURF = 50, - INSTR_RRS_RRRDU = 51, - INSTR_RR_FF = 52, - INSTR_RR_R0 = 53, - INSTR_RR_RR = 54, - INSTR_RR_U0 = 55, - INSTR_RR_UR = 56, - INSTR_RSI_RRP = 57, - INSTR_RSL_LRDFU = 58, - INSTR_RSL_R0RD = 59, - INSTR_RSY_AARD = 60, - INSTR_RSY_CCRD = 61, - INSTR_RSY_RDRU = 62, - INSTR_RSY_RRRD = 63, - INSTR_RSY_RURD = 64, - INSTR_RSY_RURD2 = 65, - INSTR_RS_AARD = 66, - INSTR_RS_CCRD = 67, - INSTR_RS_R0RD = 68, - INSTR_RS_RRRD = 69, - INSTR_RS_RURD = 70, - INSTR_RXE_FRRD = 71, - INSTR_RXE_RRRDU = 72, - INSTR_RXF_FRRDF = 73, - INSTR_RXY_FRRD = 74, - INSTR_RXY_RRRD = 75, - INSTR_RXY_URRD = 76, - INSTR_RX_FRRD = 77, - INSTR_RX_RRRD = 78, - INSTR_RX_URRD = 79, - INSTR_SIL_RDI = 80, - INSTR_SIL_RDU = 81, - INSTR_SIY_IRD = 82, - INSTR_SIY_RD = 83, - INSTR_SIY_URD = 84, - INSTR_SI_RD = 85, - INSTR_SI_URD = 86, - INSTR_SMI_U0RDP = 87, - INSTR_SSE_RDRD = 88, - INSTR_SSF_RRDRD = 89, - INSTR_SSF_RRDRD2 = 90, - INSTR_SS_L0RDRD = 91, - INSTR_SS_L2RDRD = 92, - INSTR_SS_LIRDRD = 93, - INSTR_SS_LLRDRD = 94, - INSTR_SS_RRRDRD = 95, - INSTR_SS_RRRDRD2 = 96, - INSTR_SS_RRRDRD3 = 97, - INSTR_S_00 = 98, - INSTR_S_RD = 99, - INSTR_VRI_V0IU = 100, - INSTR_VRI_V0U = 101, - INSTR_VRI_V0UU2 = 102, - INSTR_VRI_V0UUU = 103, - INSTR_VRI_VR0UU = 104, - INSTR_VRI_VVUU = 105, - INSTR_VRI_VVUUU = 106, - INSTR_VRI_VVUUU2 = 107, - INSTR_VRI_VVV0U = 108, - INSTR_VRI_VVV0UU = 109, - INSTR_VRI_VVV0UU2 = 110, - INSTR_VRR_0V = 111, - INSTR_VRR_0VV0U = 112, - INSTR_VRR_RV0UU = 113, - INSTR_VRR_VRR = 114, - INSTR_VRR_VV = 115, - INSTR_VRR_VV0U = 116, - INSTR_VRR_VV0U0U = 117, - INSTR_VRR_VV0U2 = 118, - INSTR_VRR_VV0UU2 = 119, - INSTR_VRR_VV0UUU = 120, - INSTR_VRR_VVV = 121, - INSTR_VRR_VVV0U = 122, - INSTR_VRR_VVV0U0 = 123, - INSTR_VRR_VVV0U0U = 124, - INSTR_VRR_VVV0UU = 125, - INSTR_VRR_VVV0UUU = 126, - INSTR_VRR_VVV0V = 127, - INSTR_VRR_VVVU0UV = 128, - INSTR_VRR_VVVU0V = 129, - INSTR_VRR_VVVUU0V = 130, - INSTR_VRS_RRDV = 131, - INSTR_VRS_RVRDU = 132, - INSTR_VRS_VRRD = 133, - INSTR_VRS_VRRDU = 134, - INSTR_VRS_VVRDU = 135, - INSTR_VRV_VVXRDU = 136, - INSTR_VRX_VRRDU = 137, - INSTR_VRX_VV = 138, - INSTR_VSI_URDV = 139, +enum stcctm_ctr_set { + EXTENDED = 0, + BASIC = 1, + PROBLEM_STATE = 2, + CRYPTO_ACTIVITY = 3, + MT_DIAG = 5, + MT_DIAG_CLEARING = 9, }; -enum { - LONG_INSN_ALGHSIK = 0, - LONG_INSN_ALHHHR = 1, - LONG_INSN_ALHHLR = 2, - LONG_INSN_ALHSIK = 3, - LONG_INSN_ALSIHN = 4, - LONG_INSN_CDFBRA = 5, - LONG_INSN_CDGBRA = 6, - LONG_INSN_CDGTRA = 7, - LONG_INSN_CDLFBR = 8, - LONG_INSN_CDLFTR = 9, - LONG_INSN_CDLGBR = 10, - LONG_INSN_CDLGTR = 11, - LONG_INSN_CEFBRA = 12, - LONG_INSN_CEGBRA = 13, - LONG_INSN_CELFBR = 14, - LONG_INSN_CELGBR = 15, - LONG_INSN_CFDBRA = 16, - LONG_INSN_CFEBRA = 17, - LONG_INSN_CFXBRA = 18, - LONG_INSN_CGDBRA = 19, - LONG_INSN_CGDTRA = 20, - LONG_INSN_CGEBRA = 21, - LONG_INSN_CGXBRA = 22, - LONG_INSN_CGXTRA = 23, - LONG_INSN_CLFDBR = 24, - LONG_INSN_CLFDTR = 25, - LONG_INSN_CLFEBR = 26, - LONG_INSN_CLFHSI = 27, - LONG_INSN_CLFXBR = 28, - LONG_INSN_CLFXTR = 29, - LONG_INSN_CLGDBR = 30, - LONG_INSN_CLGDTR = 31, - LONG_INSN_CLGEBR = 32, - LONG_INSN_CLGFRL = 33, - LONG_INSN_CLGHRL = 34, - LONG_INSN_CLGHSI = 35, - LONG_INSN_CLGXBR = 36, - LONG_INSN_CLGXTR = 37, - LONG_INSN_CLHHSI = 38, - LONG_INSN_CXFBRA = 39, - LONG_INSN_CXGBRA = 40, - LONG_INSN_CXGTRA = 41, - LONG_INSN_CXLFBR = 42, - LONG_INSN_CXLFTR = 43, - LONG_INSN_CXLGBR = 44, - LONG_INSN_CXLGTR = 45, - LONG_INSN_DFLTCC = 46, - LONG_INSN_FIDBRA = 47, - LONG_INSN_FIEBRA = 48, - LONG_INSN_FIXBRA = 49, - LONG_INSN_ILLEGAL = 50, - LONG_INSN_LDXBRA = 51, - LONG_INSN_LEDBRA = 52, - LONG_INSN_LEXBRA = 53, - LONG_INSN_LLGFAT = 54, - LONG_INSN_LLGFRL = 55, - LONG_INSN_LLGFSG = 56, - LONG_INSN_LLGHRL = 57, - LONG_INSN_LLGTAT = 58, - LONG_INSN_LLZRGF = 59, - LONG_INSN_LOCFHR = 60, - LONG_INSN_LOCGHI = 61, - LONG_INSN_LOCHHI = 62, - LONG_INSN_LPSWEY = 63, - LONG_INSN_MPCIFC = 64, - LONG_INSN_MSGRKC = 65, - LONG_INSN_PCILGI = 66, - LONG_INSN_PCISTB = 67, - LONG_INSN_PCISTBI = 68, - LONG_INSN_PCISTG = 69, - LONG_INSN_PCISTGI = 70, - LONG_INSN_POPCNT = 71, - LONG_INSN_RIEMIT = 72, - LONG_INSN_RINEXT = 73, - LONG_INSN_RISBGN = 74, - LONG_INSN_RISBHG = 75, - LONG_INSN_RISBLG = 76, - LONG_INSN_SELFHR = 77, - LONG_INSN_SLHHHR = 78, - LONG_INSN_SLHHLR = 79, - LONG_INSN_STBEAR = 80, - LONG_INSN_STCCTM = 81, - LONG_INSN_STOCFH = 82, - LONG_INSN_STPCIFC = 83, - LONG_INSN_TABORT = 84, - LONG_INSN_TBEGIN = 85, - LONG_INSN_TBEGINC = 86, - LONG_INSN_VBPERM = 87, - LONG_INSN_VCLFNH = 88, - LONG_INSN_VCLFNL = 89, - LONG_INSN_VCLZDP = 90, - LONG_INSN_VERLLV = 91, - LONG_INSN_VESRAV = 92, - LONG_INSN_VESRLV = 93, - LONG_INSN_VLBRREP = 94, - LONG_INSN_VLEBRF = 95, - LONG_INSN_VLEBRG = 96, - LONG_INSN_VLEBRH = 97, - LONG_INSN_VLLEBRZ = 98, - LONG_INSN_VPOPCT = 99, - LONG_INSN_VSBCBI = 100, - LONG_INSN_VSCSHP = 101, - LONG_INSN_VSTEBRF = 102, - LONG_INSN_VSTEBRG = 103, - LONG_INSN_VSTEBRH = 104, - LONG_INSN_VSTRLR = 105, - LONG_INSN_VUPKZH = 106, - LONG_INSN_VUPKZL = 107, +struct s390_idle_data { + seqcount_t seqcount; + long unsigned int idle_count; + long unsigned int idle_time; + long unsigned int clock_idle_enter; + long unsigned int clock_idle_exit; + long unsigned int timer_idle_enter; + long unsigned int timer_idle_exit; + long unsigned int mt_cycles_enter[8]; }; -struct s390_operand { - unsigned char bits; - unsigned char shift; - short unsigned int flags; +typedef u64 pcp_op_T__; + +struct vtimer_list { + struct list_head entry; + u64 expires; + u64 interval; + void (*function)(long unsigned int); + long unsigned int data; }; -struct s390_insn { - union { - const char name[5]; - struct { - unsigned char zero; - unsigned int offset; - } __attribute__((packed)); - }; - unsigned char opfrag; - unsigned char format; -} __attribute__((packed)); +struct cpuid { + unsigned int version: 8; + unsigned int ident: 24; + unsigned int machine: 16; + unsigned int unused: 16; +}; -struct s390_opcode_offset { - unsigned char opcode; - unsigned char mask; - unsigned char byte; - short unsigned int offset; - short unsigned int count; -} __attribute__((packed)); +typedef bool (*smp_cond_func_t)(int, void *); -enum { - UNUSED = 0, - A_8 = 1, - A_12 = 2, - A_24 = 3, - A_28 = 4, - B_16 = 5, - B_32 = 6, - C_8 = 7, - C_12 = 8, - D20_20 = 9, - D_20 = 10, - D_36 = 11, - F_8 = 12, - F_12 = 13, - F_16 = 14, - F_24 = 15, - F_28 = 16, - F_32 = 17, - I8_8 = 18, - I8_32 = 19, - I16_16 = 20, - I16_32 = 21, - I32_16 = 22, - J12_12 = 23, - J16_16 = 24, - J16_32 = 25, - J24_24 = 26, - J32_16 = 27, - L4_8 = 28, - L4_12 = 29, - L8_8 = 30, - R_8 = 31, - R_12 = 32, - R_16 = 33, - R_24 = 34, - R_28 = 35, - U4_8 = 36, - U4_12 = 37, - U4_16 = 38, - U4_20 = 39, - U4_24 = 40, - U4_28 = 41, - U4_32 = 42, - U4_36 = 43, - U8_8 = 44, - U8_16 = 45, - U8_24 = 46, - U8_28 = 47, - U8_32 = 48, - U12_16 = 49, - U16_16 = 50, - U16_32 = 51, - U32_16 = 52, - VX_12 = 53, - V_8 = 54, - V_12 = 55, - V_16 = 56, - V_32 = 57, - X_12 = 58, +struct cpu_topology_s390 { + short unsigned int thread_id; + short unsigned int core_id; + short unsigned int socket_id; + short unsigned int book_id; + short unsigned int drawer_id; + short unsigned int dedicated: 1; + int booted_cores; + cpumask_t thread_mask; + cpumask_t core_mask; + cpumask_t book_mask; + cpumask_t drawer_mask; }; -enum vm_fault_reason { - VM_FAULT_OOM = 1, - VM_FAULT_SIGBUS = 2, - VM_FAULT_MAJOR = 4, - VM_FAULT_WRITE = 8, - VM_FAULT_HWPOISON = 16, - VM_FAULT_HWPOISON_LARGE = 32, - VM_FAULT_SIGSEGV = 64, - VM_FAULT_NOPAGE = 256, - VM_FAULT_LOCKED = 512, - VM_FAULT_RETRY = 1024, - VM_FAULT_FALLBACK = 2048, - VM_FAULT_DONE_COW = 4096, - VM_FAULT_NEEDDSYNC = 8192, - VM_FAULT_HINDEX_MASK = 983040, +enum { + HWCAP_NR_ESAN3 = 0, + HWCAP_NR_ZARCH = 1, + HWCAP_NR_STFLE = 2, + HWCAP_NR_MSA = 3, + HWCAP_NR_LDISP = 4, + HWCAP_NR_EIMM = 5, + HWCAP_NR_DFP = 6, + HWCAP_NR_HPAGE = 7, + HWCAP_NR_ETF3EH = 8, + HWCAP_NR_HIGH_GPRS = 9, + HWCAP_NR_TE = 10, + HWCAP_NR_VXRS = 11, + HWCAP_NR_VXRS_BCD = 12, + HWCAP_NR_VXRS_EXT = 13, + HWCAP_NR_GS = 14, + HWCAP_NR_VXRS_EXT2 = 15, + HWCAP_NR_VXRS_PDE = 16, + HWCAP_NR_SORT = 17, + HWCAP_NR_DFLT = 18, + HWCAP_NR_VXRS_PDE2 = 19, + HWCAP_NR_NNPA = 20, + HWCAP_NR_PCI_MIO = 21, + HWCAP_NR_SIE = 22, + HWCAP_NR_MAX = 23, }; -struct vm_special_mapping { - const char *name; - struct page **pages; - vm_fault_t (*fault)(const struct vm_special_mapping *, struct vm_area_struct *, struct vm_fault *); - int (*mremap)(const struct vm_special_mapping *, struct vm_area_struct *); +struct cpu_info { + unsigned int cpu_mhz_dynamic; + unsigned int cpu_mhz_static; + struct cpuid cpu_id; }; -struct timens_offsets { - struct timespec64 monotonic; - struct timespec64 boottime; -}; +typedef unsigned int uint; -struct time_namespace { - struct user_namespace *user_ns; - struct ucounts *ucounts; - struct ns_common ns; - struct timens_offsets offsets; - struct page *vvar_page; - bool frozen_offsets; +enum { + PER_LINUX = 0, + PER_LINUX_32BIT = 8388608, + PER_LINUX_FDPIC = 524288, + PER_SVR4 = 68157441, + PER_SVR3 = 83886082, + PER_SCOSVR3 = 117440515, + PER_OSR5 = 100663299, + PER_WYSEV386 = 83886084, + PER_ISCR4 = 67108869, + PER_BSD = 6, + PER_SUNOS = 67108870, + PER_XENIX = 83886087, + PER_LINUX32 = 8, + PER_LINUX32_3GB = 134217736, + PER_IRIX32 = 67108873, + PER_IRIXN32 = 67108874, + PER_IRIX64 = 67108875, + PER_RISCOS = 12, + PER_SOLARIS = 67108877, + PER_UW7 = 68157454, + PER_OSF4 = 15, + PER_HPUX = 16, + PER_MASK = 255, }; -enum vvar_pages { - VVAR_DATA_PAGE_OFFSET = 0, - VVAR_TIMENS_PAGE_OFFSET = 1, - VVAR_NR_PAGES = 2, +enum { + EI_ETYPE_NONE = 0, + EI_ETYPE_NULL = 1, + EI_ETYPE_ERRNO = 2, + EI_ETYPE_ERRNO_NULL = 3, + EI_ETYPE_TRUE = 4, }; -struct diag_stat { - unsigned int counter[21]; +struct syscall_metadata { + const char *name; + int syscall_nr; + int nb_args; + const char **types; + const char **args; + struct list_head enter_fields; + struct trace_event_call *enter_event; + struct trace_event_call *exit_event; }; -struct diag_desc { - int code; - char *name; +struct s390_mmap_arg_struct { + long unsigned int addr; + long unsigned int len; + long unsigned int prot; + long unsigned int flags; + long unsigned int fd; + long unsigned int offset; }; -typedef unsigned int pcp_op_T_____2; +typedef long unsigned int addr_t; -struct kernel_fpu { - u32 mask; - u32 fpc; - union { - freg_t fprs[16]; - __vector128 vxrs[32]; - }; -}; +typedef struct { + __u32 fpc; + __u32 pad; + freg_t fprs[16]; +} s390_fp_regs; -struct sysinfo_1_2_2 { - char format; - char reserved_0[1]; - short unsigned int acc_offset; - unsigned char mt_installed: 1; - char: 2; - unsigned char mt_stid: 5; +typedef struct { + long unsigned int cr[3]; +} per_cr_words; + +typedef struct { + int: 32; + unsigned int em_branching: 1; + unsigned int em_instruction_fetch: 1; + unsigned int em_storage_alteration: 1; + unsigned int em_gpr_alt_unused: 1; + unsigned int em_store_real_address: 1; char: 3; - unsigned char mt_gtid: 5; - char reserved_1[18]; - unsigned int nominal_cap; - unsigned int secondary_cap; - unsigned int capability; - short unsigned int cpus_total; - short unsigned int cpus_configured; - short unsigned int cpus_standby; - short unsigned int cpus_reserved; - short unsigned int adjustment[0]; -}; + unsigned int branch_addr_ctl: 1; + char: 1; + unsigned int storage_alt_space_ctl: 1; + long unsigned int starting_addr; + long unsigned int ending_addr; +} per_cr_bits; -struct sysinfo_1_2_2_extension { - unsigned int alt_capability; - short unsigned int alt_adjustment[0]; -}; +typedef struct { + short unsigned int perc_atmid; + long unsigned int address; + unsigned char access_id; +} per_lowcore_words; -struct sysinfo_2_2_2 { - char reserved_0[32]; - short unsigned int lpar_number; - char reserved_1; - unsigned char characteristics; - short unsigned int cpus_total; - short unsigned int cpus_configured; - short unsigned int cpus_standby; - short unsigned int cpus_reserved; - char name[8]; - unsigned int caf; - char reserved_2[8]; - unsigned char mt_installed: 1; - char: 2; - unsigned char mt_stid: 5; - char: 3; - unsigned char mt_gtid: 5; +typedef struct { + unsigned int perc_branching: 1; + unsigned int perc_instruction_fetch: 1; + unsigned int perc_storage_alteration: 1; + unsigned int perc_gpr_alt_unused: 1; + unsigned int perc_store_real_address: 1; char: 3; - unsigned char mt_psmtid: 5; - char reserved_3[5]; - short unsigned int cpus_dedicated; - short unsigned int cpus_shared; - char reserved_4[3]; - unsigned char vsne; - uuid_t uuid; - char reserved_5[160]; - char ext_name[256]; -}; + unsigned int atmid_psw_bit_31: 1; + unsigned int atmid_validity_bit: 1; + unsigned int atmid_psw_bit_32: 1; + unsigned int atmid_psw_bit_5: 1; + unsigned int atmid_psw_bit_16: 1; + unsigned int atmid_psw_bit_17: 1; + unsigned int si: 2; + long unsigned int address; + char: 4; + unsigned int access_id: 4; +} per_lowcore_bits; -struct topology_core { - unsigned char nl; - unsigned char reserved0[3]; - char: 5; - unsigned char d: 1; - unsigned char pp: 2; - unsigned char reserved1; - short unsigned int origin; - long unsigned int mask; -}; +typedef struct { + union { + per_cr_words words; + per_cr_bits bits; + } control_regs; + unsigned int single_step: 1; + unsigned int instruction_fetch: 1; + long unsigned int starting_addr; + long unsigned int ending_addr; + union { + per_lowcore_words words; + per_lowcore_bits bits; + } lowcore; +} per_struct; -struct topology_container { - unsigned char nl; - unsigned char reserved[6]; - unsigned char id; -}; +typedef struct { + unsigned int len; + long unsigned int kernel_addr; + long unsigned int process_addr; +} ptrace_area; -union topology_entry { - unsigned char nl; - struct topology_core cpu; - struct topology_container container; +struct user_regs_struct { + psw_t psw; + long unsigned int gprs[16]; + unsigned int acrs[16]; + long unsigned int orig_gpr2; + s390_fp_regs fp_regs; + per_struct per_info; + long unsigned int ieee_instruction_pointer; }; -struct sysinfo_15_1_x { - unsigned char reserved0[2]; - short unsigned int length; - unsigned char mag[6]; - unsigned char reserved1; - unsigned char mnest; - unsigned char reserved2[4]; - union topology_entry tle[0]; +struct per_struct_kernel { + long unsigned int cr9; + long unsigned int cr10; + long unsigned int cr11; + long unsigned int bits; + long unsigned int starting_addr; + long unsigned int ending_addr; + short unsigned int perc_atmid; + long unsigned int address; + unsigned char access_id; }; -struct service_level { - struct list_head list; - void (*seq_print)(struct seq_file *, struct service_level *); -}; +typedef struct { + unsigned int fpc; + unsigned int pad; + double fprs[16]; +} _s390_fp_regs; -struct stsi_file { - const struct file_operations *fops; - char *name; +union ctlreg0 { + long unsigned int val; + struct { + char: 8; + long unsigned int tcx: 1; + long unsigned int pifo: 1; + int: 22; + char: 3; + long unsigned int lap: 1; + char: 4; + long unsigned int edat: 1; + char: 2; + long unsigned int iep: 1; + char: 1; + long unsigned int afp: 1; + long unsigned int vx: 1; + short: 1; + char: 6; + long unsigned int sssm: 1; + }; }; -struct lgr_info { - u64 stfle_fac_list[4]; - u32 level; - char manufacturer[16]; - char type[4]; - char sequence[16]; - char plant[4]; - char model[16]; - u16 lpar_number; - char name[8]; - u8 vm_count; - struct { - char name[8]; - char cpi[16]; - } vm[2]; +struct user { + struct user_regs_struct regs; + long unsigned int u_tsize; + long unsigned int u_dsize; + long unsigned int u_ssize; + long unsigned int start_code; + long unsigned int start_stack; + long int signal; + long unsigned int u_ar0; + long unsigned int magic; + char u_comm[32]; }; -struct os_info_entry { - u64 addr; - u64 size; - u32 csum; -} __attribute__((packed)); +typedef u32 compat_ulong_t; -struct os_info { - u64 magic; - u32 csum; - u16 version_major; - u16 version_minor; - u64 crashkernel_addr; - u64 crashkernel_size; - struct os_info_entry entry[2]; - u8 reserved[4024]; -}; +typedef struct { + u32 mask; + u32 addr; +} psw_compat_t; -enum pageflags { - PG_locked = 0, - PG_referenced = 1, - PG_uptodate = 2, - PG_dirty = 3, - PG_lru = 4, - PG_active = 5, - PG_workingset = 6, - PG_waiters = 7, - PG_error = 8, - PG_slab = 9, - PG_owner_priv_1 = 10, - PG_arch_1 = 11, - PG_reserved = 12, - PG_private = 13, - PG_private_2 = 14, - PG_writeback = 15, - PG_head = 16, - PG_mappedtodisk = 17, - PG_reclaim = 18, - PG_swapbacked = 19, - PG_unevictable = 20, - PG_mlocked = 21, - PG_young = 22, - PG_idle = 23, - PG_arch_2 = 24, - __NR_PAGEFLAGS = 25, - PG_readahead = 18, - PG_checked = 10, - PG_swapcache = 10, - PG_fscache = 14, - PG_pinned = 10, - PG_savepinned = 3, - PG_foreign = 10, - PG_xen_remapped = 10, - PG_slob_free = 13, - PG_double_map = 6, - PG_isolated = 18, - PG_reported = 2, +struct membuf { + void *p; + size_t left; }; -typedef void (*relocate_kernel_t)(kimage_entry_t *, long unsigned int); +struct user_regset; -enum cache_type { - CACHE_TYPE_NOCACHE = 0, - CACHE_TYPE_INST = 1, - CACHE_TYPE_DATA = 2, - CACHE_TYPE_SEPARATE = 3, - CACHE_TYPE_UNIFIED = 4, -}; +typedef int user_regset_active_fn(struct task_struct *, const struct user_regset *); -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; +typedef int user_regset_get2_fn(struct task_struct *, const struct user_regset *, struct membuf); + +typedef int user_regset_set_fn(struct task_struct *, const struct user_regset *, unsigned int, unsigned int, const void *, const void *); + +typedef int user_regset_writeback_fn(struct task_struct *, const struct user_regset *, int); + +struct user_regset { + user_regset_get2_fn *regset_get; + user_regset_set_fn *set; + user_regset_active_fn *active; + user_regset_writeback_fn *writeback; + unsigned int n; unsigned int size; - cpumask_t shared_cpu_map; - unsigned int attributes; - void *fw_token; - bool disable_sysfs; - void *priv; + unsigned int align; + unsigned int bias; + unsigned int core_note_type; }; -struct cpu_cacheinfo { - struct cacheinfo *info_list; - unsigned int num_levels; - unsigned int num_leaves; - bool cpu_map_populated; +struct user_regset_view { + const char *name; + const struct user_regset *regsets; + unsigned int n; + u32 e_flags; + u16 e_machine; + u8 ei_osabi; }; -enum { - CACHE_SCOPE_NOTEXISTS = 0, - CACHE_SCOPE_PRIVATE = 1, - CACHE_SCOPE_SHARED = 2, - CACHE_SCOPE_RESERVED = 3, +struct compat_per_struct_kernel { + __u32 cr9; + __u32 cr10; + __u32 cr11; + __u32 bits; + __u32 starting_addr; + __u32 ending_addr; + __u16 perc_atmid; + __u32 address; + __u8 access_id; }; -enum { - CTYPE_SEPARATE = 0, - CTYPE_DATA = 1, - CTYPE_INSTRUCTION = 2, - CTYPE_UNIFIED = 3, +struct compat_user_regs_struct { + psw_compat_t psw; + u32 gprs[16]; + u32 acrs[16]; + u32 orig_gpr2; + s390_fp_regs fp_regs; + struct compat_per_struct_kernel per_info; + u32 ieee_instruction_pointer; +}; + +struct compat_user { + struct compat_user_regs_struct regs; + u32 u_tsize; + u32 u_dsize; + u32 u_ssize; + u32 start_code; + u32 start_stack; + s32 signal; + u32 u_ar0; + u32 magic; + char u_comm[32]; }; -enum { - EXTRACT_TOPOLOGY = 0, - EXTRACT_LINE_SIZE = 1, - EXTRACT_SIZE = 2, - EXTRACT_ASSOCIATIVITY = 3, -}; +typedef struct { + __u32 len; + __u32 kernel_addr; + __u32 process_addr; +} compat_ptrace_area; -enum { - CACHE_TI_UNIFIED = 0, - CACHE_TI_DATA = 0, - CACHE_TI_INSTRUCTION = 1, -}; +typedef struct { + char _[24]; +} addrtype___3; -struct cache_info { - char: 4; - unsigned char scope: 2; - unsigned char type: 2; -}; +typedef struct { + long unsigned int mask; + long unsigned int addr; +} _psw_t; -union cache_topology { - struct cache_info ci[8]; - long long unsigned int raw; -}; +typedef struct { + _psw_t psw; + long unsigned int gprs[16]; + unsigned int acrs[16]; +} _s390_regs_common; -enum lockdep_ok { - LOCKDEP_STILL_OK = 0, - LOCKDEP_NOW_UNRELIABLE = 1, -}; +typedef struct { + _s390_regs_common regs; + _s390_fp_regs fpregs; +} _sigregs; -struct psw_bits { - char: 1; - long unsigned int per: 1; - char: 3; - long unsigned int dat: 1; - long unsigned int io: 1; - long unsigned int ext: 1; - long unsigned int key: 4; - char: 1; - long unsigned int mcheck: 1; - long unsigned int wait: 1; - long unsigned int pstate: 1; - long unsigned int as: 2; - long unsigned int cc: 2; - long unsigned int pm: 4; - long unsigned int ri: 1; - char: 6; - long unsigned int eaba: 2; - int: 31; - long unsigned int ia: 64; -}; +typedef struct { + long long unsigned int vxrs_low[16]; + __vector128 vxrs_high[16]; + unsigned char __reserved[128]; +} _sigregs_ext; -enum diag204_sc { - DIAG204_SUBC_STIB4 = 4, - DIAG204_SUBC_RSI = 5, - DIAG204_SUBC_STIB6 = 6, - DIAG204_SUBC_STIB7 = 7, +struct sigcontext { + long unsigned int oldmask[1]; + _sigregs *sregs; }; -enum diag204_format { - DIAG204_INFO_SIMPLE = 0, - DIAG204_INFO_EXT = 65536, +struct sigaltstack { + void *ss_sp; + int ss_flags; + size_t ss_size; }; -enum diag204_cpu_flags { - DIAG204_CPU_ONLINE = 32, - DIAG204_CPU_CAPPED = 64, -}; +typedef struct sigaltstack stack_t; -struct diag204_x_info_blk_hdr { - __u8 npar; - __u8 flags; - __u16 tslice; - __u16 phys_cpus; - __u16 this_part; - __u64 curtod1; - __u64 curtod2; - char reserved[40]; +struct siginfo { + union { + struct { + int si_signo; + int si_errno; + int si_code; + union __sifields _sifields; + }; + int _si_pad[32]; + }; }; -struct diag204_x_part_hdr { - __u8 pn; - __u8 cpus; - __u8 rcpus; - __u8 pflag; - __u32 mlu; - char part_name[8]; - char lpc_name[8]; - char os_name[8]; - __u64 online_cs; - __u64 online_es; - __u8 upid; - __u8 reserved: 3; - __u8 mtid: 5; - char reserved1[2]; - __u32 group_mlu; - char group_name[8]; - char hardware_group_name[8]; - char reserved2[24]; +typedef struct siginfo siginfo_t; + +struct ksignal { + struct k_sigaction ka; + kernel_siginfo_t info; + int sig; }; -struct diag204_x_cpu_info { - __u16 cpu_addr; - char reserved1[2]; - __u8 ctidx; - __u8 cflag; - __u16 weight; - __u64 acc_time; - __u64 lp_time; - __u16 min_weight; - __u16 cur_weight; - __u16 max_weight; - char reseved2[2]; - __u64 online_time; - __u64 wait_time; - __u32 pma_weight; - __u32 polar_weight; - __u32 cpu_type_cap; - __u32 group_cpu_type_cap; - char reserved3[32]; +struct ucontext; + +struct ucontext_extended { + long unsigned int uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + _sigregs uc_mcontext; + sigset_t uc_sigmask; + unsigned char __unused[120]; + _sigregs_ext uc_mcontext_ext; }; -struct diag204_x_phys_hdr { - char reserved1[1]; - __u8 cpus; - char reserved2[6]; - char mgm_name[8]; - char reserved3[80]; +struct ucontext { + long unsigned int uc_flags; + struct ucontext *uc_link; + stack_t uc_stack; + _sigregs uc_mcontext; + sigset_t uc_sigmask; + unsigned char __unused[120]; }; -struct diag204_x_phys_cpu { - __u16 cpu_addr; - char reserved1[2]; - __u8 ctidx; - char reserved2[1]; - __u16 weight; - __u64 mgm_time; - char reserved3[80]; +struct sigframe { + __u8 callee_used_stack[160]; + struct sigcontext sc; + _sigregs sregs; + int signo; + _sigregs_ext sregs_ext; + __u16 svc_insn; }; -struct diag204_x_part_block { - struct diag204_x_part_hdr hdr; - struct diag204_x_cpu_info cpus[0]; +struct rt_sigframe { + __u8 callee_used_stack[160]; + __u16 svc_insn; + struct siginfo info; + struct ucontext_extended uc; }; -struct diag204_x_phys_block { - struct diag204_x_phys_hdr hdr; - struct diag204_x_phys_cpu cpus[0]; +union mci { + long unsigned int val; + struct { + u64 sd: 1; + u64 pd: 1; + u64 sr: 1; + char: 1; + u64 cd: 1; + u64 ed: 1; + char: 1; + u64 dg: 1; + u64 w: 1; + u64 cp: 1; + u64 sp: 1; + u64 ck: 1; + char: 2; + u64 b: 1; + short: 1; + u64 se: 1; + u64 sc: 1; + u64 ke: 1; + u64 ds: 1; + u64 wp: 1; + u64 ms: 1; + u64 pm: 1; + u64 ia: 1; + u64 fa: 1; + u64 vr: 1; + u64 ec: 1; + u64 fp: 1; + u64 gr: 1; + u64 cr: 1; + char: 1; + u64 st: 1; + u64 ie: 1; + u64 ar: 1; + u64 da: 1; + char: 1; + u64 gs: 1; + char: 3; + char: 2; + u64 pr: 1; + u64 fc: 1; + u64 ap: 1; + char: 1; + u64 ct: 1; + u64 cc: 1; + }; }; -enum hdr_flags { - HDR_NOT_LPAR = 16, - HDR_STACK_INCM = 32, - HDR_STSI_UNAV = 64, - HDR_PERF_UNAV = 128, +struct mcesa { + u8 vector_save_area[1024]; + u8 guarded_storage_save_area[32]; }; -enum mac_validity { - MAC_NAME_VLD = 32, - MAC_ID_VLD = 64, - MAC_CNT_VLD = 128, +struct iopf_device_param; + +struct iommu_fault_param; + +struct iommu_fwspec; + +struct dev_iommu { + struct mutex lock; + struct iommu_fault_param *fault_param; + struct iopf_device_param *iopf_param; + struct iommu_fwspec *fwspec; + struct iommu_device *iommu_dev; + void *priv; }; -enum par_flag { - PAR_MT_EN = 128, +enum { + PCI_STD_RESOURCES = 0, + PCI_STD_RESOURCE_END = 5, + PCI_ROM_RESOURCE = 6, + PCI_IOV_RESOURCES = 7, + PCI_IOV_RESOURCE_END = 12, + PCI_BRIDGE_RESOURCES = 13, + PCI_BRIDGE_RESOURCE_END = 16, + PCI_NUM_RESOURCES = 17, + DEVICE_COUNT_RESOURCE = 17, }; -enum par_validity { - PAR_GRP_VLD = 8, - PAR_ID_VLD = 16, - PAR_ABS_VLD = 32, - PAR_WGHT_VLD = 64, - PAR_PCNT_VLD = 128, +typedef unsigned int pci_channel_state_t; + +typedef unsigned int pcie_reset_state_t; + +typedef short unsigned int pci_dev_flags_t; + +typedef short unsigned int pci_bus_flags_t; + +typedef unsigned int pci_ers_result_t; + +struct of_phandle_args { + struct device_node *np; + int args_count; + uint32_t args[16]; }; -struct hdr_sctn { - u8 infhflg1; - u8 infhflg2; - u8 infhval1; - u8 infhval2; - u8 reserved[3]; - u8 infhygct; - u16 infhtotl; - u16 infhdln; - u16 infmoff; - u16 infmlen; - u16 infpoff; - u16 infplen; - u16 infhoff1; - u16 infhlen1; - u16 infgoff1; - u16 infglen1; - u16 infhoff2; - u16 infhlen2; - u16 infgoff2; - u16 infglen2; - u16 infhoff3; - u16 infhlen3; - u16 infgoff3; - u16 infglen3; - u8 reserved2[4]; +struct iommu_fault_unrecoverable { + __u32 reason; + __u32 flags; + __u32 pasid; + __u32 perm; + __u64 addr; + __u64 fetch_addr; }; -struct mac_sctn { - u8 infmflg1; - u8 infmflg2; - u8 infmval1; - u8 infmval2; - u16 infmscps; - u16 infmdcps; - u16 infmsifl; - u16 infmdifl; - char infmname[8]; - char infmtype[4]; - char infmmanu[16]; - char infmseq[16]; - char infmpman[4]; - u8 reserved[4]; +struct iommu_fault_page_request { + __u32 flags; + __u32 pasid; + __u32 grpid; + __u32 perm; + __u64 addr; + __u64 private_data[2]; }; -struct par_sctn { - u8 infpflg1; - u8 infpflg2; - u8 infpval1; - u8 infpval2; - u16 infppnum; - u16 infpscps; - u16 infpdcps; - u16 infpsifl; - u16 infpdifl; - u16 reserved; - char infppnam[8]; - u32 infpwbcp; - u32 infpabcp; - u32 infpwbif; - u32 infpabif; - char infplgnm[8]; - u32 infplgcp; - u32 infplgif; +struct iommu_fault { + __u32 type; + __u32 padding; + union { + struct iommu_fault_unrecoverable event; + struct iommu_fault_page_request prm; + __u8 padding2[56]; + }; }; -struct sthyi_sctns { - struct hdr_sctn hdr; - struct mac_sctn mac; - struct par_sctn par; +struct iommu_page_response { + __u32 argsz; + __u32 version; + __u32 flags; + __u32 pasid; + __u32 grpid; + __u32 code; }; -struct cpu_inf { - u64 lpar_cap; - u64 lpar_grp_cap; - u64 lpar_weight; - u64 all_weight; - int cpu_num_ded; - int cpu_num_shd; +struct iommu_inv_addr_info { + __u32 flags; + __u32 archid; + __u64 pasid; + __u64 addr; + __u64 granule_size; + __u64 nb_granules; }; -struct lpar_cpu_inf { - struct cpu_inf cp; - struct cpu_inf ifl; +struct iommu_inv_pasid_info { + __u32 flags; + __u32 archid; + __u64 pasid; }; -struct sthyi_info { - void *info; - long unsigned int end; +struct iommu_cache_invalidate_info { + __u32 argsz; + __u32 version; + __u8 cache; + __u8 granularity; + __u8 padding[6]; + union { + struct iommu_inv_pasid_info pasid_info; + struct iommu_inv_addr_info addr_info; + } granu; }; -struct alt_instr { - s32 instr_offset; - s32 repl_offset; - u16 facility; - u8 instrlen; - u8 replacementlen; +struct iommu_gpasid_bind_data_vtd { + __u64 flags; + __u32 pat; + __u32 emt; }; -struct brcl_insn { - u16 opc; - s32 disp; -} __attribute__((packed)); +struct iommu_gpasid_bind_data { + __u32 argsz; + __u32 version; + __u32 format; + __u32 addr_width; + __u64 flags; + __u64 gpgd; + __u64 hpasid; + __u64 gpasid; + __u8 padding[8]; + union { + struct iommu_gpasid_bind_data_vtd vtd; + } vendor; +}; -enum { - BRCL_EXPOLINE = 0, - BRASL_EXPOLINE = 1, +typedef int (*iommu_fault_handler_t)(struct iommu_domain *, struct device *, long unsigned int, int, void *); + +struct iommu_domain_geometry { + dma_addr_t aperture_start; + dma_addr_t aperture_end; + bool force_aperture; }; -struct cpu { - int node_id; - int hotpluggable; - struct device dev; +struct iommu_dma_cookie; + +struct iommu_domain { + unsigned int type; + const struct iommu_ops *ops; + long unsigned int pgsize_bitmap; + iommu_fault_handler_t handler; + void *handler_token; + struct iommu_domain_geometry geometry; + struct iommu_dma_cookie *iova_cookie; }; -struct sclp_core_entry { - u8 core_id; - u8 reserved0; - char: 4; - u8 sief2: 1; - u8 skey: 1; - char: 4; - u8 gpere: 1; - u8 siif: 1; - u8 sigpif: 1; - u8 reserved2[3]; - char: 2; - u8 ib: 1; - u8 cei: 1; - u8 reserved3[6]; - u8 type; - u8 reserved1; +typedef int (*iommu_dev_fault_handler_t)(struct iommu_fault *, void *); + +enum iommu_resv_type { + IOMMU_RESV_DIRECT = 0, + IOMMU_RESV_DIRECT_RELAXABLE = 1, + IOMMU_RESV_RESERVED = 2, + IOMMU_RESV_MSI = 3, + IOMMU_RESV_SW_MSI = 4, }; -struct sclp_core_info { - unsigned int configured; - unsigned int standby; - unsigned int combined; - struct sclp_core_entry core[512]; +struct iommu_resv_region { + struct list_head list; + phys_addr_t start; + size_t length; + int prot; + enum iommu_resv_type type; }; -enum { - ec_schedule = 0, - ec_call_function_single = 1, - ec_stop_cpu = 2, - ec_mcck_pending = 3, - ec_irq_work = 4, +struct iommu_iotlb_gather { + long unsigned int start; + long unsigned int end; + size_t pgsize; + struct page *freelist; + bool queued; }; -enum { - CPU_STATE_STANDBY = 0, - CPU_STATE_CONFIGURED = 1, +struct iommu_device { + struct list_head list; + const struct iommu_ops *ops; + struct fwnode_handle *fwnode; + struct device *dev; }; -struct pcpu { - long unsigned int ec_mask; - long unsigned int ec_clk; - signed char state; - signed char polarization; - u16 address; +struct iommu_sva { + struct device *dev; }; -typedef void pcpu_delegate_fn(void *); +struct iommu_fault_event { + struct iommu_fault fault; + struct list_head list; +}; -struct ec_creg_mask_parms { - long unsigned int orval; - long unsigned int andval; - int cr; +struct iommu_fault_param { + iommu_dev_fault_handler_t handler; + void *data; + struct list_head faults; + struct mutex lock; }; -struct save_area; +struct iommu_fwspec { + const struct iommu_ops *ops; + struct fwnode_handle *iommu_fwnode; + u32 flags; + unsigned int num_ids; + u32 ids[0]; +}; -typedef bool (*stack_trace_consume_fn)(void *, long unsigned int); +struct mcck_volatile_info { + __u64 mcic; + __u64 failing_storage_address; + __u32 ext_damage_code; + __u32 reserved; +}; -typedef __s64 Elf64_Sxword; +struct kvm_s390_sie_block { + atomic_t cpuflags; + char: 1; + __u32 prefix: 18; + char: 1; + __u32 ibc: 12; + __u8 reserved08[4]; + __u32 prog0c; + union { + __u8 reserved10[16]; + struct { + __u64 pv_handle_cpu; + __u64 pv_handle_config; + }; + }; + atomic_t prog20; + __u8 reserved24[4]; + __u64 cputm; + __u64 ckc; + __u64 epoch; + __u32 svcc; + __u16 lctl; + __s16 icpua; + __u32 ictl; + __u32 eca; + __u8 icptcode; + __u8 icptstatus; + __u16 ihcpu; + __u8 reserved54; + __u8 iictl; + __u16 ipa; + __u32 ipb; + __u32 scaoh; + __u8 fpf; + __u8 ecb; + __u8 ecb2; + __u8 ecb3; + __u32 scaol; + __u8 sdf; + __u8 epdx; + __u8 cpnc; + __u8 reserved6b; + __u32 todpr; + __u32 gd; + __u8 reserved74[12]; + __u64 mso; + __u64 msl; + psw_t gpsw; + __u64 gg14; + __u64 gg15; + __u8 reservedb0[8]; + __u8 hpid; + __u8 reservedb9[7]; + union { + struct { + __u32 eiparams; + __u16 extcpuaddr; + __u16 eic; + }; + __u64 mcic; + }; + __u32 reservedc8; + union { + struct { + __u16 pgmilc; + __u16 iprcc; + }; + __u32 edc; + }; + union { + struct { + __u32 dxc; + __u16 mcn; + __u8 perc; + __u8 peratmid; + }; + __u64 faddr; + }; + __u64 peraddr; + __u8 eai; + __u8 peraid; + __u8 oai; + __u8 armid; + __u8 reservede4[4]; + union { + __u64 tecmc; + struct { + __u16 subchannel_id; + __u16 subchannel_nr; + __u32 io_int_parm; + __u32 io_int_word; + }; + }; + __u8 reservedf4[8]; + __u32 crycbd; + __u64 gcr[16]; + union { + __u64 gbea; + __u64 sidad; + }; + __u8 reserved188[8]; + __u64 sdnxo; + __u8 reserved198[8]; + __u32 fac; + __u8 reserved1a4[20]; + __u64 cbrlo; + __u8 reserved1c0[8]; + __u32 ecd; + __u8 reserved1cc[18]; + __u64 pp; + __u8 reserved1e6[2]; + __u64 itdba; + __u64 riccbd; + __u64 gvrd; +} __attribute__((packed)); -struct elf64_rela { - Elf64_Addr r_offset; - Elf64_Xword r_info; - Elf64_Sxword r_addend; +struct kvm_s390_itdb { + __u8 data[256]; }; -typedef struct elf64_rela Elf64_Rela; +struct sie_page { + struct kvm_s390_sie_block sie_block; + struct mcck_volatile_info mcck_info; + __u8 reserved218[360]; + __u64 pv_grregs[16]; + __u8 reserved400[512]; + struct kvm_s390_itdb itdb; + __u8 reserved700[2304]; +}; -enum { - SD_BALANCE_NEWIDLE = 1, - SD_BALANCE_EXEC = 2, - SD_BALANCE_FORK = 4, - SD_BALANCE_WAKE = 8, - SD_WAKE_AFFINE = 16, - SD_ASYM_CPUCAPACITY = 32, - SD_ASYM_CPUCAPACITY_FULL = 64, - SD_SHARE_CPUCAPACITY = 128, - SD_SHARE_PKG_RESOURCES = 256, - SD_SERIALIZE = 512, - SD_ASYM_PACKING = 1024, - SD_PREFER_SIBLING = 2048, - SD_OVERLAP = 4096, - SD_NUMA = 8192, +enum 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 sched_domain_shared { - atomic_t ref; - atomic_t nr_busy_cpus; - int has_idle_cores; +struct mcck_struct { + unsigned int kill_task: 1; + unsigned int channel_report: 1; + unsigned int warning: 1; + unsigned int stp_queue: 1; + long unsigned int mcck_code; }; -struct sched_group; +struct __debug_entry { + long unsigned int clock: 60; + long unsigned int exception: 1; + long unsigned int level: 3; + void *caller; + short unsigned int cpu; +} __attribute__((packed)); -struct sched_domain { - struct sched_domain *parent; - struct sched_domain *child; - struct sched_group *groups; - long unsigned int min_interval; - long unsigned int max_interval; - unsigned int busy_factor; - unsigned int imbalance_pct; - unsigned int cache_nice_tries; - unsigned int imb_numa_nr; - int nohz_idle; - int flags; +typedef struct __debug_entry debug_entry_t; + +struct debug_view; + +struct debug_info { + struct debug_info *next; + struct debug_info *prev; + refcount_t ref_count; + spinlock_t lock; int level; - long unsigned int last_balance; - unsigned int balance_interval; - unsigned int nr_balance_failed; - u64 max_newidle_lb_cost; - long unsigned int last_decay_max_lb_cost; - u64 avg_scan_cost; - unsigned int lb_count[3]; - unsigned int lb_failed[3]; - unsigned int lb_balanced[3]; - unsigned int lb_imbalance[3]; - unsigned int lb_gained[3]; - unsigned int lb_hot_gained[3]; - unsigned int lb_nobusyg[3]; - unsigned int lb_nobusyq[3]; - unsigned int alb_count; - unsigned int alb_failed; - unsigned int alb_pushed; - unsigned int sbe_count; - unsigned int sbe_balanced; - unsigned int sbe_pushed; - unsigned int sbf_count; - unsigned int sbf_balanced; - unsigned int sbf_pushed; - unsigned int ttwu_wake_remote; - unsigned int ttwu_move_affine; - unsigned int ttwu_move_balance; - char *name; - union { - void *private; - struct callback_head rcu; - }; - struct sched_domain_shared *shared; - unsigned int span_weight; - long unsigned int span[0]; + int nr_areas; + int pages_per_area; + int buf_size; + int entry_size; + debug_entry_t ***areas; + int active_area; + int *active_pages; + int *active_entries; + struct dentry *debugfs_root_entry; + struct dentry *debugfs_entries[10]; + struct debug_view *views[10]; + char name[64]; + umode_t mode; }; -typedef const struct cpumask * (*sched_domain_mask_f)(int); +typedef struct debug_info debug_info_t; -typedef int (*sched_domain_flags_f)(); +typedef int debug_prolog_proc_t(debug_info_t *, struct debug_view *, char *); -struct sched_group_capacity; +typedef int debug_header_proc_t(debug_info_t *, struct debug_view *, int, debug_entry_t *, char *); -struct sd_data { - struct sched_domain **sd; - struct sched_domain_shared **sds; - struct sched_group **sg; - struct sched_group_capacity **sgc; -}; +typedef int debug_format_proc_t(debug_info_t *, struct debug_view *, char *, const char *); -struct sched_domain_topology_level { - sched_domain_mask_f mask; - sched_domain_flags_f sd_flags; - int flags; - int numa_level; - struct sd_data data; - char *name; +typedef int debug_input_proc_t(debug_info_t *, struct debug_view *, struct file *, const char *, size_t, loff_t *); + +struct debug_view { + char name[64]; + debug_prolog_proc_t *prolog_proc; + debug_header_proc_t *header_proc; + debug_format_proc_t *format_proc; + debug_input_proc_t *input_proc; + void *private_data; }; -enum kobject_action { - KOBJ_ADD = 0, - KOBJ_REMOVE = 1, - KOBJ_CHANGE = 2, - KOBJ_MOVE = 3, - KOBJ_ONLINE = 4, - KOBJ_OFFLINE = 5, - KOBJ_BIND = 6, - KOBJ_UNBIND = 7, -}; - -enum { - TOPOLOGY_MODE_HW = 0, - TOPOLOGY_MODE_SINGLE = 1, - TOPOLOGY_MODE_PACKAGE = 2, - TOPOLOGY_MODE_UNINITIALIZED = 3, -}; - -struct mask_info { - struct mask_info *next; - unsigned char id; - cpumask_t mask; -}; - -enum auditsc_class_t { - AUDITSC_NATIVE = 0, - AUDITSC_COMPAT = 1, - AUDITSC_OPEN = 2, - AUDITSC_OPENAT = 3, - AUDITSC_SOCKETCALL = 4, - AUDITSC_EXECVE = 5, - AUDITSC_OPENAT2 = 6, - AUDITSC_NVALS = 7, +struct file_private_info { + loff_t offset; + int act_area; + int act_page; + int act_entry; + size_t act_entry_offset; + char temp_buf[2048]; + debug_info_t *debug_info_org; + debug_info_t *debug_info_snap; + struct debug_view *view; }; -typedef u32 compat_size_t; - -typedef s32 compat_clock_t; +typedef struct file_private_info file_private_info_t; -typedef s32 compat_pid_t; +typedef struct { + char *string; + long int args[0]; +} debug_sprintf_entry_t; -typedef s32 compat_timer_t; +typedef long unsigned int uintptr_t; -typedef s32 compat_int_t; +typedef void (*rcu_callback_t)(struct callback_head *); -typedef u32 __compat_uid32_t; +enum irqreturn { + IRQ_NONE = 0, + IRQ_HANDLED = 1, + IRQ_WAKE_THREAD = 2, +}; -typedef u32 compat_sigset_word; +typedef enum irqreturn irqreturn_t; -struct compat_sigaltstack { - compat_uptr_t ss_sp; - int ss_flags; - compat_size_t ss_size; +enum irq_subclass { + IRQ_SUBCLASS_MEASUREMENT_ALERT = 5, + IRQ_SUBCLASS_SERVICE_SIGNAL = 9, }; -typedef struct compat_sigaltstack compat_stack_t; - -typedef struct { - compat_sigset_word sig[2]; -} compat_sigset_t; +typedef irqreturn_t (*irq_handler_t)(int, void *); -union compat_sigval { - compat_int_t sival_int; - compat_uptr_t sival_ptr; +struct irqaction { + irq_handler_t handler; + void *dev_id; + void *percpu_dev_id; + struct irqaction *next; + irq_handler_t thread_fn; + struct task_struct *thread; + struct irqaction *secondary; + unsigned int irq; + unsigned int flags; + long unsigned int thread_flags; + long unsigned int thread_mask; + const char *name; + struct proc_dir_entry *dir; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -typedef union compat_sigval compat_sigval_t; - -struct compat_siginfo { - int si_signo; - int si_errno; - int si_code; - union { - int _pad[29]; - struct { - compat_pid_t _pid; - __compat_uid32_t _uid; - } _kill; - struct { - compat_timer_t _tid; - int _overrun; - compat_sigval_t _sigval; - } _timer; - struct { - compat_pid_t _pid; - __compat_uid32_t _uid; - compat_sigval_t _sigval; - } _rt; - struct { - compat_pid_t _pid; - __compat_uid32_t _uid; - int _status; - compat_clock_t _utime; - compat_clock_t _stime; - } _sigchld; - struct { - compat_uptr_t _addr; - union { - int _trapno; - short int _addr_lsb; - struct { - char _dummy_bnd[4]; - compat_uptr_t _lower; - compat_uptr_t _upper; - } _addr_bnd; - struct { - char _dummy_pkey[4]; - u32 _pkey; - } _addr_pkey; - struct { - compat_ulong_t _data; - u32 _type; - u32 _flags; - } _perf; - }; - } _sigfault; - struct { - compat_long_t _band; - int _fd; - } _sigpoll; - struct { - compat_uptr_t _call_addr; - int _syscall; - unsigned int _arch; - } _sigsys; - } _sifields; +struct irq_affinity_notify { + unsigned int irq; + struct kref kref; + struct work_struct work; + void (*notify)(struct irq_affinity_notify *, const cpumask_t *); + void (*release)(struct kref *); }; -typedef struct compat_siginfo compat_siginfo_t; +struct irq_affinity_desc { + struct cpumask mask; + unsigned int is_managed: 1; +}; -typedef union { - __u64 d; - __u32 f; -} freg_t32; +enum irqchip_irq_state { + IRQCHIP_STATE_PENDING = 0, + IRQCHIP_STATE_ACTIVE = 1, + IRQCHIP_STATE_MASKED = 2, + IRQCHIP_STATE_LINE_LEVEL = 3, +}; -typedef struct { - unsigned int fpc; - unsigned int pad; - freg_t32 fprs[16]; -} _s390_fp_regs32; +struct irq_desc; -typedef struct { - __u32 mask; - __u32 addr; -} _psw_t32; +typedef void (*irq_flow_handler_t)(struct irq_desc *); -typedef struct { - _psw_t32 psw; - __u32 gprs[16]; - __u32 acrs[16]; -} _s390_regs_common32; +struct msi_desc; -typedef struct { - _s390_regs_common32 regs; - _s390_fp_regs32 fpregs; -} _sigregs32; +struct irq_common_data { + unsigned int state_use_accessors; + unsigned int node; + void *handler_data; + struct msi_desc *msi_desc; + cpumask_var_t affinity; +}; -typedef struct { - __u32 gprs_high[16]; - __u64 vxrs_low[16]; - __vector128 vxrs_high[16]; - __u8 __reserved[128]; -} _sigregs_ext32; +struct irq_chip; -struct sigcontext32 { - __u32 oldmask[2]; - __u32 sregs; +struct irq_data { + u32 mask; + unsigned int irq; + long unsigned int hwirq; + struct irq_common_data *common; + struct irq_chip *chip; + struct irq_domain *domain; + struct irq_data *parent_data; + void *chip_data; }; -struct ucontext32 { - __u32 uc_flags; - __u32 uc_link; - compat_stack_t uc_stack; - _sigregs32 uc_mcontext; - compat_sigset_t uc_sigmask; - unsigned char __unused[120]; - _sigregs_ext32 uc_mcontext_ext; +struct irq_desc { + struct irq_common_data irq_common_data; + struct irq_data irq_data; + unsigned int *kstat_irqs; + irq_flow_handler_t handle_irq; + struct irqaction *action; + unsigned int status_use_accessors; + unsigned int core_internal_state__do_not_mess_with_it; + unsigned int depth; + unsigned int wake_depth; + unsigned int tot_count; + unsigned int irq_count; + long unsigned int last_unhandled; + unsigned int irqs_unhandled; + atomic_t threads_handled; + int threads_handled_last; + raw_spinlock_t lock; + struct cpumask *percpu_enabled; + const struct cpumask *percpu_affinity; + const struct cpumask *affinity_hint; + struct irq_affinity_notify *affinity_notify; + long unsigned int threads_oneshot; + atomic_t threads_active; + wait_queue_head_t wait_for_threads; + struct proc_dir_entry *dir; + struct callback_head rcu; + struct kobject kobj; + struct mutex request_mutex; + int parent_irq; + struct module *owner; + const char *name; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -typedef struct { - __u8 callee_used_stack[96]; - struct sigcontext32 sc; - _sigregs32 sregs; - int signo; - _sigregs_ext32 sregs_ext; - __u16 svc_insn; -} sigframe32; - -typedef struct { - __u8 callee_used_stack[96]; - __u16 svc_insn; - compat_siginfo_t info; - struct ucontext32 uc; -} rt_sigframe32; - -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 arch_msi_msg_addr_lo { + u32 address_lo; }; -struct freelist_node { - atomic_t refs; - struct freelist_node *next; -}; +typedef struct arch_msi_msg_addr_lo arch_msi_msg_addr_lo_t; -struct freelist_head { - struct freelist_node *head; +struct arch_msi_msg_addr_hi { + u32 address_hi; }; -typedef u16 kprobe_opcode_t; +typedef struct arch_msi_msg_addr_hi arch_msi_msg_addr_hi_t; -struct arch_specific_insn { - kprobe_opcode_t *insn; +struct arch_msi_msg_data { + u32 data; }; -struct kprobe; +typedef struct arch_msi_msg_data arch_msi_msg_data_t; -struct prev_kprobe { - struct kprobe *kp; - long unsigned int status; +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; + }; }; -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 platform_msi_priv_data; -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 platform_msi_desc { + struct platform_msi_priv_data *msi_priv_data; + u16 msi_index; }; -struct kprobe_ctlblk { - long unsigned int kprobe_status; - long unsigned int kprobe_saved_imask; - long unsigned int kprobe_saved_ctl[3]; - struct prev_kprobe prev_kprobe; +struct fsl_mc_msi_desc { + u16 msi_index; }; -struct kretprobe_instance; - -typedef int (*kretprobe_handler_t)(struct kretprobe_instance *, struct pt_regs *); - -struct kretprobe_holder; +struct ti_sci_inta_msi_desc { + u16 dev_index; +}; -struct kretprobe_instance { +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; + void (*write_msi_msg)(struct msi_desc *, void *); + void *write_msi_msg_data; union { - struct freelist_node freelist; - struct callback_head rcu; + 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; }; - struct llist_node llist; - struct kretprobe_holder *rph; - kprobe_opcode_t *ret_addr; - void *fp; - char data[0]; }; -struct kretprobe; - -struct kretprobe_holder { - struct kretprobe *rp; - refcount_t ref; +struct irq_chip { + struct device *parent_device; + const char *name; + unsigned int (*irq_startup)(struct irq_data *); + void (*irq_shutdown)(struct irq_data *); + void (*irq_enable)(struct irq_data *); + void (*irq_disable)(struct irq_data *); + void (*irq_ack)(struct irq_data *); + void (*irq_mask)(struct irq_data *); + void (*irq_mask_ack)(struct irq_data *); + void (*irq_unmask)(struct irq_data *); + void (*irq_eoi)(struct irq_data *); + int (*irq_set_affinity)(struct irq_data *, const struct cpumask *, bool); + int (*irq_retrigger)(struct irq_data *); + int (*irq_set_type)(struct irq_data *, unsigned int); + int (*irq_set_wake)(struct irq_data *, unsigned int); + void (*irq_bus_lock)(struct irq_data *); + void (*irq_bus_sync_unlock)(struct irq_data *); + void (*irq_cpu_online)(struct irq_data *); + void (*irq_cpu_offline)(struct irq_data *); + void (*irq_suspend)(struct irq_data *); + void (*irq_resume)(struct irq_data *); + void (*irq_pm_shutdown)(struct irq_data *); + void (*irq_calc_mask)(struct irq_data *); + void (*irq_print_chip)(struct irq_data *, struct seq_file *); + int (*irq_request_resources)(struct irq_data *); + void (*irq_release_resources)(struct irq_data *); + void (*irq_compose_msi_msg)(struct irq_data *, struct msi_msg *); + void (*irq_write_msi_msg)(struct irq_data *, struct msi_msg *); + int (*irq_get_irqchip_state)(struct irq_data *, enum irqchip_irq_state, bool *); + int (*irq_set_irqchip_state)(struct irq_data *, enum irqchip_irq_state, bool); + int (*irq_set_vcpu_affinity)(struct irq_data *, void *); + void (*ipi_send_single)(struct irq_data *, unsigned int); + void (*ipi_send_mask)(struct irq_data *, const struct cpumask *); + int (*irq_nmi_setup)(struct irq_data *); + void (*irq_nmi_teardown)(struct irq_data *); + long unsigned int flags; }; -struct kretprobe { - struct kprobe kp; - kretprobe_handler_t handler; - kretprobe_handler_t entry_handler; - int maxactive; - int nmissed; - size_t data_size; - struct freelist_head freelist; - struct kretprobe_holder *rph; +struct irq_class { + int irq; + char *name; + char *desc; }; -struct kretprobe_blackpoint { - const char *name; - void *addr; +struct ext_int_info { + ext_int_handler_t handler; + struct hlist_node entry; + struct callback_head rcu; + u16 code; }; -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 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 die_args { - struct pt_regs *regs; - const char *str; - long int err; - int trapnr; - int signr; +struct diag210 { + u16 vrdcdvno; + u16 vrdclen; + u8 vrdcvcla; + u8 vrdcvtyp; + u8 vrdcvsta; + u8 vrdcvfla; + u8 vrdcrccl; + u8 vrdccrty; + u8 vrdccrmd; + u8 vrdccrft; }; -struct swap_insn_args { - struct kprobe *p; - unsigned int arm_kprobe: 1; +enum diag26c_sc { + DIAG26C_PORT_VNIC = 36, + DIAG26C_MAC_SERVICES = 48, }; -typedef struct { - int val[2]; -} __kernel_fsid_t; +struct hypfs_diag0c_entry; -struct bpf_run_ctx {}; +struct diag_ops { + int (*diag210)(struct diag210 *); + int (*diag26c)(void *, void *, enum diag26c_sc); + int (*diag14)(long unsigned int, long unsigned int, long unsigned int); + void (*diag0c)(struct hypfs_diag0c_entry *); + void (*diag308_reset)(); +}; -struct kstatfs { - long int f_type; - long int f_bsize; - u64 f_blocks; - u64 f_bfree; - u64 f_bavail; - u64 f_files; - u64 f_ffree; - __kernel_fsid_t f_fsid; - long int f_namelen; - long int f_frsize; - long int f_flags; - long int f_spare[4]; -}; - -struct bpf_insn { - __u8 code; - __u8 dst_reg: 4; - __u8 src_reg: 4; - __s16 off; - __s32 imm; -}; - -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, - BPF_MAP_TYPE_BLOOM_FILTER = 30, -}; - -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, +enum ipl_pbt { + IPL_PBT_FCP = 0, + IPL_PBT_SCP_DATA = 1, + IPL_PBT_CCW = 2, + IPL_PBT_NVME = 4, }; -enum bpf_attach_type { - BPF_CGROUP_INET_INGRESS = 0, - BPF_CGROUP_INET_EGRESS = 1, - BPF_CGROUP_INET_SOCK_CREATE = 2, - BPF_CGROUP_SOCK_OPS = 3, - BPF_SK_SKB_STREAM_PARSER = 4, - BPF_SK_SKB_STREAM_VERDICT = 5, - BPF_CGROUP_DEVICE = 6, - BPF_SK_MSG_VERDICT = 7, - BPF_CGROUP_INET4_BIND = 8, - BPF_CGROUP_INET6_BIND = 9, - BPF_CGROUP_INET4_CONNECT = 10, - BPF_CGROUP_INET6_CONNECT = 11, - BPF_CGROUP_INET4_POST_BIND = 12, - BPF_CGROUP_INET6_POST_BIND = 13, - BPF_CGROUP_UDP4_SENDMSG = 14, - BPF_CGROUP_UDP6_SENDMSG = 15, - BPF_LIRC_MODE2 = 16, - BPF_FLOW_DISSECTOR = 17, - BPF_CGROUP_SYSCTL = 18, - BPF_CGROUP_UDP4_RECVMSG = 19, - BPF_CGROUP_UDP6_RECVMSG = 20, - BPF_CGROUP_GETSOCKOPT = 21, - BPF_CGROUP_SETSOCKOPT = 22, - BPF_TRACE_RAW_TP = 23, - BPF_TRACE_FENTRY = 24, - BPF_TRACE_FEXIT = 25, - BPF_MODIFY_RETURN = 26, - BPF_LSM_MAC = 27, - BPF_TRACE_ITER = 28, - BPF_CGROUP_INET4_GETPEERNAME = 29, - BPF_CGROUP_INET6_GETPEERNAME = 30, - BPF_CGROUP_INET4_GETSOCKNAME = 31, - BPF_CGROUP_INET6_GETSOCKNAME = 32, - BPF_XDP_DEVMAP = 33, - BPF_CGROUP_INET_SOCK_RELEASE = 34, - BPF_XDP_CPUMAP = 35, - BPF_SK_LOOKUP = 36, - BPF_XDP = 37, - BPF_SK_SKB_VERDICT = 38, - BPF_SK_REUSEPORT_SELECT = 39, - BPF_SK_REUSEPORT_SELECT_OR_MIGRATE = 40, - BPF_PERF_EVENT = 41, - BPF_TRACE_KPROBE_MULTI = 42, - __MAX_BPF_ATTACH_TYPE = 43, +enum diag308_subcode { + DIAG308_REL_HSA = 2, + DIAG308_LOAD_CLEAR = 3, + DIAG308_LOAD_NORMAL_DUMP = 4, + DIAG308_SET = 5, + DIAG308_STORE = 6, + DIAG308_LOAD_NORMAL = 7, }; -union bpf_attr { - struct { - __u32 map_type; - __u32 key_size; - __u32 value_size; - __u32 max_entries; - __u32 map_flags; - __u32 inner_map_fd; - __u32 numa_node; - char map_name[16]; - __u32 map_ifindex; - __u32 btf_fd; - __u32 btf_key_type_id; - __u32 btf_value_type_id; - __u32 btf_vmlinux_value_type_id; - __u64 map_extra; - }; - struct { - __u32 map_fd; - __u64 key; - union { - __u64 value; - __u64 next_key; - }; - __u64 flags; - }; - struct { - __u64 in_batch; - __u64 out_batch; - __u64 keys; - __u64 values; - __u32 count; - __u32 map_fd; - __u64 elem_flags; - __u64 flags; - } batch; - struct { - __u32 prog_type; - __u32 insn_cnt; - __u64 insns; - __u64 license; - __u32 log_level; - __u32 log_size; - __u64 log_buf; - __u32 kern_version; - __u32 prog_flags; - char prog_name[16]; - __u32 prog_ifindex; - __u32 expected_attach_type; - __u32 prog_btf_fd; - __u32 func_info_rec_size; - __u64 func_info; - __u32 func_info_cnt; - __u32 line_info_rec_size; - __u64 line_info; - __u32 line_info_cnt; - __u32 attach_btf_id; - union { - __u32 attach_prog_fd; - __u32 attach_btf_obj_fd; - }; - __u32 core_relo_cnt; - __u64 fd_array; - __u64 core_relos; - __u32 core_relo_rec_size; - }; - 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; - __u32 batch_size; - } test; - struct { - union { - __u32 start_id; - __u32 prog_id; - __u32 map_id; - __u32 btf_id; - __u32 link_id; - }; - __u32 next_id; - __u32 open_flags; - }; - struct { - __u32 bpf_fd; - __u32 info_len; - __u64 info; - } info; - struct { - __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; - }; - struct { - __u64 bpf_cookie; - } perf_event; - struct { - __u32 flags; - __u32 cnt; - __u64 syms; - __u64 addrs; - __u64 cookies; - } kprobe_multi; - }; - } 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 sclp_ipl_info { + int is_valid; + int has_dump; + char loadparm[8]; }; -struct bpf_func_info { - __u32 insn_off; - __u32 type_id; -}; +struct shutdown_action; -struct bpf_line_info { - __u32 insn_off; - __u32 file_name_off; - __u32 line_off; - __u32 line_col; +struct shutdown_trigger { + char *name; + struct shutdown_action *action; }; -typedef s32 compat_ssize_t; - -typedef u64 (*bpf_callback_t)(u64, u64, u64, u64, u64); - -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; +struct shutdown_action { + char *name; + void (*fn)(struct shutdown_trigger *); + int (*init)(); + int init_rc; }; -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; +enum dump_type { + DUMP_TYPE_NONE = 1, + DUMP_TYPE_CCW = 2, + DUMP_TYPE_FCP = 4, + DUMP_TYPE_NVME = 8, }; -struct btf; - -struct btf_type; - -struct bpf_prog_aux; - -struct bpf_local_storage_map; - -struct bpf_verifier_env; - -struct bpf_func_state; - -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 *, bpf_callback_t, void *, u64); - const char * const map_btf_name; - int *map_btf_id; - const struct bpf_iter_seq_info *iter_seq_info; +enum { + INSTR_E = 0, + INSTR_IE_UU = 1, + INSTR_MII_UPP = 2, + INSTR_RIE_R0IU = 3, + INSTR_RIE_R0UU = 4, + INSTR_RIE_RRI0 = 5, + INSTR_RIE_RRP = 6, + INSTR_RIE_RRPU = 7, + INSTR_RIE_RRUUU = 8, + INSTR_RIE_RUI0 = 9, + INSTR_RIE_RUPI = 10, + INSTR_RIE_RUPU = 11, + INSTR_RIL_RI = 12, + INSTR_RIL_RP = 13, + INSTR_RIL_RU = 14, + INSTR_RIL_UP = 15, + INSTR_RIS_RURDI = 16, + INSTR_RIS_RURDU = 17, + INSTR_RI_RI = 18, + INSTR_RI_RP = 19, + INSTR_RI_RU = 20, + INSTR_RI_UP = 21, + INSTR_RRE_00 = 22, + INSTR_RRE_AA = 23, + INSTR_RRE_AR = 24, + INSTR_RRE_F0 = 25, + INSTR_RRE_FF = 26, + INSTR_RRE_FR = 27, + INSTR_RRE_R0 = 28, + INSTR_RRE_RA = 29, + INSTR_RRE_RF = 30, + INSTR_RRE_RR = 31, + INSTR_RRF_0UFF = 32, + INSTR_RRF_0URF = 33, + INSTR_RRF_F0FF = 34, + INSTR_RRF_F0FF2 = 35, + INSTR_RRF_F0FR = 36, + INSTR_RRF_FFRU = 37, + INSTR_RRF_FUFF = 38, + INSTR_RRF_FUFF2 = 39, + INSTR_RRF_R0RR = 40, + INSTR_RRF_R0RR2 = 41, + INSTR_RRF_RURR = 42, + INSTR_RRF_RURR2 = 43, + INSTR_RRF_U0FF = 44, + INSTR_RRF_U0RF = 45, + INSTR_RRF_U0RR = 46, + INSTR_RRF_URR = 47, + INSTR_RRF_UUFF = 48, + INSTR_RRF_UUFR = 49, + INSTR_RRF_UURF = 50, + INSTR_RRS_RRRDU = 51, + INSTR_RR_FF = 52, + INSTR_RR_R0 = 53, + INSTR_RR_RR = 54, + INSTR_RR_U0 = 55, + INSTR_RR_UR = 56, + INSTR_RSI_RRP = 57, + INSTR_RSL_LRDFU = 58, + INSTR_RSL_R0RD = 59, + INSTR_RSY_AARD = 60, + INSTR_RSY_CCRD = 61, + INSTR_RSY_RDRU = 62, + INSTR_RSY_RRRD = 63, + INSTR_RSY_RURD = 64, + INSTR_RSY_RURD2 = 65, + INSTR_RS_AARD = 66, + INSTR_RS_CCRD = 67, + INSTR_RS_R0RD = 68, + INSTR_RS_RRRD = 69, + INSTR_RS_RURD = 70, + INSTR_RXE_FRRD = 71, + INSTR_RXE_RRRDU = 72, + INSTR_RXF_FRRDF = 73, + INSTR_RXY_FRRD = 74, + INSTR_RXY_RRRD = 75, + INSTR_RXY_URRD = 76, + INSTR_RX_FRRD = 77, + INSTR_RX_RRRD = 78, + INSTR_RX_URRD = 79, + INSTR_SIL_RDI = 80, + INSTR_SIL_RDU = 81, + INSTR_SIY_IRD = 82, + INSTR_SIY_URD = 83, + INSTR_SI_RD = 84, + INSTR_SI_URD = 85, + INSTR_SMI_U0RDP = 86, + INSTR_SSE_RDRD = 87, + INSTR_SSF_RRDRD = 88, + INSTR_SSF_RRDRD2 = 89, + INSTR_SS_L0RDRD = 90, + INSTR_SS_L2RDRD = 91, + INSTR_SS_LIRDRD = 92, + INSTR_SS_LLRDRD = 93, + INSTR_SS_RRRDRD = 94, + INSTR_SS_RRRDRD2 = 95, + INSTR_SS_RRRDRD3 = 96, + INSTR_S_00 = 97, + INSTR_S_RD = 98, + INSTR_VRI_V0IU = 99, + INSTR_VRI_V0U = 100, + INSTR_VRI_V0UU2 = 101, + INSTR_VRI_V0UUU = 102, + INSTR_VRI_VR0UU = 103, + INSTR_VRI_VVUU = 104, + INSTR_VRI_VVUUU = 105, + INSTR_VRI_VVUUU2 = 106, + INSTR_VRI_VVV0U = 107, + INSTR_VRI_VVV0UU = 108, + INSTR_VRI_VVV0UU2 = 109, + INSTR_VRR_0V = 110, + INSTR_VRR_0VV0U = 111, + INSTR_VRR_RV0UU = 112, + INSTR_VRR_VRR = 113, + INSTR_VRR_VV = 114, + INSTR_VRR_VV0U = 115, + INSTR_VRR_VV0U0U = 116, + INSTR_VRR_VV0U2 = 117, + INSTR_VRR_VV0UU2 = 118, + INSTR_VRR_VV0UUU = 119, + INSTR_VRR_VVV = 120, + INSTR_VRR_VVV0U = 121, + INSTR_VRR_VVV0U0 = 122, + INSTR_VRR_VVV0U0U = 123, + INSTR_VRR_VVV0UU = 124, + INSTR_VRR_VVV0UUU = 125, + INSTR_VRR_VVV0V = 126, + INSTR_VRR_VVVU0UV = 127, + INSTR_VRR_VVVU0V = 128, + INSTR_VRR_VVVUU0V = 129, + INSTR_VRS_RRDV = 130, + INSTR_VRS_RVRDU = 131, + INSTR_VRS_VRRD = 132, + INSTR_VRS_VRRDU = 133, + INSTR_VRS_VVRDU = 134, + INSTR_VRV_VVXRDU = 135, + INSTR_VRX_VRRDU = 136, + INSTR_VRX_VV = 137, + INSTR_VSI_URDV = 138, }; -struct bpf_map { - const struct bpf_map_ops *ops; - struct bpf_map *inner_map_meta; - void *security; - enum bpf_map_type map_type; - u32 key_size; - u32 value_size; - u32 max_entries; - u64 map_extra; - u32 map_flags; - int spin_lock_off; - int timer_off; - u32 id; - int numa_node; - u32 btf_key_type_id; - u32 btf_value_type_id; - u32 btf_vmlinux_value_type_id; - struct btf *btf; - struct mem_cgroup *memcg; - char name[16]; - bool bypass_spec_v1; - bool frozen; - long: 48; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - atomic64_t refcnt; - atomic64_t usercnt; - struct work_struct work; - struct mutex freeze_mutex; - atomic64_t writecnt; - struct { - spinlock_t lock; - enum bpf_prog_type type; - bool jited; - bool xdp_has_frags; - } owner; - 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; - 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; +enum { + LONG_INSN_ALGHSIK = 0, + LONG_INSN_ALHHHR = 1, + LONG_INSN_ALHHLR = 2, + LONG_INSN_ALHSIK = 3, + LONG_INSN_ALSIHN = 4, + LONG_INSN_CDFBRA = 5, + LONG_INSN_CDGBRA = 6, + LONG_INSN_CDGTRA = 7, + LONG_INSN_CDLFBR = 8, + LONG_INSN_CDLFTR = 9, + LONG_INSN_CDLGBR = 10, + LONG_INSN_CDLGTR = 11, + LONG_INSN_CEFBRA = 12, + LONG_INSN_CEGBRA = 13, + LONG_INSN_CELFBR = 14, + LONG_INSN_CELGBR = 15, + LONG_INSN_CFDBRA = 16, + LONG_INSN_CFEBRA = 17, + LONG_INSN_CFXBRA = 18, + LONG_INSN_CGDBRA = 19, + LONG_INSN_CGDTRA = 20, + LONG_INSN_CGEBRA = 21, + LONG_INSN_CGXBRA = 22, + LONG_INSN_CGXTRA = 23, + LONG_INSN_CLFDBR = 24, + LONG_INSN_CLFDTR = 25, + LONG_INSN_CLFEBR = 26, + LONG_INSN_CLFHSI = 27, + LONG_INSN_CLFXBR = 28, + LONG_INSN_CLFXTR = 29, + LONG_INSN_CLGDBR = 30, + LONG_INSN_CLGDTR = 31, + LONG_INSN_CLGEBR = 32, + LONG_INSN_CLGFRL = 33, + LONG_INSN_CLGHRL = 34, + LONG_INSN_CLGHSI = 35, + LONG_INSN_CLGXBR = 36, + LONG_INSN_CLGXTR = 37, + LONG_INSN_CLHHSI = 38, + LONG_INSN_CXFBRA = 39, + LONG_INSN_CXGBRA = 40, + LONG_INSN_CXGTRA = 41, + LONG_INSN_CXLFBR = 42, + LONG_INSN_CXLFTR = 43, + LONG_INSN_CXLGBR = 44, + LONG_INSN_CXLGTR = 45, + LONG_INSN_DFLTCC = 46, + LONG_INSN_FIDBRA = 47, + LONG_INSN_FIEBRA = 48, + LONG_INSN_FIXBRA = 49, + LONG_INSN_ILLEGAL = 50, + LONG_INSN_LDXBRA = 51, + LONG_INSN_LEDBRA = 52, + LONG_INSN_LEXBRA = 53, + LONG_INSN_LLGFAT = 54, + LONG_INSN_LLGFRL = 55, + LONG_INSN_LLGFSG = 56, + LONG_INSN_LLGHRL = 57, + LONG_INSN_LLGTAT = 58, + LONG_INSN_LLZRGF = 59, + LONG_INSN_LOCFHR = 60, + LONG_INSN_LOCGHI = 61, + LONG_INSN_LOCHHI = 62, + LONG_INSN_LPSWEY = 63, + LONG_INSN_MPCIFC = 64, + LONG_INSN_MSGRKC = 65, + LONG_INSN_PCILGI = 66, + LONG_INSN_PCISTB = 67, + LONG_INSN_PCISTBI = 68, + LONG_INSN_PCISTG = 69, + LONG_INSN_PCISTGI = 70, + LONG_INSN_POPCNT = 71, + LONG_INSN_RIEMIT = 72, + LONG_INSN_RINEXT = 73, + LONG_INSN_RISBGN = 74, + LONG_INSN_RISBHG = 75, + LONG_INSN_RISBLG = 76, + LONG_INSN_SELFHR = 77, + LONG_INSN_SLHHHR = 78, + LONG_INSN_SLHHLR = 79, + LONG_INSN_STBEAR = 80, + LONG_INSN_STCCTM = 81, + LONG_INSN_STOCFH = 82, + LONG_INSN_STPCIFC = 83, + LONG_INSN_TABORT = 84, + LONG_INSN_TBEGIN = 85, + LONG_INSN_TBEGINC = 86, + LONG_INSN_VBPERM = 87, + LONG_INSN_VCLFNH = 88, + LONG_INSN_VCLFNL = 89, + LONG_INSN_VCLZDP = 90, + LONG_INSN_VERLLV = 91, + LONG_INSN_VESRAV = 92, + LONG_INSN_VESRLV = 93, + LONG_INSN_VLBRREP = 94, + LONG_INSN_VLEBRF = 95, + LONG_INSN_VLEBRG = 96, + LONG_INSN_VLEBRH = 97, + LONG_INSN_VLLEBRZ = 98, + LONG_INSN_VPOPCT = 99, + LONG_INSN_VSBCBI = 100, + LONG_INSN_VSCSHP = 101, + LONG_INSN_VSTEBRF = 102, + LONG_INSN_VSTEBRG = 103, + LONG_INSN_VSTEBRH = 104, + LONG_INSN_VSTRLR = 105, + LONG_INSN_VUPKZH = 106, + LONG_INSN_VUPKZL = 107, }; -struct btf_kfunc_set_tab; - -struct btf { - void *data; - struct btf_type **types; - u32 *resolved_ids; - u32 *resolved_sizes; - const char *strings; - void *nohdr_data; - struct btf_header hdr; - u32 nr_types; - u32 types_size; - u32 data_size; - refcount_t refcnt; - u32 id; - struct callback_head rcu; - struct btf_kfunc_set_tab *kfunc_set_tab; - struct btf *base_btf; - u32 start_id; - u32 start_str_off; - char name[56]; - bool kernel_btf; +struct s390_operand { + unsigned char bits; + unsigned char shift; + short unsigned int flags; }; -struct btf_type { - __u32 name_off; - __u32 info; +struct s390_insn { union { - __u32 size; - __u32 type; + const char name[5]; + struct { + unsigned char zero; + unsigned int offset; + } __attribute__((packed)); }; + unsigned char opfrag; + unsigned char format; }; -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 s390_opcode_offset { + unsigned char opcode; + unsigned char mask; + unsigned char byte; + short unsigned int offset; + short unsigned int count; +} __attribute__((packed)); -struct bpf_ctx_arg_aux; +enum { + UNUSED = 0, + A_8 = 1, + A_12 = 2, + A_24 = 3, + A_28 = 4, + B_16 = 5, + B_32 = 6, + C_8 = 7, + C_12 = 8, + D20_20 = 9, + D_20 = 10, + D_36 = 11, + F_8 = 12, + F_12 = 13, + F_16 = 14, + F_24 = 15, + F_28 = 16, + F_32 = 17, + I8_8 = 18, + I8_32 = 19, + I16_16 = 20, + I16_32 = 21, + I32_16 = 22, + J12_12 = 23, + J16_16 = 24, + J16_32 = 25, + J24_24 = 26, + J32_16 = 27, + L4_8 = 28, + L4_12 = 29, + L8_8 = 30, + R_8 = 31, + R_12 = 32, + R_16 = 33, + R_24 = 34, + R_28 = 35, + U4_8 = 36, + U4_12 = 37, + U4_16 = 38, + U4_20 = 39, + U4_24 = 40, + U4_28 = 41, + U4_32 = 42, + U4_36 = 43, + U8_8 = 44, + U8_16 = 45, + U8_24 = 46, + U8_28 = 47, + U8_32 = 48, + U12_16 = 49, + U16_16 = 50, + U16_32 = 51, + U32_16 = 52, + VX_12 = 53, + V_8 = 54, + V_12 = 55, + V_16 = 56, + V_32 = 57, + X_12 = 58, +}; -struct bpf_trampoline; +struct diag_stat { + unsigned int counter[21]; +}; -struct bpf_jit_poke_descriptor; +struct diag_desc { + int code; + char *name; +}; -struct bpf_kfunc_desc_tab; +typedef unsigned int pcp_op_T_____2; -struct bpf_kfunc_btf_tab; +enum vm_fault_reason { + VM_FAULT_OOM = 1, + VM_FAULT_SIGBUS = 2, + VM_FAULT_MAJOR = 4, + VM_FAULT_WRITE = 8, + VM_FAULT_HWPOISON = 16, + VM_FAULT_HWPOISON_LARGE = 32, + VM_FAULT_SIGSEGV = 64, + VM_FAULT_NOPAGE = 256, + VM_FAULT_LOCKED = 512, + VM_FAULT_RETRY = 1024, + VM_FAULT_FALLBACK = 2048, + VM_FAULT_DONE_COW = 4096, + VM_FAULT_NEEDDSYNC = 8192, + VM_FAULT_HINDEX_MASK = 983040, +}; -struct bpf_prog_ops; +struct vm_special_mapping { + const char *name; + struct page **pages; + vm_fault_t (*fault)(const struct vm_special_mapping *, struct vm_area_struct *, struct vm_fault *); + int (*mremap)(const struct vm_special_mapping *, struct vm_area_struct *); +}; -struct btf_mod_pair; +struct timens_offsets { + struct timespec64 monotonic; + struct timespec64 boottime; +}; -struct bpf_prog_offload; +struct time_namespace { + struct user_namespace *user_ns; + struct ucounts *ucounts; + struct ns_common ns; + struct timens_offsets offsets; + struct page *vvar_page; + bool frozen_offsets; +}; -struct bpf_func_info_aux; +enum vvar_pages { + VVAR_DATA_PAGE_OFFSET = 0, + VVAR_TIMENS_PAGE_OFFSET = 1, + VVAR_NR_PAGES = 2, +}; -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; - bool xdp_has_frags; - bool use_bpf_prog_pack; - 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; - struct bpf_kfunc_btf_tab *kfunc_btf_tab; - u32 size_poke_tab; - struct bpf_ksym ksym; - const struct bpf_prog_ops *ops; - struct bpf_map **used_maps; - struct mutex used_maps_mutex; - struct btf_mod_pair *used_btfs; - struct bpf_prog *prog; - struct user_struct *user; - u64 load_time; - u32 verified_insns; - 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 kernel_fpu { + u32 mask; + u32 fpc; union { - struct work_struct work; - struct callback_head rcu; + freg_t fprs[16]; + __vector128 vxrs[32]; }; }; -struct sock_filter { - __u16 code; - __u8 jt; - __u8 jf; - __u32 k; +struct sysinfo_1_2_2 { + char format; + char reserved_0[1]; + short unsigned int acc_offset; + unsigned char mt_installed: 1; + char: 2; + unsigned char mt_stid: 5; + char: 3; + unsigned char mt_gtid: 5; + char reserved_1[18]; + unsigned int nominal_cap; + unsigned int secondary_cap; + unsigned int capability; + short unsigned int cpus_total; + short unsigned int cpus_configured; + short unsigned int cpus_standby; + short unsigned int cpus_reserved; + short unsigned int adjustment[0]; }; -struct bpf_prog_stats; +struct sysinfo_1_2_2_extension { + unsigned int alt_capability; + short unsigned int alt_adjustment[0]; +}; -struct sock_fprog_kern; +struct sysinfo_2_2_2 { + char reserved_0[32]; + short unsigned int lpar_number; + char reserved_1; + unsigned char characteristics; + short unsigned int cpus_total; + short unsigned int cpus_configured; + short unsigned int cpus_standby; + short unsigned int cpus_reserved; + char name[8]; + unsigned int caf; + char reserved_2[8]; + unsigned char mt_installed: 1; + char: 2; + unsigned char mt_stid: 5; + char: 3; + unsigned char mt_gtid: 5; + char: 3; + unsigned char mt_psmtid: 5; + char reserved_3[5]; + short unsigned int cpus_dedicated; + short unsigned int cpus_shared; + char reserved_4[3]; + unsigned char vsne; + uuid_t uuid; + char reserved_5[160]; + char ext_name[256]; +}; -struct bpf_prog { - u16 pages; - u16 jited: 1; - u16 jit_requested: 1; - u16 gpl_compatible: 1; - u16 cb_access: 1; - u16 dst_needed: 1; - u16 blinding_requested: 1; - u16 blinded: 1; - u16 is_func: 1; - u16 kprobe_override: 1; - u16 has_callchain_buf: 1; - u16 enforce_expected_attach_type: 1; - u16 call_get_stack: 1; - u16 call_get_func_ip: 1; - u16 tstamp_type_access: 1; - enum bpf_prog_type type; - enum bpf_attach_type expected_attach_type; - u32 len; - u32 jited_len; - u8 tag[8]; - struct bpf_prog_stats *stats; - int *active; - unsigned int (*bpf_func)(const void *, const struct bpf_insn *); - struct bpf_prog_aux *aux; - struct sock_fprog_kern *orig_prog; - union { - struct { - struct { } __empty_insns; - struct sock_filter insns[0]; - }; - struct { - struct { } __empty_insnsi; - struct bpf_insn insnsi[0]; - }; - }; +struct topology_core { + unsigned char nl; + unsigned char reserved0[3]; + char: 5; + unsigned char d: 1; + unsigned char pp: 2; + unsigned char reserved1; + short unsigned int origin; + long unsigned int mask; }; -struct bpf_map_dev_ops { - int (*map_get_next_key)(struct bpf_offloaded_map *, void *, void *); - int (*map_lookup_elem)(struct bpf_offloaded_map *, void *, void *); - int (*map_update_elem)(struct bpf_offloaded_map *, void *, void *, u64); - int (*map_delete_elem)(struct bpf_offloaded_map *, void *); +struct topology_container { + unsigned char nl; + unsigned char reserved[6]; + unsigned char id; }; -struct bpf_offloaded_map { - struct bpf_map map; - struct net_device *netdev; - const struct bpf_map_dev_ops *dev_ops; - void *dev_priv; - struct list_head offloads; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -enum bpf_reg_type { - NOT_INIT = 0, - SCALAR_VALUE = 1, - PTR_TO_CTX = 2, - CONST_PTR_TO_MAP = 3, - PTR_TO_MAP_VALUE = 4, - PTR_TO_MAP_KEY = 5, - PTR_TO_STACK = 6, - PTR_TO_PACKET_META = 7, - PTR_TO_PACKET = 8, - PTR_TO_PACKET_END = 9, - PTR_TO_FLOW_KEYS = 10, - PTR_TO_SOCKET = 11, - PTR_TO_SOCK_COMMON = 12, - PTR_TO_TCP_SOCK = 13, - PTR_TO_TP_BUFFER = 14, - PTR_TO_XDP_SOCK = 15, - PTR_TO_BTF_ID = 16, - PTR_TO_MEM = 17, - PTR_TO_BUF = 18, - PTR_TO_FUNC = 19, - __BPF_REG_TYPE_MAX = 20, - 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 = 8191, -}; - -struct bpf_prog_ops { - int (*test_run)(struct bpf_prog *, const union bpf_attr *, union bpf_attr *); +union topology_entry { + unsigned char nl; + struct topology_core cpu; + struct topology_container container; }; -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 sysinfo_15_1_x { + unsigned char reserved0[2]; + short unsigned int length; + unsigned char mag[6]; + unsigned char reserved1; + unsigned char mnest; + unsigned char reserved2[4]; + union topology_entry tle[0]; }; -struct btf_func_model { - u8 ret_size; - u8 nr_args; - u8 arg_size[12]; +struct service_level { + struct list_head list; + void (*seq_print)(struct seq_file *, struct service_level *); }; -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 stsi_file { + const struct file_operations *fops; + char *name; }; -struct bpf_trampoline { - struct hlist_node hlist; - struct mutex mutex; - refcount_t refcnt; - u64 key; +struct lgr_info { + u64 stfle_fac_list[4]; + u32 level; + char manufacturer[16]; + char type[4]; + char sequence[16]; + char plant[4]; + char model[16]; + u16 lpar_number; + char name[8]; + u8 vm_count; 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; + char name[8]; + char cpi[16]; + } vm[2]; }; -struct bpf_func_info_aux { - u16 linkage; - bool unreliable; -}; +struct os_info_entry { + u64 addr; + u64 size; + u32 csum; +} __attribute__((packed)); -struct bpf_jit_poke_descriptor { - void *tailcall_target; - void *tailcall_bypass; - void *bypass_addr; - void *aux; - union { - struct { - struct bpf_map *map; - u32 key; - } tail_call; - }; - bool tailcall_target_stable; - u8 adj_off; - u16 reason; - u32 insn_idx; +struct os_info { + u64 magic; + u32 csum; + u16 version_major; + u16 version_minor; + u64 crashkernel_addr; + u64 crashkernel_size; + struct os_info_entry entry[2]; + u8 reserved[4024]; }; -struct bpf_ctx_arg_aux { - u32 offset; - enum bpf_reg_type reg_type; - u32 btf_id; +enum pageflags { + PG_locked = 0, + PG_referenced = 1, + PG_uptodate = 2, + PG_dirty = 3, + PG_lru = 4, + PG_active = 5, + PG_workingset = 6, + PG_waiters = 7, + PG_error = 8, + PG_slab = 9, + PG_owner_priv_1 = 10, + PG_arch_1 = 11, + PG_reserved = 12, + PG_private = 13, + PG_private_2 = 14, + PG_writeback = 15, + PG_head = 16, + PG_mappedtodisk = 17, + PG_reclaim = 18, + PG_swapbacked = 19, + PG_unevictable = 20, + PG_mlocked = 21, + PG_young = 22, + PG_idle = 23, + PG_arch_2 = 24, + __NR_PAGEFLAGS = 25, + PG_checked = 10, + PG_swapcache = 10, + PG_fscache = 14, + PG_pinned = 10, + PG_savepinned = 3, + PG_foreign = 10, + PG_xen_remapped = 10, + PG_slob_free = 13, + PG_double_map = 6, + PG_isolated = 18, + PG_reported = 2, }; -struct btf_mod_pair { - struct btf *btf; - struct module *module; +struct kimage_arch { + void *ipl_buf; }; -struct bpf_cgroup_storage; +typedef long unsigned int kimage_entry_t; -struct bpf_prog_array_item { - struct bpf_prog *prog; +struct kexec_segment { union { - struct bpf_cgroup_storage *cgroup_storage[2]; - u64 bpf_cookie; + void *buf; + void *kbuf; }; + size_t bufsz; + long unsigned int mem; + size_t memsz; }; -struct bpf_prog_array { - struct callback_head rcu; - struct bpf_prog_array_item items[0]; +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 *elf_headers; + long unsigned int elf_headers_sz; + long unsigned int elf_load_addr; }; -struct tc_stats { - __u64 bytes; - __u32 packets; - __u32 drops; - __u32 overlimits; - __u32 bps; - __u32 pps; - __u32 qlen; - __u32 backlog; -}; +typedef void (*relocate_kernel_t)(kimage_entry_t *, long unsigned int); -struct tc_sizespec { - unsigned char cell_log; - unsigned char size_log; - short int cell_align; - int overhead; - unsigned int linklayer; - unsigned int mpu; - unsigned int mtu; - unsigned int tsize; +enum cache_type { + CACHE_TYPE_NOCACHE = 0, + CACHE_TYPE_INST = 1, + CACHE_TYPE_DATA = 2, + CACHE_TYPE_SEPARATE = 3, + CACHE_TYPE_UNIFIED = 4, }; -struct net_rate_estimator; - -struct qdisc_skb_head { - struct sk_buff *head; - struct sk_buff *tail; - __u32 qlen; - spinlock_t lock; +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 gnet_stats_basic_sync { - u64_stats_t bytes; - u64_stats_t packets; - struct u64_stats_sync syncp; +struct cpu_cacheinfo { + struct cacheinfo *info_list; + unsigned int num_levels; + unsigned int num_leaves; + bool cpu_map_populated; }; -struct gnet_stats_queue { - __u32 qlen; - __u32 backlog; - __u32 drops; - __u32 requeues; - __u32 overlimits; +enum { + CACHE_SCOPE_NOTEXISTS = 0, + CACHE_SCOPE_PRIVATE = 1, + CACHE_SCOPE_SHARED = 2, + CACHE_SCOPE_RESERVED = 3, }; -struct Qdisc_ops; - -struct qdisc_size_table; +enum { + CTYPE_SEPARATE = 0, + CTYPE_DATA = 1, + CTYPE_INSTRUCTION = 2, + CTYPE_UNIFIED = 3, +}; -struct Qdisc { - int (*enqueue)(struct sk_buff *, struct Qdisc *, struct sk_buff **); - struct sk_buff * (*dequeue)(struct Qdisc *); - unsigned int flags; - u32 limit; - const struct Qdisc_ops *ops; - struct qdisc_size_table *stab; - struct hlist_node hash; - u32 handle; - u32 parent; - struct netdev_queue *dev_queue; - struct net_rate_estimator *rate_est; - struct gnet_stats_basic_sync *cpu_bstats; - struct gnet_stats_queue *cpu_qstats; - int pad; - refcount_t refcnt; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 sk_buff_head gso_skb; - struct qdisc_skb_head q; - struct gnet_stats_basic_sync bstats; - struct gnet_stats_queue qstats; - long unsigned int state; - long unsigned int state2; - struct Qdisc *next_sched; - struct sk_buff_head skb_bad_txq; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - spinlock_t busylock; - spinlock_t seqlock; - struct callback_head rcu; - netdevice_tracker dev_tracker; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long int privdata[0]; +enum { + EXTRACT_TOPOLOGY = 0, + EXTRACT_LINE_SIZE = 1, + EXTRACT_SIZE = 2, + EXTRACT_ASSOCIATIVITY = 3, }; -struct tcf_proto; +enum { + CACHE_TI_UNIFIED = 0, + CACHE_TI_DATA = 0, + CACHE_TI_INSTRUCTION = 1, +}; -struct tcf_block; +struct cache_info { + char: 4; + unsigned char scope: 2; + unsigned char type: 2; +}; -struct mini_Qdisc { - struct tcf_proto *filter_list; - struct tcf_block *block; - struct gnet_stats_basic_sync *cpu_bstats; - struct gnet_stats_queue *cpu_qstats; - long unsigned int rcu_state; +union cache_topology { + struct cache_info ci[8]; + long long unsigned int raw; }; -struct tcmsg { - unsigned char tcm_family; - unsigned char tcm__pad1; - short unsigned int tcm__pad2; - int tcm_ifindex; - __u32 tcm_handle; - __u32 tcm_parent; - __u32 tcm_info; +enum lockdep_ok { + LOCKDEP_STILL_OK = 0, + LOCKDEP_NOW_UNRELIABLE = 1, }; -struct gnet_dump { - spinlock_t *lock; - struct sk_buff *skb; - struct nlattr *tail; - int compat_tc_stats; - int compat_xstats; - int padattr; - void *xstats; - int xstats_len; - struct tc_stats tc_stats; +struct psw_bits { + char: 1; + long unsigned int per: 1; + char: 3; + long unsigned int dat: 1; + long unsigned int io: 1; + long unsigned int ext: 1; + long unsigned int key: 4; + char: 1; + long unsigned int mcheck: 1; + long unsigned int wait: 1; + long unsigned int pstate: 1; + long unsigned int as: 2; + long unsigned int cc: 2; + long unsigned int pm: 4; + long unsigned int ri: 1; + char: 6; + long unsigned int eaba: 2; + long: 31; + long unsigned int ia: 64; }; -enum flow_action_hw_stats_bit { - FLOW_ACTION_HW_STATS_IMMEDIATE_BIT = 0, - FLOW_ACTION_HW_STATS_DELAYED_BIT = 1, - FLOW_ACTION_HW_STATS_DISABLED_BIT = 2, - FLOW_ACTION_HW_STATS_NUM_BITS = 3, +enum diag204_sc { + DIAG204_SUBC_STIB4 = 4, + DIAG204_SUBC_RSI = 5, + DIAG204_SUBC_STIB6 = 6, + DIAG204_SUBC_STIB7 = 7, }; -struct flow_block { - struct list_head cb_list; +enum diag204_format { + DIAG204_INFO_SIMPLE = 0, + DIAG204_INFO_EXT = 65536, }; -typedef int flow_setup_cb_t(enum tc_setup_type, void *, void *); +enum diag204_cpu_flags { + DIAG204_CPU_ONLINE = 32, + DIAG204_CPU_CAPPED = 64, +}; -struct qdisc_size_table { - struct callback_head rcu; - struct list_head list; - struct tc_sizespec szopts; - int refcnt; - u16 data[0]; +struct diag204_x_info_blk_hdr { + __u8 npar; + __u8 flags; + __u16 tslice; + __u16 phys_cpus; + __u16 this_part; + __u64 curtod1; + __u64 curtod2; + char reserved[40]; }; -struct Qdisc_class_ops; - -struct Qdisc_ops { - struct Qdisc_ops *next; - const struct Qdisc_class_ops *cl_ops; - char id[16]; - int priv_size; - unsigned int static_flags; - int (*enqueue)(struct sk_buff *, struct Qdisc *, struct sk_buff **); - struct sk_buff * (*dequeue)(struct Qdisc *); - struct sk_buff * (*peek)(struct Qdisc *); - int (*init)(struct Qdisc *, struct nlattr *, struct netlink_ext_ack *); - void (*reset)(struct Qdisc *); - void (*destroy)(struct Qdisc *); - int (*change)(struct Qdisc *, struct nlattr *, struct netlink_ext_ack *); - void (*attach)(struct Qdisc *); - int (*change_tx_queue_len)(struct Qdisc *, unsigned int); - void (*change_real_num_tx)(struct Qdisc *, unsigned int); - int (*dump)(struct Qdisc *, struct sk_buff *); - int (*dump_stats)(struct Qdisc *, struct gnet_dump *); - void (*ingress_block_set)(struct Qdisc *, u32); - void (*egress_block_set)(struct Qdisc *, u32); - u32 (*ingress_block_get)(struct Qdisc *); - u32 (*egress_block_get)(struct Qdisc *); - struct module *owner; +struct diag204_x_part_hdr { + __u8 pn; + __u8 cpus; + __u8 rcpus; + __u8 pflag; + __u32 mlu; + char part_name[8]; + char lpc_name[8]; + char os_name[8]; + __u64 online_cs; + __u64 online_es; + __u8 upid; + __u8 reserved: 3; + __u8 mtid: 5; + char reserved1[2]; + __u32 group_mlu; + char group_name[8]; + char hardware_group_name[8]; + char reserved2[24]; }; -struct qdisc_walker; - -struct Qdisc_class_ops { - unsigned int flags; - struct netdev_queue * (*select_queue)(struct Qdisc *, struct tcmsg *); - int (*graft)(struct Qdisc *, long unsigned int, struct Qdisc *, struct Qdisc **, struct netlink_ext_ack *); - struct Qdisc * (*leaf)(struct Qdisc *, long unsigned int); - 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, 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); - void (*unbind_tcf)(struct Qdisc *, long unsigned int); - int (*dump)(struct Qdisc *, long unsigned int, struct sk_buff *, struct tcmsg *); - int (*dump_stats)(struct Qdisc *, long unsigned int, struct gnet_dump *); +struct diag204_x_cpu_info { + __u16 cpu_addr; + char reserved1[2]; + __u8 ctidx; + __u8 cflag; + __u16 weight; + __u64 acc_time; + __u64 lp_time; + __u16 min_weight; + __u16 cur_weight; + __u16 max_weight; + char reseved2[2]; + __u64 online_time; + __u64 wait_time; + __u32 pma_weight; + __u32 polar_weight; + __u32 cpu_type_cap; + __u32 group_cpu_type_cap; + char reserved3[32]; }; -struct tcf_chain; - -struct tcf_block { - struct mutex lock; - struct list_head chain_list; - u32 index; - u32 classid; - refcount_t refcnt; - struct net *net; - struct Qdisc *q; - struct rw_semaphore cb_lock; - struct flow_block flow_block; - struct list_head owner_list; - bool keep_dst; - atomic_t offloadcnt; - unsigned int nooffloaddevcnt; - unsigned int lockeddevcnt; - struct { - struct tcf_chain *chain; - struct list_head filter_chain_list; - } chain0; - struct callback_head rcu; - struct hlist_head proto_destroy_ht[128]; - struct mutex proto_destroy_lock; +struct diag204_x_phys_hdr { + char reserved1[1]; + __u8 cpus; + char reserved2[6]; + char mgm_name[8]; + char reserved3[80]; }; -struct tcf_result; - -struct tcf_proto_ops; - -struct tcf_proto { - struct tcf_proto *next; - void *root; - int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *); - __be16 protocol; - u32 prio; - void *data; - const struct tcf_proto_ops *ops; - struct tcf_chain *chain; - spinlock_t lock; - bool deleting; - refcount_t refcnt; - struct callback_head rcu; - struct hlist_node destroy_ht_node; +struct diag204_x_phys_cpu { + __u16 cpu_addr; + char reserved1[2]; + __u8 ctidx; + char reserved2[1]; + __u16 weight; + __u64 mgm_time; + char reserved3[80]; }; -struct tcf_result { - union { - struct { - long unsigned int class; - u32 classid; - }; - const struct tcf_proto *goto_tp; - struct { - bool ingress; - struct gnet_stats_queue *qstats; - }; - }; +struct diag204_x_part_block { + struct diag204_x_part_hdr hdr; + struct diag204_x_cpu_info cpus[0]; }; -struct tcf_walker; - -struct tcf_proto_ops { - struct list_head head; - char kind[16]; - int (*classify)(struct sk_buff *, const struct tcf_proto *, struct tcf_result *); - int (*init)(struct tcf_proto *); - void (*destroy)(struct tcf_proto *, bool, struct netlink_ext_ack *); - void * (*get)(struct tcf_proto *, u32); - void (*put)(struct tcf_proto *, void *); - int (*change)(struct net *, struct sk_buff *, struct tcf_proto *, 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); - int (*reoffload)(struct tcf_proto *, bool, flow_setup_cb_t *, void *, struct netlink_ext_ack *); - void (*hw_add)(struct tcf_proto *, void *); - void (*hw_del)(struct tcf_proto *, void *); - void (*bind_class)(void *, u32, long unsigned int, void *, long unsigned int); - void * (*tmplt_create)(struct net *, struct tcf_chain *, struct nlattr **, struct netlink_ext_ack *); - void (*tmplt_destroy)(void *); - int (*dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool); - int (*terse_dump)(struct net *, struct tcf_proto *, void *, struct sk_buff *, struct tcmsg *, bool); - int (*tmplt_dump)(struct sk_buff *, struct net *, void *); - struct module *owner; - int flags; +struct diag204_x_phys_block { + struct diag204_x_phys_hdr hdr; + struct diag204_x_phys_cpu cpus[0]; }; -struct tcf_chain { - struct mutex filter_chain_lock; - struct tcf_proto *filter_chain; - struct list_head list; - struct tcf_block *block; - u32 index; - unsigned int refcnt; - unsigned int action_refcnt; - bool explicitly_created; - bool flushing; - const struct tcf_proto_ops *tmplt_ops; - void *tmplt_priv; - struct callback_head rcu; +enum hdr_flags { + HDR_NOT_LPAR = 16, + HDR_STACK_INCM = 32, + HDR_STSI_UNAV = 64, + HDR_PERF_UNAV = 128, }; -struct sock_fprog_kern { - u16 len; - struct sock_filter *filter; +enum mac_validity { + MAC_NAME_VLD = 32, + MAC_ID_VLD = 64, + MAC_CNT_VLD = 128, }; -struct bpf_prog_stats { - u64_stats_t cnt; - u64_stats_t nsecs; - u64_stats_t misses; - struct u64_stats_sync syncp; - long: 64; +enum par_flag { + PAR_MT_EN = 128, }; -struct sk_filter { - refcount_t refcnt; - struct callback_head rcu; - struct bpf_prog *prog; +enum par_validity { + PAR_GRP_VLD = 8, + PAR_ID_VLD = 16, + PAR_ABS_VLD = 32, + PAR_WGHT_VLD = 64, + PAR_PCNT_VLD = 128, }; -struct stat64_emu31 { - long long unsigned int st_dev; - unsigned int __pad1; - u32 __st_ino; - unsigned int st_mode; - unsigned int st_nlink; - u32 st_uid; - u32 st_gid; - long long unsigned int st_rdev; - unsigned int __pad3; - long int st_size; - u32 st_blksize; - unsigned char __pad4[4]; - u32 __pad5; - u32 st_blocks; - u32 st_atime; - u32 __pad6; - u32 st_mtime; - u32 __pad7; - u32 st_ctime; - u32 __pad8; - long unsigned int st_ino; +struct hdr_sctn { + u8 infhflg1; + u8 infhflg2; + u8 infhval1; + u8 infhval2; + u8 reserved[3]; + u8 infhygct; + u16 infhtotl; + u16 infhdln; + u16 infmoff; + u16 infmlen; + u16 infpoff; + u16 infplen; + u16 infhoff1; + u16 infhlen1; + u16 infgoff1; + u16 infglen1; + u16 infhoff2; + u16 infhlen2; + u16 infgoff2; + u16 infglen2; + u16 infhoff3; + u16 infhlen3; + u16 infgoff3; + u16 infglen3; + u8 reserved2[4]; }; -struct mmap_arg_struct_emu31 { - compat_ulong_t addr; - compat_ulong_t len; - compat_ulong_t prot; - compat_ulong_t flags; - compat_ulong_t fd; - compat_ulong_t offset; +struct mac_sctn { + u8 infmflg1; + u8 infmflg2; + u8 infmval1; + u8 infmval2; + u16 infmscps; + u16 infmdcps; + u16 infmsifl; + u16 infmdifl; + char infmname[8]; + char infmtype[4]; + char infmmanu[16]; + char infmseq[16]; + char infmpman[4]; + u8 reserved[4]; }; -struct fadvise64_64_args { - int fd; - long long int offset; - long long int len; - int advice; +struct par_sctn { + u8 infpflg1; + u8 infpflg2; + u8 infpval1; + u8 infpval2; + u16 infppnum; + u16 infpscps; + u16 infpdcps; + u16 infpsifl; + u16 infpdifl; + u16 reserved; + char infppnam[8]; + u32 infpwbcp; + u32 infpabcp; + u32 infpwbif; + u32 infpabif; + char infplgnm[8]; + u32 infplgcp; + u32 infplgif; }; -struct ftrace_hotpatch_trampoline { - u16 brasl_opc; - s32 brasl_disp; - short: 16; - u64 rest_of_intercepted_function; - u64 interceptor; -} __attribute__((packed)); +struct sthyi_sctns { + struct hdr_sctn hdr; + struct mac_sctn mac; + struct par_sctn par; +}; -enum { - TRACE_FTRACE_BIT = 0, - TRACE_FTRACE_NMI_BIT = 1, - TRACE_FTRACE_IRQ_BIT = 2, - TRACE_FTRACE_SIRQ_BIT = 3, - 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, +struct cpu_inf { + u64 lpar_cap; + u64 lpar_grp_cap; + u64 lpar_weight; + u64 all_weight; + int cpu_num_ded; + int cpu_num_shd; }; -enum { - TRACE_CTX_NMI = 0, - TRACE_CTX_IRQ = 1, - TRACE_CTX_SOFTIRQ = 2, - TRACE_CTX_NORMAL = 3, - TRACE_CTX_TRANSITION = 4, +struct lpar_cpu_inf { + struct cpu_inf cp; + struct cpu_inf ifl; }; -struct dyn_arch_ftrace {}; +struct sthyi_info { + void *info; + long unsigned int end; +}; -struct dyn_ftrace { - long unsigned int ip; - long unsigned int flags; - struct dyn_arch_ftrace arch; +struct alt_instr { + s32 instr_offset; + s32 repl_offset; + u16 facility; + u8 instrlen; + u8 replacementlen; }; -struct ftrace_insn { +struct brcl_insn { u16 opc; s32 disp; } __attribute__((packed)); enum { - PSW_BITS_AMODE_24BIT = 0, - PSW_BITS_AMODE_31BIT = 1, - PSW_BITS_AMODE_64BIT = 3, + BRCL_EXPOLINE = 0, + BRASL_EXPOLINE = 1, }; -typedef u16 uprobe_opcode_t; +struct cpu { + int node_id; + int hotpluggable; + struct device dev; +}; -struct arch_uprobe { - union { - uprobe_opcode_t insn[3]; - uprobe_opcode_t ixol[3]; - }; - unsigned int saved_per: 1; - unsigned int saved_int_code; +struct sclp_core_entry { + u8 core_id; + u8 reserved0; + char: 4; + u8 sief2: 1; + u8 skey: 1; + char: 2; + char: 2; + u8 gpere: 1; + u8 siif: 1; + u8 sigpif: 1; + u8 reserved2[3]; + char: 2; + u8 ib: 1; + u8 cei: 1; + u8 reserved3[6]; + u8 type; + u8 reserved1; }; -enum rp_check { - RP_CHECK_CALL = 0, - RP_CHECK_CHAIN_CALL = 1, - RP_CHECK_RET = 2, +struct sclp_core_info { + unsigned int configured; + unsigned int standby; + unsigned int combined; + struct sclp_core_entry core[512]; }; -struct insn_ril { - u8 opc0; - u8 reg: 4; - u8 opc1: 4; - s32 disp; -} __attribute__((packed)); +enum { + ec_schedule = 0, + ec_call_function_single = 1, + ec_stop_cpu = 2, + ec_mcck_pending = 3, + ec_irq_work = 4, +}; -union split_register { - u64 u64; - u32 u32[2]; - u16 u16[4]; - s64 s64; - s32 s32[2]; - s16 s16[4]; +enum { + CPU_STATE_STANDBY = 0, + CPU_STATE_CONFIGURED = 1, }; -enum jump_label_type { - JUMP_LABEL_NOP = 0, - JUMP_LABEL_JMP = 1, +struct pcpu { + long unsigned int ec_mask; + long unsigned int ec_clk; + signed char state; + signed char polarization; + u16 address; }; -struct insn { - u16 opcode; - s32 offset; -} __attribute__((packed)); +typedef void pcpu_delegate_fn(void *); -typedef unsigned int __kernel_uid_t; +struct ec_creg_mask_parms { + long unsigned int orval; + long unsigned int andval; + int cr; +}; -typedef unsigned int __kernel_gid_t; +typedef __s64 Elf64_Sxword; -typedef struct { - __u32 fpc; - __u32 pad; - freg_t fprs[16]; -} s390_fp_regs; +struct elf64_rela { + Elf64_Addr r_offset; + Elf64_Xword r_info; + Elf64_Sxword r_addend; +}; -typedef struct { - psw_t psw; - long unsigned int gprs[16]; - unsigned int acrs[16]; - long unsigned int orig_gpr2; -} s390_regs; +typedef struct elf64_rela Elf64_Rela; -struct __kernel_old_timeval { - __kernel_long_t tv_sec; - __kernel_long_t tv_usec; +enum { + SD_BALANCE_NEWIDLE = 1, + SD_BALANCE_EXEC = 2, + SD_BALANCE_FORK = 4, + SD_BALANCE_WAKE = 8, + SD_WAKE_AFFINE = 16, + SD_ASYM_CPUCAPACITY = 32, + SD_ASYM_CPUCAPACITY_FULL = 64, + SD_SHARE_CPUCAPACITY = 128, + SD_SHARE_PKG_RESOURCES = 256, + SD_SERIALIZE = 512, + SD_ASYM_PACKING = 1024, + SD_PREFER_SIBLING = 2048, + SD_OVERLAP = 4096, + SD_NUMA = 8192, }; -enum iter_type { - ITER_IOVEC = 0, - ITER_KVEC = 1, - ITER_BVEC = 2, - ITER_PIPE = 3, - ITER_XARRAY = 4, - ITER_DISCARD = 5, -}; - -typedef s390_fp_regs elf_fpregset_t; - -typedef s390_regs elf_gregset_t; - -struct elf64_phdr { - Elf64_Word p_type; - Elf64_Word p_flags; - Elf64_Off p_offset; - Elf64_Addr p_vaddr; - Elf64_Addr p_paddr; - Elf64_Xword p_filesz; - Elf64_Xword p_memsz; - Elf64_Xword p_align; +struct sched_domain_shared { + atomic_t ref; + atomic_t nr_busy_cpus; + int has_idle_cores; + int nr_idle_scan; }; -typedef struct elf64_phdr Elf64_Phdr; +struct sched_group; -struct elf64_note { - Elf64_Word n_namesz; - Elf64_Word n_descsz; - Elf64_Word n_type; +struct sched_domain { + struct sched_domain *parent; + struct sched_domain *child; + struct sched_group *groups; + long unsigned int min_interval; + long unsigned int max_interval; + unsigned int busy_factor; + unsigned int imbalance_pct; + unsigned int cache_nice_tries; + int nohz_idle; + int flags; + int level; + long unsigned int last_balance; + unsigned int balance_interval; + unsigned int nr_balance_failed; + u64 max_newidle_lb_cost; + long unsigned int next_decay_max_lb_cost; + u64 avg_scan_cost; + unsigned int lb_count[3]; + unsigned int lb_failed[3]; + unsigned int lb_balanced[3]; + unsigned int lb_imbalance[3]; + unsigned int lb_gained[3]; + unsigned int lb_hot_gained[3]; + unsigned int lb_nobusyg[3]; + unsigned int lb_nobusyq[3]; + unsigned int alb_count; + unsigned int alb_failed; + unsigned int alb_pushed; + unsigned int sbe_count; + unsigned int sbe_balanced; + unsigned int sbe_pushed; + unsigned int sbf_count; + unsigned int sbf_balanced; + unsigned int sbf_pushed; + unsigned int ttwu_wake_remote; + unsigned int ttwu_move_affine; + unsigned int ttwu_move_balance; + char *name; + union { + void *private; + struct callback_head rcu; + }; + struct sched_domain_shared *shared; + unsigned int span_weight; + long unsigned int span[0]; }; -typedef struct elf64_note Elf64_Nhdr; +typedef const struct cpumask * (*sched_domain_mask_f)(int); -struct elf_siginfo { - int si_signo; - int si_code; - int si_errno; -}; +typedef int (*sched_domain_flags_f)(); -struct elf_prstatus_common { - struct elf_siginfo pr_info; - short int pr_cursig; - long unsigned int pr_sigpend; - long unsigned int pr_sighold; - pid_t pr_pid; - pid_t pr_ppid; - pid_t pr_pgrp; - pid_t pr_sid; - struct __kernel_old_timeval pr_utime; - struct __kernel_old_timeval pr_stime; - struct __kernel_old_timeval pr_cutime; - struct __kernel_old_timeval pr_cstime; -}; +struct sched_group_capacity; -struct elf_prstatus { - struct elf_prstatus_common common; - elf_gregset_t pr_reg; - int pr_fpvalid; +struct sd_data { + struct sched_domain **sd; + struct sched_domain_shared **sds; + struct sched_group **sg; + struct sched_group_capacity **sgc; }; -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 sched_domain_topology_level { + sched_domain_mask_f mask; + sched_domain_flags_f sd_flags; + int flags; + int numa_level; + struct sd_data data; + char *name; }; -struct save_area { - struct list_head list; - u64 psw[2]; - u64 ctrs[16]; - u64 gprs[16]; - u32 acrs[16]; - u64 fprs[16]; - u32 fpc; - u32 prefix; - u64 todpreg; - u64 timer; - u64 todcmp; - u64 vxrs_low[16]; - __vector128 vxrs_high[16]; +enum kobject_action { + KOBJ_ADD = 0, + KOBJ_REMOVE = 1, + KOBJ_CHANGE = 2, + KOBJ_MOVE = 3, + KOBJ_ONLINE = 4, + KOBJ_OFFLINE = 5, + KOBJ_BIND = 6, + KOBJ_UNBIND = 7, }; -struct parmarea { - long unsigned int ipl_device; - long unsigned int initrd_start; - long unsigned int initrd_size; - long unsigned int oldmem_base; - long unsigned int oldmem_size; - long unsigned int kernel_version; - long unsigned int max_command_line_size; - char pad1[72]; - char command_line[4096]; +enum { + TOPOLOGY_MODE_HW = 0, + TOPOLOGY_MODE_SINGLE = 1, + TOPOLOGY_MODE_PACKAGE = 2, + TOPOLOGY_MODE_UNINITIALIZED = 3, }; -struct s390_load_data { - void *kernel_buf; - long unsigned int kernel_mem; - struct parmarea *parm; - size_t memsz; - struct ipl_report *report; +struct mask_info { + struct mask_info *next; + unsigned char id; + cpumask_t mask; }; -enum pkey_id_type { - PKEY_ID_PGP = 0, - PKEY_ID_X509 = 1, - PKEY_ID_PKCS7 = 2, +enum meminit_context { + MEMINIT_EARLY = 0, + MEMINIT_HOTPLUG = 1, }; -struct module_signature { - u8 algo; - u8 hash; - u8 id_type; - u8 signer_len; - u8 key_id_len; - u8 __pad[3]; - __be32 sig_len; -}; +typedef struct { + int val[2]; +} __kernel_fsid_t; -enum key_being_used_for { - VERIFYING_MODULE_SIGNATURE = 0, - VERIFYING_FIRMWARE_SIGNATURE = 1, - VERIFYING_KEXEC_PE_SIGNATURE = 2, - VERIFYING_KEY_SIGNATURE = 3, - VERIFYING_KEY_SELF_SIGNATURE = 4, - VERIFYING_UNSPECIFIED_SIGNATURE = 5, - NR__KEY_BEING_USED_FOR = 6, +struct kstatfs { + long int f_type; + long int f_bsize; + u64 f_blocks; + u64 f_bfree; + u64 f_bavail; + u64 f_files; + u64 f_ffree; + __kernel_fsid_t f_fsid; + long int f_namelen; + long int f_frsize; + long int f_flags; + long int f_spare[4]; }; -struct cpumf_ctr_info { - u16 cfvn; - u16 auth_ctl; - u16 enable_ctl; - u16 act_ctl; - u16 max_cpu; - u16 csvn; - u16 max_cg; - u16 reserved1; - u32 reserved2[12]; -}; +typedef u32 compat_size_t; -enum cpumf_ctr_set { - CPUMF_CTR_SET_BASIC = 0, - CPUMF_CTR_SET_USER = 1, - CPUMF_CTR_SET_CRYPTO = 2, - CPUMF_CTR_SET_EXT = 3, - CPUMF_CTR_SET_MT_DIAG = 4, - CPUMF_CTR_SET_MAX = 5, -}; +typedef s32 compat_ssize_t; -struct cpu_cf_events { - struct cpumf_ctr_info info; - atomic_t ctr_set[5]; - atomic64_t alert; - u64 state; - u64 dev_state; - unsigned int flags; - size_t used; - size_t usedss; - unsigned char start[4096]; - unsigned char stop[4096]; - unsigned char data[4096]; - unsigned int sets; +struct stat64_emu31 { + long long unsigned int st_dev; + unsigned int __pad1; + u32 __st_ino; + unsigned int st_mode; + unsigned int st_nlink; + u32 st_uid; + u32 st_gid; + long long unsigned int st_rdev; + unsigned int __pad3; + long int st_size; + u32 st_blksize; + unsigned char __pad4[4]; + u32 __pad5; + u32 st_blocks; + u32 st_atime; + u32 __pad6; + u32 st_mtime; + u32 __pad7; + u32 st_ctime; + u32 __pad8; + long unsigned int st_ino; }; -struct perf_sf_sde_regs { - unsigned char in_guest: 1; - long unsigned int reserved: 63; +struct mmap_arg_struct_emu31 { + compat_ulong_t addr; + compat_ulong_t len; + compat_ulong_t prot; + compat_ulong_t flags; + compat_ulong_t fd; + compat_ulong_t offset; }; -struct perf_callchain_entry_ctx { - struct perf_callchain_entry *entry; - u32 max_stack; - u32 nr; - short int contexts; - bool contexts_maxed; +struct fadvise64_64_args { + int fd; + long long int offset; + long long int len; + int advice; }; -struct perf_pmu_events_attr { - struct device_attribute attr; - u64 id; - const char *event_str; -}; +typedef s32 compat_clock_t; -struct hws_qsi_info_block { - unsigned int b0_13: 14; - unsigned int as: 1; - unsigned int ad: 1; - unsigned int b16_21: 6; - unsigned int es: 1; - unsigned int ed: 1; - unsigned int b24_29: 6; - unsigned int cs: 1; - unsigned int cd: 1; - unsigned int bsdes: 16; - unsigned int dsdes: 16; - long unsigned int min_sampl_rate; - long unsigned int max_sampl_rate; - long unsigned int tear; - long unsigned int dear; - unsigned int rsvrd0: 24; - unsigned int ribm: 8; - unsigned int cpu_speed; - long long unsigned int rsvrd1; - long long unsigned int rsvrd2; -}; +typedef s32 compat_pid_t; -struct miscdevice { - int minor; - const char *name; - const struct file_operations *fops; - struct list_head list; - struct device *parent; - struct device *this_device; - const struct attribute_group **groups; - const char *nodename; - umode_t mode; -}; +typedef s32 compat_timer_t; -enum perf_type_id { - PERF_TYPE_HARDWARE = 0, - PERF_TYPE_SOFTWARE = 1, - PERF_TYPE_TRACEPOINT = 2, - PERF_TYPE_HW_CACHE = 3, - PERF_TYPE_RAW = 4, - PERF_TYPE_BREAKPOINT = 5, - PERF_TYPE_MAX = 6, -}; +typedef s32 compat_int_t; -enum perf_hw_id { - PERF_COUNT_HW_CPU_CYCLES = 0, - PERF_COUNT_HW_INSTRUCTIONS = 1, - PERF_COUNT_HW_CACHE_REFERENCES = 2, - PERF_COUNT_HW_CACHE_MISSES = 3, - PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4, - PERF_COUNT_HW_BRANCH_MISSES = 5, - PERF_COUNT_HW_BUS_CYCLES = 6, - PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7, - PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8, - PERF_COUNT_HW_REF_CPU_CYCLES = 9, - PERF_COUNT_HW_MAX = 10, -}; +typedef u32 __compat_uid32_t; -enum perf_event_sample_format { - PERF_SAMPLE_IP = 1, - PERF_SAMPLE_TID = 2, - PERF_SAMPLE_TIME = 4, - PERF_SAMPLE_ADDR = 8, - PERF_SAMPLE_READ = 16, - PERF_SAMPLE_CALLCHAIN = 32, - PERF_SAMPLE_ID = 64, - PERF_SAMPLE_CPU = 128, - PERF_SAMPLE_PERIOD = 256, - PERF_SAMPLE_STREAM_ID = 512, - PERF_SAMPLE_RAW = 1024, - PERF_SAMPLE_BRANCH_STACK = 2048, - PERF_SAMPLE_REGS_USER = 4096, - PERF_SAMPLE_STACK_USER = 8192, - PERF_SAMPLE_WEIGHT = 16384, - PERF_SAMPLE_DATA_SRC = 32768, - PERF_SAMPLE_IDENTIFIER = 65536, - PERF_SAMPLE_TRANSACTION = 131072, - PERF_SAMPLE_REGS_INTR = 262144, - PERF_SAMPLE_PHYS_ADDR = 524288, - PERF_SAMPLE_AUX = 1048576, - PERF_SAMPLE_CGROUP = 2097152, - PERF_SAMPLE_DATA_PAGE_SIZE = 4194304, - PERF_SAMPLE_CODE_PAGE_SIZE = 8388608, - PERF_SAMPLE_WEIGHT_STRUCT = 16777216, - PERF_SAMPLE_MAX = 33554432, - __PERF_SAMPLE_CALLCHAIN_EARLY = 0, -}; +typedef u32 compat_sigset_word; -struct s390_ctrset_start { - __u64 version; - __u64 data_bytes; - __u64 cpumask_len; - __u64 *cpumask; - __u64 counter_sets; +struct compat_sigaltstack { + compat_uptr_t ss_sp; + int ss_flags; + compat_size_t ss_size; }; -struct s390_ctrset_setdata { - __u32 set; - __u32 no_cnts; - __u64 cv[0]; -}; +typedef struct compat_sigaltstack compat_stack_t; -struct s390_ctrset_cpudata { - __u32 cpu_nr; - __u32 no_sets; - struct s390_ctrset_setdata data[0]; -}; +typedef struct { + compat_sigset_word sig[2]; +} compat_sigset_t; -struct s390_ctrset_read { - __u64 no_cpus; - struct s390_ctrset_cpudata data[0]; +union compat_sigval { + compat_int_t sival_int; + compat_uptr_t sival_ptr; }; -struct cf_ctrset_entry { - unsigned int def: 16; - unsigned int set: 16; - unsigned int ctr: 16; - unsigned int res1: 16; -}; +typedef union compat_sigval compat_sigval_t; -struct cf_trailer_entry { +struct compat_siginfo { + int si_signo; + int si_errno; + int si_code; union { + int _pad[29]; struct { - unsigned int clock_base: 1; - unsigned int speed: 1; - unsigned int mtda: 1; - unsigned int caca: 1; - unsigned int lcda: 1; - }; - long unsigned int flags; - }; - unsigned int cfvn: 16; - unsigned int csvn: 16; - unsigned int cpu_speed: 32; - long unsigned int timestamp; - union { + compat_pid_t _pid; + __compat_uid32_t _uid; + } _kill; struct { - long unsigned int progusage1; - long unsigned int progusage2; - long unsigned int progusage3; - long unsigned int tod_base; - }; - long unsigned int progusage[4]; - }; - unsigned int mach_type: 16; - unsigned int res1: 16; - unsigned int res2: 32; + compat_timer_t _tid; + int _overrun; + compat_sigval_t _sigval; + } _timer; + struct { + compat_pid_t _pid; + __compat_uid32_t _uid; + compat_sigval_t _sigval; + } _rt; + struct { + compat_pid_t _pid; + __compat_uid32_t _uid; + int _status; + compat_clock_t _utime; + compat_clock_t _stime; + } _sigchld; + struct { + compat_uptr_t _addr; + union { + int _trapno; + short int _addr_lsb; + struct { + char _dummy_bnd[4]; + compat_uptr_t _lower; + compat_uptr_t _upper; + } _addr_bnd; + struct { + char _dummy_pkey[4]; + u32 _pkey; + } _addr_pkey; + struct { + compat_ulong_t _data; + u32 _type; + u32 _flags; + } _perf; + }; + } _sigfault; + struct { + compat_long_t _band; + int _fd; + } _sigpoll; + struct { + compat_uptr_t _call_addr; + int _syscall; + unsigned int _arch; + } _sigsys; + } _sifields; }; -struct cfset_call_on_cpu_parm { - unsigned int sets; - atomic_t cpus_ack; -}; +typedef struct compat_siginfo compat_siginfo_t; -struct cfset_session { - struct list_head head; -}; +typedef union { + __u64 d; + __u32 f; +} freg_t32; -struct cfset_request { - long unsigned int ctrset; - cpumask_t mask; - struct list_head node; -}; +typedef struct { + unsigned int fpc; + unsigned int pad; + freg_t32 fprs[16]; +} _s390_fp_regs32; -struct perf_event_header { - __u32 type; - __u16 misc; - __u16 size; -}; +typedef struct { + __u32 mask; + __u32 addr; +} _psw_t32; -struct hws_lsctl_request_block { - unsigned int s: 1; - unsigned int h: 1; - long long unsigned int b2_53: 52; - unsigned int es: 1; - unsigned int ed: 1; - unsigned int b56_61: 6; - unsigned int cs: 1; - unsigned int cd: 1; - long unsigned int interval; - long unsigned int tear; - long unsigned int dear; - long unsigned int rsvrd1; - long unsigned int rsvrd2; - long unsigned int rsvrd3; - long unsigned int rsvrd4; -}; +typedef struct { + _psw_t32 psw; + __u32 gprs[16]; + __u32 acrs[16]; +} _s390_regs_common32; -struct hws_basic_entry { - unsigned int def: 16; - unsigned int R: 4; - unsigned int U: 4; - unsigned int z: 2; - unsigned int T: 1; - unsigned int W: 1; - unsigned int P: 1; - unsigned int AS: 2; - unsigned int I: 1; - unsigned int CL: 2; - unsigned int H: 1; - unsigned int LS: 1; - short: 12; - unsigned int prim_asn: 16; - long long unsigned int ia; - long long unsigned int gpp; - long long unsigned int hpp; -}; +typedef struct { + _s390_regs_common32 regs; + _s390_fp_regs32 fpregs; +} _sigregs32; -struct hws_trailer_entry { - union { - struct { - unsigned int f: 1; - unsigned int a: 1; - unsigned int t: 1; - int: 29; - unsigned int bsdes: 16; - unsigned int dsdes: 16; - }; - long long unsigned int flags; - }; - long long unsigned int overflow; - unsigned char timestamp[16]; - long long unsigned int reserved1; - long long unsigned int reserved2; - union { - struct { - unsigned int clock_base: 1; - long long unsigned int progusage1: 63; - long long unsigned int progusage2; - }; - long long unsigned int progusage[2]; - }; -}; +typedef struct { + __u32 gprs_high[16]; + __u64 vxrs_low[16]; + __vector128 vxrs_high[16]; + __u8 __reserved[128]; +} _sigregs_ext32; -struct sf_buffer { - long unsigned int *sdbt; - long unsigned int num_sdb; - long unsigned int num_sdbt; - long unsigned int *tail; +struct sigcontext32 { + __u32 oldmask[2]; + __u32 sregs; }; -struct aux_buffer { - struct sf_buffer sfb; - long unsigned int head; - long unsigned int alert_mark; - long unsigned int empty_mark; - long unsigned int *sdb_index; - long unsigned int *sdbt_index; +struct ucontext32 { + __u32 uc_flags; + __u32 uc_link; + compat_stack_t uc_stack; + _sigregs32 uc_mcontext; + compat_sigset_t uc_sigmask; + unsigned char __unused[120]; + _sigregs_ext32 uc_mcontext_ext; }; -struct cpu_hw_sf { - struct hws_qsi_info_block qsi; - struct hws_lsctl_request_block lsctl; - struct sf_buffer sfb; - unsigned int flags; - struct perf_event *event; - struct perf_output_handle handle; -}; +typedef struct { + __u8 callee_used_stack[96]; + struct sigcontext32 sc; + _sigregs32 sregs; + int signo; + _sigregs_ext32 sregs_ext; + __u16 svc_insn; +} sigframe32; -enum { - SF_CYCLES_BASIC_ATTR_IDX = 0, - SF_CYCLES_BASIC_DIAG_ATTR_IDX = 1, - SF_CYCLES_ATTR_MAX = 2, -}; +typedef struct { + __u8 callee_used_stack[96]; + __u16 svc_insn; + compat_siginfo_t info; + struct ucontext32 uc; +} rt_sigframe32; -enum perf_sample_regs_abi { - PERF_SAMPLE_REGS_ABI_NONE = 0, - PERF_SAMPLE_REGS_ABI_32 = 1, - PERF_SAMPLE_REGS_ABI_64 = 2, +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; }; -enum perf_event_s390_regs { - PERF_REG_S390_R0 = 0, - PERF_REG_S390_R1 = 1, - PERF_REG_S390_R2 = 2, - PERF_REG_S390_R3 = 3, - PERF_REG_S390_R4 = 4, - PERF_REG_S390_R5 = 5, - PERF_REG_S390_R6 = 6, - PERF_REG_S390_R7 = 7, - PERF_REG_S390_R8 = 8, - PERF_REG_S390_R9 = 9, - PERF_REG_S390_R10 = 10, - PERF_REG_S390_R11 = 11, - PERF_REG_S390_R12 = 12, - PERF_REG_S390_R13 = 13, - PERF_REG_S390_R14 = 14, - PERF_REG_S390_R15 = 15, - PERF_REG_S390_FP0 = 16, - PERF_REG_S390_FP1 = 17, - PERF_REG_S390_FP2 = 18, - PERF_REG_S390_FP3 = 19, - PERF_REG_S390_FP4 = 20, - PERF_REG_S390_FP5 = 21, - PERF_REG_S390_FP6 = 22, - PERF_REG_S390_FP7 = 23, - PERF_REG_S390_FP8 = 24, - PERF_REG_S390_FP9 = 25, - PERF_REG_S390_FP10 = 26, - PERF_REG_S390_FP11 = 27, - PERF_REG_S390_FP12 = 28, - PERF_REG_S390_FP13 = 29, - PERF_REG_S390_FP14 = 30, - PERF_REG_S390_FP15 = 31, - PERF_REG_S390_MASK = 32, - PERF_REG_S390_PC = 33, - PERF_REG_S390_MAX = 34, -}; +typedef bool (*stack_trace_consume_fn)(void *, long unsigned int); -struct gmap { - struct list_head list; - struct list_head crst_list; - struct mm_struct *mm; - struct xarray guest_to_host; - struct xarray host_to_guest; - spinlock_t guest_table_lock; - refcount_t ref_count; - long unsigned int *table; - long unsigned int asce; - long unsigned int asce_end; - void *private; - bool pfault_enabled; - long unsigned int guest_handle; - struct xarray host_to_rmap; - struct list_head children; - struct list_head pt_list; - spinlock_t shadow_lock; - struct gmap *parent; - long unsigned int orig_asce; - int edat_level; - bool removed; - bool initialized; +struct freelist_node { + atomic_t refs; + struct freelist_node *next; }; -struct uv_cb_header { - u16 len; - u16 cmd; - u16 rc; - u16 rrc; +struct freelist_head { + struct freelist_node *head; }; -struct uv_cb_init { - struct uv_cb_header header; - u64 reserved08[2]; - u64 stor_origin; - u64 stor_len; - u64 reserved28[4]; -}; +typedef u16 kprobe_opcode_t; -struct uv_cb_cts { - struct uv_cb_header header; - u64 reserved08[2]; - u64 guest_handle; - u64 gaddr; +struct arch_specific_insn { + kprobe_opcode_t *insn; }; -struct uv_cb_cfs { - struct uv_cb_header header; - u64 reserved08[2]; - u64 paddr; +struct kprobe; + +struct prev_kprobe { + struct kprobe *kp; + long unsigned int status; }; -struct uv_info { - long unsigned int inst_calls_list[4]; - long unsigned int uv_base_stor_len; - long unsigned int guest_base_stor_len; - long unsigned int guest_virt_base_stor_len; - long unsigned int guest_virt_var_stor_len; - long unsigned int guest_cpu_stor_len; - long unsigned int max_sec_stor_addr; - unsigned int max_num_sec_conf; - short unsigned int max_guest_cpu_id; - long unsigned int uv_feature_indications; +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 trace_event_raw_s390_diagnose { - struct trace_entry ent; - short unsigned int nr; - char __data[0]; +struct kprobe_ctlblk { + long unsigned int kprobe_status; + long unsigned int kprobe_saved_imask; + long unsigned int kprobe_saved_ctl[3]; + struct prev_kprobe prev_kprobe; }; -struct trace_event_data_offsets_s390_diagnose {}; +struct kretprobe_instance; -typedef void (*btf_trace_s390_diagnose)(void *, short unsigned int); +typedef int (*kretprobe_handler_t)(struct kretprobe_instance *, struct pt_regs *); -struct vmem_altmap; +struct kretprobe_holder; -struct mhp_params { - struct vmem_altmap *altmap; - pgprot_t pgprot; +struct kretprobe_instance { + union { + struct freelist_node freelist; + struct callback_head rcu; + }; + struct llist_node llist; + struct kretprobe_holder *rph; + kprobe_opcode_t *ret_addr; + void *fp; + char data[0]; }; -struct uv_cb_share { - struct uv_cb_header header; - u64 reserved08[3]; - u64 paddr; - u64 reserved28; +struct kretprobe; + +struct kretprobe_holder { + struct kretprobe *rp; + refcount_t ref; }; -struct io_tlb_slot; +struct kretprobe { + struct kprobe kp; + kretprobe_handler_t handler; + kretprobe_handler_t entry_handler; + int maxactive; + int nmissed; + size_t data_size; + struct freelist_head freelist; + struct kretprobe_holder *rph; +}; -struct io_tlb_mem { - phys_addr_t start; - phys_addr_t end; - void *vaddr; - 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 kretprobe_blackpoint { + const char *name; + void *addr; }; -enum swiotlb_force { - SWIOTLB_NORMAL = 0, - SWIOTLB_FORCE = 1, - SWIOTLB_NO_FORCE = 2, +struct kprobe_insn_cache { + struct mutex mutex; + void * (*alloc)(); + void (*free)(void *); + const char *sym; + struct list_head pages; + size_t insn_size; + int nr_garbage; }; -struct io_tlb_slot { - phys_addr_t orig_addr; - size_t alloc_size; - unsigned int list; +struct die_args { + struct pt_regs *regs; + const char *str; + long int err; + int trapnr; + int signr; }; -struct s390_cma_mem_data { - long unsigned int start; - long unsigned int end; +struct swap_insn_args { + struct kprobe *p; + unsigned int arm_kprobe: 1; }; -struct cma; +struct ftrace_hotpatch_trampoline { + u16 brasl_opc; + s32 brasl_disp; + long: 0; + u64 rest_of_intercepted_function; + u64 interceptor; +} __attribute__((packed)); -struct qrange { - long unsigned int start; - long unsigned int end; +enum { + TRACE_FTRACE_BIT = 0, + TRACE_FTRACE_NMI_BIT = 1, + TRACE_FTRACE_IRQ_BIT = 2, + TRACE_FTRACE_SIRQ_BIT = 3, + 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, }; -struct qout64 { - long unsigned int segstart; - long unsigned int segend; - int segcnt; - int segrcnt; - struct qrange range[6]; +enum { + TRACE_CTX_NMI = 0, + TRACE_CTX_IRQ = 1, + TRACE_CTX_SOFTIRQ = 2, + TRACE_CTX_NORMAL = 3, + TRACE_CTX_TRANSITION = 4, }; -struct qin64 { - char qopcode; - char rsrv1[3]; - char qrcode; - char rsrv2[3]; - char qname[8]; - unsigned int qoutptr; - short int qoutlen; -}; +struct dyn_arch_ftrace {}; -struct dcss_segment { - struct list_head list; - char dcss_name[8]; - char res_name[16]; - long unsigned int start_addr; - long unsigned int end; - refcount_t ref_count; - int do_nonshared; - unsigned int vm_segtype; - struct qrange range[6]; - int segcnt; - struct resource *res; +struct dyn_ftrace { + long unsigned int ip; + long unsigned int flags; + struct dyn_arch_ftrace arch; }; -enum uv_feat_ind { - BIT_UV_FEAT_MISC = 0, - BIT_UV_FEAT_AIV = 1, -}; +struct ftrace_insn { + u16 opc; + s32 disp; +} __attribute__((packed)); -enum fault_type { - KERNEL_FAULT = 0, - USER_FAULT = 1, - GMAP_FAULT = 2, -}; +typedef unsigned int __kernel_uid_t; -struct pfault_refbk { - u16 refdiagc; - u16 reffcode; - u16 refdwlen; - u16 refversn; - u64 refgaddr; - u64 refselmk; - u64 refcmpmk; - u64 reserved; -}; +typedef unsigned int __kernel_gid_t; -struct vm_unmapped_area_info { - long unsigned int flags; - long unsigned int length; - long unsigned int low_limit; - long unsigned int high_limit; - long unsigned int align_mask; - long unsigned int align_offset; +typedef struct { + psw_t psw; + long unsigned int gprs[16]; + unsigned int acrs[16]; + long unsigned int orig_gpr2; +} s390_regs; + +struct __kernel_old_timeval { + __kernel_long_t tv_sec; + __kernel_long_t tv_usec; }; -typedef struct { - long unsigned int p4d; -} p4d_t; +typedef s390_fp_regs elf_fpregset_t; -struct range { - u64 start; - u64 end; +typedef s390_regs elf_gregset_t; + +struct elf64_phdr { + Elf64_Word p_type; + Elf64_Word p_flags; + Elf64_Off p_offset; + Elf64_Addr p_vaddr; + Elf64_Addr p_paddr; + Elf64_Xword p_filesz; + Elf64_Xword p_memsz; + Elf64_Xword p_align; }; -typedef struct { - long unsigned int pgste; -} pgste_t; +typedef struct elf64_phdr Elf64_Phdr; -typedef struct { - long unsigned int val; -} swp_entry_t; +struct elf64_note { + Elf64_Word n_namesz; + Elf64_Word n_descsz; + Elf64_Word n_type; +}; -struct hstate; +typedef struct elf64_note Elf64_Nhdr; -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 elf_siginfo { + int si_signo; + int si_code; + int si_errno; }; -struct hstate { - struct mutex resize_lock; - int next_nid_to_alloc; - int next_nid_to_free; - unsigned int order; - unsigned int demote_order; - long unsigned int mask; - long unsigned int max_huge_pages; - long unsigned int nr_huge_pages; - long unsigned int free_huge_pages; - long unsigned int resv_huge_pages; - long unsigned int surplus_huge_pages; - long unsigned int nr_overcommit_huge_pages; - struct list_head hugepage_activelist; - struct list_head hugepage_freelists[2]; - unsigned int max_huge_pages_node[2]; - unsigned int nr_huge_pages_node[2]; - unsigned int free_huge_pages_node[2]; - unsigned int surplus_huge_pages_node[2]; - char name[32]; -}; - -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; -}; - -struct ptdump_range { - long unsigned int start; - long unsigned int end; -}; - -struct ptdump_state { - void (*note_page)(struct ptdump_state *, long unsigned int, int, u64); - void (*effective_prot)(struct ptdump_state *, int, u64); - const struct ptdump_range *range; -}; - -struct addr_marker { - long unsigned int start_address; - const char *name; +struct elf_prstatus_common { + struct elf_siginfo pr_info; + short int pr_cursig; + long unsigned int pr_sigpend; + long unsigned int pr_sighold; + pid_t pr_pid; + pid_t pr_ppid; + pid_t pr_pgrp; + pid_t pr_sid; + struct __kernel_old_timeval pr_utime; + struct __kernel_old_timeval pr_stime; + struct __kernel_old_timeval pr_cutime; + struct __kernel_old_timeval pr_cstime; }; -enum address_markers_idx { - IDENTITY_BEFORE_NR = 0, - IDENTITY_BEFORE_END_NR = 1, - KERNEL_START_NR = 2, - KERNEL_END_NR = 3, - KFENCE_START_NR = 4, - KFENCE_END_NR = 5, - IDENTITY_AFTER_NR = 6, - IDENTITY_AFTER_END_NR = 7, - VMEMMAP_NR = 8, - VMEMMAP_END_NR = 9, - VMALLOC_NR = 10, - VMALLOC_END_NR = 11, - MODULES_NR = 12, - MODULES_END_NR = 13, +struct elf_prstatus { + struct elf_prstatus_common common; + elf_gregset_t pr_reg; + int pr_fpvalid; }; -struct pg_state { - struct ptdump_state ptdump; - struct seq_file *seq; - int level; - unsigned int current_prot; - bool check_wx; - long unsigned int wx_pages; - long unsigned int start_address; - const struct addr_marker *marker; +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 mmu_table_batch { - struct callback_head rcu; - unsigned int nr; - void *tables[0]; +struct save_area { + struct list_head list; + u64 psw[2]; + u64 ctrs[16]; + u64 gprs[16]; + u32 acrs[16]; + u64 fprs[16]; + u32 fpc; + u32 prefix; + u32 todpreg; + u64 timer; + u64 todcmp; + u64 vxrs_low[16]; + __vector128 vxrs_high[16]; }; -struct mmu_gather { - struct mm_struct *mm; - struct mmu_table_batch *batch; - long unsigned int start; - long unsigned int end; - unsigned int fullmm: 1; - unsigned int need_flush_all: 1; - unsigned int freed_tables: 1; - unsigned int cleared_ptes: 1; - unsigned int cleared_pmds: 1; - unsigned int cleared_puds: 1; - unsigned int cleared_p4ds: 1; - unsigned int vma_exec: 1; - unsigned int vma_huge: 1; - unsigned int batch_count; +enum { + PSW_BITS_AMODE_24BIT = 0, + PSW_BITS_AMODE_31BIT = 1, + PSW_BITS_AMODE_64BIT = 3, }; -typedef struct {} local_lock_t; +typedef u16 uprobe_opcode_t; -struct xa_node { - unsigned char shift; - unsigned char offset; - unsigned char count; - unsigned char nr_values; - struct xa_node *parent; - struct xarray *array; - union { - struct list_head private_list; - struct callback_head callback_head; - }; - void *slots[64]; +struct arch_uprobe { union { - long unsigned int tags[3]; - long unsigned int marks[3]; + uprobe_opcode_t insn[3]; + uprobe_opcode_t ixol[3]; }; + unsigned int saved_per: 1; + unsigned int saved_int_code; }; -struct radix_tree_preload { - local_lock_t lock; - unsigned int nr; - struct xa_node *nodes; -}; - -struct radix_tree_iter { - long unsigned int index; - long unsigned int next_index; - long unsigned int tags; - struct xa_node *node; +enum rp_check { + RP_CHECK_CALL = 0, + RP_CHECK_CHAIN_CALL = 1, + RP_CHECK_RET = 2, }; -enum { - RADIX_TREE_ITER_TAG_MASK = 15, - RADIX_TREE_ITER_TAGGED = 16, - RADIX_TREE_ITER_CONTIG = 32, -}; +struct insn_ril { + u8 opc0; + u8 reg: 4; + u8 opc1: 4; + s32 disp; +} __attribute__((packed)); -struct gmap_rmap { - struct gmap_rmap *next; - long unsigned int raddr; +union split_register { + u64 u64; + u32 u32[2]; + u16 u16[4]; + s64 s64; + s32 s32[2]; + s16 s16[4]; }; -struct gmap_notifier { - struct list_head list; - struct callback_head rcu; - void (*notifier_call)(struct gmap *, long unsigned int, long unsigned int); +enum jump_label_type { + JUMP_LABEL_NOP = 0, + JUMP_LABEL_JMP = 1, }; -struct mm_walk; +struct insn { + u16 opcode; + s32 offset; +} __attribute__((packed)); -struct mm_walk_ops { - int (*pgd_entry)(pgd_t *, long unsigned int, long unsigned int, struct mm_walk *); - int (*p4d_entry)(p4d_t *, long unsigned int, long unsigned int, struct mm_walk *); - int (*pud_entry)(pud_t *, long unsigned int, long unsigned int, struct mm_walk *); - int (*pmd_entry)(pmd_t *, long unsigned int, long unsigned int, struct mm_walk *); - int (*pte_entry)(pte_t *, long unsigned int, long unsigned int, struct mm_walk *); - int (*pte_hole)(long unsigned int, long unsigned int, int, struct mm_walk *); - int (*hugetlb_entry)(pte_t *, long unsigned int, long unsigned int, long unsigned int, struct mm_walk *); - int (*test_walk)(long unsigned int, long unsigned int, struct mm_walk *); - int (*pre_vma)(long unsigned int, long unsigned int, struct mm_walk *); - void (*post_vma)(struct mm_walk *); +struct perf_sf_sde_regs { + unsigned char in_guest: 1; + long unsigned int reserved: 63; }; -enum page_walk_action { - ACTION_SUBTREE = 0, - ACTION_CONTINUE = 1, - ACTION_AGAIN = 2, +struct perf_callchain_entry_ctx { + struct perf_callchain_entry *entry; + u32 max_stack; + u32 nr; + short int contexts; + bool contexts_maxed; }; -struct mm_walk { - const struct mm_walk_ops *ops; - struct mm_struct *mm; - pgd_t *pgd; - struct vm_area_struct *vma; - enum page_walk_action action; - bool no_vma; - void *private; +struct perf_pmu_events_attr { + struct device_attribute attr; + u64 id; + const char *event_str; }; -struct diag204_info_blk_hdr { - __u8 npar; - __u8 flags; - __u16 tslice; - __u16 phys_cpus; - __u16 this_part; - __u64 curtod; +struct cpumf_ctr_info { + u16 cfvn; + u16 auth_ctl; + u16 enable_ctl; + u16 act_ctl; + u16 max_cpu; + u16 csvn; + u16 max_cg; + u16 reserved1; + u32 reserved2[12]; }; -struct diag204_part_hdr { - __u8 pn; - __u8 cpus; - char reserved[6]; - char part_name[8]; +struct hws_qsi_info_block { + unsigned int b0_13: 14; + unsigned int as: 1; + unsigned int ad: 1; + unsigned int b16_21: 6; + unsigned int es: 1; + unsigned int ed: 1; + unsigned int b24_29: 6; + unsigned int cs: 1; + unsigned int cd: 1; + unsigned int bsdes: 16; + unsigned int dsdes: 16; + long unsigned int min_sampl_rate; + long unsigned int max_sampl_rate; + long unsigned int tear; + long unsigned int dear; + unsigned int rsvrd0: 24; + unsigned int ribm: 8; + unsigned int cpu_speed; + long long unsigned int rsvrd1; + long long unsigned int rsvrd2; }; -struct diag204_cpu_info { - __u16 cpu_addr; - char reserved1[2]; - __u8 ctidx; - __u8 cflag; - __u16 weight; - __u64 acc_time; - __u64 lp_time; +enum cpumf_ctr_set { + CPUMF_CTR_SET_BASIC = 0, + CPUMF_CTR_SET_USER = 1, + CPUMF_CTR_SET_CRYPTO = 2, + CPUMF_CTR_SET_EXT = 3, + CPUMF_CTR_SET_MT_DIAG = 4, + CPUMF_CTR_SET_MAX = 5, }; -struct diag204_phys_hdr { - char reserved1[1]; - __u8 cpus; - char reserved2[6]; - char mgm_name[8]; +struct cpu_cf_events { + struct cpumf_ctr_info info; + atomic_t ctr_set[5]; + atomic64_t alert; + u64 state; + u64 dev_state; + unsigned int flags; + size_t used; + size_t usedss; + unsigned char start[4096]; + unsigned char stop[4096]; + unsigned char data[4096]; + unsigned int sets; }; -struct diag204_phys_cpu { - __u16 cpu_addr; - char reserved1[2]; - __u8 ctidx; - char reserved2[3]; - __u64 mgm_time; - char reserved3[8]; +struct miscdevice { + int minor; + const char *name; + const struct file_operations *fops; + struct list_head list; + struct device *parent; + struct device *this_device; + const struct attribute_group **groups; + const char *nodename; + umode_t mode; }; -struct hypfs_dbfs_file { - const char *name; - int (*data_create)(void **, void **, size_t *); - void (*data_free)(const void *); - long int (*unlocked_ioctl)(struct file *, unsigned int, long unsigned int); - struct mutex lock; - struct dentry *dentry; +enum perf_type_id { + PERF_TYPE_HARDWARE = 0, + PERF_TYPE_SOFTWARE = 1, + PERF_TYPE_TRACEPOINT = 2, + PERF_TYPE_HW_CACHE = 3, + PERF_TYPE_RAW = 4, + PERF_TYPE_BREAKPOINT = 5, + PERF_TYPE_MAX = 6, }; -struct dbfs_d204_hdr { - u64 len; - u16 version; - u8 sc; - char reserved[53]; +enum perf_hw_id { + PERF_COUNT_HW_CPU_CYCLES = 0, + PERF_COUNT_HW_INSTRUCTIONS = 1, + PERF_COUNT_HW_CACHE_REFERENCES = 2, + PERF_COUNT_HW_CACHE_MISSES = 3, + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4, + PERF_COUNT_HW_BRANCH_MISSES = 5, + PERF_COUNT_HW_BUS_CYCLES = 6, + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7, + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8, + PERF_COUNT_HW_REF_CPU_CYCLES = 9, + PERF_COUNT_HW_MAX = 10, }; -struct dbfs_d204 { - struct dbfs_d204_hdr hdr; - char buf[0]; +enum perf_event_sample_format { + PERF_SAMPLE_IP = 1, + PERF_SAMPLE_TID = 2, + PERF_SAMPLE_TIME = 4, + PERF_SAMPLE_ADDR = 8, + PERF_SAMPLE_READ = 16, + PERF_SAMPLE_CALLCHAIN = 32, + PERF_SAMPLE_ID = 64, + PERF_SAMPLE_CPU = 128, + PERF_SAMPLE_PERIOD = 256, + PERF_SAMPLE_STREAM_ID = 512, + PERF_SAMPLE_RAW = 1024, + PERF_SAMPLE_BRANCH_STACK = 2048, + PERF_SAMPLE_REGS_USER = 4096, + PERF_SAMPLE_STACK_USER = 8192, + PERF_SAMPLE_WEIGHT = 16384, + PERF_SAMPLE_DATA_SRC = 32768, + PERF_SAMPLE_IDENTIFIER = 65536, + PERF_SAMPLE_TRANSACTION = 131072, + PERF_SAMPLE_REGS_INTR = 262144, + PERF_SAMPLE_PHYS_ADDR = 524288, + PERF_SAMPLE_AUX = 1048576, + PERF_SAMPLE_CGROUP = 2097152, + PERF_SAMPLE_DATA_PAGE_SIZE = 4194304, + PERF_SAMPLE_CODE_PAGE_SIZE = 8388608, + PERF_SAMPLE_WEIGHT_STRUCT = 16777216, + PERF_SAMPLE_MAX = 33554432, + __PERF_SAMPLE_CALLCHAIN_EARLY = 0, }; -struct x_info_blk_hdr; +struct s390_ctrset_start { + __u64 version; + __u64 data_bytes; + __u64 cpumask_len; + __u64 *cpumask; + __u64 counter_sets; +}; -struct hypfs_sb_info { - kuid_t uid; - kgid_t gid; - struct dentry *update_file; - time64_t last_update; - struct mutex lock; +struct s390_ctrset_setdata { + __u32 set; + __u32 no_cnts; + __u64 cv[0]; }; -enum { - Opt_uid = 0, - Opt_gid = 1, +struct s390_ctrset_cpudata { + __u32 cpu_nr; + __u32 no_sets; + struct s390_ctrset_setdata data[0]; }; -struct diag2fc_data { - __u32 version; - __u32 flags; - __u64 used_cpu; - __u64 el_time; - __u64 mem_min_kb; - __u64 mem_max_kb; - __u64 mem_share_kb; - __u64 mem_used_kb; - __u32 pcpus; - __u32 lcpus; - __u32 vcpus; - __u32 ocpus; - __u32 cpu_max; - __u32 cpu_shares; - __u32 cpu_use_samp; - __u32 cpu_delay_samp; - __u32 page_wait_samp; - __u32 idle_samp; - __u32 other_samp; - __u32 total_samp; - char guest_name[8]; +struct s390_ctrset_read { + __u64 no_cpus; + struct s390_ctrset_cpudata data[0]; }; -struct diag2fc_parm_list { - char userid[8]; - char aci_grp[8]; - __u64 addr; - __u32 size; - __u32 fmt; +struct cf_ctrset_entry { + unsigned int def: 16; + unsigned int set: 16; + unsigned int ctr: 16; + unsigned int res1: 16; }; -struct dbfs_d2fc_hdr { - u64 len; - u16 version; - union tod_clock tod_ext; - u64 count; - char reserved[30]; -} __attribute__((packed)); +struct cf_trailer_entry { + union { + struct { + unsigned int clock_base: 1; + unsigned int speed: 1; + unsigned int mtda: 1; + unsigned int caca: 1; + unsigned int lcda: 1; + }; + long unsigned int flags; + }; + unsigned int cfvn: 16; + unsigned int csvn: 16; + unsigned int cpu_speed: 32; + long unsigned int timestamp; + union { + struct { + long unsigned int progusage1; + long unsigned int progusage2; + long unsigned int progusage3; + long unsigned int tod_base; + }; + long unsigned int progusage[4]; + }; + unsigned int mach_type: 16; + unsigned int res1: 16; + unsigned int res2: 32; +}; -struct dbfs_d2fc { - struct dbfs_d2fc_hdr hdr; - char buf[0]; +struct cfset_call_on_cpu_parm { + unsigned int sets; + atomic_t cpus_ack; }; -struct hypfs_dbfs_data { - void *buf; - void *buf_free_ptr; - size_t size; - struct hypfs_dbfs_file *dbfs_file; +struct cfset_request { + long unsigned int ctrset; + cpumask_t mask; }; -struct hypfs_diag304 { - __u32 args[2]; - __u64 data; - __u64 rc; +struct perf_event_header { + __u32 type; + __u16 misc; + __u16 size; }; -struct sysinfo { - __kernel_long_t uptime; - __kernel_ulong_t loads[3]; - __kernel_ulong_t totalram; - __kernel_ulong_t freeram; - __kernel_ulong_t sharedram; - __kernel_ulong_t bufferram; - __kernel_ulong_t totalswap; - __kernel_ulong_t freeswap; - __u16 procs; - __u16 pad; - __kernel_ulong_t totalhigh; - __kernel_ulong_t freehigh; - __u32 mem_unit; - char _f[0]; +struct hws_lsctl_request_block { + unsigned int s: 1; + unsigned int h: 1; + long long unsigned int b2_53: 52; + unsigned int es: 1; + unsigned int ed: 1; + unsigned int b56_61: 6; + unsigned int cs: 1; + unsigned int cd: 1; + long unsigned int interval; + long unsigned int tear; + long unsigned int dear; + long unsigned int rsvrd1; + long unsigned int rsvrd2; + long unsigned int rsvrd3; + long unsigned int rsvrd4; }; -struct pdev_archdata {}; - -struct mfd_cell; +struct hws_basic_entry { + unsigned int def: 16; + unsigned int R: 4; + unsigned int U: 4; + unsigned int z: 2; + unsigned int T: 1; + unsigned int W: 1; + unsigned int P: 1; + unsigned int AS: 2; + unsigned int I: 1; + unsigned int CL: 2; + unsigned int H: 1; + unsigned int LS: 1; + short: 12; + unsigned int prim_asn: 16; + long long unsigned int ia; + long long unsigned int gpp; + long long unsigned int hpp; +}; -struct platform_device_id; +union hws_trailer_header { + struct { + unsigned int f: 1; + unsigned int a: 1; + unsigned int t: 1; + int: 29; + unsigned int bsdes: 16; + unsigned int dsdes: 16; + long long unsigned int overflow; + }; + __int128 unsigned val; +}; -struct platform_device { - const char *name; - int id; - bool id_auto; - struct device dev; - u64 platform_dma_mask; - struct device_dma_parameters dma_parms; - u32 num_resources; - struct resource *resource; - const struct platform_device_id *id_entry; - char *driver_override; - struct mfd_cell *mfd_cell; - struct pdev_archdata archdata; +struct hws_trailer_entry { + union hws_trailer_header header; + unsigned char timestamp[16]; + long long unsigned int reserved1; + long long unsigned int reserved2; + union { + struct { + unsigned int clock_base: 1; + long long unsigned int progusage1: 63; + long long unsigned int progusage2; + }; + long long unsigned int progusage[2]; + }; }; -struct platform_device_id { - char name[20]; - kernel_ulong_t driver_data; +struct sf_buffer { + long unsigned int *sdbt; + long unsigned int num_sdb; + long unsigned int num_sdbt; + long unsigned int *tail; }; -struct property_entry; +struct aux_buffer { + struct sf_buffer sfb; + long unsigned int head; + long unsigned int alert_mark; + long unsigned int empty_mark; + long unsigned int *sdb_index; + long unsigned int *sdbt_index; +}; -struct platform_device_info { - struct device *parent; - struct fwnode_handle *fwnode; - bool of_node_reused; - const char *name; - int id; - const struct resource *res; - unsigned int num_res; - const void *data; - size_t size_data; - u64 dma_mask; - const struct property_entry *properties; +struct cpu_hw_sf { + struct hws_qsi_info_block qsi; + struct hws_lsctl_request_block lsctl; + struct sf_buffer sfb; + unsigned int flags; + struct perf_event *event; + struct perf_output_handle handle; }; -enum dev_prop_type { - DEV_PROP_U8 = 0, - DEV_PROP_U16 = 1, - DEV_PROP_U32 = 2, - DEV_PROP_U64 = 3, - DEV_PROP_STRING = 4, - DEV_PROP_REF = 5, +enum { + SF_CYCLES_BASIC_ATTR_IDX = 0, + SF_CYCLES_BASIC_DIAG_ATTR_IDX = 1, + SF_CYCLES_ATTR_MAX = 2, }; -struct property_entry { - const char *name; - size_t length; - bool is_inline; - enum dev_prop_type type; - union { - const void *pointer; - union { - u8 u8_data[8]; - u16 u16_data[4]; - u32 u32_data[2]; - u64 u64_data[1]; - const char *str[1]; - } value; - }; +enum perf_sample_regs_abi { + PERF_SAMPLE_REGS_ABI_NONE = 0, + PERF_SAMPLE_REGS_ABI_32 = 1, + PERF_SAMPLE_REGS_ABI_64 = 2, }; -struct platform_driver { - int (*probe)(struct platform_device *); - int (*remove)(struct platform_device *); - void (*shutdown)(struct platform_device *); - int (*suspend)(struct platform_device *, pm_message_t); - int (*resume)(struct platform_device *); - struct device_driver driver; - const struct platform_device_id *id_table; - bool prevent_deferred_probe; +enum perf_event_s390_regs { + PERF_REG_S390_R0 = 0, + PERF_REG_S390_R1 = 1, + PERF_REG_S390_R2 = 2, + PERF_REG_S390_R3 = 3, + PERF_REG_S390_R4 = 4, + PERF_REG_S390_R5 = 5, + PERF_REG_S390_R6 = 6, + PERF_REG_S390_R7 = 7, + PERF_REG_S390_R8 = 8, + PERF_REG_S390_R9 = 9, + PERF_REG_S390_R10 = 10, + PERF_REG_S390_R11 = 11, + PERF_REG_S390_R12 = 12, + PERF_REG_S390_R13 = 13, + PERF_REG_S390_R14 = 14, + PERF_REG_S390_R15 = 15, + PERF_REG_S390_FP0 = 16, + PERF_REG_S390_FP1 = 17, + PERF_REG_S390_FP2 = 18, + PERF_REG_S390_FP3 = 19, + PERF_REG_S390_FP4 = 20, + PERF_REG_S390_FP5 = 21, + PERF_REG_S390_FP6 = 22, + PERF_REG_S390_FP7 = 23, + PERF_REG_S390_FP8 = 24, + PERF_REG_S390_FP9 = 25, + PERF_REG_S390_FP10 = 26, + PERF_REG_S390_FP11 = 27, + PERF_REG_S390_FP12 = 28, + PERF_REG_S390_FP13 = 29, + PERF_REG_S390_FP14 = 30, + PERF_REG_S390_FP15 = 31, + PERF_REG_S390_MASK = 32, + PERF_REG_S390_PC = 33, + PERF_REG_S390_MAX = 34, }; -struct appldata_parameter_list { - u16 diag; - u8 function; - u8 parlist_length; - u32 unused01; - u16 reserved; - u16 buffer_length; - u32 unused02; - u64 product_id_addr; - u64 buffer_addr; +struct trace_event_raw_s390_diagnose { + struct trace_entry ent; + short unsigned int nr; + char __data[0]; }; -struct appldata_product_id { - char prod_nr[7]; - u16 prod_fn; - u8 record_nr; - u16 version_nr; - u16 release_nr; - u16 mod_lvl; -} __attribute__((packed)); +struct trace_event_data_offsets_s390_diagnose {}; -struct appldata_ops { +typedef void (*btf_trace_s390_diagnose)(void *, short unsigned int); + +struct gmap { struct list_head list; - struct ctl_table_header *sysctl_header; - struct ctl_table *ctl_table; - int active; - char name[16]; - unsigned char record_nr; - void (*callback)(void *); - void *data; - unsigned int size; - struct module *owner; - char mod_lvl[2]; + struct list_head crst_list; + struct mm_struct *mm; + struct xarray guest_to_host; + struct xarray host_to_guest; + spinlock_t guest_table_lock; + refcount_t ref_count; + long unsigned int *table; + long unsigned int asce; + long unsigned int asce_end; + void *private; + bool pfault_enabled; + long unsigned int guest_handle; + struct xarray host_to_rmap; + struct list_head children; + struct list_head pt_list; + spinlock_t shadow_lock; + struct gmap *parent; + long unsigned int orig_asce; + int edat_level; + bool removed; + bool initialized; }; -struct hypfs_diag0c_entry { - char date[8]; - char time[8]; - __u64 virtcpu; - __u64 totalproc; - __u32 cpu; - __u32 reserved; +struct uv_cb_header { + u16 len; + u16 cmd; + u16 rc; + u16 rrc; }; -struct hypfs_diag0c_hdr { - __u64 len; - __u16 version; - char reserved1[6]; - char tod_ext[16]; - __u64 count; - char reserved2[24]; +struct uv_cb_init { + struct uv_cb_header header; + u64 reserved08[2]; + u64 stor_origin; + u64 stor_len; + u64 reserved28[4]; }; -struct hypfs_diag0c_data { - struct hypfs_diag0c_hdr hdr; - struct hypfs_diag0c_entry entry[0]; +struct uv_cb_cts { + struct uv_cb_header header; + u64 reserved08[2]; + u64 guest_handle; + u64 gaddr; }; -enum { - DUMP_PREFIX_NONE = 0, - DUMP_PREFIX_ADDRESS = 1, - DUMP_PREFIX_OFFSET = 2, +struct uv_cb_cfs { + struct uv_cb_header header; + u64 reserved08[2]; + u64 paddr; }; -enum { - BPF_REG_0 = 0, - BPF_REG_1 = 1, - BPF_REG_2 = 2, - BPF_REG_3 = 3, - BPF_REG_4 = 4, - BPF_REG_5 = 5, - BPF_REG_6 = 6, - BPF_REG_7 = 7, - BPF_REG_8 = 8, - BPF_REG_9 = 9, - BPF_REG_10 = 10, - __MAX_BPF_REG = 11, +struct uv_info { + long unsigned int inst_calls_list[4]; + long unsigned int uv_base_stor_len; + long unsigned int guest_base_stor_len; + long unsigned int guest_virt_base_stor_len; + long unsigned int guest_virt_var_stor_len; + long unsigned int guest_cpu_stor_len; + long unsigned int max_sec_stor_addr; + unsigned int max_num_sec_conf; + short unsigned int max_guest_cpu_id; + long unsigned int uv_feature_indications; }; -struct bpf_binary_header { - u32 size; - int: 32; - u8 image[0]; +struct mhp_params { + struct vmem_altmap *altmap; + pgprot_t pgprot; }; -typedef void (*bpf_jit_fill_hole_t)(void *, unsigned int); - -struct bpf_jit { - u32 seen; - u32 seen_reg[16]; - u32 *addrs; - u8 *prg_buf; - int size; - int size_prg; - int prg; - int lit32_start; - int lit32; - int lit64_start; - int lit64; - int base_ip; - int exit_ip; - int r1_thunk_ip; - int r14_thunk_ip; - int tail_call_start; - int excnt; +struct uv_cb_share { + struct uv_cb_header header; + u64 reserved08[3]; + u64 paddr; + u64 reserved28; }; -struct s390_jit_data { - struct bpf_binary_header *header; - struct bpf_jit ctx; - int pass; -}; +struct io_tlb_slot; -struct __call_single_data { - struct __call_single_node node; - smp_call_func_t func; - void *info; +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; }; -typedef struct __call_single_data call_single_data_t; - -struct zpci_fib_fmt0 { - char: 1; - u32 isc: 3; - u32 noi: 12; - char: 2; - u32 aibvo: 6; - u32 sum: 1; - char: 1; - u32 aisbo: 6; - u64 aibv; - u64 aisb; +enum swiotlb_force { + SWIOTLB_NORMAL = 0, + SWIOTLB_FORCE = 1, + SWIOTLB_NO_FORCE = 2, }; -struct zpci_fib_fmt1 { - char: 4; - u32 noi: 12; - short: 16; - u32 dibvo: 16; - long: 16; - long: 64; - long: 64; +struct io_tlb_slot { + phys_addr_t orig_addr; + size_t alloc_size; + unsigned int list; }; -struct zpci_fib { - u32 fmt: 8; - long: 56; - u8 fc; - u64 pba; - u64 pal; - u64 iota; - union { - struct zpci_fib_fmt0 fmt0; - struct zpci_fib_fmt1 fmt1; - }; - u64 fmb_addr; - int: 32; - u32 gd; +struct s390_cma_mem_data { + long unsigned int start; + long unsigned int end; }; -struct zpci_diib { - char: 1; - u32 isc: 3; - long: 44; - u16 nr_cpus; - u64 disb_addr; - long: 64; - long: 64; -}; +struct cma_kobject; -struct zpci_cdiib { - long: 64; - u64 dibv_addr; - long: 64; - long: 64; - long: 64; +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; }; -union zpci_sic_iib { - struct zpci_diib diib; - struct zpci_cdiib cdiib; +enum uv_feat_ind { + BIT_UV_FEAT_MISC = 0, + BIT_UV_FEAT_AIV = 1, }; -enum { - IRQ_SET_MASK_OK = 0, - IRQ_SET_MASK_OK_NOCOPY = 1, - IRQ_SET_MASK_OK_DONE = 2, +enum fault_type { + KERNEL_FAULT = 0, + USER_FAULT = 1, + GMAP_FAULT = 2, }; -enum msi_desc_filter { - MSI_DESC_ALL = 0, - MSI_DESC_NOTASSOCIATED = 1, - MSI_DESC_ASSOCIATED = 2, +struct pfault_refbk { + u16 refdiagc; + u16 reffcode; + u16 refdwlen; + u16 refversn; + u64 refgaddr; + u64 refselmk; + u64 refcmpmk; + u64 reserved; }; -struct pci_device_id { - __u32 vendor; - __u32 device; - __u32 subvendor; - __u32 subdevice; - __u32 class; - __u32 class_mask; - kernel_ulong_t driver_data; - __u32 override_only; +struct qrange { + long unsigned int start; + long unsigned int end; }; -struct pci_bus; +struct qout64 { + long unsigned int segstart; + long unsigned int segend; + int segcnt; + int segrcnt; + struct qrange range[6]; +}; -struct hotplug_slot; +struct qin64 { + char qopcode; + char rsrv1[3]; + char qrcode; + char rsrv2[3]; + char qname[8]; + unsigned int qoutptr; + short int qoutlen; +}; -struct pci_slot { - struct pci_bus *bus; +struct dcss_segment { struct list_head list; - struct hotplug_slot *hotplug; - unsigned char number; - struct kobject kobj; + char dcss_name[8]; + char res_name[16]; + long unsigned int start_addr; + long unsigned int end; + refcount_t ref_count; + int do_nonshared; + unsigned int vm_segtype; + struct qrange range[6]; + int segcnt; + struct resource *res; }; -typedef short unsigned int pci_bus_flags_t; +struct vm_unmapped_area_info { + long unsigned int flags; + long unsigned int length; + long unsigned int low_limit; + long unsigned int high_limit; + long unsigned int align_mask; + long unsigned int align_offset; +}; -struct pci_dev; - -struct pci_ops; +typedef struct { + long unsigned int p4d; +} p4d_t; -struct pci_bus { - struct list_head node; - struct pci_bus *parent; - struct list_head children; - struct list_head devices; - struct pci_dev *self; - struct list_head slots; - struct resource *resource[4]; - struct list_head resources; - struct resource busn_res; - struct pci_ops *ops; - void *sysdata; - struct proc_dir_entry *procdir; - unsigned char number; - unsigned char primary; - unsigned char max_bus_speed; - unsigned char cur_bus_speed; - char name[48]; - short unsigned int bridge_ctl; - pci_bus_flags_t bus_flags; - struct device *bridge; - struct device dev; - struct bin_attribute *legacy_io; - struct bin_attribute *legacy_mem; - unsigned int is_added: 1; - unsigned int unsafe_warn: 1; -}; +typedef struct { + long unsigned int pgste; +} pgste_t; -struct hotplug_slot_ops; +typedef struct { + long unsigned int val; +} swp_entry_t; -struct hotplug_slot { - const struct hotplug_slot_ops *ops; - struct list_head slot_list; - struct pci_slot *pci_slot; - struct module *owner; - const char *mod_name; +struct mmu_table_batch { + struct callback_head rcu; + unsigned int nr; + void *tables[0]; }; -enum { - PCI_STD_RESOURCES = 0, - PCI_STD_RESOURCE_END = 5, - PCI_ROM_RESOURCE = 6, - PCI_IOV_RESOURCES = 7, - PCI_IOV_RESOURCE_END = 12, - PCI_BRIDGE_RESOURCES = 13, - PCI_BRIDGE_RESOURCE_END = 16, - PCI_NUM_RESOURCES = 17, - DEVICE_COUNT_RESOURCE = 17, +struct mmu_gather { + struct mm_struct *mm; + struct mmu_table_batch *batch; + long unsigned int start; + long unsigned int end; + unsigned int fullmm: 1; + unsigned int need_flush_all: 1; + unsigned int freed_tables: 1; + unsigned int cleared_ptes: 1; + unsigned int cleared_pmds: 1; + unsigned int cleared_puds: 1; + unsigned int cleared_p4ds: 1; + unsigned int vma_exec: 1; + unsigned int vma_huge: 1; + unsigned int batch_count; }; -typedef int pci_power_t; +typedef void (*exitcall_t)(); -typedef unsigned int pci_channel_state_t; +struct cmm_page_array { + struct cmm_page_array *next; + long unsigned int index; + long unsigned int pages[510]; +}; -typedef unsigned int pcie_reset_state_t; +struct hstate; -typedef short unsigned int pci_dev_flags_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 pci_bus_speed { - PCI_SPEED_33MHz = 0, - PCI_SPEED_66MHz = 1, - PCI_SPEED_66MHz_PCIX = 2, - PCI_SPEED_100MHz_PCIX = 3, - PCI_SPEED_133MHz_PCIX = 4, - PCI_SPEED_66MHz_PCIX_ECC = 5, - PCI_SPEED_100MHz_PCIX_ECC = 6, - PCI_SPEED_133MHz_PCIX_ECC = 7, - PCI_SPEED_66MHz_PCIX_266 = 9, - PCI_SPEED_100MHz_PCIX_266 = 10, - PCI_SPEED_133MHz_PCIX_266 = 11, - AGP_UNKNOWN = 12, - AGP_1X = 13, - AGP_2X = 14, - AGP_4X = 15, - AGP_8X = 16, - PCI_SPEED_66MHz_PCIX_533 = 17, - PCI_SPEED_100MHz_PCIX_533 = 18, - PCI_SPEED_133MHz_PCIX_533 = 19, - PCIE_SPEED_2_5GT = 20, - PCIE_SPEED_5_0GT = 21, - PCIE_SPEED_8_0GT = 22, - PCIE_SPEED_16_0GT = 23, - PCIE_SPEED_32_0GT = 24, - PCIE_SPEED_64_0GT = 25, - PCI_SPEED_UNKNOWN = 255, +struct hstate { + struct mutex resize_lock; + int next_nid_to_alloc; + int next_nid_to_free; + unsigned int order; + long unsigned int mask; + long unsigned int max_huge_pages; + long unsigned int nr_huge_pages; + long unsigned int free_huge_pages; + long unsigned int resv_huge_pages; + long unsigned int surplus_huge_pages; + long unsigned int nr_overcommit_huge_pages; + struct list_head hugepage_activelist; + struct list_head hugepage_freelists[2]; + unsigned int nr_huge_pages_node[2]; + unsigned int free_huge_pages_node[2]; + unsigned int surplus_huge_pages_node[2]; + struct cftype cgroup_files_dfl[7]; + struct cftype cgroup_files_legacy[9]; + char name[32]; }; -struct pci_vpd { - struct mutex lock; - unsigned int len; - u8 cap; +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; }; -struct aer_stats; +struct ptdump_range { + long unsigned int start; + long unsigned int end; +}; -struct rcec_ea; +struct ptdump_state { + void (*note_page)(struct ptdump_state *, long unsigned int, int, u64); + void (*effective_prot)(struct ptdump_state *, int, u64); + const struct ptdump_range *range; +}; -struct pci_driver; +struct addr_marker { + long unsigned int start_address; + const char *name; +}; -struct pcie_link_state; +enum address_markers_idx { + IDENTITY_BEFORE_NR = 0, + IDENTITY_BEFORE_END_NR = 1, + KERNEL_START_NR = 2, + KERNEL_END_NR = 3, + KFENCE_START_NR = 4, + KFENCE_END_NR = 5, + IDENTITY_AFTER_NR = 6, + IDENTITY_AFTER_END_NR = 7, + VMEMMAP_NR = 8, + VMEMMAP_END_NR = 9, + VMALLOC_NR = 10, + VMALLOC_END_NR = 11, + MODULES_NR = 12, + MODULES_END_NR = 13, +}; -struct pci_sriov; +struct pg_state { + struct ptdump_state ptdump; + struct seq_file *seq; + int level; + unsigned int current_prot; + bool check_wx; + long unsigned int wx_pages; + long unsigned int start_address; + const struct addr_marker *marker; +}; -struct pci_dev { - struct list_head bus_list; - struct pci_bus *bus; - struct pci_bus *subordinate; - void *sysdata; - struct proc_dir_entry *procent; - struct pci_slot *slot; - unsigned int devfn; - short unsigned int vendor; - short unsigned int device; - short unsigned int subsystem_vendor; - short unsigned int subsystem_device; - unsigned int class; - u8 revision; - u8 hdr_type; - u16 aer_cap; - struct aer_stats *aer_stats; - struct rcec_ea *rcec_ea; - struct pci_dev *rcec; - u32 devcap; - u8 pcie_cap; - u8 msi_cap; - u8 msix_cap; - u8 pcie_mpss: 3; - u8 rom_base_reg; - u8 pin; - u16 pcie_flags_reg; - long unsigned int *dma_alias_mask; - struct pci_driver *driver; - u64 dma_mask; - struct device_dma_parameters dma_parms; - pci_power_t current_state; - unsigned int imm_ready: 1; - u8 pm_cap; - unsigned int pme_support: 5; - unsigned int pme_poll: 1; - unsigned int d1_support: 1; - unsigned int d2_support: 1; - unsigned int no_d1d2: 1; - unsigned int no_d3cold: 1; - unsigned int bridge_d3: 1; - unsigned int d3cold_allowed: 1; - unsigned int mmio_always_on: 1; - unsigned int wakeup_prepared: 1; - unsigned int runtime_d3cold: 1; - unsigned int skip_bus_pm: 1; - unsigned int ignore_hotplug: 1; - unsigned int hotplug_user_indicators: 1; - unsigned int clear_retrain_link: 1; - unsigned int d3hot_delay; - unsigned int d3cold_delay; - struct pcie_link_state *link_state; - 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; - int cfg_size; - unsigned int irq; - struct resource resource[17]; - bool match_driver; - unsigned int transparent: 1; - unsigned int io_window: 1; - unsigned int pref_window: 1; - unsigned int pref_64_window: 1; - unsigned int multifunction: 1; - unsigned int is_busmaster: 1; - unsigned int no_msi: 1; - unsigned int no_64bit_msi: 1; - unsigned int block_cfg_access: 1; - unsigned int broken_parity_status: 1; - unsigned int irq_reroute_variant: 2; - unsigned int msi_enabled: 1; - unsigned int msix_enabled: 1; - unsigned int ari_enabled: 1; - unsigned int ats_enabled: 1; - unsigned int pasid_enabled: 1; - unsigned int pri_enabled: 1; - unsigned int is_managed: 1; - unsigned int is_msi_managed: 1; - unsigned int needs_freset: 1; - unsigned int state_saved: 1; - unsigned int is_physfn: 1; - unsigned int is_virtfn: 1; - unsigned int is_hotplug_bridge: 1; - unsigned int shpc_managed: 1; - unsigned int is_thunderbolt: 1; - unsigned int untrusted: 1; - unsigned int external_facing: 1; - unsigned int broken_intx_masking: 1; - unsigned int io_window_1k: 1; - unsigned int irq_managed: 1; - unsigned int non_compliant_bars: 1; - unsigned int is_probed: 1; - unsigned int link_active_reporting: 1; - unsigned int no_vf_scan: 1; - unsigned int no_command_memory: 1; - unsigned int rom_bar_overlap: 1; - pci_dev_flags_t dev_flags; - atomic_t enable_cnt; - u32 saved_config_space[16]; - struct hlist_head saved_cap_space; - int rom_attr_enabled; - struct bin_attribute *res_attr[17]; - struct bin_attribute *res_attr_wc[17]; - unsigned int broken_cmd_compl: 1; - unsigned int ptm_root: 1; - unsigned int ptm_enabled: 1; - u8 ptm_granularity; - void *msix_base; - raw_spinlock_t msi_lock; - struct pci_vpd vpd; - u16 dpc_cap; - unsigned int dpc_rp_extensions: 1; - u8 dpc_rp_log_size; +struct xa_node { + unsigned char shift; + unsigned char offset; + unsigned char count; + unsigned char nr_values; + struct xa_node *parent; + struct xarray *array; union { - struct pci_sriov *sriov; - struct pci_dev *physfn; + struct list_head private_list; + struct callback_head callback_head; + }; + void *slots[64]; + union { + long unsigned int tags[3]; + long unsigned int marks[3]; }; - u16 ats_cap; - u8 ats_stu; - u16 pri_cap; - u32 pri_reqs_alloc; - unsigned int pasid_required: 1; - u16 pasid_cap; - u16 pasid_features; - u16 acs_cap; - phys_addr_t rom; - size_t romlen; - char *driver_override; - long unsigned int priv_flags; - u8 reset_methods[7]; }; -struct pci_dynids { - spinlock_t lock; - struct list_head list; +struct radix_tree_iter { + long unsigned int index; + long unsigned int next_index; + long unsigned int tags; + struct xa_node *node; }; -struct pci_error_handlers; +enum { + RADIX_TREE_ITER_TAG_MASK = 15, + RADIX_TREE_ITER_TAGGED = 16, + RADIX_TREE_ITER_CONTIG = 32, +}; -struct pci_driver { - struct list_head node; - const char *name; - const struct pci_device_id *id_table; - int (*probe)(struct pci_dev *, const struct pci_device_id *); - void (*remove)(struct pci_dev *); - int (*suspend)(struct pci_dev *, pm_message_t); - int (*resume)(struct pci_dev *); - void (*shutdown)(struct pci_dev *); - int (*sriov_configure)(struct pci_dev *, int); - int (*sriov_set_msix_vec_count)(struct pci_dev *, int); - u32 (*sriov_get_vf_total_msix)(struct pci_dev *); - const struct pci_error_handlers *err_handler; - const struct attribute_group **groups; - const struct attribute_group **dev_groups; - struct device_driver driver; - struct pci_dynids dynids; +struct gmap_rmap { + struct gmap_rmap *next; + long unsigned int raddr; }; -struct pci_ops { - int (*add_bus)(struct pci_bus *); - void (*remove_bus)(struct pci_bus *); - void * (*map_bus)(struct pci_bus *, unsigned int, int); - int (*read)(struct pci_bus *, unsigned int, int, int, u32 *); - int (*write)(struct pci_bus *, unsigned int, int, int, u32); +struct gmap_notifier { + struct list_head list; + struct callback_head rcu; + void (*notifier_call)(struct gmap *, long unsigned int, long unsigned int); }; -typedef unsigned int pci_ers_result_t; +struct mm_walk; -struct pci_error_handlers { - pci_ers_result_t (*error_detected)(struct pci_dev *, pci_channel_state_t); - pci_ers_result_t (*mmio_enabled)(struct pci_dev *); - pci_ers_result_t (*slot_reset)(struct pci_dev *); - void (*reset_prepare)(struct pci_dev *); - void (*reset_done)(struct pci_dev *); - void (*resume)(struct pci_dev *); +struct mm_walk_ops { + int (*pgd_entry)(pgd_t *, long unsigned int, long unsigned int, struct mm_walk *); + int (*p4d_entry)(p4d_t *, long unsigned int, long unsigned int, struct mm_walk *); + int (*pud_entry)(pud_t *, long unsigned int, long unsigned int, struct mm_walk *); + int (*pmd_entry)(pmd_t *, long unsigned int, long unsigned int, struct mm_walk *); + int (*pte_entry)(pte_t *, long unsigned int, long unsigned int, struct mm_walk *); + int (*pte_hole)(long unsigned int, long unsigned int, int, struct mm_walk *); + int (*hugetlb_entry)(pte_t *, long unsigned int, long unsigned int, long unsigned int, struct mm_walk *); + int (*test_walk)(long unsigned int, long unsigned int, struct mm_walk *); + int (*pre_vma)(long unsigned int, long unsigned int, struct mm_walk *); + void (*post_vma)(struct mm_walk *); }; -struct hotplug_slot_ops { - int (*enable_slot)(struct hotplug_slot *); - int (*disable_slot)(struct hotplug_slot *); - int (*set_attention_status)(struct hotplug_slot *, u8); - int (*hardware_test)(struct hotplug_slot *, u32); - int (*get_power_status)(struct hotplug_slot *, u8 *); - int (*get_attention_status)(struct hotplug_slot *, u8 *); - int (*get_latch_status)(struct hotplug_slot *, u8 *); - int (*get_adapter_status)(struct hotplug_slot *, u8 *); - int (*reset_slot)(struct hotplug_slot *, bool); +enum page_walk_action { + ACTION_SUBTREE = 0, + ACTION_CONTINUE = 1, + ACTION_AGAIN = 2, }; -struct zpci_fmb_fmt0 { - u64 dma_rbytes; - u64 dma_wbytes; +struct mm_walk { + const struct mm_walk_ops *ops; + struct mm_struct *mm; + pgd_t *pgd; + struct vm_area_struct *vma; + enum page_walk_action action; + bool no_vma; + void *private; }; -struct zpci_fmb_fmt1 { - u64 rx_bytes; - u64 rx_packets; - u64 tx_bytes; - u64 tx_packets; +typedef int (*cmp_func_t)(const void *, const void *); + +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; + long unsigned int hva; + long unsigned int len; + struct kvm_memory_slot *memslot; }; -struct zpci_fmb_fmt2 { - u64 consumed_work_units; - u64 max_work_units; +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 zpci_fmb_fmt3 { - u64 tx_bytes; +struct gfn_to_pfn_cache { + u64 generation; + gfn_t gfn; + kvm_pfn_t pfn; + bool dirty; }; -struct zpci_fmb { - u32 format: 8; - u32 fmt_ind: 24; - u32 samples; - u64 last_update; - u64 ld_ops; - u64 st_ops; - u64 stb_ops; - u64 rpcit_ops; - union { - struct zpci_fmb_fmt0 fmt0; - struct zpci_fmb_fmt1 fmt1; - struct zpci_fmb_fmt2 fmt2; - struct zpci_fmb_fmt3 fmt3; - }; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct kvm_vm_stat_generic { + u64 remote_tlb_flush; + u64 remote_tlb_flush_requests; }; -enum zpci_state { - ZPCI_FN_STATE_STANDBY = 0, - ZPCI_FN_STATE_CONFIGURED = 1, - ZPCI_FN_STATE_RESERVED = 2, +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 zpci_bar_struct { - struct resource *res; - void *mio_wb; - void *mio_wt; - u32 val; - u16 map_idx; - u8 size; +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 zpci_dev; +struct preempt_ops; -struct zpci_bus { - struct kref kref; - struct pci_bus *bus; - struct zpci_dev *function[256]; - struct list_head resources; - struct list_head bus_next; - struct resource bus_resource; - int pchid; - int domain_nr; - bool multifunction; - enum pci_bus_speed max_bus_speed; +struct preempt_notifier { + struct hlist_node link; + struct preempt_ops *ops; }; -struct airq_iv; +struct kvm_mmio_fragment { + gpa_t gpa; + void *data; + unsigned int len; +}; -struct s390_domain; +struct kvm_s390_io_info { + __u16 subchannel_id; + __u16 subchannel_nr; + __u32 io_int_parm; + __u32 io_int_word; +}; -struct zpci_dev { - struct zpci_bus *zbus; - struct list_head entry; - struct list_head bus_next; - struct kref kref; - struct hotplug_slot hotplug_slot; - enum zpci_state state; - u32 fid; - u32 fh; - u16 vfn; - u16 pchid; - u8 pfgid; - u8 pft; - u8 port; - u8 rid_available: 1; - u8 has_hp_slot: 1; - u8 has_resources: 1; - u8 is_physfn: 1; - u8 util_str_avail: 1; - u8 irqs_registered: 1; - u8 reserved: 2; - unsigned int devfn; - struct mutex lock; - u8 pfip[4]; - u32 uid; - u8 util_str[64]; - u64 msi_addr; - unsigned int max_msi; - unsigned int msi_first_bit; - unsigned int msi_nr_irqs; - struct airq_iv *aibv; - long unsigned int aisb; - long unsigned int *dma_table; - spinlock_t dma_table_lock; - int tlb_refresh; - spinlock_t iommu_bitmap_lock; - long unsigned int *iommu_bitmap; - long unsigned int *lazy_bitmap; - long unsigned int iommu_size; - long unsigned int iommu_pages; - unsigned int next_bit; - struct iommu_device iommu_dev; - char res_name[16]; - bool mio_capable; - struct zpci_bar_struct bars[6]; - u64 start_dma; - u64 end_dma; - u64 dma_mask; - struct zpci_fmb *fmb; - u16 fmb_update; - u16 fmb_length; - atomic64_t allocated_pages; - atomic64_t mapped_pages; - atomic64_t unmapped_pages; - u8 version; - enum pci_bus_speed max_bus_speed; - struct dentry *debugfs_dev; - struct s390_domain *s390_domain; +struct kvm_s390_ext_info { + __u32 ext_params; + __u32 pad; + __u64 ext_params2; }; -struct airq_iv { - long unsigned int *vector; - dma_addr_t vector_dma; - long unsigned int *avail; - long unsigned int *bitlock; - long unsigned int *ptr; - unsigned int *data; - long unsigned int bits; - long unsigned int end; - long unsigned int flags; - spinlock_t lock; +struct kvm_s390_pgm_info { + __u64 trans_exc_code; + __u64 mon_code; + __u64 per_address; + __u32 data_exc_code; + __u16 code; + __u16 mon_class_nr; + __u8 per_code; + __u8 per_atmid; + __u8 exc_access_id; + __u8 per_access_id; + __u8 op_access_id; + __u8 flags; + __u8 pad[2]; }; -struct airq_struct { - struct hlist_node list; - void (*handler)(struct airq_struct *, bool); - u8 *lsi_ptr; - u8 lsi_mask; - u8 isc; - u8 flags; +struct kvm_s390_emerg_info { + __u16 code; }; -enum { - FLOATING = 0, - DIRECTED = 1, +struct kvm_s390_extcall_info { + __u16 code; }; -struct cpu_irq_data { - call_single_data_t csd; - atomic_t scheduled; - long: 32; - long: 64; - long: 64; - long: 64; +struct kvm_s390_prefix_info { + __u32 address; }; -typedef __u64 __le64; +struct kvm_s390_stop_info { + __u32 flags; +}; -struct zpci_iomap_entry { - u32 fh; - u8 bar; - u16 count; +struct kvm_s390_mchk_info { + __u64 cr14; + __u64 mcic; + __u64 failing_storage_address; + __u32 ext_damage_code; + __u32 pad; + __u8 fixed_logout[16]; }; -struct zpci_report_error_header { - u8 version; - u8 action; - u16 length; - u8 data[0]; +struct kvm_s390_irq_payload { + struct kvm_s390_io_info io; + struct kvm_s390_ext_info ext; + struct kvm_s390_pgm_info pgm; + struct kvm_s390_emerg_info emerg; + struct kvm_s390_extcall_info extcall; + struct kvm_s390_prefix_info prefix; + struct kvm_s390_stop_info stop; + struct kvm_s390_mchk_info mchk; }; -enum zpci_ioat_dtype { - ZPCI_IOTA_STO = 0, - ZPCI_IOTA_RTTO = 1, - ZPCI_IOTA_RSTO = 2, - ZPCI_IOTA_RFTO = 3, - ZPCI_IOTA_PFAA = 4, - ZPCI_IOTA_IOPFAA = 5, - ZPCI_IOTA_IOPTO = 7, +struct kvm_s390_local_interrupt { + spinlock_t lock; + long unsigned int sigp_emerg_pending[4]; + struct kvm_s390_irq_payload irq; + long unsigned int pending_irqs; +}; + +struct kvm_hw_bp_info_arch; + +struct kvm_hw_wp_info_arch; + +struct kvm_guestdbg_info_arch { + long unsigned int cr0; + long unsigned int cr9; + long unsigned int cr10; + long unsigned int cr11; + struct kvm_hw_bp_info_arch *hw_bp_info; + struct kvm_hw_wp_info_arch *hw_wp_info; + int nr_hw_bp; + int nr_hw_wp; + long unsigned int last_bp; +}; + +struct kvm_s390_pv_vcpu { + u64 handle; + long unsigned int stor_base; +}; + +struct kvm_vcpu_arch { + struct kvm_s390_sie_block *sie_block; + struct kvm_s390_sie_block *vsie_block; + unsigned int host_acrs[16]; + struct gs_cb *host_gscb; + struct fpu host_fpregs; + struct kvm_s390_local_interrupt local_int; + struct hrtimer ckc_timer; + struct kvm_s390_pgm_info pgm; + struct gmap *gmap; + struct gmap *enabled_gmap; + struct kvm_guestdbg_info_arch guestdbg; + long unsigned int pfault_token; + long unsigned int pfault_select; + long unsigned int pfault_compare; + bool cputm_enabled; + seqcount_t cputm_seqcount; + __u64 cputm_start; + bool gs_enabled; + bool skey_enabled; + struct kvm_s390_pv_vcpu pv; + union diag318_info diag318_info; +}; + +struct kvm_vcpu_stat { + struct kvm_vcpu_stat_generic generic; + u64 exit_userspace; + u64 exit_null; + u64 exit_external_request; + u64 exit_io_request; + u64 exit_external_interrupt; + u64 exit_stop_request; + u64 exit_validity; + u64 exit_instruction; + u64 exit_pei; + u64 halt_no_poll_steal; + u64 instruction_lctl; + u64 instruction_lctlg; + u64 instruction_stctl; + u64 instruction_stctg; + u64 exit_program_interruption; + u64 exit_instr_and_program; + u64 exit_operation_exception; + u64 deliver_ckc; + u64 deliver_cputm; + u64 deliver_external_call; + u64 deliver_emergency_signal; + u64 deliver_service_signal; + u64 deliver_virtio; + u64 deliver_stop_signal; + u64 deliver_prefix_signal; + u64 deliver_restart_signal; + u64 deliver_program; + u64 deliver_io; + u64 deliver_machine_check; + u64 exit_wait_state; + u64 inject_ckc; + u64 inject_cputm; + u64 inject_external_call; + u64 inject_emergency_signal; + u64 inject_mchk; + u64 inject_pfault_init; + u64 inject_program; + u64 inject_restart; + u64 inject_set_prefix; + u64 inject_stop_signal; + u64 instruction_epsw; + u64 instruction_gs; + u64 instruction_io_other; + u64 instruction_lpsw; + u64 instruction_lpswe; + u64 instruction_pfmf; + u64 instruction_ptff; + u64 instruction_sck; + u64 instruction_sckpf; + u64 instruction_stidp; + u64 instruction_spx; + u64 instruction_stpx; + u64 instruction_stap; + u64 instruction_iske; + u64 instruction_ri; + u64 instruction_rrbe; + u64 instruction_sske; + u64 instruction_ipte_interlock; + u64 instruction_stsi; + u64 instruction_stfl; + u64 instruction_tb; + u64 instruction_tpi; + u64 instruction_tprot; + u64 instruction_tsch; + u64 instruction_sie; + u64 instruction_essa; + u64 instruction_sthyi; + u64 instruction_sigp_sense; + u64 instruction_sigp_sense_running; + u64 instruction_sigp_external_call; + u64 instruction_sigp_emergency; + u64 instruction_sigp_cond_emergency; + u64 instruction_sigp_start; + u64 instruction_sigp_stop; + u64 instruction_sigp_stop_store_status; + u64 instruction_sigp_store_status; + u64 instruction_sigp_store_adtl_status; + u64 instruction_sigp_arch; + u64 instruction_sigp_prefix; + u64 instruction_sigp_restart; + u64 instruction_sigp_init_cpu_reset; + u64 instruction_sigp_cpu_reset; + u64 instruction_sigp_unknown; + u64 instruction_diagnose_10; + u64 instruction_diagnose_44; + u64 instruction_diagnose_9c; + u64 diag_9c_ignored; + u64 diag_9c_forward; + u64 instruction_diagnose_258; + u64 instruction_diagnose_308; + u64 instruction_diagnose_500; + u64 instruction_diagnose_other; + u64 pfault_sync; +}; + +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 pci_sriov { - int pos; - int nres; - u32 cap; - u16 ctrl; - u16 total_VFs; - u16 initial_VFs; - u16 num_VFs; - u16 offset; - u16 stride; - u16 vf_device; - u32 pgsz; - u8 link; - u8 max_VF_buses; - u16 driver_max_VFs; - struct pci_dev *dev; - struct pci_dev *self; - u32 class; - u8 hdr_type; - u16 subsystem_vendor; - u16 subsystem_device; - resource_size_t barsz[6]; - bool drivers_autoprobe; +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 { + u32 queued; + struct list_head queue; + struct list_head done; + spinlock_t lock; + } async_pf; + struct { + bool in_spin_loop; + bool dy_eligible; + } spin_loop; + bool preempted; + bool ready; + struct kvm_vcpu_arch arch; + struct kvm_vcpu_stat stat; + char stats_id[48]; + struct kvm_dirty_ring dirty_ring; + int last_used_slot; }; -struct rcec_ea { - u8 nextbusn; - u8 lastbusn; - u32 bitmap; +struct kvm_io_device { + const struct kvm_io_device_ops *ops; }; -struct clp_req_hdr { - u16 len; - u16 cmd; - u32 fmt: 4; - u32 reserved1: 28; - u64 reserved2; +struct preempt_ops { + void (*sched_in)(struct preempt_notifier *, int); + void (*sched_out)(struct preempt_notifier *, struct task_struct *); }; -struct clp_rsp_hdr { - u16 len; - u16 rsp; - u32 fmt: 4; - u32 reserved1: 28; - u64 reserved2; +struct mem_section_usage { + long unsigned int subsection_map[2]; + long unsigned int pageblock_flags[0]; }; -struct clp_req_slpc { - struct clp_req_hdr hdr; +struct mem_section { + long unsigned int section_mem_map; + struct mem_section_usage *usage; }; -struct clp_rsp_slpc { - struct clp_rsp_hdr hdr; - u32 reserved2[4]; - u32 lpif[8]; - u32 reserved3[8]; - u32 lpic[8]; +struct trace_print_flags { + long unsigned int mask; + const char *name; }; -struct clp_req_rsp_slpc { - struct clp_req_slpc request; - struct clp_rsp_slpc response; +struct kvm_s390_vm_cpu_subfunc { + __u8 plo[32]; + __u8 ptff[16]; + __u8 kmac[16]; + __u8 kmc[16]; + __u8 km[16]; + __u8 kimd[16]; + __u8 klmd[16]; + __u8 pckmo[16]; + __u8 kmctr[16]; + __u8 kmf[16]; + __u8 kmo[16]; + __u8 pcc[16]; + __u8 ppno[16]; + __u8 kma[16]; + __u8 kdsa[16]; + __u8 sortl[32]; + __u8 dfltcc[32]; + __u8 reserved[1728]; +}; + +struct kvm_regs { + __u64 gprs[16]; +}; + +struct kvm_sregs { + __u32 acrs[16]; + __u64 crs[16]; }; -struct clp_fh_list_entry { - u16 device_id; - u16 vendor_id; - u32 config_state: 1; - u32 fid; - u32 fh; +struct kvm_fpu { + __u32 fpc; + __u64 fprs[16]; }; -struct clp_rsp_slpc_pci { - struct clp_rsp_hdr hdr; - u32 reserved2[4]; - u32 lpif[8]; - u32 reserved3[4]; - u32 vwb: 1; - char: 1; - u32 mio_wb: 6; - u32 reserved5[3]; - u32 lpic[8]; +struct kvm_debug_exit_arch { + __u64 addr; + __u8 type; + __u8 pad[7]; }; -struct clp_req_list_pci { - struct clp_req_hdr hdr; - u64 resume_token; - u64 reserved2; +struct kvm_hw_breakpoint { + __u64 addr; + __u64 phys_addr; + __u64 len; + __u8 type; + __u8 pad[7]; }; -struct clp_rsp_list_pci { - struct clp_rsp_hdr hdr; - u64 resume_token; - u32 reserved2; - u16 max_fn; - char: 7; - u8 uid_checking: 1; - u8 entry_size; - struct clp_fh_list_entry fh_list[252]; +struct kvm_guest_debug_arch { + __u32 nr_hw_bp; + __u32 pad; + struct kvm_hw_breakpoint *hw_bp; }; -struct mio_info { - u32 valid: 6; - struct { - u64 wb; - u64 wt; - } addr[6]; - u32 reserved[6]; +struct kvm_sync_regs { + __u64 prefix; + __u64 gprs[16]; + __u32 acrs[16]; + __u64 crs[16]; + __u64 todpr; + __u64 cputm; + __u64 ckc; + __u64 pp; + __u64 gbea; + __u64 pft; + __u64 pfs; + __u64 pfc; + union { + __u64 vrs[64]; + __u64 fprs[16]; + }; + __u8 reserved[512]; + __u32 fpc; + __u8 bpbc: 1; + __u8 reserved2: 7; + __u8 padding1[51]; + __u8 riccb[64]; + __u64 diag318; + __u8 padding2[184]; + union { + __u8 sdnx[256]; + struct { + __u64 reserved1[2]; + __u64 gscb[4]; + __u64 etoken; + __u64 etoken_extension; + }; + }; }; -struct clp_req_query_pci { - struct clp_req_hdr hdr; - u32 fh; - u32 reserved2; - u64 reserved3; +struct kvm_userspace_memory_region { + __u32 slot; + __u32 flags; + __u64 guest_phys_addr; + __u64 memory_size; + __u64 userspace_addr; }; -struct clp_rsp_query_pci { - struct clp_rsp_hdr hdr; - u16 vfn; - char: 3; - u16 rid_avail: 1; - u16 is_physfn: 1; - u16 reserved1: 1; - u16 mio_addr_avail: 1; - u16 util_str_avail: 1; - u16 pfgid: 8; - u32 fid; - u8 bar_size[6]; - u16 pchid; - __le32 bar[6]; - u8 pfip[4]; - short: 12; - u16 port: 4; - u8 fmb_len; - u8 pft; - u64 sdma; - u64 edma; - u16 rid; - u16 reserved0; - u32 reserved[10]; - u32 uid; - u8 util_str[64]; - u32 reserved2[16]; - struct mio_info mio; +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 clp_req_query_pci_grp { - struct clp_req_hdr hdr; - u32 reserved2: 24; - u32 pfgid: 8; - u32 reserved3; - u64 reserved4; +struct kvm_xen_exit { + __u32 type; + union { + struct { + __u32 longmode; + __u32 cpl; + __u64 input; + __u64 result; + __u64 params[6]; + } hcall; + } u; }; -struct clp_rsp_query_pci_grp { - struct clp_rsp_hdr hdr; - char: 4; - u16 noi: 12; - u8 version; - char: 6; - u8 frame: 1; - u8 refresh: 1; - u16 reserved2; - u16 mui; - short: 16; - u16 maxfaal; - char: 4; - u16 dnoi: 12; - u16 maxcpu; - u64 dasm; - u64 msia; - u64 reserved4; - u64 reserved5; +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; + __u64 psw_mask; + __u64 psw_addr; + 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 clp_req_set_pci { - struct clp_req_hdr hdr; - u32 fh; - u16 reserved2; - u8 oc; - u8 ndas; - u64 reserved3; +struct kvm_translation { + __u64 linear_address; + __u64 physical_address; + __u8 valid; + __u8 writeable; + __u8 usermode; + __u8 pad[5]; }; -struct clp_rsp_set_pci { - struct clp_rsp_hdr hdr; - u32 fh; - u32 reserved1; - u64 reserved2; - struct mio_info mio; +struct kvm_dirty_log { + __u32 slot; + __u32 padding1; + union { + void *dirty_bitmap; + __u64 padding2; + }; }; -struct clp_req_rsp_slpc_pci { - struct clp_req_slpc request; - struct clp_rsp_slpc_pci response; +struct kvm_signal_mask { + __u32 len; + __u8 sigset[0]; }; -struct clp_req_rsp_list_pci { - struct clp_req_list_pci request; - struct clp_rsp_list_pci response; +struct kvm_mp_state { + __u32 mp_state; }; -struct clp_req_rsp_set_pci { - struct clp_req_set_pci request; - struct clp_rsp_set_pci response; +struct kvm_guest_debug { + __u32 control; + __u32 pad; + struct kvm_guest_debug_arch arch; }; -struct clp_req_rsp_query_pci { - struct clp_req_query_pci request; - struct clp_rsp_query_pci response; +struct kvm_ioeventfd { + __u64 datamatch; + __u64 addr; + __u32 len; + __s32 fd; + __u32 flags; + __u8 pad[36]; }; -struct clp_req_rsp_query_pci_grp { - struct clp_req_query_pci_grp request; - struct clp_rsp_query_pci_grp response; +struct kvm_enable_cap { + __u32 cap; + __u32 flags; + __u64 args[4]; + __u8 pad[64]; }; -struct clp_req { - unsigned int c: 1; - unsigned int r: 1; - unsigned int lps: 6; - unsigned int cmd: 8; - unsigned int reserved; - __u64 data_p; +struct kvm_irq_routing_irqchip { + __u32 irqchip; + __u32 pin; }; -enum { - pci_channel_io_normal = 1, - pci_channel_io_frozen = 2, - pci_channel_io_perm_failure = 3, +struct kvm_irq_routing_msi { + __u32 address_lo; + __u32 address_hi; + __u32 data; + union { + __u32 pad; + __u32 devid; + }; }; -enum pci_ers_result { - PCI_ERS_RESULT_NONE = 1, - PCI_ERS_RESULT_CAN_RECOVER = 2, - PCI_ERS_RESULT_NEED_RESET = 3, - PCI_ERS_RESULT_DISCONNECT = 4, - PCI_ERS_RESULT_RECOVERED = 5, - PCI_ERS_RESULT_NO_AER_DRIVER = 6, +struct kvm_irq_routing_s390_adapter { + __u64 ind_addr; + __u64 summary_addr; + __u64 ind_offset; + __u32 summary_offset; + __u32 adapter_id; }; -struct zpci_ccdf_err { - u32 reserved1; - u32 fh; - u32 fid; - u32 ett: 4; - u32 mvn: 12; - u32 dmaas: 8; - char: 6; - u32 q: 1; - u32 rw: 1; - u64 faddr; - u32 reserved3; - u16 reserved4; - u16 pec; +struct kvm_irq_routing_hv_sint { + __u32 vcpu; + __u32 sint; }; -struct zpci_ccdf_avail { - u32 reserved1; - u32 fh; - u32 fid; - u32 reserved2; - u32 reserved3; - u32 reserved4; - u32 reserved5; - u16 reserved6; - u16 pec; +struct kvm_irq_routing_entry { + __u32 gsi; + __u32 type; + __u32 flags; + __u32 pad; + union { + struct kvm_irq_routing_irqchip irqchip; + struct kvm_irq_routing_msi msi; + struct kvm_irq_routing_s390_adapter adapter; + struct kvm_irq_routing_hv_sint hv_sint; + __u32 pad[8]; + } u; }; -struct resource_entry { - struct list_head node; - struct resource *res; - resource_size_t offset; - struct resource __res; +struct kvm_irq_routing { + __u32 nr; + __u32 flags; + struct kvm_irq_routing_entry entries[0]; }; -enum syscall_work_bit { - SYSCALL_WORK_BIT_SECCOMP = 0, - SYSCALL_WORK_BIT_SYSCALL_TRACEPOINT = 1, - SYSCALL_WORK_BIT_SYSCALL_TRACE = 2, - SYSCALL_WORK_BIT_SYSCALL_EMU = 3, - SYSCALL_WORK_BIT_SYSCALL_AUDIT = 4, - SYSCALL_WORK_BIT_SYSCALL_USER_DISPATCH = 5, - SYSCALL_WORK_BIT_SYSCALL_EXIT_TRAP = 6, +struct kvm_irqfd { + __u32 fd; + __u32 gsi; + __u32 flags; + __u32 resamplefd; + __u8 pad[16]; }; -enum tk_offsets { - TK_OFFS_REAL = 0, - TK_OFFS_BOOT = 1, - TK_OFFS_TAI = 2, - TK_OFFS_MAX = 3, +struct kvm_create_device { + __u32 type; + __u32 fd; + __u32 flags; }; -typedef long unsigned int vm_flags_t; +struct kvm_device_attr { + __u32 flags; + __u32 group; + __u64 attr; + __u64 addr; +}; -struct clone_args { - __u64 flags; - __u64 pidfd; - __u64 child_tid; - __u64 parent_tid; - __u64 exit_signal; - __u64 stack; - __u64 stack_size; - __u64 tls; - __u64 set_tid; - __u64 set_tid_size; - __u64 cgroup; +enum kvm_device_type { + KVM_DEV_TYPE_FSL_MPIC_20 = 1, + KVM_DEV_TYPE_FSL_MPIC_42 = 2, + KVM_DEV_TYPE_XICS = 3, + KVM_DEV_TYPE_VFIO = 4, + KVM_DEV_TYPE_ARM_VGIC_V2 = 5, + KVM_DEV_TYPE_FLIC = 6, + KVM_DEV_TYPE_ARM_VGIC_V3 = 7, + KVM_DEV_TYPE_ARM_VGIC_ITS = 8, + KVM_DEV_TYPE_XIVE = 9, + KVM_DEV_TYPE_ARM_PV_TIME = 10, + KVM_DEV_TYPE_MAX = 11, }; -enum hrtimer_mode { - HRTIMER_MODE_ABS = 0, - HRTIMER_MODE_REL = 1, - HRTIMER_MODE_PINNED = 2, - HRTIMER_MODE_SOFT = 4, - HRTIMER_MODE_HARD = 8, - HRTIMER_MODE_ABS_PINNED = 2, - HRTIMER_MODE_REL_PINNED = 3, - HRTIMER_MODE_ABS_SOFT = 4, - HRTIMER_MODE_REL_SOFT = 5, - HRTIMER_MODE_ABS_PINNED_SOFT = 6, - HRTIMER_MODE_REL_PINNED_SOFT = 7, - HRTIMER_MODE_ABS_HARD = 8, - HRTIMER_MODE_REL_HARD = 9, - HRTIMER_MODE_ABS_PINNED_HARD = 10, - HRTIMER_MODE_REL_PINNED_HARD = 11, +struct kvm_dirty_gfn { + __u32 flags; + __u32 slot; + __u64 offset; }; -struct fdtable { - unsigned int max_fds; - struct file **fd; - long unsigned int *close_on_exec; - long unsigned int *open_fds; - long unsigned int *full_fds_bits; - struct callback_head rcu; +struct kvm_stats_header { + __u32 flags; + __u32 name_size; + __u32 num_desc; + __u32 id_offset; + __u32 desc_offset; + __u32 data_offset; }; -struct files_struct { - atomic_t count; - bool resize_in_progress; - wait_queue_head_t resize_wait; - struct fdtable *fdt; - struct fdtable fdtab; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - spinlock_t file_lock; - unsigned int next_fd; - long unsigned int close_on_exec_init[1]; - long unsigned int open_fds_init[1]; - long unsigned int full_fds_bits_init[1]; - struct file *fd_array[64]; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 kvm_stats_desc { + __u32 flags; + __s16 exponent; + __u16 size; + __u32 offset; + __u32 bucket_size; + char name[0]; }; -struct robust_list { - struct robust_list *next; +enum { + MEMREMAP_WB = 1, + MEMREMAP_WT = 2, + MEMREMAP_WC = 4, + MEMREMAP_ENC = 8, + MEMREMAP_DEC = 16, }; -struct robust_list_head { - struct robust_list list; - long int futex_offset; - struct robust_list *list_op_pending; +struct kvm_s390_float_interrupt { + long unsigned int pending_irqs; + long unsigned int masked_irqs; + spinlock_t lock; + struct list_head lists[10]; + int counters[4]; + struct kvm_s390_mchk_info mchk; + struct kvm_s390_ext_info srv_signal; + int next_rr_cpu; + struct mutex ais_lock; + u8 simm; + u8 nimm; }; -struct kernel_clone_args { - u64 flags; - int *pidfd; - int *child_tid; - int *parent_tid; - int exit_signal; - long unsigned int stack; - long unsigned int stack_size; - long unsigned int tls; - pid_t *set_tid; - size_t set_tid_size; - int cgroup; - int io_thread; - int kthread; - struct cgroup *cgrp; - struct css_set *cset; +struct kvm_hw_wp_info_arch { + long unsigned int addr; + long unsigned int phys_addr; + int len; + char *old_data; }; -struct multiprocess_signals { - sigset_t signal; - struct hlist_node node; +struct kvm_hw_bp_info_arch { + long unsigned int addr; + int len; }; -typedef int (*proc_visitor)(struct task_struct *, void *); - -typedef struct poll_table_struct poll_table; - -enum { - FUTEX_STATE_OK = 0, - FUTEX_STATE_EXITING = 1, - FUTEX_STATE_DEAD = 2, +struct kvm_vm_stat { + struct kvm_vm_stat_generic generic; + u64 inject_io; + u64 inject_float_mchk; + u64 inject_pfault_done; + u64 inject_service_signal; + u64 inject_virtio; + u64 aen_forward; }; -enum proc_hidepid { - HIDEPID_OFF = 0, - HIDEPID_NO_ACCESS = 1, - HIDEPID_INVISIBLE = 2, - HIDEPID_NOT_PTRACEABLE = 4, +struct s390_io_adapter { + unsigned int id; + int isc; + bool maskable; + bool masked; + bool swap; + bool suppressible; }; -enum proc_pidonly { - PROC_PIDONLY_OFF = 0, - PROC_PIDONLY_ON = 1, +struct kvm_s390_cpu_model { + __u64 fac_mask[256]; + struct kvm_s390_vm_cpu_subfunc subfuncs; + __u64 *fac_list; + u64 cpuid; + short unsigned int ibc; }; -struct proc_fs_info { - struct pid_namespace *pid_ns; - struct dentry *proc_self; - struct dentry *proc_thread_self; - kgid_t pid_gid; - enum proc_hidepid hide_pid; - enum proc_pidonly pidonly; -}; +typedef int (*crypto_hook)(struct kvm_vcpu *); -enum bpf_type_flag { - PTR_MAYBE_NULL = 256, - MEM_RDONLY = 512, - MEM_ALLOC = 1024, - MEM_USER = 2048, - MEM_PERCPU = 4096, - __BPF_TYPE_LAST_FLAG = 4096, -}; +struct kvm_s390_crypto_cb; -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 = 8191, +struct kvm_s390_crypto { + struct kvm_s390_crypto_cb *crycb; + struct rw_semaphore pqap_hook_rwsem; + crypto_hook *pqap_hook; + __u32 crycbd; + __u8 aes_kw; + __u8 dea_kw; + __u8 apie; }; -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 = 1286, - RET_PTR_TO_BTF_ID_OR_NULL = 264, - __BPF_RET_TYPE_LIMIT = 8191, +struct kvm_s390_apcb0 { + __u64 apm[1]; + __u64 aqm[1]; + __u64 adm[1]; + __u64 reserved18; }; -enum bpf_cgroup_storage_type { - BPF_CGROUP_STORAGE_SHARED = 0, - BPF_CGROUP_STORAGE_PERCPU = 1, - __BPF_CGROUP_STORAGE_MAX = 2, +struct kvm_s390_apcb1 { + __u64 apm[4]; + __u64 aqm[4]; + __u64 adm[4]; + __u64 reserved60[4]; }; -enum bpf_tramp_prog_type { - BPF_TRAMP_FENTRY = 0, - BPF_TRAMP_FEXIT = 1, - BPF_TRAMP_MODIFY_RETURN = 2, - BPF_TRAMP_MAX = 3, - BPF_TRAMP_REPLACE = 4, +struct kvm_s390_crypto_cb { + struct kvm_s390_apcb0 apcb0; + __u8 reserved20[40]; + __u8 dea_wrapping_key_mask[24]; + __u8 aes_wrapping_key_mask[32]; + struct kvm_s390_apcb1 apcb1; }; -struct trace_event_raw_task_newtask { - struct trace_entry ent; - pid_t pid; - char comm[16]; - long unsigned int clone_flags; - short int oom_score_adj; - char __data[0]; +struct kvm_s390_gisa { + union { + struct { + u32 next_alert; + u8 ipm; + u8 reserved01[2]; + u8 iam; + }; + struct { + u32 next_alert; + u8 ipm; + u8 reserved01; + char: 6; + u8 g: 1; + u8 c: 1; + u8 iam; + u8 reserved02[4]; + u32 airq_count; + } g0; + struct { + u32 next_alert; + u8 ipm; + u8 simm; + u8 nimm; + u8 iam; + u8 aism[8]; + char: 6; + u8 g: 1; + u8 c: 1; + u8 reserved03[11]; + u32 airq_count; + } g1; + struct { + u64 word[4]; + } u64; + }; }; -struct trace_event_raw_task_rename { - struct trace_entry ent; - pid_t pid; - char oldcomm[16]; - char newcomm[16]; - short int oom_score_adj; - char __data[0]; +struct sie_page2 { + __u64 fac_list[256]; + struct kvm_s390_crypto_cb crycb; + struct kvm_s390_gisa gisa; + struct kvm *kvm; + u8 reserved928[1752]; }; -struct trace_event_data_offsets_task_newtask {}; - -struct trace_event_data_offsets_task_rename {}; - -typedef void (*btf_trace_task_newtask)(void *, struct task_struct *, long unsigned int); - -typedef void (*btf_trace_task_rename)(void *, struct task_struct *, const char *); - -struct vm_stack { - struct callback_head rcu; - struct vm_struct *stack_vm_area; +struct kvm_s390_vsie { + struct mutex mutex; + struct xarray addr_to_page; + int page_count; + int next; + struct page *pages[255]; }; -typedef struct vm_struct *pcp_op_T_____3; +struct kvm_s390_gisa_iam { + u8 mask; + spinlock_t ref_lock; + u32 ref_count[8]; +}; -struct taint_flag { - char c_true; - char c_false; - bool module; +struct kvm_s390_gisa_interrupt { + struct kvm_s390_gisa *origin; + struct kvm_s390_gisa_iam alert; + struct hrtimer timer; + u64 expires; + long unsigned int kicked_mask[4]; +}; + +struct kvm_s390_pv { + u64 handle; + u64 guest_len; + long unsigned int stor_base; + void *stor_var; +}; + +struct kvm_device; + +struct kvm_arch { + void *sca; + int use_esca; + rwlock_t sca_lock; + debug_info_t *dbf; + struct kvm_s390_float_interrupt float_int; + struct kvm_device *flic; + struct gmap *gmap; + long unsigned int mem_limit; + int css_support; + int use_irqchip; + int use_cmma; + int use_pfmfi; + int use_skf; + int use_zpci_interp; + int user_cpu_state_ctrl; + int user_sigp; + int user_stsi; + int user_instr0; + struct s390_io_adapter *adapters[64]; + wait_queue_head_t ipte_wq; + int ipte_lock_count; + struct mutex ipte_mutex; + spinlock_t start_stop_lock; + struct sie_page2 *sie_page2; + struct kvm_s390_cpu_model model; + struct kvm_s390_crypto crypto; + struct kvm_s390_vsie vsie; + u8 epdx; + u64 epoch; + int migration_mode; + atomic64_t cmma_dirty_pages; + long unsigned int cpu_feat[16]; + long unsigned int idle_mask[4]; + struct kvm_s390_gisa_interrupt gisa_int; + struct kvm_s390_pv pv; + struct list_head kzdev_list; + spinlock_t kzdev_list_lock; +}; + +struct kvm_memslots; + +struct kvm_io_bus; + +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[255]; + 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 mutex irq_lock; + struct kvm_irq_routing_table *irq_routing; + struct hlist_head irq_ack_notifier_list; + 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]; }; -enum ftrace_dump_mode { - DUMP_NONE = 0, - DUMP_ALL = 1, - DUMP_ORIG = 2, +struct kvm_device_ops; + +struct kvm_device { + const struct kvm_device_ops *ops; + struct kvm *kvm; + void *private; + struct list_head vm_node; }; -enum kmsg_dump_reason { - KMSG_DUMP_UNDEF = 0, - KMSG_DUMP_PANIC = 1, - KMSG_DUMP_OOPS = 2, - KMSG_DUMP_EMERG = 3, - KMSG_DUMP_SHUTDOWN = 4, - KMSG_DUMP_MAX = 5, +struct kvm_io_range { + gpa_t addr; + int len; + struct kvm_io_device *dev; }; -enum reboot_mode { - REBOOT_UNDEFINED = 4294967295, - REBOOT_COLD = 0, - REBOOT_WARM = 1, - REBOOT_HARD = 2, - REBOOT_SOFT = 3, - REBOOT_GPIO = 4, +struct kvm_io_bus { + int dev_count; + int ioeventfd_count; + struct kvm_io_range range[0]; }; -enum con_flush_mode { - CONSOLE_FLUSH_PENDING = 0, - CONSOLE_REPLAY_ALL = 1, +enum { + OUTSIDE_GUEST_MODE = 0, + IN_GUEST_MODE = 1, + EXITING_GUEST_MODE = 2, + READING_SHADOW_PAGE_TABLES = 3, }; -enum error_detector { - ERROR_DETECTOR_KFENCE = 0, - ERROR_DETECTOR_KASAN = 1, - ERROR_DETECTOR_WARN = 2, +struct kvm_host_map { + struct page *page; + void *hva; + kvm_pfn_t pfn; + kvm_pfn_t gfn; }; -struct warn_args { - const char *fmt; - va_list args; +struct kvm_irq_routing_table { + int chip[1]; + u32 nr_rt_entries; + struct hlist_head map[0]; }; -struct old_timeval32 { - old_time32_t tv_sec; - s32 tv_usec; +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]; }; -struct rusage { - struct __kernel_old_timeval ru_utime; - struct __kernel_old_timeval ru_stime; - __kernel_long_t ru_maxrss; - __kernel_long_t ru_ixrss; - __kernel_long_t ru_idrss; - __kernel_long_t ru_isrss; - __kernel_long_t ru_minflt; - __kernel_long_t ru_majflt; - __kernel_long_t ru_nswap; - __kernel_long_t ru_inblock; - __kernel_long_t ru_oublock; - __kernel_long_t ru_msgsnd; - __kernel_long_t ru_msgrcv; - __kernel_long_t ru_nsignals; - __kernel_long_t ru_nvcsw; - __kernel_long_t ru_nivcsw; +enum kvm_stat_kind { + KVM_STAT_VM = 0, + KVM_STAT_VCPU = 1, }; -typedef u32 compat_uint_t; +struct _kvm_stats_desc; -struct compat_rusage { - struct old_timeval32 ru_utime; - struct old_timeval32 ru_stime; - compat_long_t ru_maxrss; - compat_long_t ru_ixrss; - compat_long_t ru_idrss; - compat_long_t ru_isrss; - compat_long_t ru_minflt; - compat_long_t ru_majflt; - compat_long_t ru_nswap; - compat_long_t ru_inblock; - compat_long_t ru_oublock; - compat_long_t ru_msgsnd; - compat_long_t ru_msgrcv; - compat_long_t ru_nsignals; - compat_long_t ru_nvcsw; - compat_long_t ru_nivcsw; +struct kvm_stat_data { + struct kvm *kvm; + const struct _kvm_stats_desc *desc; + enum kvm_stat_kind kind; }; -struct waitid_info { - pid_t pid; - uid_t uid; - int status; - int cause; +enum kvm_mr_change { + KVM_MR_CREATE = 0, + KVM_MR_DELETE = 1, + KVM_MR_MOVE = 2, + KVM_MR_FLAGS_ONLY = 3, }; -struct wait_opts { - enum pid_type wo_type; - int wo_flags; - struct pid *wo_pid; - struct waitid_info *wo_info; - int wo_stat; - struct rusage *wo_rusage; - wait_queue_entry_t child_wait; - int notask_error; +struct _kvm_stats_desc { + struct kvm_stats_desc desc; + char name[48]; }; -struct softirq_action { - void (*action)(struct softirq_action *); +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 *); }; -struct tasklet_struct { - struct tasklet_struct *next; - long unsigned int state; - atomic_t count; - bool use_callback; - union { - void (*func)(long unsigned int); - void (*callback)(struct tasklet_struct *); - }; - long unsigned int data; -}; +typedef int (*kvm_vm_thread_fn_t)(struct kvm *, uintptr_t); -enum { - TASKLET_STATE_SCHED = 0, - TASKLET_STATE_RUN = 1, +struct syscore_ops { + struct list_head node; + int (*suspend)(); + void (*resume)(); + void (*shutdown)(); }; -struct kernel_stat { - long unsigned int irqs_sum; - unsigned int softirqs[10]; +struct trace_event_raw_kvm_userspace_exit { + struct trace_entry ent; + __u32 reason; + int errno; + char __data[0]; }; -struct trace_print_flags { - long unsigned int mask; - const char *name; +struct trace_event_raw_kvm_vcpu_wakeup { + struct trace_entry ent; + __u64 ns; + bool waited; + bool valid; + char __data[0]; }; -struct wait_bit_key { - void *flags; - int bit_nr; - long unsigned int timeout; +struct trace_event_raw_kvm_set_irq { + struct trace_entry ent; + unsigned int gsi; + int level; + int irq_source_id; + char __data[0]; }; -struct wait_bit_queue_entry { - struct wait_bit_key key; - struct wait_queue_entry wq_entry; +struct trace_event_raw_kvm_ack_irq { + struct trace_entry ent; + unsigned int irqchip; + unsigned int pin; + char __data[0]; }; -struct smp_hotplug_thread { - struct task_struct **store; - struct list_head list; - int (*thread_should_run)(unsigned int); - void (*thread_fn)(unsigned int); - void (*create)(unsigned int); - void (*setup)(unsigned int); - void (*cleanup)(unsigned int, bool); - void (*park)(unsigned int); - void (*unpark)(unsigned int); - bool selfparking; - const char *thread_comm; +struct trace_event_raw_kvm_mmio { + struct trace_entry ent; + u32 type; + u32 len; + u64 gpa; + u64 val; + char __data[0]; }; -struct trace_event_raw_irq_handler_entry { +struct trace_event_raw_kvm_fpu { struct trace_entry ent; - int irq; - u32 __data_loc_name; + u32 load; char __data[0]; }; -struct trace_event_raw_irq_handler_exit { +struct trace_event_raw_kvm_async_get_page_class { struct trace_entry ent; - int irq; - int ret; + __u64 gva; + u64 gfn; char __data[0]; }; -struct trace_event_raw_softirq { +struct trace_event_raw_kvm_async_pf_nopresent_ready { struct trace_entry ent; - unsigned int vec; + __u64 token; + __u64 gva; char __data[0]; }; -struct trace_event_data_offsets_irq_handler_entry { - u32 name; +struct trace_event_raw_kvm_async_pf_completed { + struct trace_entry ent; + long unsigned int address; + u64 gva; + char __data[0]; }; -struct trace_event_data_offsets_irq_handler_exit {}; - -struct trace_event_data_offsets_softirq {}; - -typedef void (*btf_trace_irq_handler_entry)(void *, int, struct irqaction *); - -typedef void (*btf_trace_irq_handler_exit)(void *, int, struct irqaction *, int); - -typedef void (*btf_trace_softirq_entry)(void *, unsigned int); +struct trace_event_raw_kvm_halt_poll_ns { + struct trace_entry ent; + bool grow; + unsigned int vcpu_id; + unsigned int new; + unsigned int old; + char __data[0]; +}; -typedef void (*btf_trace_softirq_exit)(void *, unsigned int); +struct trace_event_raw_kvm_dirty_ring_push { + struct trace_entry ent; + int index; + u32 dirty_index; + u32 reset_index; + u32 slot; + u64 offset; + char __data[0]; +}; -typedef void (*btf_trace_softirq_raise)(void *, unsigned int); +struct trace_event_raw_kvm_dirty_ring_reset { + struct trace_entry ent; + int index; + u32 dirty_index; + u32 reset_index; + char __data[0]; +}; -struct tasklet_head { - struct tasklet_struct *head; - struct tasklet_struct **tail; +struct trace_event_raw_kvm_dirty_ring_exit { + struct trace_entry ent; + int vcpu_id; + char __data[0]; }; -enum cpuhp_smt_control { - CPU_SMT_ENABLED = 0, - CPU_SMT_DISABLED = 1, - CPU_SMT_FORCE_DISABLED = 2, - CPU_SMT_NOT_SUPPORTED = 3, - CPU_SMT_NOT_IMPLEMENTED = 4, +struct trace_event_raw_kvm_unmap_hva_range { + struct trace_entry ent; + long unsigned int start; + long unsigned int end; + char __data[0]; }; -struct trace_event_raw_cpuhp_enter { +struct trace_event_raw_kvm_set_spte_hva { struct trace_entry ent; - unsigned int cpu; - int target; - int idx; - void *fun; + long unsigned int hva; char __data[0]; }; -struct trace_event_raw_cpuhp_multi_enter { +struct trace_event_raw_kvm_age_hva { struct trace_entry ent; - unsigned int cpu; - int target; - int idx; - void *fun; + long unsigned int start; + long unsigned int end; char __data[0]; }; -struct trace_event_raw_cpuhp_exit { +struct trace_event_raw_kvm_test_age_hva { struct trace_entry ent; - unsigned int cpu; - int state; - int idx; - int ret; + long unsigned int hva; char __data[0]; }; -struct trace_event_data_offsets_cpuhp_enter {}; +struct trace_event_data_offsets_kvm_userspace_exit {}; -struct trace_event_data_offsets_cpuhp_multi_enter {}; +struct trace_event_data_offsets_kvm_vcpu_wakeup {}; -struct trace_event_data_offsets_cpuhp_exit {}; +struct trace_event_data_offsets_kvm_set_irq {}; -typedef void (*btf_trace_cpuhp_enter)(void *, unsigned int, int, int, int (*)(unsigned int)); +struct trace_event_data_offsets_kvm_ack_irq {}; -typedef void (*btf_trace_cpuhp_multi_enter)(void *, unsigned int, int, int, int (*)(unsigned int, struct hlist_node *), struct hlist_node *); +struct trace_event_data_offsets_kvm_mmio {}; -typedef void (*btf_trace_cpuhp_exit)(void *, unsigned int, int, int, int); +struct trace_event_data_offsets_kvm_fpu {}; -struct cpuhp_cpu_state { - enum cpuhp_state state; - enum cpuhp_state target; - enum cpuhp_state fail; - struct task_struct *thread; - bool should_run; - bool rollback; - bool single; - bool bringup; - struct hlist_node *node; - struct hlist_node *last; - enum cpuhp_state cb_state; - int result; - struct completion done_up; - struct completion done_down; -}; +struct trace_event_data_offsets_kvm_async_get_page_class {}; -struct cpuhp_step { - const char *name; - union { - int (*single)(unsigned int); - int (*multi)(unsigned int, struct hlist_node *); - } startup; - union { - int (*single)(unsigned int); - int (*multi)(unsigned int, struct hlist_node *); - } teardown; - struct hlist_head list; - bool cant_stop; - bool multi_instance; -}; +struct trace_event_data_offsets_kvm_async_pf_nopresent_ready {}; -enum cpu_mitigations { - CPU_MITIGATIONS_OFF = 0, - CPU_MITIGATIONS_AUTO = 1, - CPU_MITIGATIONS_AUTO_NOSMT = 2, -}; +struct trace_event_data_offsets_kvm_async_pf_completed {}; -enum { - IORES_DESC_NONE = 0, - IORES_DESC_CRASH_KERNEL = 1, - IORES_DESC_ACPI_TABLES = 2, - IORES_DESC_ACPI_NV_STORAGE = 3, - IORES_DESC_PERSISTENT_MEMORY = 4, - IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5, - IORES_DESC_DEVICE_PRIVATE_MEMORY = 6, - IORES_DESC_RESERVED = 7, - IORES_DESC_SOFT_RESERVED = 8, -}; +struct trace_event_data_offsets_kvm_halt_poll_ns {}; -enum { - REGION_INTERSECTS = 0, - REGION_DISJOINT = 1, - REGION_MIXED = 2, -}; +struct trace_event_data_offsets_kvm_dirty_ring_push {}; -struct pseudo_fs_context { - const struct super_operations *ops; - const struct xattr_handler **xattr; - const struct dentry_operations *dops; - long unsigned int magic; -}; +struct trace_event_data_offsets_kvm_dirty_ring_reset {}; -typedef void (*dr_release_t)(struct device *, void *); +struct trace_event_data_offsets_kvm_dirty_ring_exit {}; -typedef int (*dr_match_t)(struct device *, void *, void *); +struct trace_event_data_offsets_kvm_unmap_hva_range {}; -struct resource_constraint { - resource_size_t min; - resource_size_t max; - resource_size_t align; - resource_size_t (*alignf)(void *, const struct resource *, resource_size_t, resource_size_t); - void *alignf_data; -}; +struct trace_event_data_offsets_kvm_set_spte_hva {}; -enum { - MAX_IORES_LEVEL = 5, -}; +struct trace_event_data_offsets_kvm_age_hva {}; -struct region_devres { - struct resource *parent; - resource_size_t start; - resource_size_t n; +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); + +typedef void (*btf_trace_kvm_set_irq)(void *, unsigned int, int, int); + +typedef void (*btf_trace_kvm_ack_irq)(void *, unsigned int, unsigned int); + +typedef void (*btf_trace_kvm_mmio)(void *, int, int, u64, void *); + +typedef void (*btf_trace_kvm_fpu)(void *, int); + +typedef void (*btf_trace_kvm_try_async_get_page)(void *, u64, u64); + +typedef void (*btf_trace_kvm_async_pf_doublefault)(void *, u64, u64); + +typedef void (*btf_trace_kvm_async_pf_not_present)(void *, u64, u64); + +typedef void (*btf_trace_kvm_async_pf_ready)(void *, u64, u64); + +typedef void (*btf_trace_kvm_async_pf_completed)(void *, long unsigned int, u64); + +typedef void (*btf_trace_kvm_halt_poll_ns)(void *, bool, unsigned int, unsigned int, unsigned int); + +typedef void (*btf_trace_kvm_dirty_ring_push)(void *, struct kvm_dirty_ring *, u32, u64); + +typedef void (*btf_trace_kvm_dirty_ring_reset)(void *, struct kvm_dirty_ring *); + +typedef void (*btf_trace_kvm_dirty_ring_exit)(void *, struct kvm_vcpu *); + +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); + +struct kvm_cpu_compat_check { + void *opaque; + int *ret; }; -struct __user_cap_header_struct { - __u32 version; - int pid; +struct kvm_vm_worker_thread_context { + struct kvm *kvm; + struct task_struct *parent; + struct completion init_done; + kvm_vm_thread_fn_t thread_fn; + uintptr_t data; + int err; }; -typedef struct __user_cap_header_struct *cap_user_header_t; +struct irq_bypass_consumer; -struct __user_cap_data_struct { - __u32 effective; - __u32 permitted; - __u32 inheritable; +struct irq_bypass_producer { + struct list_head node; + void *token; + int irq; + int (*add_consumer)(struct irq_bypass_producer *, struct irq_bypass_consumer *); + void (*del_consumer)(struct irq_bypass_producer *, struct irq_bypass_consumer *); + void (*stop)(struct irq_bypass_producer *); + void (*start)(struct irq_bypass_producer *); }; -typedef struct __user_cap_data_struct *cap_user_data_t; +struct irq_bypass_consumer { + struct list_head node; + void *token; + int (*add_producer)(struct irq_bypass_consumer *, struct irq_bypass_producer *); + void (*del_producer)(struct irq_bypass_consumer *, struct irq_bypass_producer *); + void (*stop)(struct irq_bypass_consumer *); + void (*start)(struct irq_bypass_consumer *); +}; -struct sigqueue { - struct list_head list; - int flags; - kernel_siginfo_t info; - struct ucounts *ucounts; +enum { + kvm_ioeventfd_flag_nr_datamatch = 0, + kvm_ioeventfd_flag_nr_pio = 1, + kvm_ioeventfd_flag_nr_deassign = 2, + kvm_ioeventfd_flag_nr_virtio_ccw_notify = 3, + kvm_ioeventfd_flag_nr_fast_mmio = 4, + kvm_ioeventfd_flag_nr_max = 5, }; -typedef int wait_bit_action_f(struct wait_bit_key *, int); +struct kvm_s390_adapter_int { + u64 ind_addr; + u64 summary_addr; + u64 ind_offset; + u32 summary_offset; + u32 adapter_id; +}; -struct ptrace_peeksiginfo_args { - __u64 off; - __u32 flags; - __s32 nr; +struct kvm_hv_sint { + u32 vcpu; + u32 sint; }; -struct ptrace_syscall_info { - __u8 op; - __u8 pad[3]; - __u32 arch; - __u64 instruction_pointer; - __u64 stack_pointer; +struct kvm_kernel_irq_routing_entry { + u32 gsi; + u32 type; + int (*set)(struct kvm_kernel_irq_routing_entry *, struct kvm *, int, int, bool); union { struct { - __u64 nr; - __u64 args[6]; - } entry; - struct { - __s64 rval; - __u8 is_error; - } exit; + unsigned int irqchip; + unsigned int pin; + } irqchip; struct { - __u64 nr; - __u64 args[6]; - __u32 ret_data; - } seccomp; + u32 address_lo; + u32 address_hi; + u32 data; + u32 flags; + u32 devid; + } msi; + struct kvm_s390_adapter_int adapter; + struct kvm_hv_sint hv_sint; }; + struct hlist_node link; }; -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; +struct kvm_irq_ack_notifier { + struct hlist_node link; + unsigned int gsi; + void (*irq_acked)(struct kvm_irq_ack_notifier *); }; -typedef long unsigned int old_sigset_t; +typedef struct poll_table_struct poll_table; -struct old_sigaction { - __sighandler_t sa_handler; - old_sigset_t sa_mask; - long unsigned int sa_flags; - __sigrestore_t sa_restorer; +struct kvm_kernel_irqfd_resampler { + struct kvm *kvm; + struct list_head list; + struct kvm_irq_ack_notifier notifier; + struct list_head link; }; -enum siginfo_layout { - SIL_KILL = 0, - SIL_TIMER = 1, - SIL_POLL = 2, - SIL_FAULT = 3, - SIL_FAULT_TRAPNO = 4, - SIL_FAULT_MCEERR = 5, - SIL_FAULT_BNDERR = 6, - SIL_FAULT_PKUERR = 7, - SIL_FAULT_PERF_EVENT = 8, - SIL_CHLD = 9, - SIL_RT = 10, - SIL_SYS = 11, +struct kvm_kernel_irqfd { + struct kvm *kvm; + wait_queue_entry_t wait; + struct kvm_kernel_irq_routing_entry irq_entry; + seqcount_spinlock_t irq_entry_sc; + int gsi; + struct work_struct inject; + struct kvm_kernel_irqfd_resampler *resampler; + struct eventfd_ctx *resamplefd; + struct list_head resampler_link; + struct eventfd_ctx *eventfd; + struct list_head list; + poll_table pt; + struct work_struct shutdown; + struct irq_bypass_consumer consumer; + struct irq_bypass_producer *producer; }; struct fd { @@ -21559,2878 +21493,3296 @@ struct fd { unsigned int flags; }; -typedef u32 compat_old_sigset_t; - -struct compat_sigaction { - compat_uptr_t sa_handler; - compat_ulong_t sa_flags; - compat_uptr_t sa_restorer; - compat_sigset_t sa_mask; +struct _ioeventfd { + struct list_head list; + u64 addr; + int length; + struct eventfd_ctx *eventfd; + u64 datamatch; + struct kvm_io_device dev; + u8 bus_idx; + bool wildcard; }; -struct compat_old_sigaction { - compat_uptr_t sa_handler; - compat_old_sigset_t sa_mask; - compat_ulong_t sa_flags; - compat_uptr_t sa_restorer; +struct kvm_arch_async_pf { + long unsigned int pfault_token; }; -struct core_vma_metadata; - -struct coredump_params { - const kernel_siginfo_t *siginfo; - struct pt_regs *regs; - struct file *file; - long unsigned int limit; - long unsigned int mm_flags; - loff_t written; - loff_t pos; - loff_t to_skip; - int vma_count; - size_t vma_data_size; - struct core_vma_metadata *vma_meta; +struct kvm_async_pf { + struct work_struct work; + struct list_head link; + struct list_head queue; + struct kvm_vcpu *vcpu; + struct mm_struct *mm; + gpa_t cr2_or_gpa; + long unsigned int addr; + struct kvm_arch_async_pf arch; + bool wakeup_all; + bool notpresent_injected; }; -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; +struct kvm_msi { + __u32 address_lo; + __u32 address_hi; + __u32 data; + __u32 flags; + __u32 devid; + __u8 pad[12]; }; -enum { - TRACE_SIGNAL_DELIVERED = 0, - TRACE_SIGNAL_IGNORED = 1, - TRACE_SIGNAL_ALREADY_PENDING = 2, - TRACE_SIGNAL_OVERFLOW_FAIL = 3, - TRACE_SIGNAL_LOSE_INFO = 4, -}; +struct vfio_group; -struct trace_event_raw_signal_generate { - struct trace_entry ent; - int sig; - int errno; - int code; - char comm[16]; - pid_t pid; - int group; - int result; - char __data[0]; +struct kvm_vfio_group { + struct list_head node; + struct vfio_group *vfio_group; }; -struct trace_event_raw_signal_deliver { - struct trace_entry ent; - int sig; - int errno; - int code; - long unsigned int sa_handler; - long unsigned int sa_flags; - char __data[0]; +struct kvm_vfio { + struct list_head group_list; + struct mutex lock; + bool noncoherent; }; -struct trace_event_data_offsets_signal_generate {}; - -struct trace_event_data_offsets_signal_deliver {}; - -typedef void (*btf_trace_signal_generate)(void *, int, struct kernel_siginfo *, struct task_struct *, int, int); - -typedef void (*btf_trace_signal_deliver)(void *, int, struct kernel_siginfo *, struct k_sigaction *); +typedef u8 uint8_t; -enum sig_handler { - HANDLER_CURRENT = 0, - HANDLER_SIG_DFL = 1, - HANDLER_EXIT = 2, +enum hrtimer_mode { + HRTIMER_MODE_ABS = 0, + HRTIMER_MODE_REL = 1, + HRTIMER_MODE_PINNED = 2, + HRTIMER_MODE_SOFT = 4, + HRTIMER_MODE_HARD = 8, + HRTIMER_MODE_ABS_PINNED = 2, + HRTIMER_MODE_REL_PINNED = 3, + HRTIMER_MODE_ABS_SOFT = 4, + HRTIMER_MODE_REL_SOFT = 5, + HRTIMER_MODE_ABS_PINNED_SOFT = 6, + HRTIMER_MODE_REL_PINNED_SOFT = 7, + HRTIMER_MODE_ABS_HARD = 8, + HRTIMER_MODE_REL_HARD = 9, + HRTIMER_MODE_ABS_PINNED_HARD = 10, + HRTIMER_MODE_REL_PINNED_HARD = 11, }; -typedef __kernel_clock_t clock_t; - -struct rlimit64 { - __u64 rlim_cur; - __u64 rlim_max; +struct kvm_s390_vm_tod_clock { + __u8 epoch_idx; + __u64 tod; }; -struct compat_tms { - compat_clock_t tms_utime; - compat_clock_t tms_stime; - compat_clock_t tms_cutime; - compat_clock_t tms_cstime; +struct kvm_s390_vm_cpu_processor { + __u64 cpuid; + __u16 ibc; + __u8 pad[6]; + __u64 fac_list[256]; }; -struct compat_rlimit { - compat_ulong_t rlim_cur; - compat_ulong_t rlim_max; +struct kvm_s390_vm_cpu_machine { + __u64 cpuid; + __u32 ibc; + __u8 pad[4]; + __u64 fac_mask[256]; + __u64 fac_list[256]; }; -enum uts_proc { - UTS_PROC_OSTYPE = 0, - UTS_PROC_OSRELEASE = 1, - UTS_PROC_VERSION = 2, - UTS_PROC_HOSTNAME = 3, - UTS_PROC_DOMAINNAME = 4, +struct kvm_s390_vm_cpu_feat { + __u64 feat[16]; }; -struct prctl_mm_map { - __u64 start_code; - __u64 end_code; - __u64 start_data; - __u64 end_data; - __u64 start_brk; - __u64 brk; - __u64 start_stack; - __u64 arg_start; - __u64 arg_end; - __u64 env_start; - __u64 env_end; - __u64 *auxv; - __u32 auxv_size; - __u32 exe_fd; +struct kvm_s390_skeys { + __u64 start_gfn; + __u64 count; + __u64 skeydata_addr; + __u32 flags; + __u32 reserved[9]; }; -struct tms { - __kernel_clock_t tms_utime; - __kernel_clock_t tms_stime; - __kernel_clock_t tms_cutime; - __kernel_clock_t tms_cstime; +struct kvm_s390_cmma_log { + __u64 start_gfn; + __u32 count; + __u32 flags; + union { + __u64 remaining; + __u64 mask; + }; + __u64 values; }; -struct getcpu_cache { - long unsigned int blob[16]; +struct kvm_s390_mem_op { + __u64 gaddr; + __u64 flags; + __u32 size; + __u32 op; + __u64 buf; + union { + struct { + __u8 ar; + __u8 key; + }; + __u32 sida_offset; + __u8 reserved[32]; + }; }; -struct compat_sysinfo { - s32 uptime; - u32 loads[3]; - u32 totalram; - u32 freeram; - u32 sharedram; - u32 bufferram; - u32 totalswap; - u32 freeswap; - u16 procs; - u16 pad; - u32 totalhigh; - u32 freehigh; - u32 mem_unit; - char _f[8]; +struct kvm_s390_interrupt { + __u32 type; + __u32 parm; + __u64 parm64; +}; + +struct kvm_s390_irq { + __u64 type; + union { + struct kvm_s390_io_info io; + struct kvm_s390_ext_info ext; + struct kvm_s390_pgm_info pgm; + struct kvm_s390_emerg_info emerg; + struct kvm_s390_extcall_info extcall; + struct kvm_s390_prefix_info prefix; + struct kvm_s390_stop_info stop; + struct kvm_s390_mchk_info mchk; + char reserved[64]; + } u; }; -enum sysctl_writes_mode { - SYSCTL_WRITES_LEGACY = 4294967295, - SYSCTL_WRITES_WARN = 0, - SYSCTL_WRITES_STRICT = 1, +struct kvm_s390_irq_state { + __u64 buf; + __u32 flags; + __u32 len; + __u32 reserved[4]; }; -struct do_proc_dointvec_minmax_conv_param { - int *min; - int *max; +struct kvm_one_reg { + __u64 id; + __u64 addr; }; -struct do_proc_douintvec_minmax_conv_param { - unsigned int *min; - unsigned int *max; +struct kvm_s390_pv_sec_parm { + __u64 origin; + __u64 length; }; -typedef void (*task_work_func_t)(struct callback_head *); +struct kvm_s390_pv_unp { + __u64 addr; + __u64 size; + __u64 tweak; +}; -enum task_work_notify_mode { - TWA_NONE = 0, - TWA_RESUME = 1, - TWA_SIGNAL = 2, +enum pv_cmd_id { + KVM_PV_ENABLE = 0, + KVM_PV_DISABLE = 1, + KVM_PV_SET_SEC_PARMS = 2, + KVM_PV_UNPACK = 3, + KVM_PV_VERIFY = 4, + KVM_PV_PREP_RESET = 5, + KVM_PV_UNSHARE_ALL = 6, }; -struct blkg_iostat { - u64 bytes[3]; - u64 ios[3]; +struct kvm_pv_cmd { + __u32 cmd; + __u16 rc; + __u16 rrc; + __u64 data; + __u32 flags; + __u32 reserved[3]; }; -struct blkg_iostat_set { - struct u64_stats_sync sync; - struct blkg_iostat cur; - struct blkg_iostat last; +struct kvm_s390_zpci_op { + __u32 fh; + __u8 op; + __u8 pad[3]; + union { + struct { + __u64 ibv; + __u64 sb; + __u32 flags; + __u32 noi; + __u8 isc; + __u8 sbo; + __u16 pad; + } reg_aen; + __u64 reserved[8]; + } u; }; -struct blkcg; +struct uv_cb_nodata { + struct uv_cb_header header; + u64 reserved08[2]; + u64 handle; + u64 reserved20[4]; +}; -struct blkg_policy_data; +struct css_general_char { + short: 12; + u64 dynio: 1; + short: 3; + char: 1; + u64 eadm: 1; + int: 14; + short: 9; + u64 aif: 1; + char: 3; + u64 mcss: 1; + u64 fcs: 1; + short: 1; + u64 ext_mb: 1; + char: 7; + u64 aif_tdd: 1; + char: 1; + u64 qebsm: 1; + char: 2; + u64 aiv: 1; + long: 2; + char: 3; + u64 aif_osa: 1; + short: 12; + u64 eadm_rf: 1; + char: 1; + u64 cib: 1; + char: 5; + u64 fcx: 1; + int: 7; + short: 12; + u64 alt_ssi: 1; + char: 1; + u64 narf: 1; + short: 1; + char: 4; + u64 enarf: 1; + char: 3; + char: 3; + u64 util_str: 1; +}; -struct blkcg_gq { - struct request_queue *q; - struct list_head q_node; - struct hlist_node blkcg_node; - struct blkcg *blkcg; - struct blkcg_gq *parent; - struct percpu_ref refcnt; - bool online; - struct blkg_iostat_set *iostat_cpu; - struct blkg_iostat_set iostat; - struct blkg_policy_data *pd[6]; - spinlock_t async_bio_lock; - struct bio_list async_bios; - union { - struct work_struct async_bio_work; - struct work_struct free_work; +union bsca_sigp_ctrl { + __u8 value; + struct { + __u8 c: 1; + __u8 r: 1; + __u8 scn: 6; }; - atomic_t use_delay; - atomic64_t delay_nsec; - atomic64_t delay_start; - u64 last_delay; - int last_use; - struct callback_head callback_head; }; -enum blkg_iostat_type { - BLKG_IOSTAT_READ = 0, - BLKG_IOSTAT_WRITE = 1, - BLKG_IOSTAT_DISCARD = 2, - BLKG_IOSTAT_NR = 3, +union esca_sigp_ctrl { + __u16 value; + struct { + __u8 c: 1; + __u8 reserved: 7; + __u8 scn; + }; }; -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 esca_entry { + union esca_sigp_ctrl sigp_ctrl; + __u16 reserved1[3]; + __u64 sda; + __u64 reserved2[6]; }; -enum { - KERNEL_PARAM_OPS_FL_NOARG = 1, +struct bsca_entry { + __u8 reserved0; + union bsca_sigp_ctrl sigp_ctrl; + __u16 reserved[3]; + __u64 sda; + __u64 reserved2[2]; }; -enum { - KERNEL_PARAM_FL_UNSAFE = 1, - KERNEL_PARAM_FL_HWPARAM = 2, +union ipte_control { + long unsigned int val; + struct { + long unsigned int k: 1; + long unsigned int kh: 31; + long unsigned int kg: 32; + }; }; -struct param_attribute { - struct module_attribute mattr; - const struct kernel_param *param; +struct bsca_block { + union ipte_control ipte_control; + __u64 reserved[5]; + __u64 mcn; + __u64 reserved2; + struct bsca_entry cpu[64]; +}; + +struct esca_block { + union ipte_control ipte_control; + __u64 reserved1[7]; + __u64 mcn[4]; + __u64 reserved2[20]; + struct esca_entry cpu[248]; +}; + +enum irq_types { + IRQ_PEND_SET_PREFIX = 0, + IRQ_PEND_RESTART = 1, + IRQ_PEND_SIGP_STOP = 2, + IRQ_PEND_IO_ISC_7 = 3, + IRQ_PEND_IO_ISC_6 = 4, + IRQ_PEND_IO_ISC_5 = 5, + IRQ_PEND_IO_ISC_4 = 6, + IRQ_PEND_IO_ISC_3 = 7, + IRQ_PEND_IO_ISC_2 = 8, + IRQ_PEND_IO_ISC_1 = 9, + IRQ_PEND_IO_ISC_0 = 10, + IRQ_PEND_VIRTIO = 11, + IRQ_PEND_PFAULT_DONE = 12, + IRQ_PEND_PFAULT_INIT = 13, + IRQ_PEND_EXT_HOST = 14, + IRQ_PEND_EXT_SERVICE = 15, + IRQ_PEND_EXT_SERVICE_EV = 16, + IRQ_PEND_EXT_TIMING = 17, + IRQ_PEND_EXT_CPU_TIMER = 18, + IRQ_PEND_EXT_CLOCK_COMP = 19, + IRQ_PEND_EXT_EXTERNAL = 20, + IRQ_PEND_EXT_EMERGENCY = 21, + IRQ_PEND_EXT_MALFUNC = 22, + IRQ_PEND_EXT_IRQ_KEY = 23, + IRQ_PEND_MCHK_REP = 24, + IRQ_PEND_PROG = 25, + IRQ_PEND_SVC = 26, + IRQ_PEND_MCHK_EX = 27, + IRQ_PEND_COUNT = 28, }; -struct module_param_attrs { - unsigned int num; - struct attribute_group grp; - struct param_attribute attrs[0]; +struct ap_config_info { + unsigned int apsc: 1; + unsigned int apxa: 1; + unsigned int qact: 1; + unsigned int rc8a: 1; + unsigned char _reserved1: 4; + unsigned char _reserved2[3]; + unsigned char Na; + unsigned char Nd; + unsigned char _reserved3[10]; + unsigned int apm[8]; + unsigned int aqm[8]; + unsigned int adm[8]; + unsigned char _reserved4[16]; }; -struct module_version_attribute { - struct module_attribute mattr; - const char *module_name; - const char *version; +enum gacc_mode { + GACC_FETCH = 0, + GACC_STORE = 1, + GACC_IFETCH = 2, }; -struct kmalloced_param { - struct list_head list; - char val[0]; +struct trace_event_raw_kvm_s390_skey_related_inst { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + char __data[0]; }; -struct sched_param { - int sched_priority; +struct trace_event_raw_kvm_s390_major_guest_pfault { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + char __data[0]; }; -enum { - __PERCPU_REF_ATOMIC = 1, - __PERCPU_REF_DEAD = 2, - __PERCPU_REF_ATOMIC_DEAD = 3, - __PERCPU_REF_FLAG_BITS = 2, +struct trace_event_raw_kvm_s390_pfault_init { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + long int pfault_token; + char __data[0]; }; -struct kthread_work; - -typedef void (*kthread_work_func_t)(struct kthread_work *); +struct trace_event_raw_kvm_s390_pfault_done { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + long int pfault_token; + char __data[0]; +}; -struct kthread_worker; +struct trace_event_raw_kvm_s390_sie_enter { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + int cpuflags; + char __data[0]; +}; -struct kthread_work { - struct list_head node; - kthread_work_func_t func; - struct kthread_worker *worker; - int canceling; +struct trace_event_raw_kvm_s390_sie_fault { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + char __data[0]; }; -enum { - KTW_FREEZABLE = 1, +struct trace_event_raw_kvm_s390_sie_exit { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + u8 icptcode; + char __data[0]; }; -struct kthread_worker { - unsigned int flags; - raw_spinlock_t lock; - struct list_head work_list; - struct list_head delayed_work_list; - struct task_struct *task; - struct kthread_work *current_work; +struct trace_event_raw_kvm_s390_intercept_instruction { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + __u64 instruction; + char __data[0]; }; -struct kthread_delayed_work { - struct kthread_work work; - struct timer_list timer; +struct trace_event_raw_kvm_s390_intercept_prog { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + __u16 code; + char __data[0]; }; -enum { - CSS_NO_REF = 1, - CSS_ONLINE = 2, - CSS_RELEASED = 4, - CSS_VISIBLE = 8, - CSS_DYING = 16, +struct trace_event_raw_kvm_s390_intercept_validity { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + __u16 viwhy; + char __data[0]; }; -enum hk_type { - HK_TYPE_TIMER = 0, - HK_TYPE_RCU = 1, - HK_TYPE_MISC = 2, - HK_TYPE_SCHED = 3, - HK_TYPE_TICK = 4, - HK_TYPE_DOMAIN = 5, - HK_TYPE_WQ = 6, - HK_TYPE_MANAGED_IRQ = 7, - HK_TYPE_KTHREAD = 8, - HK_TYPE_MAX = 9, +struct trace_event_raw_kvm_s390_handle_sigp { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + __u8 order_code; + __u16 cpu_addr; + __u32 parameter; + char __data[0]; }; -struct kthread_create_info { - int (*threadfn)(void *); - void *data; - int node; - struct task_struct *result; - struct completion *done; - struct list_head list; +struct trace_event_raw_kvm_s390_handle_sigp_pei { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + __u8 order_code; + __u16 cpu_addr; + char __data[0]; }; -struct kthread { - long unsigned int flags; - unsigned int cpu; - int result; - int (*threadfn)(void *); - void *data; - struct completion parked; - struct completion exited; - struct cgroup_subsys_state *blkcg_css; - char *full_name; +struct trace_event_raw_kvm_s390_handle_diag { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + __u16 code; + char __data[0]; }; -enum KTHREAD_BITS { - KTHREAD_IS_PER_CPU = 0, - KTHREAD_SHOULD_STOP = 1, - KTHREAD_SHOULD_PARK = 2, +struct trace_event_raw_kvm_s390_handle_lctl { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + int g; + int reg1; + int reg3; + u64 addr; + char __data[0]; }; -struct kthread_flush_work { - struct kthread_work work; - struct completion done; +struct trace_event_raw_kvm_s390_handle_stctl { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + int g; + int reg1; + int reg3; + u64 addr; + char __data[0]; }; -typedef long unsigned int pcp_op_T_____4; +struct trace_event_raw_kvm_s390_handle_prefix { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + int set; + u32 address; + char __data[0]; +}; -struct ipc_ids { - int in_use; - short unsigned int seq; - struct rw_semaphore rwsem; - struct idr ipcs_idr; - int max_idx; - int last_idx; - int next_id; - struct rhashtable key_ht; +struct trace_event_raw_kvm_s390_handle_stap { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + u64 address; + char __data[0]; }; -struct ipc_namespace { - struct ipc_ids ids[3]; - int sem_ctls[4]; - int used_sems; - unsigned int msg_ctlmax; - unsigned int msg_ctlmnb; - unsigned int msg_ctlmni; - atomic_t msg_bytes; - atomic_t msg_hdrs; - size_t shm_ctlmax; - size_t shm_ctlall; - long unsigned int shm_tot; - int shm_ctlmni; - int shm_rmid_forced; - struct notifier_block ipcns_nb; - struct vfsmount *mq_mnt; - unsigned int mq_queues_count; - unsigned int mq_queues_max; - unsigned int mq_msg_max; - unsigned int mq_msgsize_max; - unsigned int mq_msg_default; - unsigned int mq_msgsize_default; - struct user_namespace *user_ns; - struct ucounts *ucounts; - struct llist_node mnt_llist; - struct ns_common ns; +struct trace_event_raw_kvm_s390_handle_stfl { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + unsigned int facility_list; + char __data[0]; }; -struct srcu_notifier_head { - struct mutex mutex; - struct srcu_struct srcu; - struct notifier_block *head; +struct trace_event_raw_kvm_s390_handle_stsi { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + int fc; + int sel1; + int sel2; + u64 addr; + char __data[0]; }; -struct wq_flusher; +struct trace_event_raw_kvm_s390_handle_operexc { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + __u64 instruction; + char __data[0]; +}; -struct worker; +struct trace_event_raw_kvm_s390_handle_sthyi { + struct trace_entry ent; + int id; + long unsigned int pswmask; + long unsigned int pswaddr; + u64 code; + u64 addr; + char __data[0]; +}; -struct workqueue_attrs; +struct trace_event_data_offsets_kvm_s390_skey_related_inst {}; -struct pool_workqueue; +struct trace_event_data_offsets_kvm_s390_major_guest_pfault {}; -struct wq_device; +struct trace_event_data_offsets_kvm_s390_pfault_init {}; -struct workqueue_struct { - struct list_head pwqs; - struct list_head list; - struct mutex mutex; - int work_color; - int flush_color; - atomic_t nr_pwqs_to_flush; - struct wq_flusher *first_flusher; - struct list_head flusher_queue; - struct list_head flusher_overflow; - struct list_head maydays; - struct worker *rescuer; - int nr_drainers; - int saved_max_active; - struct workqueue_attrs *unbound_attrs; - struct pool_workqueue *dfl_pwq; - struct wq_device *wq_dev; - char name[24]; - struct callback_head rcu; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - unsigned int flags; - struct pool_workqueue *cpu_pwqs; - struct pool_workqueue *numa_pwq_tbl[0]; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 trace_event_data_offsets_kvm_s390_pfault_done {}; -struct workqueue_attrs { - int nice; - cpumask_var_t cpumask; - bool no_numa; -}; +struct trace_event_data_offsets_kvm_s390_sie_enter {}; -struct execute_work { - struct work_struct work; -}; +struct trace_event_data_offsets_kvm_s390_sie_fault {}; -typedef unsigned int xa_mark_t; +struct trace_event_data_offsets_kvm_s390_sie_exit {}; -enum xa_lock_type { - XA_LOCK_IRQ = 1, - XA_LOCK_BH = 2, -}; +struct trace_event_data_offsets_kvm_s390_intercept_instruction {}; -struct ida { - struct xarray xa; +struct trace_event_data_offsets_kvm_s390_intercept_prog {}; + +struct trace_event_data_offsets_kvm_s390_intercept_validity {}; + +struct trace_event_data_offsets_kvm_s390_handle_sigp {}; + +struct trace_event_data_offsets_kvm_s390_handle_sigp_pei {}; + +struct trace_event_data_offsets_kvm_s390_handle_diag {}; + +struct trace_event_data_offsets_kvm_s390_handle_lctl {}; + +struct trace_event_data_offsets_kvm_s390_handle_stctl {}; + +struct trace_event_data_offsets_kvm_s390_handle_prefix {}; + +struct trace_event_data_offsets_kvm_s390_handle_stap {}; + +struct trace_event_data_offsets_kvm_s390_handle_stfl {}; + +struct trace_event_data_offsets_kvm_s390_handle_stsi {}; + +struct trace_event_data_offsets_kvm_s390_handle_operexc {}; + +struct trace_event_data_offsets_kvm_s390_handle_sthyi {}; + +typedef void (*btf_trace_kvm_s390_skey_related_inst)(void *, struct kvm_vcpu *); + +typedef void (*btf_trace_kvm_s390_major_guest_pfault)(void *, struct kvm_vcpu *); + +typedef void (*btf_trace_kvm_s390_pfault_init)(void *, struct kvm_vcpu *, long int); + +typedef void (*btf_trace_kvm_s390_pfault_done)(void *, struct kvm_vcpu *, long int); + +typedef void (*btf_trace_kvm_s390_sie_enter)(void *, struct kvm_vcpu *, int); + +typedef void (*btf_trace_kvm_s390_sie_fault)(void *, struct kvm_vcpu *); + +typedef void (*btf_trace_kvm_s390_sie_exit)(void *, struct kvm_vcpu *, u8); + +typedef void (*btf_trace_kvm_s390_intercept_instruction)(void *, struct kvm_vcpu *, __u16, __u32); + +typedef void (*btf_trace_kvm_s390_intercept_prog)(void *, struct kvm_vcpu *, __u16); + +typedef void (*btf_trace_kvm_s390_intercept_validity)(void *, struct kvm_vcpu *, __u16); + +typedef void (*btf_trace_kvm_s390_handle_sigp)(void *, struct kvm_vcpu *, __u8, __u16, __u32); + +typedef void (*btf_trace_kvm_s390_handle_sigp_pei)(void *, struct kvm_vcpu *, __u8, __u16); + +typedef void (*btf_trace_kvm_s390_handle_diag)(void *, struct kvm_vcpu *, __u16); + +typedef void (*btf_trace_kvm_s390_handle_lctl)(void *, struct kvm_vcpu *, int, int, int, u64); + +typedef void (*btf_trace_kvm_s390_handle_stctl)(void *, struct kvm_vcpu *, int, int, int, u64); + +typedef void (*btf_trace_kvm_s390_handle_prefix)(void *, struct kvm_vcpu *, int, u32); + +typedef void (*btf_trace_kvm_s390_handle_stap)(void *, struct kvm_vcpu *, u64); + +typedef void (*btf_trace_kvm_s390_handle_stfl)(void *, struct kvm_vcpu *, unsigned int); + +typedef void (*btf_trace_kvm_s390_handle_stsi)(void *, struct kvm_vcpu *, int, int, int, u64); + +typedef void (*btf_trace_kvm_s390_handle_operexc)(void *, struct kvm_vcpu *, __u16, __u32); + +typedef void (*btf_trace_kvm_s390_handle_sthyi)(void *, struct kvm_vcpu *, u64, u64); + +struct trace_event_raw_kvm_s390_create_vm { + struct trace_entry ent; + long unsigned int type; + char __data[0]; }; -struct __una_u32 { - u32 x; +struct trace_event_raw_kvm_s390_create_vcpu { + struct trace_entry ent; + unsigned int id; + struct kvm_vcpu *vcpu; + struct kvm_s390_sie_block *sie_block; + char __data[0]; }; -struct worker_pool; +struct trace_event_raw_kvm_s390_destroy_vcpu { + struct trace_entry ent; + unsigned int id; + char __data[0]; +}; -struct worker { - union { - struct list_head entry; - struct hlist_node hentry; - }; - struct work_struct *current_work; - work_func_t current_func; - struct pool_workqueue *current_pwq; - unsigned int current_color; - struct list_head scheduled; - struct task_struct *task; - struct worker_pool *pool; - struct list_head node; - long unsigned int last_active; - unsigned int flags; - int id; - int sleeping; - char desc[24]; - struct workqueue_struct *rescue_wq; - work_func_t last_func; +struct trace_event_raw_kvm_s390_vcpu_start_stop { + struct trace_entry ent; + unsigned int id; + int state; + char __data[0]; }; -struct pool_workqueue { - struct worker_pool *pool; - struct workqueue_struct *wq; - int work_color; - int flush_color; - int refcnt; - int nr_in_flight[16]; - int nr_active; - int max_active; - struct list_head inactive_works; - struct list_head pwqs_node; - struct list_head mayday_node; - struct work_struct unbound_release_work; - struct callback_head rcu; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct trace_event_raw_kvm_s390_inject_vm { + struct trace_entry ent; + __u32 inttype; + __u32 parm; + __u64 parm64; + int who; + char __data[0]; }; -struct worker_pool { - raw_spinlock_t lock; - int cpu; - int node; +struct trace_event_raw_kvm_s390_inject_vcpu { + struct trace_entry ent; int id; - unsigned int flags; - long unsigned int watchdog_ts; - int nr_running; - struct list_head worklist; - int nr_workers; - int nr_idle; - struct list_head idle_list; - struct timer_list idle_timer; - struct timer_list mayday_timer; - struct hlist_head busy_hash[64]; - struct worker *manager; - struct list_head workers; - struct completion *detach_completion; - struct ida worker_ida; - struct workqueue_attrs *attrs; - struct hlist_node hash_node; - int refcnt; - struct callback_head rcu; + __u32 inttype; + __u32 parm; + __u64 parm64; + char __data[0]; }; -enum { - POOL_MANAGER_ACTIVE = 1, - POOL_DISASSOCIATED = 4, - WORKER_DIE = 2, - WORKER_IDLE = 4, - WORKER_PREP = 8, - WORKER_CPU_INTENSIVE = 64, - WORKER_UNBOUND = 128, - WORKER_REBOUND = 256, - WORKER_NOT_RUNNING = 456, - NR_STD_WORKER_POOLS = 2, - UNBOUND_POOL_HASH_ORDER = 6, - BUSY_WORKER_HASH_ORDER = 6, - MAX_IDLE_WORKERS_RATIO = 4, - IDLE_WORKER_TIMEOUT = 30000, - MAYDAY_INITIAL_TIMEOUT = 2, - MAYDAY_INTERVAL = 10, - CREATE_COOLDOWN = 100, - RESCUER_NICE_LEVEL = 4294967276, - HIGHPRI_NICE_LEVEL = 4294967276, - WQ_NAME_LEN = 24, +struct trace_event_raw_kvm_s390_deliver_interrupt { + struct trace_entry ent; + int id; + __u32 inttype; + __u64 data0; + __u64 data1; + char __data[0]; }; -struct wq_flusher { - struct list_head list; - int flush_color; - struct completion done; +struct trace_event_raw_kvm_s390_request_resets { + struct trace_entry ent; + __u64 resets; + char __data[0]; }; -struct wq_device { - struct workqueue_struct *wq; - struct device dev; +struct trace_event_raw_kvm_s390_stop_request { + struct trace_entry ent; + unsigned char stop_irq; + unsigned char flags; + char __data[0]; }; -struct trace_event_raw_workqueue_queue_work { +struct trace_event_raw_kvm_s390_enable_css { struct trace_entry ent; - void *work; - void *function; - u32 __data_loc_workqueue; - unsigned int req_cpu; - unsigned int cpu; + void *kvm; char __data[0]; }; -struct trace_event_raw_workqueue_activate_work { +struct trace_event_raw_kvm_s390_enable_disable_ibs { struct trace_entry ent; - void *work; + unsigned int id; + int state; char __data[0]; }; -struct trace_event_raw_workqueue_execute_start { +struct trace_event_raw_kvm_s390_modify_ais_mode { struct trace_entry ent; - void *work; - void *function; + __u8 isc; + __u16 from; + __u16 to; char __data[0]; }; -struct trace_event_raw_workqueue_execute_end { +struct trace_event_raw_kvm_s390_airq_suppressed { struct trace_entry ent; - void *work; - void *function; + __u32 id; + __u8 isc; char __data[0]; }; -struct trace_event_data_offsets_workqueue_queue_work { - u32 workqueue; -}; +struct trace_event_data_offsets_kvm_s390_create_vm {}; -struct trace_event_data_offsets_workqueue_activate_work {}; +struct trace_event_data_offsets_kvm_s390_create_vcpu {}; -struct trace_event_data_offsets_workqueue_execute_start {}; +struct trace_event_data_offsets_kvm_s390_destroy_vcpu {}; -struct trace_event_data_offsets_workqueue_execute_end {}; +struct trace_event_data_offsets_kvm_s390_vcpu_start_stop {}; -typedef void (*btf_trace_workqueue_queue_work)(void *, unsigned int, struct pool_workqueue *, struct work_struct *); +struct trace_event_data_offsets_kvm_s390_inject_vm {}; -typedef void (*btf_trace_workqueue_activate_work)(void *, struct work_struct *); +struct trace_event_data_offsets_kvm_s390_inject_vcpu {}; -typedef void (*btf_trace_workqueue_execute_start)(void *, struct work_struct *); +struct trace_event_data_offsets_kvm_s390_deliver_interrupt {}; -typedef void (*btf_trace_workqueue_execute_end)(void *, struct work_struct *, work_func_t); +struct trace_event_data_offsets_kvm_s390_request_resets {}; -struct wq_barrier { - struct work_struct work; - struct completion done; - struct task_struct *task; -}; +struct trace_event_data_offsets_kvm_s390_stop_request {}; -struct cwt_wait { - wait_queue_entry_t wait; - struct work_struct *work; -}; +struct trace_event_data_offsets_kvm_s390_enable_css {}; -struct apply_wqattrs_ctx { - struct workqueue_struct *wq; - struct workqueue_attrs *attrs; - struct list_head list; - struct pool_workqueue *dfl_pwq; - struct pool_workqueue *pwq_tbl[0]; -}; +struct trace_event_data_offsets_kvm_s390_enable_disable_ibs {}; -struct work_for_cpu { - struct work_struct work; - long int (*fn)(void *); - void *arg; - long int ret; -}; +struct trace_event_data_offsets_kvm_s390_modify_ais_mode {}; -enum what { - PROC_EVENT_NONE = 0, - PROC_EVENT_FORK = 1, - PROC_EVENT_EXEC = 2, - PROC_EVENT_UID = 4, - PROC_EVENT_GID = 64, - PROC_EVENT_SID = 128, - PROC_EVENT_PTRACE = 256, - PROC_EVENT_COMM = 512, - PROC_EVENT_COREDUMP = 1073741824, - PROC_EVENT_EXIT = 2147483648, -}; +struct trace_event_data_offsets_kvm_s390_airq_suppressed {}; -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, -}; +typedef void (*btf_trace_kvm_s390_create_vm)(void *, long unsigned int); -typedef void (*swap_func_t)(void *, void *, int); +typedef void (*btf_trace_kvm_s390_create_vcpu)(void *, unsigned int, struct kvm_vcpu *, struct kvm_s390_sie_block *); -typedef int (*cmp_func_t)(const void *, const void *); +typedef void (*btf_trace_kvm_s390_destroy_vcpu)(void *, unsigned int); -struct async_entry { - struct list_head domain_list; - struct list_head global_list; - struct work_struct work; - async_cookie_t cookie; - async_func_t func; - void *data; - struct async_domain *domain; -}; +typedef void (*btf_trace_kvm_s390_vcpu_start_stop)(void *, unsigned int, int); -struct smpboot_thread_data { - unsigned int cpu; - unsigned int status; - struct smp_hotplug_thread *ht; -}; +typedef void (*btf_trace_kvm_s390_inject_vm)(void *, __u64, __u32, __u64, int); -enum { - HP_THREAD_NONE = 0, - HP_THREAD_ACTIVE = 1, - HP_THREAD_PARKED = 2, -}; +typedef void (*btf_trace_kvm_s390_inject_vcpu)(void *, unsigned int, __u64, __u32, __u64); -struct umd_info { - const char *driver_name; - struct file *pipe_to_umh; - struct file *pipe_from_umh; - struct path wd; - struct pid *tgid; -}; +typedef void (*btf_trace_kvm_s390_deliver_interrupt)(void *, unsigned int, __u64, __u64, __u64); -struct pin_cookie {}; +typedef void (*btf_trace_kvm_s390_request_resets)(void *, __u64); -struct preempt_notifier; +typedef void (*btf_trace_kvm_s390_stop_request)(void *, unsigned char, unsigned char); -struct preempt_ops { - void (*sched_in)(struct preempt_notifier *, int); - void (*sched_out)(struct preempt_notifier *, struct task_struct *); -}; +typedef void (*btf_trace_kvm_s390_enable_css)(void *, void *); -struct preempt_notifier { - struct hlist_node link; - struct preempt_ops *ops; -}; +typedef void (*btf_trace_kvm_s390_enable_disable_ibs)(void *, unsigned int, int); -enum { - CSD_FLAG_LOCK = 1, - IRQ_WORK_PENDING = 1, - IRQ_WORK_BUSY = 2, - IRQ_WORK_LAZY = 4, - IRQ_WORK_HARD_IRQ = 8, - IRQ_WORK_CLAIMED = 3, - CSD_TYPE_ASYNC = 0, - CSD_TYPE_SYNC = 16, - CSD_TYPE_IRQ_WORK = 32, - CSD_TYPE_TTWU = 48, - CSD_FLAG_TYPE_MASK = 240, -}; +typedef void (*btf_trace_kvm_s390_modify_ais_mode)(void *, __u8, __u16, __u16); -typedef int (*task_call_f)(struct task_struct *, void *); +typedef void (*btf_trace_kvm_s390_airq_suppressed)(void *, __u32, __u8); -struct dl_bw { - raw_spinlock_t lock; - u64 bw; - u64 total_bw; +typedef u16 uint16_t; + +struct tpi_adapter_info { + u32 aism: 8; + short: 8; + short: 14; + u32 error: 1; + u32 forward: 1; + u32 reserved; + u32 adapter_IO: 1; + u32 directed_irq: 1; + u32 isc: 3; }; -struct cpudl_item; +struct kvm_s390_io_adapter { + __u32 id; + __u8 isc; + __u8 maskable; + __u8 swap; + __u8 flags; +}; -struct cpudl { - raw_spinlock_t lock; - int size; - cpumask_var_t free_cpus; - struct cpudl_item *elements; +struct kvm_s390_ais_req { + __u8 isc; + __u16 mode; }; -struct cpupri_vec { - atomic_t count; - cpumask_var_t mask; +struct kvm_s390_ais_all { + __u8 simm; + __u8 nimm; }; -struct cpupri { - struct cpupri_vec pri_to_cpu[101]; - int *cpu_to_pri; +struct kvm_s390_io_adapter_req { + __u32 id; + __u8 type; + __u8 mask; + __u16 pad0; + __u64 addr; }; -struct perf_domain; +struct zpci_fib_fmt0 { + char: 1; + u32 isc: 3; + u32 noi: 12; + char: 2; + u32 aibvo: 6; + u32 sum: 1; + char: 1; + u32 aisbo: 6; + u64 aibv; + u64 aisb; +}; -struct root_domain { - atomic_t refcount; - atomic_t rto_count; - struct callback_head rcu; - cpumask_var_t span; - cpumask_var_t online; - int overload; - int overutilized; - cpumask_var_t dlo_mask; - atomic_t dlo_count; - struct dl_bw dl_bw; - struct cpudl cpudl; - u64 visit_gen; - struct irq_work rto_push_work; - raw_spinlock_t rto_lock; - int rto_loop; - int rto_cpu; - atomic_t rto_loop_next; - atomic_t rto_loop_start; - cpumask_var_t rto_mask; - struct cpupri cpupri; - long unsigned int max_cpu_capacity; - struct perf_domain *pd; -}; - -struct cfs_rq { - struct load_weight load; - unsigned int nr_running; - unsigned int h_nr_running; - unsigned int idle_nr_running; - unsigned int idle_h_nr_running; - 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; - long: 64; - long: 64; - 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 sched_avg avg; - struct { - raw_spinlock_t lock; - int nr; - long unsigned int load_avg; - long unsigned int util_avg; - long unsigned int runnable_avg; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - } removed; - long unsigned int tg_load_avg_contrib; - long int propagate; - long int prop_runnable_sum; - long unsigned int h_load; - u64 last_h_load_update; - struct sched_entity *h_load_next; - struct rq *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_pelt; - u64 throttled_clock_pelt_time; - int throttled; - int throttle_count; - struct list_head throttled_list; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct zpci_fib_fmt1 { + char: 4; + u32 noi: 12; + int: 16; + u32 dibvo: 16; long: 64; long: 64; }; -struct cfs_bandwidth { - raw_spinlock_t lock; - ktime_t period; - u64 quota; - u64 runtime; - u64 burst; - u64 runtime_snap; - s64 hierarchical_quota; - u8 idle; - u8 period_active; - u8 slack_started; - struct hrtimer period_timer; - struct hrtimer slack_timer; - struct list_head throttled_cfs_rq; - int nr_periods; - int nr_throttled; - int nr_burst; - u64 throttled_time; - u64 burst_time; +struct zpci_fib { + u32 fmt: 8; + long: 0; + u8 fc; + u64 pba; + u64 pal; + u64 iota; + union { + struct zpci_fib_fmt0 fmt0; + struct zpci_fib_fmt1 fmt1; + }; + u64 fmb_addr; + int: 32; + u32 gd; }; -struct task_group { - struct cgroup_subsys_state css; - struct sched_entity **se; - struct cfs_rq **cfs_rq; - long unsigned int shares; - int idle; - long: 32; - long: 64; - long: 64; - long: 64; - atomic_long_t load_avg; - struct callback_head rcu; - struct list_head list; - struct task_group *parent; - struct list_head siblings; - struct list_head children; - struct autogroup *autogroup; - struct cfs_bandwidth cfs_bandwidth; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 zpci_diib { + char: 1; + u32 isc: 3; + int: 0; + short: 16; + u16 nr_cpus; + u64 disb_addr; long: 64; long: 64; +}; + +struct zpci_cdiib { long: 64; + u64 dibv_addr; long: 64; long: 64; long: 64; }; -struct autogroup { - struct kref kref; - struct task_group *tg; - struct rw_semaphore lock; - long unsigned int id; - int nice; -}; - -enum ctx_state { - CONTEXT_DISABLED = 4294967295, - CONTEXT_KERNEL = 0, - CONTEXT_USER = 1, - CONTEXT_GUEST = 2, -}; - -struct sched_domain_attr { - int relax_domain_level; -}; - -struct sched_group { - struct sched_group *next; - atomic_t ref; - unsigned int group_weight; - struct sched_group_capacity *sgc; - int asym_prefer_cpu; - int flags; - long unsigned int cpumask[0]; -}; - -struct sched_group_capacity { - atomic_t ref; - long unsigned int capacity; - long unsigned int min_capacity; - long unsigned int max_capacity; - long unsigned int next_update; - int imbalance; - int id; - long unsigned int cpumask[0]; -}; - -struct em_perf_state { - long unsigned int frequency; - long unsigned int power; - long unsigned int cost; - long unsigned int flags; -}; - -struct em_perf_domain { - struct em_perf_state *table; - int nr_perf_states; - long unsigned int flags; - long unsigned int cpus[0]; -}; - -enum { - MEMBARRIER_STATE_PRIVATE_EXPEDITED_READY = 1, - MEMBARRIER_STATE_PRIVATE_EXPEDITED = 2, - MEMBARRIER_STATE_GLOBAL_EXPEDITED_READY = 4, - MEMBARRIER_STATE_GLOBAL_EXPEDITED = 8, - MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE_READY = 16, - MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE = 32, - MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ_READY = 64, - MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ = 128, -}; - -struct kernel_cpustat { - u64 cpustat[10]; -}; - -enum { - CFTYPE_ONLY_ON_ROOT = 1, - CFTYPE_NOT_ON_ROOT = 2, - CFTYPE_NS_DELEGATABLE = 4, - CFTYPE_NO_PREFIX = 8, - CFTYPE_WORLD_WRITABLE = 16, - CFTYPE_DEBUG = 32, - CFTYPE_PRESSURE = 64, - __CFTYPE_ONLY_ON_DFL = 65536, - __CFTYPE_NOT_ON_DFL = 131072, -}; - -struct wake_q_head { - struct wake_q_node *first; - struct wake_q_node **lastp; +struct zpci_aipb { + u64 faisb; + u64 gait; + short: 13; + u16 afi: 3; + int: 0; + short: 16; + u16 faal; }; -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; +union zpci_sic_iib { + struct zpci_diib diib; + struct zpci_cdiib cdiib; + struct zpci_aipb aipb; }; -struct trace_event_raw_sched_kthread_stop { - struct trace_entry ent; - char comm[16]; - pid_t pid; - char __data[0]; +struct pci_device_id { + __u32 vendor; + __u32 device; + __u32 subvendor; + __u32 subdevice; + __u32 class; + __u32 class_mask; + kernel_ulong_t driver_data; + __u32 override_only; }; -struct trace_event_raw_sched_kthread_stop_ret { - struct trace_entry ent; - int ret; - char __data[0]; -}; +struct pci_bus; -struct trace_event_raw_sched_kthread_work_queue_work { - struct trace_entry ent; - void *work; - void *function; - void *worker; - char __data[0]; -}; +struct hotplug_slot; -struct trace_event_raw_sched_kthread_work_execute_start { - struct trace_entry ent; - void *work; - void *function; - char __data[0]; +struct pci_slot { + struct pci_bus *bus; + struct list_head list; + struct hotplug_slot *hotplug; + unsigned char number; + struct kobject kobj; }; -struct trace_event_raw_sched_kthread_work_execute_end { - struct trace_entry ent; - void *work; - void *function; - char __data[0]; -}; +struct pci_dev; -struct trace_event_raw_sched_wakeup_template { - struct trace_entry ent; - char comm[16]; - pid_t pid; - int prio; - int target_cpu; - char __data[0]; -}; +struct pci_ops; -struct trace_event_raw_sched_switch { - struct trace_entry ent; - char prev_comm[16]; - pid_t prev_pid; - int prev_prio; - long int prev_state; - char next_comm[16]; - pid_t next_pid; - int next_prio; - char __data[0]; +struct pci_bus { + struct list_head node; + struct pci_bus *parent; + struct list_head children; + struct list_head devices; + struct pci_dev *self; + struct list_head slots; + struct resource *resource[4]; + struct list_head resources; + struct resource busn_res; + struct pci_ops *ops; + void *sysdata; + struct proc_dir_entry *procdir; + unsigned char number; + unsigned char primary; + unsigned char max_bus_speed; + unsigned char cur_bus_speed; + char name[48]; + short unsigned int bridge_ctl; + pci_bus_flags_t bus_flags; + struct device *bridge; + struct device dev; + struct bin_attribute *legacy_io; + struct bin_attribute *legacy_mem; + unsigned int is_added: 1; + unsigned int unsafe_warn: 1; }; -struct trace_event_raw_sched_migrate_task { - struct trace_entry ent; - char comm[16]; - pid_t pid; - int prio; - int orig_cpu; - int dest_cpu; - char __data[0]; -}; +struct hotplug_slot_ops; -struct trace_event_raw_sched_process_template { - struct trace_entry ent; - char comm[16]; - pid_t pid; - int prio; - char __data[0]; +struct hotplug_slot { + const struct hotplug_slot_ops *ops; + struct list_head slot_list; + struct pci_slot *pci_slot; + struct module *owner; + const char *mod_name; }; -struct trace_event_raw_sched_process_wait { - struct trace_entry ent; - char comm[16]; - pid_t pid; - int prio; - char __data[0]; -}; +typedef int pci_power_t; -struct trace_event_raw_sched_process_fork { - struct trace_entry ent; - char parent_comm[16]; - pid_t parent_pid; - char child_comm[16]; - pid_t child_pid; - char __data[0]; +enum pci_bus_speed { + PCI_SPEED_33MHz = 0, + PCI_SPEED_66MHz = 1, + PCI_SPEED_66MHz_PCIX = 2, + PCI_SPEED_100MHz_PCIX = 3, + PCI_SPEED_133MHz_PCIX = 4, + PCI_SPEED_66MHz_PCIX_ECC = 5, + PCI_SPEED_100MHz_PCIX_ECC = 6, + PCI_SPEED_133MHz_PCIX_ECC = 7, + PCI_SPEED_66MHz_PCIX_266 = 9, + PCI_SPEED_100MHz_PCIX_266 = 10, + PCI_SPEED_133MHz_PCIX_266 = 11, + AGP_UNKNOWN = 12, + AGP_1X = 13, + AGP_2X = 14, + AGP_4X = 15, + AGP_8X = 16, + PCI_SPEED_66MHz_PCIX_533 = 17, + PCI_SPEED_100MHz_PCIX_533 = 18, + PCI_SPEED_133MHz_PCIX_533 = 19, + PCIE_SPEED_2_5GT = 20, + PCIE_SPEED_5_0GT = 21, + PCIE_SPEED_8_0GT = 22, + PCIE_SPEED_16_0GT = 23, + PCIE_SPEED_32_0GT = 24, + PCIE_SPEED_64_0GT = 25, + PCI_SPEED_UNKNOWN = 255, }; -struct trace_event_raw_sched_process_exec { - struct trace_entry ent; - u32 __data_loc_filename; - pid_t pid; - pid_t old_pid; - char __data[0]; +struct pci_vpd { + struct mutex lock; + unsigned int len; + u8 cap; }; -struct trace_event_raw_sched_stat_template { - struct trace_entry ent; - char comm[16]; - pid_t pid; - u64 delay; - char __data[0]; -}; +struct aer_stats; -struct trace_event_raw_sched_stat_runtime { - struct trace_entry ent; - char comm[16]; - pid_t pid; - u64 runtime; - u64 vruntime; - char __data[0]; -}; +struct rcec_ea; -struct trace_event_raw_sched_pi_setprio { - struct trace_entry ent; - char comm[16]; - pid_t pid; - int oldprio; - int newprio; - char __data[0]; -}; +struct pci_driver; -struct trace_event_raw_sched_move_numa { - struct trace_entry ent; - pid_t pid; - pid_t tgid; - pid_t ngid; - int src_cpu; - int src_nid; - int dst_cpu; - int dst_nid; - char __data[0]; -}; +struct pcie_link_state; -struct trace_event_raw_sched_numa_pair_template { - struct trace_entry ent; - pid_t src_pid; - pid_t src_tgid; - pid_t src_ngid; - int src_cpu; - int src_nid; - pid_t dst_pid; - pid_t dst_tgid; - pid_t dst_ngid; - int dst_cpu; - int dst_nid; - char __data[0]; -}; +struct pci_sriov; -struct trace_event_raw_sched_wake_idle_without_ipi { - struct trace_entry ent; - int cpu; - char __data[0]; +struct pci_dev { + struct list_head bus_list; + struct pci_bus *bus; + struct pci_bus *subordinate; + void *sysdata; + struct proc_dir_entry *procent; + struct pci_slot *slot; + unsigned int devfn; + short unsigned int vendor; + short unsigned int device; + short unsigned int subsystem_vendor; + short unsigned int subsystem_device; + unsigned int class; + u8 revision; + u8 hdr_type; + u16 aer_cap; + struct aer_stats *aer_stats; + struct rcec_ea *rcec_ea; + struct pci_dev *rcec; + u32 devcap; + u8 pcie_cap; + u8 msi_cap; + u8 msix_cap; + u8 pcie_mpss: 3; + u8 rom_base_reg; + u8 pin; + u16 pcie_flags_reg; + long unsigned int *dma_alias_mask; + struct pci_driver *driver; + u64 dma_mask; + struct device_dma_parameters dma_parms; + pci_power_t current_state; + unsigned int imm_ready: 1; + u8 pm_cap; + unsigned int pme_support: 5; + unsigned int pme_poll: 1; + unsigned int d1_support: 1; + unsigned int d2_support: 1; + unsigned int no_d1d2: 1; + unsigned int no_d3cold: 1; + unsigned int bridge_d3: 1; + unsigned int d3cold_allowed: 1; + unsigned int mmio_always_on: 1; + unsigned int wakeup_prepared: 1; + unsigned int runtime_d3cold: 1; + unsigned int skip_bus_pm: 1; + unsigned int ignore_hotplug: 1; + unsigned int hotplug_user_indicators: 1; + unsigned int clear_retrain_link: 1; + unsigned int d3hot_delay; + unsigned int d3cold_delay; + struct pcie_link_state *link_state; + 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; + int cfg_size; + unsigned int irq; + struct resource resource[17]; + bool match_driver; + unsigned int transparent: 1; + unsigned int io_window: 1; + unsigned int pref_window: 1; + unsigned int pref_64_window: 1; + unsigned int multifunction: 1; + unsigned int is_busmaster: 1; + unsigned int no_msi: 1; + unsigned int no_64bit_msi: 1; + unsigned int block_cfg_access: 1; + unsigned int broken_parity_status: 1; + unsigned int irq_reroute_variant: 2; + unsigned int msi_enabled: 1; + unsigned int msix_enabled: 1; + unsigned int ari_enabled: 1; + unsigned int ats_enabled: 1; + unsigned int pasid_enabled: 1; + unsigned int pri_enabled: 1; + unsigned int is_managed: 1; + unsigned int needs_freset: 1; + unsigned int state_saved: 1; + unsigned int is_physfn: 1; + unsigned int is_virtfn: 1; + unsigned int is_hotplug_bridge: 1; + unsigned int shpc_managed: 1; + unsigned int is_thunderbolt: 1; + unsigned int untrusted: 1; + unsigned int external_facing: 1; + unsigned int broken_intx_masking: 1; + unsigned int io_window_1k: 1; + unsigned int irq_managed: 1; + unsigned int non_compliant_bars: 1; + unsigned int is_probed: 1; + unsigned int link_active_reporting: 1; + unsigned int no_vf_scan: 1; + unsigned int no_command_memory: 1; + pci_dev_flags_t dev_flags; + atomic_t enable_cnt; + u32 saved_config_space[16]; + struct hlist_head saved_cap_space; + 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; + u16 dpc_cap; + unsigned int dpc_rp_extensions: 1; + u8 dpc_rp_log_size; + union { + struct pci_sriov *sriov; + struct pci_dev *physfn; + }; + u16 ats_cap; + u8 ats_stu; + u16 acs_cap; + phys_addr_t rom; + size_t romlen; + char *driver_override; + long unsigned int priv_flags; + u8 reset_methods[7]; }; -struct trace_event_data_offsets_sched_kthread_stop {}; - -struct trace_event_data_offsets_sched_kthread_stop_ret {}; - -struct trace_event_data_offsets_sched_kthread_work_queue_work {}; - -struct trace_event_data_offsets_sched_kthread_work_execute_start {}; - -struct trace_event_data_offsets_sched_kthread_work_execute_end {}; - -struct trace_event_data_offsets_sched_wakeup_template {}; +struct pci_dynids { + spinlock_t lock; + struct list_head list; +}; -struct trace_event_data_offsets_sched_switch {}; +struct pci_error_handlers; -struct trace_event_data_offsets_sched_migrate_task {}; +struct pci_driver { + struct list_head node; + const char *name; + const struct pci_device_id *id_table; + int (*probe)(struct pci_dev *, const struct pci_device_id *); + void (*remove)(struct pci_dev *); + int (*suspend)(struct pci_dev *, pm_message_t); + int (*resume)(struct pci_dev *); + void (*shutdown)(struct pci_dev *); + int (*sriov_configure)(struct pci_dev *, int); + int (*sriov_set_msix_vec_count)(struct pci_dev *, int); + u32 (*sriov_get_vf_total_msix)(struct pci_dev *); + const struct pci_error_handlers *err_handler; + const struct attribute_group **groups; + const struct attribute_group **dev_groups; + struct device_driver driver; + struct pci_dynids dynids; +}; -struct trace_event_data_offsets_sched_process_template {}; +struct pci_ops { + int (*add_bus)(struct pci_bus *); + void (*remove_bus)(struct pci_bus *); + void * (*map_bus)(struct pci_bus *, unsigned int, int); + int (*read)(struct pci_bus *, unsigned int, int, int, u32 *); + int (*write)(struct pci_bus *, unsigned int, int, int, u32); +}; -struct trace_event_data_offsets_sched_process_wait {}; +struct pci_error_handlers { + pci_ers_result_t (*error_detected)(struct pci_dev *, pci_channel_state_t); + pci_ers_result_t (*mmio_enabled)(struct pci_dev *); + pci_ers_result_t (*slot_reset)(struct pci_dev *); + void (*reset_prepare)(struct pci_dev *); + void (*reset_done)(struct pci_dev *); + void (*resume)(struct pci_dev *); +}; -struct trace_event_data_offsets_sched_process_fork {}; +struct hotplug_slot_ops { + int (*enable_slot)(struct hotplug_slot *); + int (*disable_slot)(struct hotplug_slot *); + int (*set_attention_status)(struct hotplug_slot *, u8); + int (*hardware_test)(struct hotplug_slot *, u32); + int (*get_power_status)(struct hotplug_slot *, u8 *); + int (*get_attention_status)(struct hotplug_slot *, u8 *); + int (*get_latch_status)(struct hotplug_slot *, u8 *); + int (*get_adapter_status)(struct hotplug_slot *, u8 *); + int (*reset_slot)(struct hotplug_slot *, bool); +}; -struct trace_event_data_offsets_sched_process_exec { - u32 filename; +struct zpci_fmb_fmt0 { + u64 dma_rbytes; + u64 dma_wbytes; }; -struct trace_event_data_offsets_sched_stat_template {}; +struct zpci_fmb_fmt1 { + u64 rx_bytes; + u64 rx_packets; + u64 tx_bytes; + u64 tx_packets; +}; -struct trace_event_data_offsets_sched_stat_runtime {}; +struct zpci_fmb_fmt2 { + u64 consumed_work_units; + u64 max_work_units; +}; -struct trace_event_data_offsets_sched_pi_setprio {}; +struct zpci_fmb_fmt3 { + u64 tx_bytes; +}; -struct trace_event_data_offsets_sched_move_numa {}; +struct zpci_fmb { + u32 format: 8; + u32 fmt_ind: 24; + u32 samples; + u64 last_update; + u64 ld_ops; + u64 st_ops; + u64 stb_ops; + u64 rpcit_ops; + union { + struct zpci_fmb_fmt0 fmt0; + struct zpci_fmb_fmt1 fmt1; + struct zpci_fmb_fmt2 fmt2; + struct zpci_fmb_fmt3 fmt3; + }; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; -struct trace_event_data_offsets_sched_numa_pair_template {}; +enum zpci_state { + ZPCI_FN_STATE_STANDBY = 0, + ZPCI_FN_STATE_CONFIGURED = 1, + ZPCI_FN_STATE_RESERVED = 2, +}; -struct trace_event_data_offsets_sched_wake_idle_without_ipi {}; +struct zpci_bar_struct { + struct resource *res; + void *mio_wb; + void *mio_wt; + u32 val; + u16 map_idx; + u8 size; +}; -typedef void (*btf_trace_sched_kthread_stop)(void *, struct task_struct *); +struct zpci_dev; -typedef void (*btf_trace_sched_kthread_stop_ret)(void *, int); +struct zpci_bus { + struct kref kref; + struct pci_bus *bus; + struct zpci_dev *function[256]; + struct list_head resources; + struct list_head bus_next; + struct resource bus_resource; + int pchid; + int domain_nr; + bool multifunction; + enum pci_bus_speed max_bus_speed; +}; -typedef void (*btf_trace_sched_kthread_work_queue_work)(void *, struct kthread_worker *, struct kthread_work *); +struct airq_iv; -typedef void (*btf_trace_sched_kthread_work_execute_start)(void *, struct kthread_work *); +struct s390_domain; -typedef void (*btf_trace_sched_kthread_work_execute_end)(void *, struct kthread_work *, kthread_work_func_t); +struct kvm_zdev; -typedef void (*btf_trace_sched_waking)(void *, struct task_struct *); +struct zpci_dev { + struct zpci_bus *zbus; + struct list_head entry; + struct list_head bus_next; + struct kref kref; + struct hotplug_slot hotplug_slot; + enum zpci_state state; + u32 fid; + u32 fh; + u32 gisa; + u16 vfn; + u16 pchid; + u16 maxstbl; + u8 pfgid; + u8 pft; + u8 port; + u8 dtsm; + u8 rid_available: 1; + u8 has_hp_slot: 1; + u8 has_resources: 1; + u8 is_physfn: 1; + u8 util_str_avail: 1; + u8 irqs_registered: 1; + u8 reserved: 2; + unsigned int devfn; + struct mutex lock; + u8 pfip[4]; + u32 uid; + u8 util_str[64]; + u64 msi_addr; + unsigned int max_msi; + unsigned int msi_first_bit; + unsigned int msi_nr_irqs; + struct airq_iv *aibv; + long unsigned int aisb; + long unsigned int *dma_table; + spinlock_t dma_table_lock; + int tlb_refresh; + spinlock_t iommu_bitmap_lock; + long unsigned int *iommu_bitmap; + long unsigned int *lazy_bitmap; + long unsigned int iommu_size; + long unsigned int iommu_pages; + unsigned int next_bit; + struct iommu_device iommu_dev; + char res_name[16]; + bool mio_capable; + struct zpci_bar_struct bars[6]; + u64 start_dma; + u64 end_dma; + u64 dma_mask; + struct zpci_fmb *fmb; + u16 fmb_update; + u16 fmb_length; + atomic64_t allocated_pages; + atomic64_t mapped_pages; + atomic64_t unmapped_pages; + u8 version; + enum pci_bus_speed max_bus_speed; + struct dentry *debugfs_dev; + struct s390_domain *s390_domain; + struct kvm_zdev *kzdev; + struct mutex kzdev_lock; + struct notifier_block kvm_group_nb; +}; -typedef void (*btf_trace_sched_wakeup)(void *, struct task_struct *); +struct airq_iv { + long unsigned int *vector; + dma_addr_t vector_dma; + long unsigned int *avail; + long unsigned int *bitlock; + long unsigned int *ptr; + unsigned int *data; + long unsigned int bits; + long unsigned int end; + long unsigned int flags; + spinlock_t lock; +}; -typedef void (*btf_trace_sched_wakeup_new)(void *, struct task_struct *); +struct kvm_zdev { + struct zpci_dev *zdev; + struct kvm *kvm; + struct zpci_fib fib; + struct list_head entry; +}; -typedef void (*btf_trace_sched_switch)(void *, bool, struct task_struct *, struct task_struct *, unsigned int); +struct kvm_s390_interrupt_info { + struct list_head list; + u64 type; + union { + struct kvm_s390_io_info io; + struct kvm_s390_ext_info ext; + struct kvm_s390_pgm_info pgm; + struct kvm_s390_emerg_info emerg; + struct kvm_s390_extcall_info extcall; + struct kvm_s390_prefix_info prefix; + struct kvm_s390_stop_info stop; + struct kvm_s390_mchk_info mchk; + }; +}; -typedef void (*btf_trace_sched_migrate_task)(void *, struct task_struct *, int); +struct kvm_s390_gib { + u32 alert_list_origin; + u32 reserved01; + char: 5; + u8 nisc: 3; + u8 reserved03[3]; + u32 reserved04[5]; +}; -typedef void (*btf_trace_sched_process_free)(void *, struct task_struct *); +struct airq_struct { + struct hlist_node list; + void (*handler)(struct airq_struct *, struct tpi_info *); + u8 *lsi_ptr; + u8 lsi_mask; + u8 isc; + u8 flags; +}; -typedef void (*btf_trace_sched_process_exit)(void *, struct task_struct *); +struct zpci_gaite { + u32 gisa; + u8 gisc; + u8 count; + u8 reserved; + u8 aisbo; + u64 aisb; +}; -typedef void (*btf_trace_sched_wait_task)(void *, struct task_struct *); +struct zpci_aift { + struct zpci_gaite *gait; + struct airq_iv *sbv; + struct kvm_zdev **kzdev; + spinlock_t gait_lock; + struct mutex aift_lock; +}; -typedef void (*btf_trace_sched_process_wait)(void *, struct pid *); +struct ap_queue_status { + unsigned int queue_empty: 1; + unsigned int replies_waiting: 1; + unsigned int queue_full: 1; + unsigned int _pad1: 4; + unsigned int irq_enabled: 1; + unsigned int response_code: 8; + unsigned int _pad2: 16; +}; -typedef void (*btf_trace_sched_process_fork)(void *, struct task_struct *, struct task_struct *); +struct prs_parm { + u16 code; + u16 subcode; + u16 parm_len; + u16 parm_version; + u64 token_addr; + u64 select_mask; + u64 compare_mask; + u64 zarch; +}; -typedef void (*btf_trace_sched_process_exec)(void *, struct task_struct *, pid_t, struct linux_binprm *); +union asce { + long unsigned int val; + struct { + long unsigned int origin: 52; + char: 2; + long unsigned int g: 1; + long unsigned int p: 1; + long unsigned int s: 1; + long unsigned int x: 1; + long unsigned int r: 1; + char: 1; + long unsigned int dt: 2; + long unsigned int tl: 2; + }; +}; -typedef void (*btf_trace_sched_stat_wait)(void *, struct task_struct *, u64); +enum { + ASCE_TYPE_SEGMENT = 0, + ASCE_TYPE_REGION3 = 1, + ASCE_TYPE_REGION2 = 2, + ASCE_TYPE_REGION1 = 3, +}; -typedef void (*btf_trace_sched_stat_sleep)(void *, struct task_struct *, u64); +union region1_table_entry { + long unsigned int val; + struct { + long unsigned int rto: 52; + char: 2; + long unsigned int p: 1; + char: 1; + long unsigned int tf: 2; + long unsigned int i: 1; + char: 1; + long unsigned int tt: 2; + long unsigned int tl: 2; + }; +}; -typedef void (*btf_trace_sched_stat_iowait)(void *, struct task_struct *, u64); +union region2_table_entry { + long unsigned int val; + struct { + long unsigned int rto: 52; + char: 2; + long unsigned int p: 1; + char: 1; + long unsigned int tf: 2; + long unsigned int i: 1; + char: 1; + long unsigned int tt: 2; + long unsigned int tl: 2; + }; +}; -typedef void (*btf_trace_sched_stat_blocked)(void *, struct task_struct *, u64); +struct region3_table_entry_fc0 { + long unsigned int sto: 52; + char: 1; + long unsigned int fc: 1; + long unsigned int p: 1; + char: 1; + long unsigned int tf: 2; + long unsigned int i: 1; + long unsigned int cr: 1; + long unsigned int tt: 2; + long unsigned int tl: 2; +}; -typedef void (*btf_trace_sched_stat_runtime)(void *, struct task_struct *, u64, u64); +struct region3_table_entry_fc1 { + long unsigned int rfaa: 33; + char: 7; + char: 7; + long unsigned int av: 1; + long unsigned int acc: 4; + long unsigned int f: 1; + long unsigned int fc: 1; + long unsigned int p: 1; + long unsigned int iep: 1; + char: 2; + long unsigned int i: 1; + long unsigned int cr: 1; + long unsigned int tt: 2; +}; -typedef void (*btf_trace_sched_pi_setprio)(void *, struct task_struct *, struct task_struct *); +union region3_table_entry { + long unsigned int val; + struct region3_table_entry_fc0 fc0; + struct region3_table_entry_fc1 fc1; + struct { + long: 53; + long unsigned int fc: 1; + char: 2; + char: 2; + long unsigned int i: 1; + long unsigned int cr: 1; + long unsigned int tt: 2; + }; +}; -typedef void (*btf_trace_sched_move_numa)(void *, struct task_struct *, int, int); +struct segment_entry_fc0 { + long unsigned int pto: 53; + long unsigned int fc: 1; + long unsigned int p: 1; + char: 1; + char: 2; + long unsigned int i: 1; + long unsigned int cs: 1; + long unsigned int tt: 2; +}; -typedef void (*btf_trace_sched_stick_numa)(void *, struct task_struct *, int, struct task_struct *, int); +struct segment_entry_fc1 { + long unsigned int sfaa: 44; + char: 3; + long unsigned int av: 1; + long unsigned int acc: 4; + long unsigned int f: 1; + long unsigned int fc: 1; + long unsigned int p: 1; + long unsigned int iep: 1; + char: 2; + long unsigned int i: 1; + long unsigned int cs: 1; + long unsigned int tt: 2; +}; -typedef void (*btf_trace_sched_swap_numa)(void *, struct task_struct *, int, struct task_struct *, int); +union segment_table_entry { + long unsigned int val; + struct segment_entry_fc0 fc0; + struct segment_entry_fc1 fc1; + struct { + long: 53; + long unsigned int fc: 1; + char: 2; + char: 2; + long unsigned int i: 1; + long unsigned int cs: 1; + long unsigned int tt: 2; + }; +}; -typedef void (*btf_trace_sched_wake_idle_without_ipi)(void *, int); +enum { + TABLE_TYPE_SEGMENT = 0, + TABLE_TYPE_REGION3 = 1, + TABLE_TYPE_REGION2 = 2, + TABLE_TYPE_REGION1 = 3, +}; -typedef void (*btf_trace_pelt_cfs_tp)(void *, struct cfs_rq *); +union page_table_entry { + long unsigned int val; + struct { + long unsigned int pfra: 52; + long unsigned int z: 1; + long unsigned int i: 1; + long unsigned int p: 1; + long unsigned int iep: 1; + }; +}; -typedef void (*btf_trace_pelt_rt_tp)(void *, struct rq *); +union vaddress { + long unsigned int addr; + struct { + long unsigned int rfx: 11; + long unsigned int rsx: 11; + long unsigned int rtx: 11; + long unsigned int sx: 11; + long unsigned int px: 8; + long unsigned int bx: 12; + }; + struct { + long unsigned int rfx01: 2; + char: 6; + char: 3; + long unsigned int rsx01: 2; + short: 3; + char: 6; + long unsigned int rtx01: 2; + int: 8; + char: 1; + long unsigned int sx01: 2; + }; +}; -struct rt_prio_array { - long unsigned int bitmap[2]; - struct list_head queue[100]; +union raddress { + long unsigned int addr; + long unsigned int rfaa: 33; + long unsigned int sfaa: 44; + long unsigned int pfra: 52; }; -struct rt_rq { - struct rt_prio_array active; - unsigned int rt_nr_running; - unsigned int rr_nr_running; +union alet { + u32 val; struct { - int curr; - int next; - } highest_prio; - unsigned int rt_nr_migratory; - unsigned int rt_nr_total; - int overloaded; - struct plist_head pushable_tasks; - int rt_queued; - int rt_throttled; - u64 rt_time; - u64 rt_runtime; - raw_spinlock_t rt_runtime_lock; + u32 reserved: 7; + u32 p: 1; + u32 alesn: 8; + u32 alen: 16; + }; }; -struct dl_rq { - struct rb_root_cached root; - unsigned int dl_nr_running; +union ald { + u32 val; struct { - u64 curr; - u64 next; - } earliest_dl; - unsigned int dl_nr_migratory; - int overloaded; - struct rb_root_cached pushable_dl_tasks_root; - u64 running_bw; - u64 this_bw; - u64 extra_bw; - u64 bw_ratio; + char: 1; + u32 alo: 24; + u32 all: 7; + }; }; -struct cpu_stop_done; +struct ale { + long unsigned int i: 1; + char: 5; + long unsigned int fo: 1; + long unsigned int p: 1; + long unsigned int alesn: 8; + long unsigned int aleax: 16; + long: 32; + char: 1; + long unsigned int asteo: 25; + int: 6; + long unsigned int astesn: 32; +}; -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 aste { + long unsigned int i: 1; + long unsigned int ato: 29; + char: 1; + long unsigned int b: 1; + long unsigned int ax: 16; + long unsigned int atl: 12; + char: 2; + long unsigned int ca: 1; + long unsigned int ra: 1; + long unsigned int asce: 64; + long unsigned int ald: 32; + long unsigned int astesn: 32; }; -struct rq { - 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; - call_single_data_t nohz_csd; - unsigned int nohz_tick_stopped; - atomic_t nohz_flags; - unsigned int ttwu_pending; - u64 nr_switches; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 cfs_rq cfs; - struct rt_rq rt; - struct dl_rq dl; - struct list_head leaf_cfs_rq_list; - struct list_head *tmp_alone_branch; - unsigned int nr_uninterruptible; - struct task_struct *curr; - struct task_struct *idle; - struct task_struct *stop; - long unsigned int next_balance; - struct mm_struct *prev_mm; - unsigned int clock_update_flags; - u64 clock; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 *rd; - struct sched_domain *sd; - long unsigned int cpu_capacity; - long unsigned int cpu_capacity_orig; - struct callback_head *balance_callback; - unsigned char nohz_idle_balance; - unsigned char idle_balance; - long unsigned int misfit_task_load; - int active_balance; - int push_cpu; - struct cpu_stop_work active_balance_work; - int cpu; - int online; - struct list_head cfs_tasks; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct sched_avg avg_rt; - struct sched_avg avg_dl; - u64 idle_stamp; - u64 avg_idle; - long unsigned int wake_stamp; - u64 wake_avg_idle; - u64 max_idle_balance_cost; - struct rcuwait hotplug_wait; - long unsigned int calc_load_update; - long int calc_load_active; - call_single_data_t hrtick_csd; - struct hrtimer hrtick_timer; - ktime_t hrtick_time; - struct sched_info rq_sched_info; - long long unsigned int rq_cpu_time; - unsigned int yld_count; - unsigned int sched_count; - unsigned int sched_goidle; - unsigned int ttwu_count; - unsigned int ttwu_local; - unsigned int nr_pinned; - unsigned int push_busy; - struct cpu_stop_work push_work; - 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 int core_forceidle_count; - unsigned int core_forceidle_seq; - unsigned int core_forceidle_occupation; - u64 core_forceidle_start; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 trans_exc_code_bits { + long unsigned int addr: 52; + long unsigned int fsi: 2; + char: 2; + long unsigned int b56: 1; + char: 3; + long unsigned int b60: 1; + long unsigned int b61: 1; + long unsigned int as: 2; }; -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 *); +enum { + FSI_UNKNOWN = 0, + FSI_STORE = 1, + FSI_FETCH = 2, +}; -typedef void (*btf_trace_sched_util_est_se_tp)(void *, struct sched_entity *); +enum prot_type { + PROT_TYPE_LA = 0, + PROT_TYPE_KEYC = 1, + PROT_TYPE_ALC = 2, + PROT_TYPE_DAT = 3, + PROT_TYPE_IEP = 4, +}; -typedef void (*btf_trace_sched_update_nr_running_tp)(void *, struct rq *, int); +struct vsie_page { + struct kvm_s390_sie_block scb_s; + struct mcck_volatile_info mcck_info; + struct kvm_s390_sie_block *scb_o; + struct gmap *gmap; + long unsigned int fault_addr; + gpa_t sca_gpa; + gpa_t itdba_gpa; + gpa_t gvrd_gpa; + gpa_t riccbd_gpa; + gpa_t sdnx_gpa; + __u8 reserved[1192]; + struct kvm_s390_crypto_cb crycb; + __u8 fac[2048]; +}; + +struct uv_cb_cgc { + struct uv_cb_header header; + u64 reserved08[2]; + u64 guest_handle; + u64 conf_base_stor_origin; + u64 conf_virt_stor_origin; + u64 reserved30; + u64 guest_stor_origin; + u64 guest_stor_len; + u64 guest_sca; + u64 guest_asce; + u64 reserved58[5]; +}; -struct cpudl_item { - u64 dl; - int cpu; - int idx; +struct uv_cb_csc { + struct uv_cb_header header; + u64 reserved08[2]; + u64 cpu_handle; + u64 guest_handle; + u64 stor_origin; + u8 reserved30[6]; + u16 num; + u64 state_origin; + u64 reserved40[4]; }; -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 uv_cb_ssc { + struct uv_cb_header header; + u64 reserved08[2]; + u64 guest_handle; + u64 sec_header_origin; + u32 sec_header_len; + u32 reserved2c; + u64 reserved30[4]; }; -typedef int (*tg_visitor)(struct task_group *, void *); +struct uv_cb_unp { + struct uv_cb_header header; + u64 reserved08[2]; + u64 guest_handle; + u64 gaddr; + u64 tweak[2]; + u64 reserved38[3]; +}; -struct perf_domain { - struct em_perf_domain *em_pd; - struct perf_domain *next; - struct callback_head rcu; +struct uv_cb_cpu_set_state { + struct uv_cb_header header; + u64 reserved08[2]; + u64 cpu_handle; + u8 reserved20[7]; + u8 state; + u64 reserved28[5]; }; -struct rq_flags { - long unsigned int flags; - struct pin_cookie cookie; - unsigned int clock_update_flags; +struct zpci_kvm_hook { + int (*kvm_register)(void *, struct kvm *); + void (*kvm_unregister)(void *); }; -struct sched_entity_stats { - struct sched_entity se; - struct sched_statistics stats; +struct hypfs_sb_info { + kuid_t uid; + kgid_t gid; + struct dentry *update_file; + time64_t last_update; + struct mutex lock; }; enum { - __SCHED_FEAT_GENTLE_FAIR_SLEEPERS = 0, - __SCHED_FEAT_START_DEBIT = 1, - __SCHED_FEAT_NEXT_BUDDY = 2, - __SCHED_FEAT_LAST_BUDDY = 3, - __SCHED_FEAT_CACHE_HOT_BUDDY = 4, - __SCHED_FEAT_WAKEUP_PREEMPTION = 5, - __SCHED_FEAT_HRTICK = 6, - __SCHED_FEAT_HRTICK_DL = 7, - __SCHED_FEAT_DOUBLE_TICK = 8, - __SCHED_FEAT_NONTASK_CAPACITY = 9, - __SCHED_FEAT_TTWU_QUEUE = 10, - __SCHED_FEAT_SIS_PROP = 11, - __SCHED_FEAT_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_LATENCY_WARN = 22, - __SCHED_FEAT_ALT_PERIOD = 23, - __SCHED_FEAT_BASE_SLICE = 24, - __SCHED_FEAT_NR = 25, + Opt_uid = 0, + Opt_gid = 1, }; -enum cpu_util_type { - FREQUENCY_UTIL = 0, - ENERGY_UTIL = 1, +struct diag204_info_blk_hdr { + __u8 npar; + __u8 flags; + __u16 tslice; + __u16 phys_cpus; + __u16 this_part; + __u64 curtod; }; -struct set_affinity_pending; - -struct migration_arg { - struct task_struct *task; - int dest_cpu; - struct set_affinity_pending *pending; +struct diag204_part_hdr { + __u8 pn; + __u8 cpus; + char reserved[6]; + char part_name[8]; }; -struct set_affinity_pending { - refcount_t refs; - unsigned int stop_pending; - struct completion done; - struct cpu_stop_work stop_work; - struct migration_arg arg; +struct diag204_cpu_info { + __u16 cpu_addr; + char reserved1[2]; + __u8 ctidx; + __u8 cflag; + __u16 weight; + __u64 acc_time; + __u64 lp_time; }; -struct migration_swap_arg { - struct task_struct *src_task; - struct task_struct *dst_task; - int src_cpu; - int dst_cpu; +struct diag204_phys_hdr { + char reserved1[1]; + __u8 cpus; + char reserved2[6]; + char mgm_name[8]; }; -struct cfs_schedulable_data { - struct task_group *tg; - u64 period; - u64 quota; +struct diag204_phys_cpu { + __u16 cpu_addr; + char reserved1[2]; + __u8 ctidx; + char reserved2[3]; + __u64 mgm_time; + char reserved3[8]; }; -enum { - cpuset = 0, - possible = 1, - fail = 2, +struct hypfs_dbfs_file { + const char *name; + int (*data_create)(void **, void **, size_t *); + void (*data_free)(const void *); + long int (*unlocked_ioctl)(struct file *, unsigned int, long unsigned int); + struct mutex lock; + struct dentry *dentry; }; -struct numa_group { - refcount_t refcount; - spinlock_t lock; - int nr_tasks; - pid_t gid; - int active_nodes; - struct callback_head rcu; - long unsigned int total_faults; - long unsigned int max_faults_cpu; - long unsigned int faults[0]; +struct dbfs_d204_hdr { + u64 len; + u16 version; + u8 sc; + char reserved[53]; }; -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; +struct dbfs_d204 { + struct dbfs_d204_hdr hdr; + char buf[0]; }; -struct cpuidle_device; - -struct cpuidle_driver; +struct x_info_blk_hdr; -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 diag2fc_data { + __u32 version; + __u32 flags; + __u64 used_cpu; + __u64 el_time; + __u64 mem_min_kb; + __u64 mem_max_kb; + __u64 mem_share_kb; + __u64 mem_used_kb; + __u32 pcpus; + __u32 lcpus; + __u32 vcpus; + __u32 ocpus; + __u32 cpu_max; + __u32 cpu_shares; + __u32 cpu_use_samp; + __u32 cpu_delay_samp; + __u32 page_wait_samp; + __u32 idle_samp; + __u32 other_samp; + __u32 total_samp; + char guest_name[8]; }; -struct cpuidle_state_kobj; - -struct cpuidle_driver_kobj; +struct diag2fc_parm_list { + char userid[8]; + char aci_grp[8]; + __u64 addr; + __u32 size; + __u32 fmt; +}; -struct cpuidle_device_kobj; +struct dbfs_d2fc_hdr { + u64 len; + u16 version; + union tod_clock tod_ext; + u64 count; + char reserved[30]; +} __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 dbfs_d2fc { + struct dbfs_d2fc_hdr hdr; + char buf[0]; }; -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 hypfs_dbfs_data { + void *buf; + void *buf_free_ptr; + size_t size; + struct hypfs_dbfs_file *dbfs_file; }; -enum sched_tunable_scaling { - SCHED_TUNABLESCALING_NONE = 0, - SCHED_TUNABLESCALING_LOG = 1, - SCHED_TUNABLESCALING_LINEAR = 2, - SCHED_TUNABLESCALING_END = 3, +struct hypfs_diag304 { + __u32 args[2]; + __u64 data; + __u64 rc; }; -enum numa_topology_type { - NUMA_DIRECT = 0, - NUMA_GLUELESS_MESH = 1, - NUMA_BACKPLANE = 2, +struct hypfs_diag0c_entry { + char date[8]; + char time[8]; + __u64 virtcpu; + __u64 totalproc; + __u32 cpu; + __u32 reserved; }; -enum numa_faults_stats { - NUMA_MEM = 0, - NUMA_CPU = 1, - NUMA_MEMBUF = 2, - NUMA_CPUBUF = 3, +struct hypfs_diag0c_hdr { + __u64 len; + __u16 version; + char reserved1[6]; + char tod_ext[16]; + __u64 count; + char reserved2[24]; }; -enum numa_type { - node_has_spare = 0, - node_fully_busy = 1, - node_overloaded = 2, +struct hypfs_diag0c_data { + struct hypfs_diag0c_hdr hdr; + struct hypfs_diag0c_entry entry[0]; }; -struct numa_stats { - long unsigned int load; - long unsigned int runnable; - long unsigned int util; - long unsigned int compute_capacity; - unsigned int nr_running; - unsigned int weight; - enum numa_type node_type; - int idle_cpu; +struct sysinfo { + __kernel_long_t uptime; + __kernel_ulong_t loads[3]; + __kernel_ulong_t totalram; + __kernel_ulong_t freeram; + __kernel_ulong_t sharedram; + __kernel_ulong_t bufferram; + __kernel_ulong_t totalswap; + __kernel_ulong_t freeswap; + __u16 procs; + __u16 pad; + __kernel_ulong_t totalhigh; + __kernel_ulong_t freehigh; + __u32 mem_unit; + char _f[0]; }; -struct task_numa_env { - struct task_struct *p; - int src_cpu; - int src_nid; - int dst_cpu; - int dst_nid; - int imb_numa_nr; - struct numa_stats src_stats; - struct numa_stats dst_stats; - int imbalance_pct; - int dist; - struct task_struct *best_task; - long int best_imp; - int best_cpu; +struct pdev_archdata {}; + +struct mfd_cell; + +struct platform_device_id; + +struct platform_device { + const char *name; + int id; + bool id_auto; + struct device dev; + u64 platform_dma_mask; + struct device_dma_parameters dma_parms; + u32 num_resources; + struct resource *resource; + const struct platform_device_id *id_entry; + char *driver_override; + struct mfd_cell *mfd_cell; + struct pdev_archdata archdata; }; -enum fbq_type { - regular = 0, - remote = 1, - all = 2, +struct platform_device_id { + char name[20]; + kernel_ulong_t driver_data; }; -enum group_type { - group_has_spare = 0, - group_fully_busy = 1, - group_misfit_task = 2, - group_asym_packing = 3, - group_imbalanced = 4, - group_overloaded = 5, -}; +struct property_entry; -enum migration_type { - migrate_load = 0, - migrate_util = 1, - migrate_task = 2, - migrate_misfit = 3, +struct platform_device_info { + struct device *parent; + struct fwnode_handle *fwnode; + bool of_node_reused; + const char *name; + int id; + const struct resource *res; + unsigned int num_res; + const void *data; + size_t size_data; + u64 dma_mask; + const struct property_entry *properties; }; -struct lb_env { - struct sched_domain *sd; - struct rq *src_rq; - int src_cpu; - int dst_cpu; - struct rq *dst_rq; - struct cpumask *dst_grpmask; - int new_dst_cpu; - enum cpu_idle_type idle; - long int imbalance; - struct cpumask *cpus; - unsigned int flags; - unsigned int loop; - unsigned int loop_break; - unsigned int loop_max; - enum fbq_type fbq_type; - enum migration_type migration_type; - struct list_head tasks; +enum dev_prop_type { + DEV_PROP_U8 = 0, + DEV_PROP_U16 = 1, + DEV_PROP_U32 = 2, + DEV_PROP_U64 = 3, + DEV_PROP_STRING = 4, + DEV_PROP_REF = 5, }; -struct sg_lb_stats { - long unsigned int avg_load; - long unsigned int group_load; - long unsigned int group_capacity; - long unsigned int group_util; - long unsigned int group_runnable; - unsigned int sum_nr_running; - unsigned int sum_h_nr_running; - unsigned int idle_cpus; - unsigned int group_weight; - enum group_type group_type; - unsigned int group_asym_packing; - long unsigned int group_misfit_task_load; - unsigned int nr_numa_running; - unsigned int nr_preferred_running; +struct property_entry { + const char *name; + size_t length; + bool is_inline; + enum dev_prop_type type; + union { + const void *pointer; + union { + u8 u8_data[8]; + u16 u16_data[4]; + u32 u32_data[2]; + u64 u64_data[1]; + const char *str[1]; + } value; + }; }; -struct sd_lb_stats { - struct sched_group *busiest; - struct sched_group *local; - long unsigned int total_load; - long unsigned int total_capacity; - long unsigned int avg_load; - unsigned int prefer_sibling; - struct sg_lb_stats busiest_stat; - struct sg_lb_stats local_stat; +struct platform_driver { + int (*probe)(struct platform_device *); + int (*remove)(struct platform_device *); + void (*remove_new)(struct platform_device *); + void (*shutdown)(struct platform_device *); + int (*suspend)(struct platform_device *, pm_message_t); + int (*resume)(struct platform_device *); + struct device_driver driver; + const struct platform_device_id *id_table; + bool prevent_deferred_probe; }; -struct dl_bandwidth { - raw_spinlock_t dl_runtime_lock; - u64 dl_runtime; - u64 dl_period; +struct appldata_parameter_list { + u16 diag; + u8 function; + u8 parlist_length; + u32 unused01; + u16 reserved; + u16 buffer_length; + u32 unused02; + u64 product_id_addr; + u64 buffer_addr; }; -struct idle_timer { - struct hrtimer timer; - int done; +struct appldata_product_id { + char prod_nr[7]; + u16 prod_fn; + u8 record_nr; + u16 version_nr; + u16 release_nr; + u16 mod_lvl; +} __attribute__((packed)); + +struct appldata_ops { + struct list_head list; + struct ctl_table_header *sysctl_header; + struct ctl_table *ctl_table; + int active; + char name[16]; + unsigned char record_nr; + void (*callback)(void *); + void *data; + unsigned int size; + struct module *owner; + char mod_lvl[2]; }; -typedef struct rt_rq *rt_rq_iter_t; +enum { + DUMP_PREFIX_NONE = 0, + DUMP_PREFIX_ADDRESS = 1, + DUMP_PREFIX_OFFSET = 2, +}; -struct ww_acquire_ctx; +enum { + BPF_REG_0 = 0, + BPF_REG_1 = 1, + BPF_REG_2 = 2, + BPF_REG_3 = 3, + BPF_REG_4 = 4, + BPF_REG_5 = 5, + BPF_REG_6 = 6, + BPF_REG_7 = 7, + BPF_REG_8 = 8, + BPF_REG_9 = 9, + BPF_REG_10 = 10, + __MAX_BPF_REG = 11, +}; -struct ww_mutex { - struct mutex base; - struct ww_acquire_ctx *ctx; +struct bpf_binary_header { + u32 pages; + long: 0; + u8 image[0]; }; -struct ww_acquire_ctx { - struct task_struct *task; - long unsigned int stamp; - unsigned int acquired; - short unsigned int wounded; - short unsigned int is_wait_die; +typedef void (*bpf_jit_fill_hole_t)(void *, unsigned int); + +struct bpf_jit { + u32 seen; + u32 seen_reg[16]; + u32 *addrs; + u8 *prg_buf; + int size; + int size_prg; + int prg; + int lit32_start; + int lit32; + int lit64_start; + int lit64; + int base_ip; + int exit_ip; + int r1_thunk_ip; + int r14_thunk_ip; + int tail_call_start; + int excnt; }; -struct mutex_waiter { - struct list_head list; - struct task_struct *task; - struct ww_acquire_ctx *ww_ctx; +struct s390_jit_data { + struct bpf_binary_header *header; + struct bpf_jit ctx; + int pass; }; -struct swait_queue { - struct task_struct *task; - struct list_head task_list; +typedef __u64 __le64; + +struct zpci_iomap_entry { + u32 fh; + u8 bar; + u16 count; }; -enum { - MEMBARRIER_FLAG_SYNC_CORE = 1, - MEMBARRIER_FLAG_RSEQ = 2, +struct zpci_report_error_header { + u8 version; + u8 action; + u16 length; + u8 data[0]; }; -struct sd_flag_debug { - unsigned int meta_flags; - char *name; +enum zpci_ioat_dtype { + ZPCI_IOTA_STO = 0, + ZPCI_IOTA_RTTO = 1, + ZPCI_IOTA_RSTO = 2, + ZPCI_IOTA_RFTO = 3, + ZPCI_IOTA_PFAA = 4, + ZPCI_IOTA_IOPFAA = 5, + ZPCI_IOTA_IOPTO = 7, }; -enum membarrier_cmd { - MEMBARRIER_CMD_QUERY = 0, - MEMBARRIER_CMD_GLOBAL = 1, - MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2, - MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4, - MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8, - MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16, - MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32, - MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64, - MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128, - MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256, - MEMBARRIER_CMD_SHARED = 1, +typedef struct __call_single_data call_single_data_t; + +enum { + IRQ_SET_MASK_OK = 0, + IRQ_SET_MASK_OK_NOCOPY = 1, + IRQ_SET_MASK_OK_DONE = 2, }; -enum membarrier_cmd_flag { - MEMBARRIER_CMD_FLAG_CPU = 1, +enum { + FLOATING = 0, + DIRECTED = 1, }; -struct proc_ops { - unsigned int proc_flags; - int (*proc_open)(struct inode *, struct file *); - ssize_t (*proc_read)(struct file *, char *, size_t, loff_t *); - ssize_t (*proc_read_iter)(struct kiocb *, struct iov_iter *); - ssize_t (*proc_write)(struct file *, const char *, size_t, loff_t *); - loff_t (*proc_lseek)(struct file *, loff_t, int); - int (*proc_release)(struct inode *, struct file *); - __poll_t (*proc_poll)(struct file *, struct poll_table_struct *); - long int (*proc_ioctl)(struct file *, unsigned int, long unsigned int); - long int (*proc_compat_ioctl)(struct file *, unsigned int, long unsigned int); - int (*proc_mmap)(struct file *, struct vm_area_struct *); - long unsigned int (*proc_get_unmapped_area)(struct file *, long unsigned int, long unsigned int, long unsigned int, long unsigned int); +struct cpu_irq_data { + call_single_data_t csd; + atomic_t scheduled; + long: 64; + long: 64; + long: 64; }; -enum psi_res { - PSI_IO = 0, - PSI_MEM = 1, - PSI_CPU = 2, - NR_PSI_RESOURCES = 3, +struct clp_req_hdr { + u16 len; + u16 cmd; + u32 fmt: 4; + u32 reserved1: 28; + u64 reserved2; }; -struct psi_window { - u64 size; - u64 start_time; - u64 start_value; - u64 prev_growth; +struct clp_rsp_hdr { + u16 len; + u16 rsp; + u32 fmt: 4; + u32 reserved1: 28; + u64 reserved2; }; -struct psi_trigger { - enum psi_states state; - u64 threshold; - struct list_head node; - struct psi_group *group; - wait_queue_head_t event_wait; - int event; - struct psi_window win; - u64 last_event_time; - bool pending_event; +struct clp_req_slpc { + struct clp_req_hdr hdr; }; -enum cpuacct_stat_index { - CPUACCT_STAT_USER = 0, - CPUACCT_STAT_SYSTEM = 1, - CPUACCT_STAT_NSTATS = 2, +struct clp_rsp_slpc { + struct clp_rsp_hdr hdr; + u32 reserved2[4]; + u32 lpif[8]; + u32 reserved3[8]; + u32 lpic[8]; }; -struct cpuacct { - struct cgroup_subsys_state css; - u64 *cpuusage; - struct kernel_cpustat *cpustat; +struct clp_req_rsp_slpc { + struct clp_req_slpc request; + struct clp_rsp_slpc response; }; -struct s_data { - struct sched_domain **sd; - struct root_domain *rd; +struct clp_fh_list_entry { + u16 device_id; + u16 vendor_id; + u32 config_state: 1; + u32 fid; + u32 fh; }; -enum s_alloc { - sa_rootdomain = 0, - sa_sd = 1, - sa_sd_storage = 2, - sa_none = 3, +struct clp_rsp_slpc_pci { + struct clp_rsp_hdr hdr; + u32 reserved2[4]; + u32 lpif[8]; + u32 reserved3[4]; + u32 vwb: 1; + char: 1; + u32 mio_wb: 6; + u32 reserved5[3]; + u32 lpic[8]; }; -struct asym_cap_data { - struct list_head link; - long unsigned int capacity; - long unsigned int cpus[0]; +struct clp_req_list_pci { + struct clp_req_hdr hdr; + u64 resume_token; + u64 reserved2; }; -struct sched_core_cookie { - refcount_t refcnt; +struct clp_rsp_list_pci { + struct clp_rsp_hdr hdr; + u64 resume_token; + u32 reserved2; + u16 max_fn; + char: 7; + u8 uid_checking: 1; + u8 entry_size; + struct clp_fh_list_entry fh_list[252]; }; -enum hk_flags { - HK_FLAG_TIMER = 1, - HK_FLAG_RCU = 2, - HK_FLAG_MISC = 4, - HK_FLAG_SCHED = 8, - HK_FLAG_TICK = 16, - HK_FLAG_DOMAIN = 32, - HK_FLAG_WQ = 64, - HK_FLAG_MANAGED_IRQ = 128, - HK_FLAG_KTHREAD = 256, +struct mio_info { + u32 valid: 6; + struct { + u64 wb; + u64 wt; + } addr[6]; + u32 reserved[6]; }; -struct housekeeping { - struct cpumask cpumasks[9]; - long unsigned int flags; +struct clp_req_query_pci { + struct clp_req_hdr hdr; + u32 fh; + u32 reserved2; + u64 reserved3; }; -struct semaphore { - raw_spinlock_t lock; - unsigned int count; - struct list_head wait_list; +struct clp_rsp_query_pci { + struct clp_rsp_hdr hdr; + u16 vfn; + char: 3; + u16 rid_avail: 1; + u16 is_physfn: 1; + u16 reserved1: 1; + u16 mio_addr_avail: 1; + u16 util_str_avail: 1; + u16 pfgid: 8; + u32 fid; + u8 bar_size[6]; + u16 pchid; + __le32 bar[6]; + u8 pfip[4]; + short: 12; + u16 port: 4; + u8 fmb_len; + u8 pft; + u64 sdma; + u64 edma; + u16 rid; + u16 reserved0; + u32 reserved[10]; + u32 uid; + u8 util_str[64]; + u32 reserved2[16]; + struct mio_info mio; }; -struct semaphore_waiter { - struct list_head list; - struct task_struct *task; - bool up; +struct clp_req_query_pci_grp { + struct clp_req_hdr hdr; + u32 reserved2: 24; + u32 pfgid: 8; + u32 reserved3; + u64 reserved4; }; -enum rwsem_waiter_type { - RWSEM_WAITING_FOR_WRITE = 0, - RWSEM_WAITING_FOR_READ = 1, +struct clp_rsp_query_pci_grp { + struct clp_rsp_hdr hdr; + char: 4; + u16 noi: 12; + u8 version; + char: 6; + u8 frame: 1; + u8 refresh: 1; + char: 3; + u16 maxstbl: 13; + u16 mui; + u8 dtsm; + u8 reserved3; + u16 maxfaal; + char: 4; + u16 dnoi: 12; + u16 maxcpu; + u64 dasm; + u64 msia; + u64 reserved4; + u64 reserved5; }; -struct rwsem_waiter { - struct list_head list; - struct task_struct *task; - enum rwsem_waiter_type type; - long unsigned int timeout; - bool handoff_set; +struct clp_req_set_pci { + struct clp_req_hdr hdr; + u32 fh; + u16 reserved2; + u8 oc; + u8 ndas; + u32 reserved3; + u32 gisa; }; -enum rwsem_wake_type { - RWSEM_WAKE_ANY = 0, - RWSEM_WAKE_READERS = 1, - RWSEM_WAKE_READ_OWNED = 2, +struct clp_rsp_set_pci { + struct clp_rsp_hdr hdr; + u32 fh; + u32 reserved1; + u64 reserved2; + struct mio_info mio; }; -enum owner_state { - OWNER_NULL = 1, - OWNER_WRITER = 2, - OWNER_READER = 4, - OWNER_NONSPINNABLE = 8, +struct clp_req_rsp_slpc_pci { + struct clp_req_slpc request; + struct clp_rsp_slpc_pci response; }; -struct optimistic_spin_node { - struct optimistic_spin_node *next; - struct optimistic_spin_node *prev; - int locked; - int cpu; +struct clp_req_rsp_list_pci { + struct clp_req_list_pci request; + struct clp_rsp_list_pci response; }; -enum pm_qos_req_action { - PM_QOS_ADD_REQ = 0, - PM_QOS_UPDATE_REQ = 1, - PM_QOS_REMOVE_REQ = 2, +struct clp_req_rsp_set_pci { + struct clp_req_set_pci request; + struct clp_rsp_set_pci response; }; -struct rt_mutex_base { - raw_spinlock_t wait_lock; - struct rb_root_cached waiters; - struct task_struct *owner; +struct clp_req_rsp_query_pci { + struct clp_req_query_pci request; + struct clp_rsp_query_pci response; }; -struct rt_mutex { - struct rt_mutex_base rtmutex; +struct clp_req_rsp_query_pci_grp { + struct clp_req_query_pci_grp request; + struct clp_rsp_query_pci_grp response; }; -struct hrtimer_sleeper { - struct hrtimer timer; - struct task_struct *task; +struct clp_req { + unsigned int c: 1; + unsigned int r: 1; + unsigned int lps: 6; + unsigned int cmd: 8; + unsigned int reserved; + __u64 data_p; }; -struct rt_mutex_waiter { - struct rb_node tree_entry; - struct rb_node pi_tree_entry; - struct task_struct *task; - struct rt_mutex_base *lock; - unsigned int wake_state; - int prio; - u64 deadline; - struct ww_acquire_ctx *ww_ctx; +struct pci_sriov { + int pos; + int nres; + u32 cap; + u16 ctrl; + u16 total_VFs; + u16 initial_VFs; + u16 num_VFs; + u16 offset; + u16 stride; + u16 vf_device; + u32 pgsz; + u8 link; + u8 max_VF_buses; + u16 driver_max_VFs; + struct pci_dev *dev; + struct pci_dev *self; + u32 class; + u8 hdr_type; + u16 subsystem_vendor; + u16 subsystem_device; + resource_size_t barsz[6]; + bool drivers_autoprobe; }; -struct rt_wake_q_head { - struct wake_q_head head; - struct task_struct *rtlock_task; +struct rcec_ea { + u8 nextbusn; + u8 lastbusn; + u32 bitmap; }; -enum rtmutex_chainwalk { - RT_MUTEX_MIN_CHAINWALK = 0, - RT_MUTEX_FULL_CHAINWALK = 1, +enum { + pci_channel_io_normal = 1, + pci_channel_io_frozen = 2, + pci_channel_io_perm_failure = 3, }; -struct sysrq_key_op { - void (* const handler)(int); - const char * const help_msg; - const char * const action_msg; - const int enable_mask; +enum pci_ers_result { + PCI_ERS_RESULT_NONE = 1, + PCI_ERS_RESULT_CAN_RECOVER = 2, + PCI_ERS_RESULT_NEED_RESET = 3, + PCI_ERS_RESULT_DISCONNECT = 4, + PCI_ERS_RESULT_RECOVERED = 5, + PCI_ERS_RESULT_NO_AER_DRIVER = 6, }; -struct dev_printk_info; +struct zpci_ccdf_err { + u32 reserved1; + u32 fh; + u32 fid; + u32 ett: 4; + u32 mvn: 12; + u32 dmaas: 8; + char: 6; + u32 q: 1; + u32 rw: 1; + u64 faddr; + u32 reserved3; + u16 reserved4; + u16 pec; +}; -typedef int pcp_op_T_____5; +struct zpci_ccdf_avail { + u32 reserved1; + u32 fh; + u32 fid; + u32 reserved2; + u32 reserved3; + u32 reserved4; + u32 reserved5; + u16 reserved6; + u16 pec; +}; -struct dev_printk_info { - char subsystem[16]; - char device[48]; +enum syscall_work_bit { + SYSCALL_WORK_BIT_SECCOMP = 0, + SYSCALL_WORK_BIT_SYSCALL_TRACEPOINT = 1, + SYSCALL_WORK_BIT_SYSCALL_TRACE = 2, + SYSCALL_WORK_BIT_SYSCALL_EMU = 3, + SYSCALL_WORK_BIT_SYSCALL_AUDIT = 4, + SYSCALL_WORK_BIT_SYSCALL_USER_DISPATCH = 5, + SYSCALL_WORK_BIT_SYSCALL_EXIT_TRAP = 6, }; -struct printk_info { - u64 seq; - u64 ts_nsec; - u16 text_len; - u8 facility; - u8 flags: 5; - u8 level: 3; - u32 caller_id; - struct dev_printk_info dev_info; +enum tk_offsets { + TK_OFFS_REAL = 0, + TK_OFFS_BOOT = 1, + TK_OFFS_TAI = 2, + TK_OFFS_MAX = 3, }; -struct printk_record { - struct printk_info *info; - char *text_buf; - unsigned int text_buf_size; +typedef long unsigned int vm_flags_t; + +struct clone_args { + __u64 flags; + __u64 pidfd; + __u64 child_tid; + __u64 parent_tid; + __u64 exit_signal; + __u64 stack; + __u64 stack_size; + __u64 tls; + __u64 set_tid; + __u64 set_tid_size; + __u64 cgroup; }; -struct prb_data_blk_lpos { - long unsigned int begin; - long unsigned int next; +struct fdtable { + unsigned int max_fds; + struct file **fd; + long unsigned int *close_on_exec; + long unsigned int *open_fds; + long unsigned int *full_fds_bits; + struct callback_head rcu; }; -struct prb_desc { - atomic_long_t state_var; - struct prb_data_blk_lpos text_blk_lpos; +struct files_struct { + atomic_t count; + bool resize_in_progress; + wait_queue_head_t resize_wait; + struct fdtable *fdt; + struct fdtable fdtab; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + spinlock_t file_lock; + unsigned int next_fd; + long unsigned int close_on_exec_init[1]; + long unsigned int open_fds_init[1]; + long unsigned int full_fds_bits_init[1]; + struct file *fd_array[64]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 prb_data_ring { - unsigned int size_bits; - char *data; - atomic_long_t head_lpos; - atomic_long_t tail_lpos; +struct robust_list { + struct robust_list *next; }; -struct prb_desc_ring { - unsigned int count_bits; - struct prb_desc *descs; - struct printk_info *infos; - atomic_long_t head_id; - atomic_long_t tail_id; - atomic_long_t last_finalized_id; +struct robust_list_head { + struct robust_list list; + long int futex_offset; + struct robust_list *list_op_pending; }; -struct printk_ringbuffer { - struct prb_desc_ring desc_ring; - struct prb_data_ring text_data_ring; - atomic_long_t fail; +struct kernel_clone_args { + u64 flags; + int *pidfd; + int *child_tid; + int *parent_tid; + int exit_signal; + long unsigned int stack; + long unsigned int stack_size; + long unsigned int tls; + pid_t *set_tid; + size_t set_tid_size; + int cgroup; + int io_thread; + struct cgroup *cgrp; + struct css_set *cset; }; -struct prb_reserved_entry { - struct printk_ringbuffer *rb; - long unsigned int irqflags; - long unsigned int id; - unsigned int text_space; +struct multiprocess_signals { + sigset_t signal; + struct hlist_node node; }; -enum desc_state { - desc_miss = 4294967295, - desc_reserved = 0, - desc_committed = 1, - desc_finalized = 2, - desc_reusable = 3, +typedef int (*proc_visitor)(struct task_struct *, void *); + +enum { + IOPRIO_CLASS_NONE = 0, + IOPRIO_CLASS_RT = 1, + IOPRIO_CLASS_BE = 2, + IOPRIO_CLASS_IDLE = 3, }; -struct prb_data_block { - long unsigned int id; - char data[0]; +enum { + FUTEX_STATE_OK = 0, + FUTEX_STATE_EXITING = 1, + FUTEX_STATE_DEAD = 2, }; -typedef struct { - seqcount_t seqcount; -} seqcount_latch_t; +enum proc_hidepid { + HIDEPID_OFF = 0, + HIDEPID_NO_ACCESS = 1, + HIDEPID_INVISIBLE = 2, + HIDEPID_NOT_PTRACEABLE = 4, +}; -struct kmsg_dump_iter { - u64 cur_seq; - u64 next_seq; +enum proc_pidonly { + PROC_PIDONLY_OFF = 0, + PROC_PIDONLY_ON = 1, }; -struct kmsg_dumper { - struct list_head list; - void (*dump)(struct kmsg_dumper *, enum kmsg_dump_reason); - enum kmsg_dump_reason max_reason; - bool registered; +struct proc_fs_info { + struct pid_namespace *pid_ns; + struct dentry *proc_self; + struct dentry *proc_thread_self; + kgid_t pid_gid; + enum proc_hidepid hide_pid; + enum proc_pidonly pidonly; }; -struct trace_event_raw_console { +struct trace_event_raw_task_newtask { struct trace_entry ent; - u32 __data_loc_msg; + pid_t pid; + char comm[16]; + long unsigned int clone_flags; + short int oom_score_adj; char __data[0]; }; -struct trace_event_data_offsets_console { - u32 msg; +struct trace_event_raw_task_rename { + struct trace_entry ent; + pid_t pid; + char oldcomm[16]; + char newcomm[16]; + short int oom_score_adj; + char __data[0]; }; -typedef void (*btf_trace_console)(void *, const char *, size_t); +struct trace_event_data_offsets_task_newtask {}; -struct console_cmdline { - char name[16]; - int index; - bool user_specified; - char *options; -}; +struct trace_event_data_offsets_task_rename {}; -enum printk_info_flags { - LOG_NEWLINE = 2, - LOG_CONT = 8, -}; +typedef void (*btf_trace_task_newtask)(void *, struct task_struct *, long unsigned int); -enum devkmsg_log_bits { - __DEVKMSG_LOG_BIT_ON = 0, - __DEVKMSG_LOG_BIT_OFF = 1, - __DEVKMSG_LOG_BIT_LOCK = 2, -}; +typedef void (*btf_trace_task_rename)(void *, struct task_struct *, const char *); -enum devkmsg_log_masks { - DEVKMSG_LOG_MASK_ON = 1, - DEVKMSG_LOG_MASK_OFF = 2, - DEVKMSG_LOG_MASK_LOCK = 4, -}; +typedef struct vm_struct *pcp_op_T_____3; -enum con_msg_format_flags { - MSG_FORMAT_DEFAULT = 0, - MSG_FORMAT_SYSLOG = 1, +struct taint_flag { + char c_true; + char c_false; + bool module; }; -struct latched_seq { - seqcount_latch_t latch; - u64 val[2]; +enum ftrace_dump_mode { + DUMP_NONE = 0, + DUMP_ALL = 1, + DUMP_ORIG = 2, }; -struct devkmsg_user { - atomic64_t seq; - struct ratelimit_state rs; - struct mutex lock; - char buf[8192]; - struct printk_info info; - char text_buf[8192]; - struct printk_record record; +enum kmsg_dump_reason { + KMSG_DUMP_UNDEF = 0, + KMSG_DUMP_PANIC = 1, + KMSG_DUMP_OOPS = 2, + KMSG_DUMP_EMERG = 3, + KMSG_DUMP_SHUTDOWN = 4, + KMSG_DUMP_MAX = 5, }; -enum { - IRQ_TYPE_NONE = 0, - IRQ_TYPE_EDGE_RISING = 1, - IRQ_TYPE_EDGE_FALLING = 2, - IRQ_TYPE_EDGE_BOTH = 3, - IRQ_TYPE_LEVEL_HIGH = 4, - IRQ_TYPE_LEVEL_LOW = 8, - IRQ_TYPE_LEVEL_MASK = 12, - IRQ_TYPE_SENSE_MASK = 15, - IRQ_TYPE_DEFAULT = 15, - IRQ_TYPE_PROBE = 16, - IRQ_LEVEL = 256, - IRQ_PER_CPU = 512, - IRQ_NOPROBE = 1024, - IRQ_NOREQUEST = 2048, - IRQ_NOAUTOEN = 4096, - IRQ_NO_BALANCING = 8192, - IRQ_MOVE_PCNTXT = 16384, - IRQ_NESTED_THREAD = 32768, - IRQ_NOTHREAD = 65536, - IRQ_PER_CPU_DEVID = 131072, - IRQ_IS_POLLED = 262144, - IRQ_DISABLE_UNLAZY = 524288, - IRQ_HIDDEN = 1048576, - IRQ_NO_DEBUG = 2097152, +enum reboot_mode { + REBOOT_UNDEFINED = 4294967295, + REBOOT_COLD = 0, + REBOOT_WARM = 1, + REBOOT_HARD = 2, + REBOOT_SOFT = 3, + REBOOT_GPIO = 4, }; -enum { - IRQD_TRIGGER_MASK = 15, - IRQD_SETAFFINITY_PENDING = 256, - IRQD_ACTIVATED = 512, - IRQD_NO_BALANCING = 1024, - IRQD_PER_CPU = 2048, - IRQD_AFFINITY_SET = 4096, - IRQD_LEVEL = 8192, - IRQD_WAKEUP_STATE = 16384, - IRQD_MOVE_PCNTXT = 32768, - IRQD_IRQ_DISABLED = 65536, - IRQD_IRQ_MASKED = 131072, - IRQD_IRQ_INPROGRESS = 262144, - IRQD_WAKEUP_ARMED = 524288, - IRQD_FORWARDED_TO_VCPU = 1048576, - IRQD_AFFINITY_MANAGED = 2097152, - IRQD_IRQ_STARTED = 4194304, - IRQD_MANAGED_SHUTDOWN = 8388608, - IRQD_SINGLE_TARGET = 16777216, - IRQD_DEFAULT_TRIGGER_SET = 33554432, - IRQD_CAN_RESERVE = 67108864, - IRQD_MSI_NOMASK_QUIRK = 134217728, - IRQD_HANDLE_ENFORCE_IRQCTX = 268435456, - IRQD_AFFINITY_ON_ACTIVATE = 536870912, - IRQD_IRQ_ENABLED_ON_SUSPEND = 1073741824, +enum con_flush_mode { + CONSOLE_FLUSH_PENDING = 0, + CONSOLE_REPLAY_ALL = 1, }; -struct irq_chip_regs { - long unsigned int enable; - long unsigned int disable; - long unsigned int mask; - long unsigned int ack; - long unsigned int eoi; - long unsigned int type; - long unsigned int polarity; +struct warn_args { + const char *fmt; + va_list args; }; -struct irq_chip_type { - struct irq_chip chip; - struct irq_chip_regs regs; - irq_flow_handler_t handler; - u32 type; - u32 mask_cache_priv; - u32 *mask_cache; +enum cpuhp_smt_control { + CPU_SMT_ENABLED = 0, + CPU_SMT_DISABLED = 1, + CPU_SMT_FORCE_DISABLED = 2, + CPU_SMT_NOT_SUPPORTED = 3, + CPU_SMT_NOT_IMPLEMENTED = 4, }; -struct irq_chip_generic { - raw_spinlock_t lock; - void *reg_base; - u32 (*reg_readl)(void *); - void (*reg_writel)(u32, void *); - void (*suspend)(struct irq_chip_generic *); - void (*resume)(struct irq_chip_generic *); - unsigned int irq_base; - unsigned int irq_cnt; - u32 mask_cache; - u32 type_cache; - u32 polarity_cache; - u32 wake_enabled; - u32 wake_active; - unsigned int num_ct; - void *private; - long unsigned int installed; - long unsigned int unused; - struct irq_domain *domain; +struct smp_hotplug_thread { + struct task_struct **store; struct list_head list; - struct irq_chip_type chip_types[0]; + int (*thread_should_run)(unsigned int); + void (*thread_fn)(unsigned int); + void (*create)(unsigned int); + void (*setup)(unsigned int); + void (*cleanup)(unsigned int, bool); + void (*park)(unsigned int); + void (*unpark)(unsigned int); + bool selfparking; + const char *thread_comm; }; -enum irq_gc_flags { - IRQ_GC_INIT_MASK_CACHE = 1, - IRQ_GC_INIT_NESTED_LOCK = 2, - IRQ_GC_MASK_CACHE_PER_TYPE = 4, - IRQ_GC_NO_MASK = 8, - IRQ_GC_BE_IO = 16, +struct trace_event_raw_cpuhp_enter { + struct trace_entry ent; + unsigned int cpu; + int target; + int idx; + void *fun; + char __data[0]; }; -struct irq_domain_chip_generic { - unsigned int irqs_per_chip; - unsigned int num_chips; - unsigned int irq_flags_to_clear; - unsigned int irq_flags_to_set; - enum irq_gc_flags gc_flags; - struct irq_chip_generic *gc[0]; +struct trace_event_raw_cpuhp_multi_enter { + struct trace_entry ent; + unsigned int cpu; + int target; + int idx; + void *fun; + char __data[0]; }; -enum { - IRQS_AUTODETECT = 1, - IRQS_SPURIOUS_DISABLED = 2, - IRQS_POLL_INPROGRESS = 8, - IRQS_ONESHOT = 32, - IRQS_REPLAY = 64, - IRQS_WAITING = 128, - IRQS_PENDING = 512, - IRQS_SUSPENDED = 2048, - IRQS_TIMINGS = 4096, - IRQS_NMI = 8192, +struct trace_event_raw_cpuhp_exit { + struct trace_entry ent; + unsigned int cpu; + int state; + int idx; + int ret; + char __data[0]; }; -enum { - _IRQ_DEFAULT_INIT_FLAGS = 0, - _IRQ_PER_CPU = 512, - _IRQ_LEVEL = 256, - _IRQ_NOPROBE = 1024, - _IRQ_NOREQUEST = 2048, - _IRQ_NOTHREAD = 65536, - _IRQ_NOAUTOEN = 4096, - _IRQ_MOVE_PCNTXT = 16384, - _IRQ_NO_BALANCING = 8192, - _IRQ_NESTED_THREAD = 32768, - _IRQ_PER_CPU_DEVID = 131072, - _IRQ_IS_POLLED = 262144, - _IRQ_DISABLE_UNLAZY = 524288, - _IRQ_HIDDEN = 1048576, - _IRQ_NO_DEBUG = 2097152, - _IRQF_MODIFY_MASK = 2096911, -}; +struct trace_event_data_offsets_cpuhp_enter {}; -enum { - IRQTF_RUNTHREAD = 0, - IRQTF_WARNED = 1, - IRQTF_AFFINITY = 2, - IRQTF_FORCED_THREAD = 3, - IRQTF_READY = 4, -}; +struct trace_event_data_offsets_cpuhp_multi_enter {}; -enum { - IRQCHIP_SET_TYPE_MASKED = 1, - IRQCHIP_EOI_IF_HANDLED = 2, - IRQCHIP_MASK_ON_SUSPEND = 4, - IRQCHIP_ONOFFLINE_ENABLED = 8, - IRQCHIP_SKIP_SET_WAKE = 16, - IRQCHIP_ONESHOT_SAFE = 32, - IRQCHIP_EOI_THREADED = 64, - IRQCHIP_SUPPORTS_LEVEL_MSI = 128, - IRQCHIP_SUPPORTS_NMI = 256, - IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND = 512, - IRQCHIP_AFFINITY_PRE_STARTUP = 1024, -}; +struct trace_event_data_offsets_cpuhp_exit {}; -enum { - IRQC_IS_HARDIRQ = 0, - IRQC_IS_NESTED = 1, -}; +typedef void (*btf_trace_cpuhp_enter)(void *, unsigned int, int, int, int (*)(unsigned int)); -enum { - IRQ_STARTUP_NORMAL = 0, - IRQ_STARTUP_MANAGED = 1, - IRQ_STARTUP_ABORT = 2, -}; +typedef void (*btf_trace_cpuhp_multi_enter)(void *, unsigned int, int, int, int (*)(unsigned int, struct hlist_node *), struct hlist_node *); -struct irq_devres { - unsigned int irq; - void *dev_id; -}; +typedef void (*btf_trace_cpuhp_exit)(void *, unsigned int, int, int, int); -struct irq_desc_devres { - unsigned int from; - unsigned int cnt; +struct cpuhp_cpu_state { + enum cpuhp_state state; + enum cpuhp_state target; + enum cpuhp_state fail; + struct task_struct *thread; + bool should_run; + bool rollback; + bool single; + bool bringup; + struct hlist_node *node; + struct hlist_node *last; + enum cpuhp_state cb_state; + int result; + struct completion done_up; + struct completion done_down; }; -enum { - IRQ_DOMAIN_FLAG_HIERARCHY = 1, - IRQ_DOMAIN_NAME_ALLOCATED = 2, - IRQ_DOMAIN_FLAG_IPI_PER_CPU = 4, - IRQ_DOMAIN_FLAG_IPI_SINGLE = 8, - IRQ_DOMAIN_FLAG_MSI = 16, - IRQ_DOMAIN_FLAG_MSI_REMAP = 32, - IRQ_DOMAIN_MSI_NOMASK_QUIRK = 64, - IRQ_DOMAIN_FLAG_NO_MAP = 128, - IRQ_DOMAIN_FLAG_NONCORE = 65536, +struct cpuhp_step { + const char *name; + union { + int (*single)(unsigned int); + int (*multi)(unsigned int, struct hlist_node *); + } startup; + union { + int (*single)(unsigned int); + int (*multi)(unsigned int, struct hlist_node *); + } teardown; + struct hlist_head list; + bool cant_stop; + bool multi_instance; }; -enum { - IRQCHIP_FWNODE_REAL = 0, - IRQCHIP_FWNODE_NAMED = 1, - IRQCHIP_FWNODE_NAMED_ID = 2, +enum cpu_mitigations { + CPU_MITIGATIONS_OFF = 0, + CPU_MITIGATIONS_AUTO = 1, + CPU_MITIGATIONS_AUTO_NOSMT = 2, }; -struct irqchip_fwid { - struct fwnode_handle fwnode; - unsigned int type; - char *name; - phys_addr_t *pa; +struct old_timeval32 { + old_time32_t tv_sec; + s32 tv_usec; }; -enum { - AFFINITY = 0, - AFFINITY_LIST = 1, - EFFECTIVE = 2, - EFFECTIVE_LIST = 3, +struct rusage { + struct __kernel_old_timeval ru_utime; + struct __kernel_old_timeval ru_stime; + __kernel_long_t ru_maxrss; + __kernel_long_t ru_ixrss; + __kernel_long_t ru_idrss; + __kernel_long_t ru_isrss; + __kernel_long_t ru_minflt; + __kernel_long_t ru_majflt; + __kernel_long_t ru_nswap; + __kernel_long_t ru_inblock; + __kernel_long_t ru_oublock; + __kernel_long_t ru_msgsnd; + __kernel_long_t ru_msgrcv; + __kernel_long_t ru_nsignals; + __kernel_long_t ru_nvcsw; + __kernel_long_t ru_nivcsw; }; -struct irq_affinity { - unsigned int pre_vectors; - unsigned int post_vectors; - unsigned int nr_sets; - unsigned int set_size[4]; - void (*calc_sets)(struct irq_affinity *, unsigned int); - void *priv; -}; +typedef struct {} mm_segment_t; -struct node_vectors { - unsigned int id; - union { - unsigned int nvectors; - unsigned int ncpus; - }; -}; +typedef u32 compat_uint_t; -struct msi_alloc_info { - struct msi_desc *desc; - irq_hw_number_t hwirq; - long unsigned int flags; - union { - long unsigned int ul; - void *ptr; - } scratchpad[2]; +struct compat_rusage { + struct old_timeval32 ru_utime; + struct old_timeval32 ru_stime; + compat_long_t ru_maxrss; + compat_long_t ru_ixrss; + compat_long_t ru_idrss; + compat_long_t ru_isrss; + compat_long_t ru_minflt; + compat_long_t ru_majflt; + compat_long_t ru_nswap; + compat_long_t ru_inblock; + compat_long_t ru_oublock; + compat_long_t ru_msgsnd; + compat_long_t ru_msgrcv; + compat_long_t ru_nsignals; + compat_long_t ru_nvcsw; + compat_long_t ru_nivcsw; }; -typedef struct msi_alloc_info msi_alloc_info_t; - -struct msi_domain_info; +struct waitid_info { + pid_t pid; + uid_t uid; + int status; + int cause; +}; -struct msi_domain_ops { - irq_hw_number_t (*get_hwirq)(struct msi_domain_info *, msi_alloc_info_t *); - int (*msi_init)(struct irq_domain *, struct msi_domain_info *, unsigned int, irq_hw_number_t, msi_alloc_info_t *); - void (*msi_free)(struct irq_domain *, struct msi_domain_info *, unsigned int); - int (*msi_check)(struct irq_domain *, struct msi_domain_info *, struct device *); - int (*msi_prepare)(struct irq_domain *, struct device *, int, msi_alloc_info_t *); - void (*set_desc)(msi_alloc_info_t *, struct msi_desc *); - int (*domain_alloc_irqs)(struct irq_domain *, struct device *, int); - void (*domain_free_irqs)(struct irq_domain *, struct device *); +struct wait_opts { + enum pid_type wo_type; + int wo_flags; + struct pid *wo_pid; + struct waitid_info *wo_info; + int wo_stat; + struct rusage *wo_rusage; + wait_queue_entry_t child_wait; + int notask_error; }; -struct msi_domain_info { - u32 flags; - struct msi_domain_ops *ops; - struct irq_chip *chip; - void *chip_data; - irq_flow_handler_t handler; - void *handler_data; - const char *handler_name; - void *data; +struct softirq_action { + void (*action)(struct softirq_action *); }; -enum { - MSI_FLAG_USE_DEF_DOM_OPS = 1, - MSI_FLAG_USE_DEF_CHIP_OPS = 2, - MSI_FLAG_MULTI_PCI_MSI = 4, - MSI_FLAG_PCI_MSIX = 8, - MSI_FLAG_ACTIVATE_EARLY = 16, - MSI_FLAG_MUST_REACTIVATE = 32, - MSI_FLAG_LEVEL_CAPABLE = 64, - MSI_FLAG_DEV_SYSFS = 128, - MSI_FLAG_MSIX_CONTIGUOUS = 256, - MSI_FLAG_ALLOC_SIMPLE_MSI_DESCS = 512, - MSI_FLAG_FREE_MSI_DESCS = 1024, +struct tasklet_struct { + struct tasklet_struct *next; + long unsigned int state; + atomic_t count; + bool use_callback; + union { + void (*func)(long unsigned int); + void (*callback)(struct tasklet_struct *); + }; + long unsigned int data; }; enum { - GP_IDLE = 0, - GP_ENTER = 1, - GP_PASSED = 2, - GP_EXIT = 3, - GP_REPLAY = 4, + TASKLET_STATE_SCHED = 0, + TASKLET_STATE_RUN = 1, }; -typedef void (*call_rcu_func_t)(struct callback_head *, rcu_callback_t); +struct kernel_stat { + long unsigned int irqs_sum; + unsigned int softirqs[10]; +}; -struct rcu_cblist { - struct callback_head *head; - struct callback_head **tail; - long int len; +struct wait_bit_key { + void *flags; + int bit_nr; + long unsigned int timeout; }; -struct rcu_synchronize { - struct callback_head head; - struct completion completion; +struct wait_bit_queue_entry { + struct wait_bit_key key; + struct wait_queue_entry wq_entry; }; -struct trace_event_raw_rcu_utilization { +struct trace_event_raw_irq_handler_entry { struct trace_entry ent; - const char *s; + int irq; + u32 __data_loc_name; char __data[0]; }; -struct trace_event_raw_rcu_stall_warning { +struct trace_event_raw_irq_handler_exit { struct trace_entry ent; - const char *rcuname; - const char *msg; + int irq; + int ret; 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 *); +struct trace_event_raw_softirq { + struct trace_entry ent; + unsigned int vec; + char __data[0]; +}; -typedef void (*btf_trace_rcu_stall_warning)(void *, const char *, const char *); +struct trace_event_data_offsets_irq_handler_entry { + u32 name; +}; -struct rcu_tasks; +struct trace_event_data_offsets_irq_handler_exit {}; -typedef void (*rcu_tasks_gp_func_t)(struct rcu_tasks *); +struct trace_event_data_offsets_softirq {}; -typedef void (*pregp_func_t)(); +typedef void (*btf_trace_irq_handler_entry)(void *, int, struct irqaction *); -typedef void (*pertask_func_t)(struct task_struct *, struct list_head *); +typedef void (*btf_trace_irq_handler_exit)(void *, int, struct irqaction *, int); -typedef void (*postscan_func_t)(struct list_head *); +typedef void (*btf_trace_softirq_entry)(void *, unsigned int); -typedef void (*holdouts_func_t)(struct list_head *, bool, bool *); +typedef void (*btf_trace_softirq_exit)(void *, unsigned int); -typedef void (*postgp_func_t)(struct rcu_tasks *); +typedef void (*btf_trace_softirq_raise)(void *, unsigned int); -struct rcu_tasks_percpu; +struct tasklet_head { + struct tasklet_struct *head; + struct tasklet_struct **tail; +}; -struct rcu_tasks { - struct wait_queue_head cbs_wq; - raw_spinlock_t cbs_gbl_lock; - int gp_state; - int gp_sleep; - int init_fract; - long unsigned int gp_jiffies; - long unsigned int gp_start; - long unsigned int tasks_gp_seq; - long unsigned int n_ipis; - long unsigned int n_ipis_fails; - struct task_struct *kthread_ptr; - rcu_tasks_gp_func_t gp_func; - pregp_func_t pregp_func; - pertask_func_t pertask_func; - postscan_func_t postscan_func; - holdouts_func_t holdouts_func; - postgp_func_t postgp_func; - call_rcu_func_t call_func; - struct rcu_tasks_percpu *rtpcpu; - int percpu_enqueue_shift; - int percpu_enqueue_lim; - int percpu_dequeue_lim; - long unsigned int percpu_dequeue_gpseq; - struct mutex barrier_q_mutex; - atomic_t barrier_q_count; - struct completion barrier_q_completion; - long unsigned int barrier_q_seq; - char *name; - char *kname; +enum { + IORES_DESC_NONE = 0, + IORES_DESC_CRASH_KERNEL = 1, + IORES_DESC_ACPI_TABLES = 2, + IORES_DESC_ACPI_NV_STORAGE = 3, + IORES_DESC_PERSISTENT_MEMORY = 4, + IORES_DESC_PERSISTENT_MEMORY_LEGACY = 5, + IORES_DESC_DEVICE_PRIVATE_MEMORY = 6, + IORES_DESC_RESERVED = 7, + IORES_DESC_SOFT_RESERVED = 8, }; -struct rcu_tasks_percpu { - struct rcu_segcblist cblist; - raw_spinlock_t lock; - long unsigned int rtp_jiffies; - long unsigned int rtp_n_lock_retries; - struct work_struct rtp_work; - struct irq_work rtp_irq_work; - struct callback_head barrier_q_head; - int cpu; - struct rcu_tasks *rtpp; +enum { + REGION_INTERSECTS = 0, + REGION_DISJOINT = 1, + REGION_MIXED = 2, }; -struct trc_stall_chk_rdr { - int nesting; - int ipi_to_cpu; - u8 needqs; +struct pseudo_fs_context { + const struct super_operations *ops; + const struct xattr_handler **xattr; + const struct dentry_operations *dops; + long unsigned int magic; }; -typedef long unsigned int ulong; +typedef void (*dr_release_t)(struct device *, void *); -enum rcutorture_type { - RCU_FLAVOR = 0, - RCU_TASKS_FLAVOR = 1, - RCU_TASKS_RUDE_FLAVOR = 2, - RCU_TASKS_TRACING_FLAVOR = 3, - RCU_TRIVIAL_FLAVOR = 4, - SRCU_FLAVOR = 5, - INVALID_RCU_FLAVOR = 6, -}; +typedef int (*dr_match_t)(struct device *, void *, void *); -struct klp_func { - const char *old_name; - void *new_func; - long unsigned int old_sympos; - void *old_func; - struct kobject kobj; +struct resource_entry { struct list_head node; - struct list_head stack_node; - long unsigned int old_size; - long unsigned int new_size; - bool nop; - bool patched; - bool transition; + struct resource *res; + resource_size_t offset; + struct resource __res; }; -struct klp_object; - -struct klp_callbacks { - int (*pre_patch)(struct klp_object *); - void (*post_patch)(struct klp_object *); - void (*pre_unpatch)(struct klp_object *); - void (*post_unpatch)(struct klp_object *); - bool post_unpatch_enabled; +struct resource_constraint { + resource_size_t min; + resource_size_t max; + resource_size_t align; + resource_size_t (*alignf)(void *, const struct resource *, resource_size_t, resource_size_t); + void *alignf_data; }; -struct klp_object { - const char *name; - struct klp_func *funcs; - struct klp_callbacks callbacks; - struct kobject kobj; - struct list_head func_list; - struct list_head node; - struct module *mod; - bool dynamic; - bool patched; +enum { + MAX_IORES_LEVEL = 5, }; -struct klp_state { - long unsigned int id; - unsigned int version; - void *data; +struct region_devres { + struct resource *parent; + resource_size_t start; + resource_size_t n; }; -struct klp_patch { - struct module *mod; - struct klp_object *objs; - struct klp_state *states; - bool replace; - struct list_head list; - struct kobject kobj; - struct list_head obj_list; - bool enabled; - bool forced; - struct work_struct free_work; - struct completion finish; -}; +typedef __kernel_clock_t clock_t; -struct klp_find_arg { - const char *objname; - const char *name; - long unsigned int addr; - long unsigned int count; - long unsigned int pos; +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; }; -enum { - FTRACE_OPS_FL_ENABLED = 1, - FTRACE_OPS_FL_DYNAMIC = 2, - FTRACE_OPS_FL_SAVE_REGS = 4, - FTRACE_OPS_FL_SAVE_REGS_IF_SUPPORTED = 8, - FTRACE_OPS_FL_RECURSION = 16, - FTRACE_OPS_FL_STUB = 32, - FTRACE_OPS_FL_INITIALIZED = 64, - FTRACE_OPS_FL_DELETED = 128, - FTRACE_OPS_FL_ADDING = 256, - FTRACE_OPS_FL_REMOVING = 512, - FTRACE_OPS_FL_MODIFYING = 1024, - FTRACE_OPS_FL_ALLOC_TRAMP = 2048, - FTRACE_OPS_FL_IPMODIFY = 4096, - FTRACE_OPS_FL_PID = 8192, - FTRACE_OPS_FL_RCU = 16384, - FTRACE_OPS_FL_TRACE_ARRAY = 32768, - FTRACE_OPS_FL_PERMANENT = 65536, - FTRACE_OPS_FL_DIRECT = 131072, +struct files_stat_struct { + long unsigned int nr_files; + long unsigned int nr_free_files; + long unsigned int max_files; }; -struct klp_ops { - struct list_head node; - struct list_head func_stack; - struct ftrace_ops fops; +struct inodes_stat_t { + long int nr_inodes; + long int nr_unused; + long int dummy[5]; }; -typedef int (*klp_shadow_ctor_t)(void *, void *, void *); - -typedef void (*klp_shadow_dtor_t)(void *, void *); +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; +}; -struct klp_shadow { - struct hlist_node node; - struct callback_head callback_head; - void *obj; - long unsigned int id; - char data[0]; +enum sysctl_writes_mode { + SYSCTL_WRITES_LEGACY = 4294967295, + SYSCTL_WRITES_WARN = 0, + SYSCTL_WRITES_STRICT = 1, }; -enum tick_dep_bits { - TICK_DEP_BIT_POSIX_TIMER = 0, - TICK_DEP_BIT_PERF_EVENTS = 1, - TICK_DEP_BIT_SCHED = 2, - TICK_DEP_BIT_CLOCK_UNSTABLE = 3, - TICK_DEP_BIT_RCU = 4, - TICK_DEP_BIT_RCU_EXP = 5, +struct do_proc_dointvec_minmax_conv_param { + int *min; + int *max; }; -struct rcu_exp_work { - long unsigned int rew_s; - struct work_struct rew_work; +struct do_proc_douintvec_minmax_conv_param { + unsigned int *min; + unsigned int *max; }; -struct rcu_node { - raw_spinlock_t lock; - long unsigned int gp_seq; - long unsigned int gp_seq_needed; - long unsigned int completedqs; - long unsigned int qsmask; - long unsigned int rcu_gp_init_mask; - long unsigned int qsmaskinit; - long unsigned int qsmaskinitnext; - long unsigned int expmask; - long unsigned int expmaskinit; - long unsigned int expmaskinitnext; - long unsigned int cbovldmask; - long unsigned int ffmask; - long unsigned int grpmask; - int grplo; - int grphi; - u8 grpnum; - u8 level; - bool wait_blkd_tasks; - struct rcu_node *parent; - struct list_head blkd_tasks; - struct list_head *gp_tasks; - struct list_head *exp_tasks; - struct list_head *boost_tasks; - struct rt_mutex boost_mtx; - long unsigned int boost_time; - struct mutex boost_kthread_mutex; - struct task_struct *boost_kthread_task; - unsigned int boost_kthread_status; - long unsigned int n_boosts; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - raw_spinlock_t fqslock; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct __user_cap_header_struct { + __u32 version; + int pid; +}; + +typedef struct __user_cap_header_struct *cap_user_header_t; + +struct __user_cap_data_struct { + __u32 effective; + __u32 permitted; + __u32 inheritable; +}; + +typedef struct __user_cap_data_struct *cap_user_data_t; + +struct sigqueue { + struct list_head list; + int flags; + kernel_siginfo_t info; + struct ucounts *ucounts; +}; + +typedef int wait_bit_action_f(struct wait_bit_key *, int); + +struct ptrace_peeksiginfo_args { + __u64 off; + __u32 flags; + __s32 nr; +}; + +struct ptrace_syscall_info { + __u8 op; + __u8 pad[3]; + __u32 arch; + __u64 instruction_pointer; + __u64 stack_pointer; + union { + struct { + __u64 nr; + __u64 args[6]; + } entry; + struct { + __s64 rval; + __u8 is_error; + } exit; + struct { + __u64 nr; + __u64 args[6]; + __u32 ret_data; + } seccomp; + }; +}; + +struct ptrace_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; +}; + +typedef long unsigned int old_sigset_t; + +struct old_sigaction { + __sighandler_t sa_handler; + old_sigset_t sa_mask; + long unsigned int sa_flags; + __sigrestore_t sa_restorer; +}; + +enum siginfo_layout { + SIL_KILL = 0, + SIL_TIMER = 1, + SIL_POLL = 2, + SIL_FAULT = 3, + SIL_FAULT_TRAPNO = 4, + SIL_FAULT_MCEERR = 5, + SIL_FAULT_BNDERR = 6, + SIL_FAULT_PKUERR = 7, + SIL_FAULT_PERF_EVENT = 8, + SIL_CHLD = 9, + SIL_RT = 10, + SIL_SYS = 11, +}; + +typedef u32 compat_old_sigset_t; + +struct compat_sigaction { + compat_uptr_t sa_handler; + compat_ulong_t sa_flags; + compat_uptr_t sa_restorer; + compat_sigset_t sa_mask; +}; + +struct compat_old_sigaction { + compat_uptr_t sa_handler; + compat_old_sigset_t sa_mask; + compat_ulong_t sa_flags; + compat_uptr_t sa_restorer; +}; + +enum { + TRACE_SIGNAL_DELIVERED = 0, + TRACE_SIGNAL_IGNORED = 1, + TRACE_SIGNAL_ALREADY_PENDING = 2, + TRACE_SIGNAL_OVERFLOW_FAIL = 3, + TRACE_SIGNAL_LOSE_INFO = 4, +}; + +struct trace_event_raw_signal_generate { + struct trace_entry ent; + int sig; + int errno; + int code; + char comm[16]; + pid_t pid; + int group; + int result; + char __data[0]; +}; + +struct trace_event_raw_signal_deliver { + struct trace_entry ent; + int sig; + int errno; + int code; + long unsigned int sa_handler; + long unsigned int sa_flags; + char __data[0]; +}; + +struct trace_event_data_offsets_signal_generate {}; + +struct trace_event_data_offsets_signal_deliver {}; + +typedef void (*btf_trace_signal_generate)(void *, int, struct kernel_siginfo *, struct task_struct *, int, int); + +typedef void (*btf_trace_signal_deliver)(void *, int, struct kernel_siginfo *, struct k_sigaction *); + +enum sig_handler { + HANDLER_CURRENT = 0, + HANDLER_SIG_DFL = 1, + HANDLER_EXIT = 2, +}; + +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; + __u64 start_data; + __u64 end_data; + __u64 start_brk; + __u64 brk; + __u64 start_stack; + __u64 arg_start; + __u64 arg_end; + __u64 env_start; + __u64 env_end; + __u64 *auxv; + __u32 auxv_size; + __u32 exe_fd; +}; + +struct compat_tms { + compat_clock_t tms_utime; + compat_clock_t tms_stime; + compat_clock_t tms_cutime; + compat_clock_t tms_cstime; +}; + +struct compat_rlimit { + compat_ulong_t rlim_cur; + compat_ulong_t rlim_max; +}; + +struct tms { + __kernel_clock_t tms_utime; + __kernel_clock_t tms_stime; + __kernel_clock_t tms_cutime; + __kernel_clock_t tms_cstime; +}; + +struct getcpu_cache { + long unsigned int blob[16]; +}; + +struct compat_sysinfo { + s32 uptime; + u32 loads[3]; + u32 totalram; + u32 freeram; + u32 sharedram; + u32 bufferram; + u32 totalswap; + u32 freeswap; + u16 procs; + u16 pad; + u32 totalhigh; + u32 freehigh; + u32 mem_unit; + char _f[8]; +}; + +struct wq_flusher; + +struct worker; + +struct workqueue_attrs; + +struct pool_workqueue; + +struct wq_device; + +struct workqueue_struct { + struct list_head pwqs; + struct list_head list; + struct mutex mutex; + int work_color; + int flush_color; + atomic_t nr_pwqs_to_flush; + struct wq_flusher *first_flusher; + struct list_head flusher_queue; + struct list_head flusher_overflow; + struct list_head maydays; + struct worker *rescuer; + int nr_drainers; + int saved_max_active; + struct workqueue_attrs *unbound_attrs; + struct pool_workqueue *dfl_pwq; + struct wq_device *wq_dev; + char name[24]; + struct callback_head rcu; long: 64; long: 64; long: 64; long: 64; long: 64; + unsigned int flags; + struct pool_workqueue *cpu_pwqs; + struct pool_workqueue *numa_pwq_tbl[0]; long: 64; long: 64; long: 64; @@ -24449,12 +24801,6 @@ struct rcu_node { long: 64; long: 64; long: 64; - spinlock_t exp_lock; - long unsigned int exp_seq_rq; - wait_queue_head_t exp_wq[4]; - struct rcu_exp_work rew; - bool exp_need_flush; - long: 56; long: 64; long: 64; long: 64; @@ -24469,69 +24815,81 @@ struct rcu_node { long: 64; }; -union rcu_noqs { - struct { - u8 norm; - u8 exp; - } b; - u16 s; +struct workqueue_attrs { + int nice; + cpumask_var_t cpumask; + bool no_numa; }; -struct rcu_data { - long unsigned int gp_seq; - long unsigned int gp_seq_needed; - union rcu_noqs cpu_no_qs; - bool core_needs_qs; - bool beenonline; - bool gpwrap; - bool cpu_started; - struct rcu_node *mynode; - long unsigned int grpmask; - long unsigned int ticks_this_gp; - struct irq_work defer_qs_iw; - bool defer_qs_iw_pending; - struct work_struct strict_work; - struct rcu_segcblist cblist; - long int qlen_last_fqs_check; - long unsigned int n_cbs_invoked; - long unsigned int n_force_qs_snap; - long int blimit; - int dynticks_snap; - long int dynticks_nesting; - long int dynticks_nmi_nesting; - atomic_t dynticks; - bool rcu_need_heavy_qs; - bool rcu_urgent_qs; - bool rcu_forced_tick; - bool rcu_forced_tick_exp; - long unsigned int barrier_seq_snap; - struct callback_head barrier_head; - int exp_dynticks_snap; - struct task_struct *rcu_cpu_kthread_task; - unsigned int rcu_cpu_kthread_status; - char rcu_cpu_has_work; - long unsigned int rcuc_activity; - unsigned int softirq_snap; - struct irq_work rcu_iw; - bool rcu_iw_pending; - long unsigned int rcu_iw_gp_seq; - long unsigned int rcu_ofl_gp_seq; - short int rcu_ofl_gp_flags; - long unsigned int rcu_onl_gp_seq; - short int rcu_onl_gp_flags; - long unsigned int last_fqs_resched; - int cpu; +struct execute_work { + struct work_struct work; }; -struct rcu_state { - struct rcu_node node[33]; - struct rcu_node *level[3]; - int ncpus; - int n_online_cpus; - long: 64; - long: 64; - long: 64; - long: 64; +typedef unsigned int xa_mark_t; + +enum xa_lock_type { + XA_LOCK_IRQ = 1, + XA_LOCK_BH = 2, +}; + +struct ida { + struct xarray xa; +}; + +struct __una_u32 { + u32 x; +}; + +enum hk_flags { + HK_FLAG_TIMER = 1, + HK_FLAG_RCU = 2, + HK_FLAG_MISC = 4, + HK_FLAG_SCHED = 8, + HK_FLAG_TICK = 16, + HK_FLAG_DOMAIN = 32, + HK_FLAG_WQ = 64, + HK_FLAG_MANAGED_IRQ = 128, + HK_FLAG_KTHREAD = 256, +}; + +struct worker_pool; + +struct worker { + union { + struct list_head entry; + struct hlist_node hentry; + }; + struct work_struct *current_work; + work_func_t current_func; + struct pool_workqueue *current_pwq; + unsigned int current_color; + struct list_head scheduled; + struct task_struct *task; + struct worker_pool *pool; + struct list_head node; + long unsigned int last_active; + unsigned int flags; + int id; + int sleeping; + char desc[24]; + struct workqueue_struct *rescue_wq; + work_func_t last_func; +}; + +struct pool_workqueue { + struct worker_pool *pool; + struct workqueue_struct *wq; + int work_color; + int flush_color; + int refcnt; + int nr_in_flight[16]; + int nr_active; + int max_active; + struct list_head inactive_works; + struct list_head pwqs_node; + struct list_head mayday_node; + struct work_struct unbound_release_work; + struct callback_head rcu; long: 64; long: 64; long: 64; @@ -24539,9 +24897,34 @@ struct rcu_state { long: 64; long: 64; long: 64; +}; + +struct worker_pool { + raw_spinlock_t lock; + int cpu; + int node; + int id; + unsigned int flags; + long unsigned int watchdog_ts; + struct list_head worklist; + int nr_workers; + int nr_idle; + struct list_head idle_list; + struct timer_list idle_timer; + struct timer_list mayday_timer; + struct hlist_head busy_hash[64]; + struct worker *manager; + struct list_head workers; + struct completion *detach_completion; + struct ida worker_ida; + struct workqueue_attrs *attrs; + struct hlist_node hash_node; + int refcnt; long: 64; long: 64; long: 64; + atomic_t nr_running; + struct callback_head rcu; long: 64; long: 64; long: 64; @@ -24556,40 +24939,6 @@ struct rcu_state { long: 64; long: 64; long: 64; - long unsigned int gp_seq; - long unsigned int gp_max; - struct task_struct *gp_kthread; - struct swait_queue_head gp_wq; - short int gp_flags; - short int gp_state; - long unsigned int gp_wake_time; - long unsigned int gp_wake_seq; - struct mutex barrier_mutex; - atomic_t barrier_cpu_count; - struct completion barrier_completion; - long unsigned int barrier_sequence; - raw_spinlock_t barrier_lock; - struct mutex exp_mutex; - struct mutex exp_wake_mutex; - long unsigned int expedited_sequence; - atomic_t expedited_need_qs; - struct swait_queue_head expedited_wq; - int ncpus_snap; - u8 cbovld; - u8 cbovldnext; - long unsigned int jiffies_force_qs; - long unsigned int jiffies_kick_kthreads; - long unsigned int n_force_qs; - long unsigned int gp_start; - long unsigned int gp_end; - long unsigned int gp_activity; - long unsigned int gp_req_activity; - long unsigned int jiffies_stall; - long unsigned int jiffies_resched; - long unsigned int n_force_qs_gpstart; - const char *name; - char abbr; - long: 56; long: 64; long: 64; long: 64; @@ -24605,374 +24954,432 @@ struct rcu_state { long: 64; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - arch_spinlock_t ofl_lock; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - 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 kvfree_rcu_bulk_data { - long unsigned int nr_records; - struct kvfree_rcu_bulk_data *next; - void *records[0]; }; -struct kfree_rcu_cpu; - -struct kfree_rcu_cpu_work { - struct rcu_work rcu_work; - struct callback_head *head_free; - struct kvfree_rcu_bulk_data *bkvhead_free[2]; - struct kfree_rcu_cpu *krcp; +enum { + POOL_MANAGER_ACTIVE = 1, + POOL_DISASSOCIATED = 4, + WORKER_DIE = 2, + WORKER_IDLE = 4, + WORKER_PREP = 8, + WORKER_CPU_INTENSIVE = 64, + WORKER_UNBOUND = 128, + WORKER_REBOUND = 256, + WORKER_NOT_RUNNING = 456, + NR_STD_WORKER_POOLS = 2, + UNBOUND_POOL_HASH_ORDER = 6, + BUSY_WORKER_HASH_ORDER = 6, + MAX_IDLE_WORKERS_RATIO = 4, + IDLE_WORKER_TIMEOUT = 30000, + MAYDAY_INITIAL_TIMEOUT = 2, + MAYDAY_INTERVAL = 10, + CREATE_COOLDOWN = 100, + RESCUER_NICE_LEVEL = 4294967276, + HIGHPRI_NICE_LEVEL = 4294967276, + WQ_NAME_LEN = 24, }; -struct kfree_rcu_cpu { - struct callback_head *head; - struct kvfree_rcu_bulk_data *bkvhead[2]; - struct kfree_rcu_cpu_work krw_arr[2]; - raw_spinlock_t lock; - struct delayed_work monitor_work; - bool monitor_todo; - bool initialized; - int count; - struct delayed_work page_cache_work; - atomic_t backoff_page_cache_fill; - atomic_t work_in_progress; - struct hrtimer hrtimer; - struct llist_head bkvcache; - int nr_bkv_objs; +struct wq_flusher { + struct list_head list; + int flush_color; + struct completion done; }; -struct dma_sgt_handle { - struct sg_table sgt; - struct page **pages; +struct wq_device { + struct workqueue_struct *wq; + struct device dev; }; -struct dma_devres { - size_t size; - void *vaddr; - dma_addr_t dma_handle; - long unsigned int attrs; +struct trace_event_raw_workqueue_queue_work { + struct trace_entry ent; + void *work; + void *function; + u32 __data_loc_workqueue; + unsigned int req_cpu; + unsigned int cpu; + char __data[0]; }; -enum cc_attr { - CC_ATTR_MEM_ENCRYPT = 0, - CC_ATTR_HOST_MEM_ENCRYPT = 1, - CC_ATTR_GUEST_MEM_ENCRYPT = 2, - CC_ATTR_GUEST_STATE_ENCRYPT = 3, - CC_ATTR_GUEST_UNROLL_STRING_IO = 4, +struct trace_event_raw_workqueue_activate_work { + struct trace_entry ent; + void *work; + char __data[0]; }; -enum { - MEMREMAP_WB = 1, - MEMREMAP_WT = 2, - MEMREMAP_WC = 4, - MEMREMAP_ENC = 8, - MEMREMAP_DEC = 16, +struct trace_event_raw_workqueue_execute_start { + struct trace_entry ent; + void *work; + void *function; + char __data[0]; }; -struct trace_event_raw_swiotlb_bounced { +struct trace_event_raw_workqueue_execute_end { struct trace_entry ent; - u32 __data_loc_dev_name; - u64 dma_mask; - dma_addr_t dev_addr; - size_t size; - enum swiotlb_force swiotlb_force; + void *work; + void *function; char __data[0]; }; -struct trace_event_data_offsets_swiotlb_bounced { - u32 dev_name; +struct trace_event_data_offsets_workqueue_queue_work { + u32 workqueue; }; -typedef void (*btf_trace_swiotlb_bounced)(void *, struct device *, dma_addr_t, size_t, enum swiotlb_force); +struct trace_event_data_offsets_workqueue_activate_work {}; -enum kcmp_type { - KCMP_FILE = 0, - KCMP_VM = 1, - KCMP_FILES = 2, - KCMP_FS = 3, - KCMP_SIGHAND = 4, - KCMP_IO = 5, - KCMP_SYSVSEM = 6, - KCMP_EPOLL_TFD = 7, - KCMP_TYPES = 8, -}; +struct trace_event_data_offsets_workqueue_execute_start {}; -struct kcmp_epoll_slot { - __u32 efd; - __u32 tfd; - __u32 toff; +struct trace_event_data_offsets_workqueue_execute_end {}; + +typedef void (*btf_trace_workqueue_queue_work)(void *, unsigned int, struct pool_workqueue *, struct work_struct *); + +typedef void (*btf_trace_workqueue_activate_work)(void *, struct work_struct *); + +typedef void (*btf_trace_workqueue_execute_start)(void *, struct work_struct *); + +typedef void (*btf_trace_workqueue_execute_end)(void *, struct work_struct *, work_func_t); + +struct wq_barrier { + struct work_struct work; + struct completion done; + struct task_struct *task; }; -struct seccomp_data { - int nr; - __u32 arch; - __u64 instruction_pointer; - __u64 args[6]; +struct cwt_wait { + wait_queue_entry_t wait; + struct work_struct *work; }; -struct trace_event_raw_sys_enter { - struct trace_entry ent; - long int id; - long unsigned int args[6]; - char __data[0]; +struct apply_wqattrs_ctx { + struct workqueue_struct *wq; + struct workqueue_attrs *attrs; + struct list_head list; + struct pool_workqueue *dfl_pwq; + struct pool_workqueue *pwq_tbl[0]; }; -struct trace_event_raw_sys_exit { - struct trace_entry ent; - long int id; +struct work_for_cpu { + struct work_struct work; + long int (*fn)(void *); + void *arg; long int ret; - char __data[0]; }; -struct trace_event_data_offsets_sys_enter {}; +typedef void (*task_work_func_t)(struct callback_head *); -struct trace_event_data_offsets_sys_exit {}; +enum task_work_notify_mode { + TWA_NONE = 0, + TWA_RESUME = 1, + TWA_SIGNAL = 2, +}; -typedef void (*btf_trace_sys_enter)(void *, struct pt_regs *, long int); +enum { + KERNEL_PARAM_OPS_FL_NOARG = 1, +}; -typedef void (*btf_trace_sys_exit)(void *, struct pt_regs *, long int); +enum { + KERNEL_PARAM_FL_UNSAFE = 1, + KERNEL_PARAM_FL_HWPARAM = 2, +}; -struct profile_hit { - u32 pc; - u32 hits; +struct param_attribute { + struct module_attribute mattr; + const struct kernel_param *param; }; -struct stacktrace_cookie { - long unsigned int *store; - unsigned int size; - unsigned int skip; - unsigned int len; +struct module_param_attrs { + unsigned int num; + struct attribute_group grp; + struct param_attribute attrs[0]; }; -typedef __kernel_long_t __kernel_suseconds_t; +struct module_version_attribute { + struct module_attribute mattr; + const char *module_name; + const char *version; +}; -typedef __kernel_suseconds_t suseconds_t; +struct kmalloced_param { + struct list_head list; + char val[0]; +}; -typedef __u64 timeu64_t; +struct sched_param { + int sched_priority; +}; -struct __kernel_itimerspec { - struct __kernel_timespec it_interval; - struct __kernel_timespec it_value; +enum { + __PERCPU_REF_ATOMIC = 1, + __PERCPU_REF_DEAD = 2, + __PERCPU_REF_ATOMIC_DEAD = 3, + __PERCPU_REF_FLAG_BITS = 2, }; -struct timezone { - int tz_minuteswest; - int tz_dsttime; +struct kthread_work; + +typedef void (*kthread_work_func_t)(struct kthread_work *); + +struct kthread_worker; + +struct kthread_work { + struct list_head node; + kthread_work_func_t func; + struct kthread_worker *worker; + int canceling; }; -struct itimerspec64 { - struct timespec64 it_interval; - struct timespec64 it_value; +enum { + KTW_FREEZABLE = 1, }; -struct old_itimerspec32 { - struct old_timespec32 it_interval; - struct old_timespec32 it_value; +struct kthread_worker { + unsigned int flags; + raw_spinlock_t lock; + struct list_head work_list; + struct list_head delayed_work_list; + struct task_struct *task; + struct kthread_work *current_work; }; -struct old_timex32 { - u32 modes; - s32 offset; - s32 freq; - s32 maxerror; - s32 esterror; - s32 status; - s32 constant; - s32 precision; - s32 tolerance; - struct old_timeval32 time; - s32 tick; - s32 ppsfreq; - s32 jitter; - s32 shift; - s32 stabil; - s32 jitcnt; - s32 calcnt; - s32 errcnt; - s32 stbcnt; - s32 tai; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct kthread_delayed_work { + struct kthread_work work; + struct timer_list timer; }; -struct trace_event_raw_timer_class { - struct trace_entry ent; - void *timer; - char __data[0]; +enum { + CSS_NO_REF = 1, + CSS_ONLINE = 2, + CSS_RELEASED = 4, + CSS_VISIBLE = 8, + CSS_DYING = 16, }; -struct trace_event_raw_timer_start { - struct trace_entry ent; - void *timer; - void *function; - long unsigned int expires; - long unsigned int now; - unsigned int flags; - char __data[0]; +struct kthread_create_info { + int (*threadfn)(void *); + void *data; + int node; + struct task_struct *result; + struct completion *done; + struct list_head list; }; -struct trace_event_raw_timer_expire_entry { - struct trace_entry ent; - void *timer; - long unsigned int now; - void *function; - long unsigned int baseclk; - char __data[0]; +struct kthread { + long unsigned int flags; + unsigned int cpu; + int (*threadfn)(void *); + void *data; + mm_segment_t oldfs; + struct completion parked; + struct completion exited; + struct cgroup_subsys_state *blkcg_css; }; -struct trace_event_raw_hrtimer_init { - struct trace_entry ent; - void *hrtimer; - clockid_t clockid; - enum hrtimer_mode mode; - char __data[0]; +enum KTHREAD_BITS { + KTHREAD_IS_PER_CPU = 0, + KTHREAD_SHOULD_STOP = 1, + KTHREAD_SHOULD_PARK = 2, }; -struct trace_event_raw_hrtimer_start { - struct trace_entry ent; - void *hrtimer; - void *function; - s64 expires; - s64 softexpires; - enum hrtimer_mode mode; - char __data[0]; +struct kthread_flush_work { + struct kthread_work work; + struct completion done; }; -struct trace_event_raw_hrtimer_expire_entry { - struct trace_entry ent; - void *hrtimer; - s64 now; - void *function; - char __data[0]; +typedef long unsigned int pcp_op_T_____4; + +struct ipc_ids { + int in_use; + short unsigned int seq; + struct rw_semaphore rwsem; + struct idr ipcs_idr; + int max_idx; + int last_idx; + int next_id; + struct rhashtable key_ht; }; -struct trace_event_raw_hrtimer_class { - struct trace_entry ent; - void *hrtimer; - char __data[0]; +struct ipc_namespace { + struct ipc_ids ids[3]; + int sem_ctls[4]; + int used_sems; + unsigned int msg_ctlmax; + unsigned int msg_ctlmnb; + unsigned int msg_ctlmni; + atomic_t msg_bytes; + atomic_t msg_hdrs; + size_t shm_ctlmax; + size_t shm_ctlall; + long unsigned int shm_tot; + int shm_ctlmni; + int shm_rmid_forced; + struct notifier_block ipcns_nb; + struct vfsmount *mq_mnt; + unsigned int mq_queues_count; + unsigned int mq_queues_max; + unsigned int mq_msg_max; + unsigned int mq_msgsize_max; + unsigned int mq_msg_default; + unsigned int mq_msgsize_default; + struct user_namespace *user_ns; + struct ucounts *ucounts; + struct llist_node mnt_llist; + struct ns_common ns; }; -struct trace_event_raw_itimer_state { - struct trace_entry ent; - int which; - long long unsigned int expires; - long int value_sec; - long int value_nsec; - long int interval_sec; - long int interval_nsec; - char __data[0]; +struct srcu_notifier_head { + struct mutex mutex; + struct srcu_struct srcu; + struct notifier_block *head; }; -struct trace_event_raw_itimer_expire { - struct trace_entry ent; - int which; - pid_t pid; - long long unsigned int now; - char __data[0]; +struct lsmblob { + u32 secid[4]; }; -struct trace_event_raw_tick_stop { - struct trace_entry ent; - int success; - int dependency; - char __data[0]; +enum what { + PROC_EVENT_NONE = 0, + PROC_EVENT_FORK = 1, + PROC_EVENT_EXEC = 2, + PROC_EVENT_UID = 4, + PROC_EVENT_GID = 64, + PROC_EVENT_SID = 128, + PROC_EVENT_PTRACE = 256, + PROC_EVENT_COMM = 512, + PROC_EVENT_COREDUMP = 1073741824, + PROC_EVENT_EXIT = 2147483648, }; -struct trace_event_data_offsets_timer_class {}; +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 trace_event_data_offsets_timer_start {}; +struct async_entry { + struct list_head domain_list; + struct list_head global_list; + struct work_struct work; + async_cookie_t cookie; + async_func_t func; + void *data; + struct async_domain *domain; +}; -struct trace_event_data_offsets_timer_expire_entry {}; +typedef void (*swap_func_t)(void *, void *, int); -struct trace_event_data_offsets_hrtimer_init {}; +struct smpboot_thread_data { + unsigned int cpu; + unsigned int status; + struct smp_hotplug_thread *ht; +}; -struct trace_event_data_offsets_hrtimer_start {}; +enum { + HP_THREAD_NONE = 0, + HP_THREAD_ACTIVE = 1, + HP_THREAD_PARKED = 2, +}; -struct trace_event_data_offsets_hrtimer_expire_entry {}; +struct umd_info { + const char *driver_name; + struct file *pipe_to_umh; + struct file *pipe_from_umh; + struct path wd; + struct pid *tgid; +}; -struct trace_event_data_offsets_hrtimer_class {}; +struct pin_cookie {}; -struct trace_event_data_offsets_itimer_state {}; +enum { + CSD_FLAG_LOCK = 1, + IRQ_WORK_PENDING = 1, + IRQ_WORK_BUSY = 2, + IRQ_WORK_LAZY = 4, + IRQ_WORK_HARD_IRQ = 8, + IRQ_WORK_CLAIMED = 3, + CSD_TYPE_ASYNC = 0, + CSD_TYPE_SYNC = 16, + CSD_TYPE_IRQ_WORK = 32, + CSD_TYPE_TTWU = 48, + CSD_FLAG_TYPE_MASK = 240, +}; -struct trace_event_data_offsets_itimer_expire {}; +typedef int (*task_call_f)(struct task_struct *, void *); -struct trace_event_data_offsets_tick_stop {}; - -typedef void (*btf_trace_timer_init)(void *, struct timer_list *); - -typedef void (*btf_trace_timer_start)(void *, struct timer_list *, long unsigned int, unsigned int); - -typedef void (*btf_trace_timer_expire_entry)(void *, struct timer_list *, long unsigned int); - -typedef void (*btf_trace_timer_expire_exit)(void *, struct timer_list *); - -typedef void (*btf_trace_timer_cancel)(void *, struct timer_list *); - -typedef void (*btf_trace_hrtimer_init)(void *, struct hrtimer *, clockid_t, enum hrtimer_mode); - -typedef void (*btf_trace_hrtimer_start)(void *, struct hrtimer *, enum hrtimer_mode); +struct dl_bw { + raw_spinlock_t lock; + u64 bw; + u64 total_bw; +}; -typedef void (*btf_trace_hrtimer_expire_entry)(void *, struct hrtimer *, ktime_t *); +struct cpudl_item; -typedef void (*btf_trace_hrtimer_expire_exit)(void *, struct hrtimer *); +struct cpudl { + raw_spinlock_t lock; + int size; + cpumask_var_t free_cpus; + struct cpudl_item *elements; +}; -typedef void (*btf_trace_hrtimer_cancel)(void *, struct hrtimer *); +struct cpupri_vec { + atomic_t count; + cpumask_var_t mask; +}; -typedef void (*btf_trace_itimer_state)(void *, int, const struct itimerspec64 * const, long long unsigned int); +struct cpupri { + struct cpupri_vec pri_to_cpu[101]; + int *cpu_to_pri; +}; -typedef void (*btf_trace_itimer_expire)(void *, int, struct pid *, long long unsigned int); +struct perf_domain; -typedef void (*btf_trace_tick_stop)(void *, int, int); +struct root_domain { + atomic_t refcount; + atomic_t rto_count; + struct callback_head rcu; + cpumask_var_t span; + cpumask_var_t online; + int overload; + int overutilized; + cpumask_var_t dlo_mask; + atomic_t dlo_count; + struct dl_bw dl_bw; + struct cpudl cpudl; + u64 visit_gen; + struct irq_work rto_push_work; + raw_spinlock_t rto_lock; + int rto_loop; + int rto_cpu; + atomic_t rto_loop_next; + atomic_t rto_loop_start; + cpumask_var_t rto_mask; + struct cpupri cpupri; + long unsigned int max_cpu_capacity; + struct perf_domain *pd; +}; -struct timer_base { - raw_spinlock_t lock; - struct timer_list *running_timer; - long unsigned int clk; - long unsigned int next_expiry; - unsigned int cpu; - bool next_expiry_recalc; - bool is_idle; - bool timers_pending; - long unsigned int pending_map[8]; - struct hlist_head vectors[512]; +struct cfs_rq { + struct load_weight load; + unsigned int nr_running; + unsigned int h_nr_running; + 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: 64; + long: 64; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -24985,6 +25392,67 @@ struct timer_base { long: 64; long: 64; long: 64; + struct sched_avg avg; + struct { + raw_spinlock_t lock; + int nr; + long unsigned int load_avg; + long unsigned int util_avg; + long unsigned int runnable_avg; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + } removed; + long unsigned int tg_load_avg_contrib; + long int propagate; + long int prop_runnable_sum; + long unsigned int h_load; + u64 last_h_load_update; + struct sched_entity *h_load_next; + struct rq *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_pelt; + u64 throttled_clock_pelt_time; + int throttled; + int throttle_count; + struct list_head throttled_list; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -24994,495 +25462,518 @@ struct timer_base { long: 64; }; -struct process_timer { - struct timer_list timer; - struct task_struct *task; +struct cfs_bandwidth { + raw_spinlock_t lock; + ktime_t period; + u64 quota; + u64 runtime; + u64 burst; + s64 hierarchical_quota; + u8 idle; + u8 period_active; + u8 slack_started; + struct hrtimer period_timer; + struct hrtimer slack_timer; + struct list_head throttled_cfs_rq; + int nr_periods; + int nr_throttled; + u64 throttled_time; }; -struct ktime_timestamps { - u64 mono; - u64 boot; - u64 real; +struct task_group { + struct cgroup_subsys_state css; + struct sched_entity **se; + struct cfs_rq **cfs_rq; + long unsigned int shares; + int idle; + long: 64; + long: 64; + long: 64; + atomic_long_t load_avg; + struct callback_head rcu; + struct list_head list; + struct task_group *parent; + struct list_head siblings; + struct list_head children; + struct autogroup *autogroup; + struct cfs_bandwidth cfs_bandwidth; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 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 sched_domain_attr { + int relax_domain_level; }; -struct system_device_crosststamp { - ktime_t device; - ktime_t sys_realtime; - ktime_t sys_monoraw; +struct sched_group { + struct sched_group *next; + atomic_t ref; + unsigned int group_weight; + struct sched_group_capacity *sgc; + int asym_prefer_cpu; + int flags; + long unsigned int cpumask[0]; }; -struct system_counterval_t { - u64 cycles; - struct clocksource *cs; +struct sched_group_capacity { + atomic_t ref; + long unsigned int capacity; + long unsigned int min_capacity; + long unsigned int max_capacity; + long unsigned int next_update; + int imbalance; + int id; + long unsigned int cpumask[0]; }; -struct tk_read_base { - struct clocksource *clock; - u64 mask; - u64 cycle_last; - u32 mult; - u32 shift; - u64 xtime_nsec; - ktime_t base; - u64 base_real; +struct em_perf_state { + long unsigned int frequency; + long unsigned int power; + long unsigned int cost; }; -struct timekeeper { - struct tk_read_base tkr_mono; - struct tk_read_base tkr_raw; - u64 xtime_sec; - long unsigned int ktime_sec; - struct timespec64 wall_to_monotonic; - ktime_t offs_real; - ktime_t offs_boot; - ktime_t offs_tai; - s32 tai_offset; - unsigned int clock_was_set_seq; - u8 cs_was_changed_seq; - ktime_t next_leap_ktime; - u64 raw_sec; - struct timespec64 monotonic_to_boot; - u64 cycle_interval; - u64 xtime_interval; - s64 xtime_remainder; - u64 raw_interval; - u64 ntp_tick; - s64 ntp_error; - u32 ntp_error_shift; - u32 ntp_err_mult; - u32 skip_second_overflow; +struct em_perf_domain { + struct em_perf_state *table; + int nr_perf_states; + int milliwatts; + long unsigned int cpus[0]; }; -struct syscore_ops { - struct list_head node; - int (*suspend)(); - void (*resume)(); - void (*shutdown)(); +struct autogroup { + struct kref kref; + struct task_group *tg; + struct rw_semaphore lock; + long unsigned int id; + int nice; }; -struct audit_ntp_val { - long long int oldval; - long long int newval; +enum ctx_state { + CONTEXT_DISABLED = 4294967295, + CONTEXT_KERNEL = 0, + CONTEXT_USER = 1, + CONTEXT_GUEST = 2, }; -struct audit_ntp_data { - struct audit_ntp_val vals[6]; +enum { + MEMBARRIER_STATE_PRIVATE_EXPEDITED_READY = 1, + MEMBARRIER_STATE_PRIVATE_EXPEDITED = 2, + MEMBARRIER_STATE_GLOBAL_EXPEDITED_READY = 4, + MEMBARRIER_STATE_GLOBAL_EXPEDITED = 8, + MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE_READY = 16, + MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE = 32, + MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ_READY = 64, + MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ = 128, }; -enum timekeeping_adv_mode { - TK_ADV_TICK = 0, - TK_ADV_FREQ = 1, +struct kernel_cpustat { + u64 cpustat[10]; }; -struct tk_fast { - seqcount_latch_t seq; - struct tk_read_base base[2]; +enum { + CFTYPE_ONLY_ON_ROOT = 1, + CFTYPE_NOT_ON_ROOT = 2, + CFTYPE_NS_DELEGATABLE = 4, + CFTYPE_NO_PREFIX = 8, + CFTYPE_WORLD_WRITABLE = 16, + CFTYPE_DEBUG = 32, + CFTYPE_PRESSURE = 64, + __CFTYPE_ONLY_ON_DFL = 65536, + __CFTYPE_NOT_ON_DFL = 131072, }; -enum tick_device_mode { - TICKDEV_MODE_PERIODIC = 0, - TICKDEV_MODE_ONESHOT = 1, +struct trace_event_raw_sched_kthread_stop { + struct trace_entry ent; + char comm[16]; + pid_t pid; + char __data[0]; }; -struct tick_device { - struct clock_event_device *evtdev; - enum tick_device_mode mode; +struct trace_event_raw_sched_kthread_stop_ret { + struct trace_entry ent; + int ret; + char __data[0]; }; -enum tick_nohz_mode { - NOHZ_MODE_INACTIVE = 0, - NOHZ_MODE_LOWRES = 1, - NOHZ_MODE_HIGHRES = 2, +struct trace_event_raw_sched_kthread_work_queue_work { + struct trace_entry ent; + void *work; + void *function; + void *worker; + char __data[0]; }; -struct tick_sched { - struct hrtimer sched_timer; - long unsigned int check_clocks; - enum tick_nohz_mode nohz_mode; - unsigned int inidle: 1; - unsigned int tick_stopped: 1; - unsigned int idle_active: 1; - unsigned int do_timer_last: 1; - unsigned int got_idle_tick: 1; - ktime_t last_tick; - ktime_t next_tick; - long unsigned int idle_jiffies; - long unsigned int idle_calls; - long unsigned int idle_sleeps; - ktime_t idle_entrytime; - ktime_t idle_waketime; - ktime_t idle_exittime; - ktime_t idle_sleeptime; - ktime_t iowait_sleeptime; - long unsigned int last_jiffies; - u64 timer_expires; - u64 timer_expires_base; - u64 next_timer; - ktime_t idle_expires; - atomic_t tick_dep_mask; - long unsigned int last_tick_jiffies; - unsigned int stalled_jiffies; +struct trace_event_raw_sched_kthread_work_execute_start { + struct trace_entry ent; + void *work; + void *function; + char __data[0]; }; -struct timer_list_iter { - int cpu; - bool second_pass; - u64 now; +struct trace_event_raw_sched_kthread_work_execute_end { + struct trace_entry ent; + void *work; + void *function; + char __data[0]; }; -struct tm { - int tm_sec; - int tm_min; - int tm_hour; - int tm_mday; - int tm_mon; - long int tm_year; - int tm_wday; - int tm_yday; +struct trace_event_raw_sched_wakeup_template { + struct trace_entry ent; + char comm[16]; + pid_t pid; + int prio; + int target_cpu; + char __data[0]; }; -struct cyclecounter { - u64 (*read)(const struct cyclecounter *); - u64 mask; - u32 mult; - u32 shift; +struct trace_event_raw_sched_switch { + struct trace_entry ent; + char prev_comm[16]; + pid_t prev_pid; + int prev_prio; + long int prev_state; + char next_comm[16]; + pid_t next_pid; + int next_prio; + char __data[0]; }; -struct timecounter { - const struct cyclecounter *cc; - u64 cycle_last; - u64 nsec; - u64 mask; - u64 frac; +struct trace_event_raw_sched_migrate_task { + struct trace_entry ent; + char comm[16]; + pid_t pid; + int prio; + int orig_cpu; + int dest_cpu; + char __data[0]; }; -typedef __kernel_timer_t timer_t; - -struct sigevent { - sigval_t sigev_value; - int sigev_signo; - int sigev_notify; - union { - int _pad[12]; - int _tid; - struct { - void (*_function)(sigval_t); - void *_attribute; - } _sigev_thread; - } _sigev_un; +struct trace_event_raw_sched_process_template { + struct trace_entry ent; + char comm[16]; + pid_t pid; + int prio; + char __data[0]; }; -typedef struct sigevent sigevent_t; - -enum alarmtimer_type { - ALARM_REALTIME = 0, - ALARM_BOOTTIME = 1, - ALARM_NUMTYPE = 2, - ALARM_REALTIME_FREEZER = 3, - ALARM_BOOTTIME_FREEZER = 4, +struct trace_event_raw_sched_process_wait { + struct trace_entry ent; + char comm[16]; + pid_t pid; + int prio; + char __data[0]; }; -enum alarmtimer_restart { - ALARMTIMER_NORESTART = 0, - ALARMTIMER_RESTART = 1, +struct trace_event_raw_sched_process_fork { + struct trace_entry ent; + char parent_comm[16]; + pid_t parent_pid; + char child_comm[16]; + pid_t child_pid; + char __data[0]; }; -struct alarm { - struct timerqueue_node node; - struct hrtimer timer; - enum alarmtimer_restart (*function)(struct alarm *, ktime_t); - enum alarmtimer_type type; - int state; - void *data; +struct trace_event_raw_sched_process_exec { + struct trace_entry ent; + u32 __data_loc_filename; + pid_t pid; + pid_t old_pid; + char __data[0]; }; -struct cpu_timer { - struct timerqueue_node node; - struct timerqueue_head *head; - struct pid *pid; - struct list_head elist; - int firing; +struct trace_event_raw_sched_stat_template { + struct trace_entry ent; + char comm[16]; + pid_t pid; + u64 delay; + char __data[0]; }; -struct k_clock; - -struct k_itimer { - struct list_head list; - struct hlist_node t_hash; - spinlock_t it_lock; - const struct k_clock *kclock; - clockid_t it_clock; - timer_t it_id; - int it_active; - s64 it_overrun; - s64 it_overrun_last; - int it_requeue_pending; - int it_sigev_notify; - ktime_t it_interval; - struct signal_struct *it_signal; - union { - struct pid *it_pid; - struct task_struct *it_process; - }; - struct sigqueue *sigq; - union { - struct { - struct hrtimer timer; - } real; - struct cpu_timer cpu; - struct { - struct alarm alarmtimer; - } alarm; - } it; - struct callback_head rcu; +struct trace_event_raw_sched_stat_runtime { + struct trace_entry ent; + char comm[16]; + pid_t pid; + u64 runtime; + u64 vruntime; + char __data[0]; }; -struct k_clock { - int (*clock_getres)(const clockid_t, struct timespec64 *); - int (*clock_set)(const clockid_t, const struct timespec64 *); - int (*clock_get_timespec)(const clockid_t, struct timespec64 *); - ktime_t (*clock_get_ktime)(const clockid_t); - int (*clock_adj)(const clockid_t, struct __kernel_timex *); - int (*timer_create)(struct k_itimer *); - int (*nsleep)(const clockid_t, int, const struct timespec64 *); - int (*timer_set)(struct k_itimer *, int, struct itimerspec64 *, struct itimerspec64 *); - int (*timer_del)(struct k_itimer *); - void (*timer_get)(struct k_itimer *, struct itimerspec64 *); - void (*timer_rearm)(struct k_itimer *); - s64 (*timer_forward)(struct k_itimer *, ktime_t); - ktime_t (*timer_remaining)(struct k_itimer *, ktime_t); - int (*timer_try_to_cancel)(struct k_itimer *); - void (*timer_arm)(struct k_itimer *, ktime_t, bool, bool); - void (*timer_wait_running)(struct k_itimer *); +struct trace_event_raw_sched_pi_setprio { + struct trace_entry ent; + char comm[16]; + pid_t pid; + int oldprio; + int newprio; + char __data[0]; }; -struct compat_sigevent { - compat_sigval_t sigev_value; - compat_int_t sigev_signo; - compat_int_t sigev_notify; - union { - compat_int_t _pad[13]; - compat_int_t _tid; - struct { - compat_uptr_t _function; - compat_uptr_t _attribute; - } _sigev_thread; - } _sigev_un; +struct trace_event_raw_sched_process_hang { + struct trace_entry ent; + char comm[16]; + pid_t pid; + char __data[0]; }; -struct posix_clock; - -struct posix_clock_operations { - struct module *owner; - int (*clock_adjtime)(struct posix_clock *, struct __kernel_timex *); - int (*clock_gettime)(struct posix_clock *, struct timespec64 *); - int (*clock_getres)(struct posix_clock *, struct timespec64 *); - int (*clock_settime)(struct posix_clock *, const struct timespec64 *); - long int (*ioctl)(struct posix_clock *, unsigned int, long unsigned int); - int (*open)(struct posix_clock *, fmode_t); - __poll_t (*poll)(struct posix_clock *, struct file *, poll_table *); - int (*release)(struct posix_clock *); - ssize_t (*read)(struct posix_clock *, uint, char *, size_t); +struct trace_event_raw_sched_move_numa { + struct trace_entry ent; + pid_t pid; + pid_t tgid; + pid_t ngid; + int src_cpu; + int src_nid; + int dst_cpu; + int dst_nid; + char __data[0]; }; -struct posix_clock { - struct posix_clock_operations ops; - struct cdev cdev; - struct device *dev; - struct rw_semaphore rwsem; - bool zombie; +struct trace_event_raw_sched_numa_pair_template { + struct trace_entry ent; + pid_t src_pid; + pid_t src_tgid; + pid_t src_ngid; + int src_cpu; + int src_nid; + pid_t dst_pid; + pid_t dst_tgid; + pid_t dst_ngid; + int dst_cpu; + int dst_nid; + char __data[0]; }; -struct posix_clock_desc { - struct file *fp; - struct posix_clock *clk; +struct trace_event_raw_sched_wake_idle_without_ipi { + struct trace_entry ent; + int cpu; + char __data[0]; }; -struct rtc_time { - int tm_sec; - int tm_min; - int tm_hour; - int tm_mday; - int tm_mon; - int tm_year; - int tm_wday; - int tm_yday; - int tm_isdst; -}; +struct trace_event_data_offsets_sched_kthread_stop {}; -struct rtc_wkalrm { - unsigned char enabled; - unsigned char pending; - struct rtc_time time; -}; +struct trace_event_data_offsets_sched_kthread_stop_ret {}; -struct rtc_param { - __u64 param; - union { - __u64 uvalue; - __s64 svalue; - __u64 ptr; - }; - __u32 index; - __u32 __pad; -}; +struct trace_event_data_offsets_sched_kthread_work_queue_work {}; -struct rtc_class_ops { - int (*ioctl)(struct device *, unsigned int, long unsigned int); - int (*read_time)(struct device *, struct rtc_time *); - int (*set_time)(struct device *, struct rtc_time *); - int (*read_alarm)(struct device *, struct rtc_wkalrm *); - int (*set_alarm)(struct device *, struct rtc_wkalrm *); - int (*proc)(struct device *, struct seq_file *); - int (*alarm_irq_enable)(struct device *, unsigned int); - int (*read_offset)(struct device *, long int *); - int (*set_offset)(struct device *, long int); - int (*param_get)(struct device *, struct rtc_param *); - int (*param_set)(struct device *, struct rtc_param *); -}; +struct trace_event_data_offsets_sched_kthread_work_execute_start {}; -struct rtc_device; +struct trace_event_data_offsets_sched_kthread_work_execute_end {}; -struct rtc_timer { - struct timerqueue_node node; - ktime_t period; - void (*func)(struct rtc_device *); - struct rtc_device *rtc; - int enabled; -}; +struct trace_event_data_offsets_sched_wakeup_template {}; -struct rtc_device { - struct device dev; - struct module *owner; - int id; - const struct rtc_class_ops *ops; - struct mutex ops_lock; - struct cdev char_dev; - long unsigned int flags; - long unsigned int irq_data; - spinlock_t irq_lock; - wait_queue_head_t irq_queue; - struct fasync_struct *async_queue; - int irq_freq; - int max_user_freq; - struct timerqueue_head timerqueue; - struct rtc_timer aie_timer; - struct rtc_timer uie_rtctimer; - struct hrtimer pie_timer; - int pie_enabled; - struct work_struct irqwork; - long unsigned int set_offset_nsec; - long unsigned int features[1]; - time64_t range_min; - timeu64_t range_max; - time64_t start_secs; - time64_t offset_secs; - bool set_start_time; -}; +struct trace_event_data_offsets_sched_switch {}; -struct trace_event_raw_alarmtimer_suspend { - struct trace_entry ent; - s64 expires; - unsigned char alarm_type; - char __data[0]; -}; +struct trace_event_data_offsets_sched_migrate_task {}; -struct trace_event_raw_alarm_class { - struct trace_entry ent; - void *alarm; - unsigned char alarm_type; - s64 expires; - s64 now; - char __data[0]; +struct trace_event_data_offsets_sched_process_template {}; + +struct trace_event_data_offsets_sched_process_wait {}; + +struct trace_event_data_offsets_sched_process_fork {}; + +struct trace_event_data_offsets_sched_process_exec { + u32 filename; }; -struct trace_event_data_offsets_alarmtimer_suspend {}; +struct trace_event_data_offsets_sched_stat_template {}; -struct trace_event_data_offsets_alarm_class {}; +struct trace_event_data_offsets_sched_stat_runtime {}; -typedef void (*btf_trace_alarmtimer_suspend)(void *, ktime_t, int); +struct trace_event_data_offsets_sched_pi_setprio {}; -typedef void (*btf_trace_alarmtimer_fired)(void *, struct alarm *, ktime_t); +struct trace_event_data_offsets_sched_process_hang {}; -typedef void (*btf_trace_alarmtimer_start)(void *, struct alarm *, ktime_t); +struct trace_event_data_offsets_sched_move_numa {}; -typedef void (*btf_trace_alarmtimer_cancel)(void *, struct alarm *, ktime_t); +struct trace_event_data_offsets_sched_numa_pair_template {}; -struct alarm_base { - spinlock_t lock; - struct timerqueue_head timerqueue; - ktime_t (*get_ktime)(); - void (*get_timespec)(struct timespec64 *); - clockid_t base_clockid; -}; +struct trace_event_data_offsets_sched_wake_idle_without_ipi {}; -struct __kernel_old_itimerval { - struct __kernel_old_timeval it_interval; - struct __kernel_old_timeval it_value; -}; +typedef void (*btf_trace_sched_kthread_stop)(void *, struct task_struct *); -struct old_itimerval32 { - struct old_timeval32 it_interval; - struct old_timeval32 it_value; -}; +typedef void (*btf_trace_sched_kthread_stop_ret)(void *, int); -enum tick_broadcast_state { - TICK_BROADCAST_EXIT = 0, - TICK_BROADCAST_ENTER = 1, -}; +typedef void (*btf_trace_sched_kthread_work_queue_work)(void *, struct kthread_worker *, struct kthread_work *); -struct ce_unbind { - struct clock_event_device *ce; - int res; -}; +typedef void (*btf_trace_sched_kthread_work_execute_start)(void *, struct kthread_work *); -struct proc_timens_offset { - int clockid; - struct timespec64 val; +typedef void (*btf_trace_sched_kthread_work_execute_end)(void *, struct kthread_work *, kthread_work_func_t); + +typedef void (*btf_trace_sched_waking)(void *, struct task_struct *); + +typedef void (*btf_trace_sched_wakeup)(void *, struct task_struct *); + +typedef void (*btf_trace_sched_wakeup_new)(void *, struct task_struct *); + +typedef void (*btf_trace_sched_switch)(void *, bool, struct task_struct *, struct task_struct *); + +typedef void (*btf_trace_sched_migrate_task)(void *, struct task_struct *, int); + +typedef void (*btf_trace_sched_process_free)(void *, struct task_struct *); + +typedef void (*btf_trace_sched_process_exit)(void *, struct task_struct *); + +typedef void (*btf_trace_sched_wait_task)(void *, struct task_struct *); + +typedef void (*btf_trace_sched_process_wait)(void *, struct pid *); + +typedef void (*btf_trace_sched_process_fork)(void *, struct task_struct *, struct task_struct *); + +typedef void (*btf_trace_sched_process_exec)(void *, struct task_struct *, pid_t, struct linux_binprm *); + +typedef void (*btf_trace_sched_stat_wait)(void *, struct task_struct *, u64); + +typedef void (*btf_trace_sched_stat_sleep)(void *, struct task_struct *, u64); + +typedef void (*btf_trace_sched_stat_iowait)(void *, struct task_struct *, u64); + +typedef void (*btf_trace_sched_stat_blocked)(void *, struct task_struct *, u64); + +typedef void (*btf_trace_sched_stat_runtime)(void *, struct task_struct *, u64, u64); + +typedef void (*btf_trace_sched_pi_setprio)(void *, struct task_struct *, struct task_struct *); + +typedef void (*btf_trace_sched_process_hang)(void *, struct task_struct *); + +typedef void (*btf_trace_sched_move_numa)(void *, struct task_struct *, int, int); + +typedef void (*btf_trace_sched_stick_numa)(void *, struct task_struct *, int, struct task_struct *, int); + +typedef void (*btf_trace_sched_swap_numa)(void *, struct task_struct *, int, struct task_struct *, int); + +typedef void (*btf_trace_sched_wake_idle_without_ipi)(void *, int); + +typedef void (*btf_trace_pelt_cfs_tp)(void *, struct cfs_rq *); + +typedef void (*btf_trace_pelt_rt_tp)(void *, struct rq *); + +struct rt_prio_array { + long unsigned int bitmap[2]; + struct list_head queue[100]; }; -union futex_key { - struct { - u64 i_seq; - long unsigned int pgoff; - unsigned int offset; - } shared; +struct rt_rq { + struct rt_prio_array active; + unsigned int rt_nr_running; + unsigned int rr_nr_running; struct { - union { - struct mm_struct *mm; - u64 __tmp; - }; - long unsigned int address; - unsigned int offset; - } private; + int curr; + int next; + } highest_prio; + unsigned int rt_nr_migratory; + unsigned int rt_nr_total; + int overloaded; + struct plist_head pushable_tasks; + int rt_queued; + int rt_throttled; + u64 rt_time; + u64 rt_runtime; + raw_spinlock_t rt_runtime_lock; +}; + +struct dl_rq { + struct rb_root_cached root; + unsigned int dl_nr_running; struct { - u64 ptr; - long unsigned int word; - unsigned int offset; - } both; + u64 curr; + u64 next; + } earliest_dl; + unsigned int dl_nr_migratory; + int overloaded; + struct rb_root_cached pushable_dl_tasks_root; + u64 running_bw; + u64 this_bw; + u64 extra_bw; + u64 bw_ratio; }; -struct futex_pi_state { +struct cpu_stop_done; + +struct cpu_stop_work { struct list_head list; - struct rt_mutex_base pi_mutex; - struct task_struct *owner; - refcount_t refcount; - union futex_key key; + cpu_stop_fn_t fn; + long unsigned int caller; + void *arg; + struct cpu_stop_done *done; }; -struct futex_hash_bucket { - atomic_t waiters; - spinlock_t lock; - struct plist_head chain; +struct rq { + 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: 64; + long: 64; + long: 64; + call_single_data_t nohz_csd; + unsigned int nohz_tick_stopped; + atomic_t nohz_flags; + unsigned int ttwu_pending; + u64 nr_switches; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 cfs_rq cfs; + struct rt_rq rt; + struct dl_rq dl; + struct list_head leaf_cfs_rq_list; + struct list_head *tmp_alone_branch; + unsigned int nr_uninterruptible; + struct task_struct *curr; + struct task_struct *idle; + struct task_struct *stop; + long unsigned int next_balance; + struct mm_struct *prev_mm; + unsigned int clock_update_flags; + u64 clock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -25494,6 +25985,72 @@ struct futex_hash_bucket { 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 *rd; + struct sched_domain *sd; + long unsigned int cpu_capacity; + long unsigned int cpu_capacity_orig; + long unsigned int cpu_capacity_inverted; + struct callback_head *balance_callback; + unsigned char nohz_idle_balance; + unsigned char idle_balance; + long unsigned int misfit_task_load; + int active_balance; + int push_cpu; + struct cpu_stop_work active_balance_work; + int cpu; + int online; + struct list_head cfs_tasks; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct sched_avg avg_rt; + struct sched_avg avg_dl; + u64 idle_stamp; + u64 avg_idle; + long unsigned int wake_stamp; + u64 wake_avg_idle; + u64 max_idle_balance_cost; + struct rcuwait hotplug_wait; + long unsigned int calc_load_update; + long int calc_load_active; + call_single_data_t hrtick_csd; + struct hrtimer hrtick_timer; + ktime_t hrtick_time; + struct sched_info rq_sched_info; + long long unsigned int rq_cpu_time; + unsigned int yld_count; + unsigned int sched_count; + unsigned int sched_goidle; + unsigned int ttwu_count; + unsigned int ttwu_local; + unsigned int nr_pinned; + unsigned int push_busy; + struct cpu_stop_work push_work; + 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; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -25514,1473 +26071,1169 @@ struct futex_hash_bucket { long: 64; }; -struct futex_q { - struct plist_node list; - struct task_struct *task; - spinlock_t *lock_ptr; - union futex_key key; - struct futex_pi_state *pi_state; - struct rt_mutex_waiter *rt_waiter; - union futex_key *requeue_pi_key; - u32 bitset; - atomic_t requeue_state; -}; - -enum futex_access { - FUTEX_READ = 0, - FUTEX_WRITE = 1, -}; - -struct futex_waitv { - __u64 val; - __u64 uaddr; - __u32 flags; - __u32 __reserved; -}; - -struct futex_vector { - struct futex_waitv w; - struct futex_q q; -}; +typedef void (*btf_trace_pelt_dl_tp)(void *, struct rq *); -enum { - Q_REQUEUE_PI_NONE = 0, - Q_REQUEUE_PI_IGNORE = 1, - Q_REQUEUE_PI_IN_PROGRESS = 2, - Q_REQUEUE_PI_WAIT = 3, - Q_REQUEUE_PI_DONE = 4, - Q_REQUEUE_PI_LOCKED = 5, -}; +typedef void (*btf_trace_pelt_thermal_tp)(void *, struct rq *); -struct cfd_percpu { - call_single_data_t csd; -}; +typedef void (*btf_trace_pelt_irq_tp)(void *, struct rq *); -struct call_function_data { - struct cfd_percpu *pcpu; - cpumask_var_t cpumask; - cpumask_var_t cpumask_ipi; -}; +typedef void (*btf_trace_pelt_se_tp)(void *, struct sched_entity *); -struct smp_call_on_cpu_struct { - struct work_struct work; - struct completion done; - int (*func)(void *); - void *data; - int ret; - int cpu; -}; +typedef void (*btf_trace_sched_cpu_capacity_tp)(void *, struct rq *); -typedef short unsigned int __kernel_old_uid_t; +typedef void (*btf_trace_sched_overutilized_tp)(void *, struct root_domain *, bool); -typedef short unsigned int __kernel_old_gid_t; +typedef void (*btf_trace_sched_util_est_cfs_tp)(void *, struct cfs_rq *); -typedef __kernel_old_uid_t old_uid_t; +typedef void (*btf_trace_sched_util_est_se_tp)(void *, struct sched_entity *); -typedef __kernel_old_gid_t old_gid_t; +typedef void (*btf_trace_sched_update_nr_running_tp)(void *, struct rq *, int); -struct latch_tree_root { - seqcount_latch_t seq; - struct rb_root tree[2]; +struct wake_q_head { + struct wake_q_node *first; + struct wake_q_node **lastp; }; -struct latch_tree_ops { - bool (*less)(struct latch_tree_node *, struct latch_tree_node *); - int (*comp)(void *, struct latch_tree_node *); +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 module_use { - struct list_head source_list; - struct list_head target_list; - struct module *source; - struct module *target; +struct cpudl_item { + u64 dl; + int cpu; + int idx; }; -struct module_sect_attr { - struct bin_attribute battr; - long unsigned int address; +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 module_sect_attrs { - struct attribute_group grp; - unsigned int nsections; - struct module_sect_attr attrs[0]; +struct dl_bandwidth { + raw_spinlock_t dl_runtime_lock; + u64 dl_runtime; + u64 dl_period; }; -struct module_notes_attrs { - struct kobject *dir; - unsigned int notes; - struct bin_attribute attrs[0]; +typedef int (*tg_visitor)(struct task_group *, void *); + +struct perf_domain { + struct em_perf_domain *em_pd; + struct perf_domain *next; + struct callback_head rcu; }; -enum kernel_read_file_id { - READING_UNKNOWN = 0, - READING_FIRMWARE = 1, - READING_MODULE = 2, - READING_KEXEC_IMAGE = 3, - READING_KEXEC_INITRAMFS = 4, - READING_POLICY = 5, - READING_X509_CERTIFICATE = 6, - READING_MAX_ID = 7, +struct rq_flags { + long unsigned int flags; + struct pin_cookie cookie; + unsigned int clock_update_flags; }; -enum kernel_load_data_id { - LOADING_UNKNOWN = 0, - LOADING_FIRMWARE = 1, - LOADING_MODULE = 2, - LOADING_KEXEC_IMAGE = 3, - LOADING_KEXEC_INITRAMFS = 4, - LOADING_POLICY = 5, - LOADING_X509_CERTIFICATE = 6, - LOADING_MAX_ID = 7, +struct sched_entity_stats { + struct sched_entity se; + struct sched_statistics stats; }; enum { - PROC_ENTRY_PERMANENT = 1, + __SCHED_FEAT_GENTLE_FAIR_SLEEPERS = 0, + __SCHED_FEAT_START_DEBIT = 1, + __SCHED_FEAT_NEXT_BUDDY = 2, + __SCHED_FEAT_LAST_BUDDY = 3, + __SCHED_FEAT_CACHE_HOT_BUDDY = 4, + __SCHED_FEAT_WAKEUP_PREEMPTION = 5, + __SCHED_FEAT_HRTICK = 6, + __SCHED_FEAT_HRTICK_DL = 7, + __SCHED_FEAT_DOUBLE_TICK = 8, + __SCHED_FEAT_NONTASK_CAPACITY = 9, + __SCHED_FEAT_TTWU_QUEUE = 10, + __SCHED_FEAT_SIS_PROP = 11, + __SCHED_FEAT_SIS_UTIL = 12, + __SCHED_FEAT_WARN_DOUBLE_CLOCK = 13, + __SCHED_FEAT_RT_PUSH_IPI = 14, + __SCHED_FEAT_RT_RUNTIME_SHARE = 15, + __SCHED_FEAT_LB_MIN = 16, + __SCHED_FEAT_ATTACH_AGE_LOAD = 17, + __SCHED_FEAT_WA_IDLE = 18, + __SCHED_FEAT_WA_WEIGHT = 19, + __SCHED_FEAT_WA_BIAS = 20, + __SCHED_FEAT_UTIL_EST = 21, + __SCHED_FEAT_UTIL_EST_FASTUP = 22, + __SCHED_FEAT_LATENCY_WARN = 23, + __SCHED_FEAT_ALT_PERIOD = 24, + __SCHED_FEAT_BASE_SLICE = 25, + __SCHED_FEAT_NR = 26, }; -struct load_info { - const char *name; - struct module *mod; - Elf64_Ehdr *hdr; - long unsigned int len; - Elf64_Shdr *sechdrs; - char *secstrings; - char *strtab; - long unsigned int symoffs; - long unsigned int stroffs; - long unsigned int init_typeoffs; - long unsigned int core_typeoffs; - struct _ddebug *debug; - unsigned int num_debug; - bool sig_ok; - long unsigned int mod_kallsyms_init_off; - struct { - unsigned int sym; - unsigned int str; - unsigned int mod; - unsigned int vers; - unsigned int info; - unsigned int pcpu; - } index; +enum cpu_util_type { + FREQUENCY_UTIL = 0, + ENERGY_UTIL = 1, }; -struct trace_event_raw_module_load { - struct trace_entry ent; - unsigned int taints; - u32 __data_loc_name; - char __data[0]; -}; +struct set_affinity_pending; -struct trace_event_raw_module_free { - struct trace_entry ent; - u32 __data_loc_name; - char __data[0]; +struct migration_arg { + struct task_struct *task; + int dest_cpu; + struct set_affinity_pending *pending; }; -struct trace_event_raw_module_refcnt { - struct trace_entry ent; - long unsigned int ip; - int refcnt; - u32 __data_loc_name; - char __data[0]; +struct set_affinity_pending { + refcount_t refs; + unsigned int stop_pending; + struct completion done; + struct cpu_stop_work stop_work; + struct migration_arg arg; }; -struct trace_event_raw_module_request { - struct trace_entry ent; - long unsigned int ip; - bool wait; - u32 __data_loc_name; - char __data[0]; +struct migration_swap_arg { + struct task_struct *src_task; + struct task_struct *dst_task; + int src_cpu; + int dst_cpu; }; -struct trace_event_data_offsets_module_load { - u32 name; +struct cfs_schedulable_data { + struct task_group *tg; + u64 period; + u64 quota; }; -struct trace_event_data_offsets_module_free { - u32 name; +enum { + cpuset = 0, + possible = 1, + fail = 2, }; -struct trace_event_data_offsets_module_refcnt { - u32 name; +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; }; -struct trace_event_data_offsets_module_request { - u32 name; -}; +struct cpuidle_device; -typedef void (*btf_trace_module_load)(void *, struct module *); +struct cpuidle_driver; -typedef void (*btf_trace_module_free)(void *, struct module *); +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); +}; -typedef void (*btf_trace_module_get)(void *, struct module *, long unsigned int); +struct cpuidle_state_kobj; -typedef void (*btf_trace_module_put)(void *, struct module *, long unsigned int); +struct cpuidle_driver_kobj; -typedef void (*btf_trace_module_request)(void *, char *, bool, long unsigned int); +struct cpuidle_device_kobj; -struct mod_tree_root { - struct latch_tree_root root; - long unsigned int addr_min; - long unsigned int addr_max; +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; }; -enum mod_license { - NOT_GPL_ONLY = 0, - GPL_ONLY = 1, +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 symsearch { - const struct kernel_symbol *start; - const struct kernel_symbol *stop; - const s32 *crcs; - enum mod_license license; +struct idle_timer { + struct hrtimer timer; + int done; }; -struct find_symbol_arg { - const char *name; - bool gplok; - bool warn; - struct module *owner; - const s32 *crc; - const struct kernel_symbol *sym; - enum mod_license license; +enum uclamp_id { + UCLAMP_MIN = 0, + UCLAMP_MAX = 1, + UCLAMP_CNT = 2, }; -struct mod_initfree { - struct llist_node node; - void *module_init; +struct numa_group { + refcount_t refcount; + spinlock_t lock; + int nr_tasks; + pid_t gid; + int active_nodes; + struct callback_head rcu; + long unsigned int total_faults; + long unsigned int max_faults_cpu; + long unsigned int *faults_cpu; + long unsigned int faults[0]; }; -struct kallsym_iter { - loff_t pos; - loff_t pos_arch_end; - loff_t pos_mod_end; - loff_t pos_ftrace_mod_end; - loff_t pos_bpf_end; - long unsigned int value; - unsigned int nameoff; - char type; - char name[128]; - char module_name[56]; - int exported; - int show_value; +enum sched_tunable_scaling { + SCHED_TUNABLESCALING_NONE = 0, + SCHED_TUNABLESCALING_LOG = 1, + SCHED_TUNABLESCALING_LINEAR = 2, + SCHED_TUNABLESCALING_END = 3, }; -typedef __u16 comp_t; +enum numa_topology_type { + NUMA_DIRECT = 0, + NUMA_GLUELESS_MESH = 1, + NUMA_BACKPLANE = 2, +}; -struct acct_v3 { - char ac_flag; - char ac_version; - __u16 ac_tty; - __u32 ac_exitcode; - __u32 ac_uid; - __u32 ac_gid; - __u32 ac_pid; - __u32 ac_ppid; - __u32 ac_btime; - __u32 ac_etime; - comp_t ac_utime; - comp_t ac_stime; - comp_t ac_mem; - comp_t ac_io; - comp_t ac_rw; - comp_t ac_minflt; - comp_t ac_majflt; - comp_t ac_swaps; - char ac_comm[16]; +enum numa_faults_stats { + NUMA_MEM = 0, + NUMA_CPU = 1, + NUMA_MEMBUF = 2, + NUMA_CPUBUF = 3, }; -typedef struct acct_v3 acct_t; +enum numa_type { + node_has_spare = 0, + node_fully_busy = 1, + node_overloaded = 2, +}; -struct fs_pin { - wait_queue_head_t wait; - int done; - struct hlist_node s_list; - struct hlist_node m_list; - void (*kill)(struct fs_pin *); +struct numa_stats { + long unsigned int load; + long unsigned int runnable; + long unsigned int util; + long unsigned int compute_capacity; + unsigned int nr_running; + unsigned int weight; + enum numa_type node_type; + int idle_cpu; }; -struct bsd_acct_struct { - struct fs_pin pin; - atomic_long_t count; - struct callback_head rcu; - struct mutex lock; - int active; - long unsigned int needcheck; - struct file *file; - struct pid_namespace *ns; - struct work_struct work; - struct completion done; +struct task_numa_env { + struct task_struct *p; + int src_cpu; + int src_nid; + int dst_cpu; + int dst_nid; + struct numa_stats src_stats; + struct numa_stats dst_stats; + int imbalance_pct; + int dist; + struct task_struct *best_task; + long int best_imp; + int best_cpu; }; -struct mem_section_usage { - long unsigned int subsection_map[2]; - long unsigned int pageblock_flags[0]; +enum fbq_type { + regular = 0, + remote = 1, + all = 2, }; -struct page_ext; +enum group_type { + group_has_spare = 0, + group_fully_busy = 1, + group_misfit_task = 2, + group_asym_packing = 3, + group_imbalanced = 4, + group_overloaded = 5, +}; -struct mem_section { - long unsigned int section_mem_map; - struct mem_section_usage *usage; - struct page_ext *page_ext; - long unsigned int pad; +enum migration_type { + migrate_load = 0, + migrate_util = 1, + migrate_task = 2, + migrate_misfit = 3, }; -struct page_ext { - long unsigned int flags; +struct lb_env { + struct sched_domain *sd; + struct rq *src_rq; + int src_cpu; + int dst_cpu; + struct rq *dst_rq; + struct cpumask *dst_grpmask; + int new_dst_cpu; + enum cpu_idle_type idle; + long int imbalance; + struct cpumask *cpus; + unsigned int flags; + unsigned int loop; + unsigned int loop_break; + unsigned int loop_max; + enum fbq_type fbq_type; + enum migration_type migration_type; + struct list_head tasks; }; -struct compat_kexec_segment { - compat_uptr_t buf; - compat_size_t bufsz; - compat_ulong_t mem; - compat_size_t memsz; +struct sg_lb_stats { + long unsigned int avg_load; + long unsigned int group_load; + long unsigned int group_capacity; + long unsigned int group_util; + long unsigned int group_runnable; + unsigned int sum_nr_running; + unsigned int sum_h_nr_running; + unsigned int idle_cpus; + unsigned int group_weight; + enum group_type group_type; + unsigned int group_asym_packing; + long unsigned int group_misfit_task_load; + unsigned int nr_numa_running; + unsigned int nr_preferred_running; }; -typedef u32 note_buf_t[92]; +struct sd_lb_stats { + struct sched_group *busiest; + struct sched_group *local; + long unsigned int total_load; + long unsigned int total_capacity; + long unsigned int avg_load; + unsigned int prefer_sibling; + struct sg_lb_stats busiest_stat; + struct sg_lb_stats local_stat; +}; -struct crash_mem_range { - u64 start; - u64 end; +typedef struct rt_rq *rt_rq_iter_t; + +struct swait_queue { + struct task_struct *task; + struct list_head task_list; }; -struct crash_mem { - unsigned int max_nr_ranges; - unsigned int nr_ranges; - struct crash_mem_range ranges[0]; +struct sd_flag_debug { + unsigned int meta_flags; + char *name; }; -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 s_data { + struct sched_domain **sd; + struct root_domain *rd; }; -struct crypto_alg; - -struct crypto_tfm { - u32 crt_flags; - int node; - void (*exit)(struct crypto_tfm *); - struct crypto_alg *__crt_alg; - void *__crt_ctx[0]; +enum s_alloc { + sa_rootdomain = 0, + sa_sd = 1, + sa_sd_storage = 2, + sa_none = 3, }; -struct cipher_alg { - unsigned int cia_min_keysize; - unsigned int cia_max_keysize; - int (*cia_setkey)(struct crypto_tfm *, const u8 *, unsigned int); - void (*cia_encrypt)(struct crypto_tfm *, u8 *, const u8 *); - void (*cia_decrypt)(struct crypto_tfm *, u8 *, const u8 *); +struct asym_cap_data { + struct list_head link; + long unsigned int capacity; + long unsigned int cpus[0]; }; -struct compress_alg { - int (*coa_compress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *); - int (*coa_decompress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *); +enum cpuacct_stat_index { + CPUACCT_STAT_USER = 0, + CPUACCT_STAT_SYSTEM = 1, + CPUACCT_STAT_NSTATS = 2, }; -struct crypto_istat_aead { - atomic64_t encrypt_cnt; - atomic64_t encrypt_tlen; - atomic64_t decrypt_cnt; - atomic64_t decrypt_tlen; - atomic64_t err_cnt; +struct cpuacct { + struct cgroup_subsys_state css; + u64 *cpuusage; + struct kernel_cpustat *cpustat; }; -struct crypto_istat_akcipher { - atomic64_t encrypt_cnt; - atomic64_t encrypt_tlen; - atomic64_t decrypt_cnt; - atomic64_t decrypt_tlen; - atomic64_t verify_cnt; - atomic64_t sign_cnt; - atomic64_t err_cnt; +enum { + MEMBARRIER_FLAG_SYNC_CORE = 1, + MEMBARRIER_FLAG_RSEQ = 2, }; -struct crypto_istat_cipher { - atomic64_t encrypt_cnt; - atomic64_t encrypt_tlen; - atomic64_t decrypt_cnt; - atomic64_t decrypt_tlen; - atomic64_t err_cnt; +enum membarrier_cmd { + MEMBARRIER_CMD_QUERY = 0, + MEMBARRIER_CMD_GLOBAL = 1, + MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2, + MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4, + MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8, + MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16, + MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32, + MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64, + MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128, + MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256, + MEMBARRIER_CMD_SHARED = 1, }; -struct crypto_istat_compress { - atomic64_t compress_cnt; - atomic64_t compress_tlen; - atomic64_t decompress_cnt; - atomic64_t decompress_tlen; - atomic64_t err_cnt; +enum membarrier_cmd_flag { + MEMBARRIER_CMD_FLAG_CPU = 1, }; -struct crypto_istat_hash { - atomic64_t hash_cnt; - atomic64_t hash_tlen; - atomic64_t err_cnt; +struct proc_ops { + unsigned int proc_flags; + int (*proc_open)(struct inode *, struct file *); + ssize_t (*proc_read)(struct file *, char *, size_t, loff_t *); + ssize_t (*proc_read_iter)(struct kiocb *, struct iov_iter *); + ssize_t (*proc_write)(struct file *, const char *, size_t, loff_t *); + loff_t (*proc_lseek)(struct file *, loff_t, int); + int (*proc_release)(struct inode *, struct file *); + __poll_t (*proc_poll)(struct file *, struct poll_table_struct *); + long int (*proc_ioctl)(struct file *, unsigned int, long unsigned int); + long int (*proc_compat_ioctl)(struct file *, unsigned int, long unsigned int); + int (*proc_mmap)(struct file *, struct vm_area_struct *); + long unsigned int (*proc_get_unmapped_area)(struct file *, long unsigned int, long unsigned int, long unsigned int, long unsigned int); }; -struct crypto_istat_kpp { - atomic64_t setsecret_cnt; - atomic64_t generate_public_key_cnt; - atomic64_t compute_shared_secret_cnt; - atomic64_t err_cnt; +enum psi_res { + PSI_IO = 0, + PSI_MEM = 1, + PSI_CPU = 2, + NR_PSI_RESOURCES = 3, }; -struct crypto_istat_rng { - atomic64_t generate_cnt; - atomic64_t generate_tlen; - atomic64_t seed_cnt; - atomic64_t err_cnt; +struct psi_window { + u64 size; + u64 start_time; + u64 start_value; + u64 prev_growth; }; -struct crypto_type; - -struct crypto_alg { - struct list_head cra_list; - struct list_head cra_users; - u32 cra_flags; - unsigned int cra_blocksize; - unsigned int cra_ctxsize; - unsigned int cra_alignmask; - int cra_priority; - refcount_t cra_refcnt; - char cra_name[128]; - char cra_driver_name[128]; - const struct crypto_type *cra_type; - union { - struct cipher_alg cipher; - struct compress_alg compress; - } cra_u; - int (*cra_init)(struct crypto_tfm *); - void (*cra_exit)(struct crypto_tfm *); - void (*cra_destroy)(struct crypto_alg *); - struct module *cra_module; - union { - struct crypto_istat_aead aead; - struct crypto_istat_akcipher akcipher; - struct crypto_istat_cipher cipher; - struct crypto_istat_compress compress; - struct crypto_istat_hash hash; - struct crypto_istat_rng rng; - struct crypto_istat_kpp kpp; - } stats; +struct psi_trigger { + enum psi_states state; + u64 threshold; + struct list_head node; + struct psi_group *group; + wait_queue_head_t event_wait; + int event; + struct psi_window win; + u64 last_event_time; }; -struct crypto_instance; - -struct crypto_type { - unsigned int (*ctxsize)(struct crypto_alg *, u32, u32); - unsigned int (*extsize)(struct crypto_alg *); - int (*init)(struct crypto_tfm *, u32, u32); - int (*init_tfm)(struct crypto_tfm *); - void (*show)(struct seq_file *, struct crypto_alg *); - int (*report)(struct sk_buff *, struct crypto_alg *); - void (*free)(struct crypto_instance *); - unsigned int type; - unsigned int maskclear; - unsigned int maskset; - unsigned int tfmsize; +struct sched_core_cookie { + refcount_t refcnt; }; -struct crypto_shash; +struct ww_acquire_ctx; -struct shash_desc { - struct crypto_shash *tfm; - void *__ctx[0]; +struct ww_mutex { + struct mutex base; + struct ww_acquire_ctx *ctx; }; -struct crypto_shash { - unsigned int descsize; - struct crypto_tfm base; +struct ww_acquire_ctx { + struct task_struct *task; + long unsigned int stamp; + unsigned int acquired; + short unsigned int wounded; + short unsigned int is_wait_die; }; -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; - int: 32; - unsigned int digestsize; - unsigned int statesize; - struct crypto_alg base; +struct mutex_waiter { + struct list_head list; + struct task_struct *task; + struct ww_acquire_ctx *ww_ctx; }; -struct kexec_sha_region { - long unsigned int start; - long unsigned int len; +struct semaphore { + raw_spinlock_t lock; + unsigned int count; + struct list_head wait_list; }; -enum migrate_reason { - MR_COMPACTION = 0, - MR_MEMORY_FAILURE = 1, - MR_MEMORY_HOTPLUG = 2, - MR_SYSCALL = 3, - MR_MEMPOLICY_MBIND = 4, - MR_NUMA_MISPLACED = 5, - MR_CONTIG_RANGE = 6, - MR_LONGTERM_PIN = 7, - MR_DEMOTION = 8, - MR_TYPES = 9, +struct semaphore_waiter { + struct list_head list; + struct task_struct *task; + bool up; }; -struct cgroup_taskset { - struct list_head src_csets; - struct list_head dst_csets; - int nr_tasks; - int ssid; - struct list_head *csets; - struct css_set *cur_cset; - struct task_struct *cur_task; +enum rwsem_waiter_type { + RWSEM_WAITING_FOR_WRITE = 0, + RWSEM_WAITING_FOR_READ = 1, }; -struct cgroupstats { - __u64 nr_sleeping; - __u64 nr_running; - __u64 nr_stopped; - __u64 nr_uninterruptible; - __u64 nr_io_wait; +struct rwsem_waiter { + struct list_head list; + struct task_struct *task; + enum rwsem_waiter_type type; + long unsigned int timeout; + bool handoff_set; }; -enum kernfs_node_type { - KERNFS_DIR = 1, - KERNFS_FILE = 2, - KERNFS_LINK = 4, +enum rwsem_wake_type { + RWSEM_WAKE_ANY = 0, + RWSEM_WAKE_READERS = 1, + RWSEM_WAKE_READ_OWNED = 2, }; -struct kernfs_syscall_ops { - int (*show_options)(struct seq_file *, struct kernfs_root *); - int (*mkdir)(struct kernfs_node *, const char *, umode_t); - int (*rmdir)(struct kernfs_node *); - int (*rename)(struct kernfs_node *, struct kernfs_node *, const char *); - int (*show_path)(struct seq_file *, struct kernfs_node *, struct kernfs_root *); +enum owner_state { + OWNER_NULL = 1, + OWNER_WRITER = 2, + OWNER_READER = 4, + OWNER_NONSPINNABLE = 8, }; -struct kernfs_fs_context { - struct kernfs_root *root; - void *ns_tag; - long unsigned int magic; - bool new_sb_created; +struct optimistic_spin_node { + struct optimistic_spin_node *next; + struct optimistic_spin_node *prev; + int locked; + int cpu; }; -enum { - CGRP_NOTIFY_ON_RELEASE = 0, - CGRP_CPUSET_CLONE_CHILDREN = 1, - CGRP_FREEZE = 2, - CGRP_FROZEN = 3, - CGRP_KILL = 4, +struct rt_mutex_base { + raw_spinlock_t wait_lock; + struct rb_root_cached waiters; + struct task_struct *owner; }; -enum { - CGRP_ROOT_NOPREFIX = 2, - CGRP_ROOT_XATTR = 4, - CGRP_ROOT_NS_DELEGATE = 8, - CGRP_ROOT_CPUSET_V2_MODE = 16, - CGRP_ROOT_MEMORY_LOCAL_EVENTS = 32, - CGRP_ROOT_MEMORY_RECURSIVE_PROT = 64, +struct rt_mutex { + struct rt_mutex_base rtmutex; }; -struct css_task_iter { - struct cgroup_subsys *ss; - unsigned int flags; - struct list_head *cset_pos; - struct list_head *cset_head; - struct list_head *tcset_pos; - struct list_head *tcset_head; - struct list_head *task_pos; - struct list_head *cur_tasks_head; - struct css_set *cur_cset; - struct css_set *cur_dcset; - struct task_struct *cur_task; - struct list_head iters_node; +struct hrtimer_sleeper { + struct hrtimer timer; + struct task_struct *task; }; -struct cgroup_fs_context { - struct kernfs_fs_context kfc; - struct cgroup_root *root; - struct cgroup_namespace *ns; - unsigned int flags; - bool cpuset_clone_children; - bool none; - bool all_ss; - u16 subsys_mask; - char *name; - char *release_agent; +struct rt_mutex_waiter { + struct rb_node tree_entry; + struct rb_node pi_tree_entry; + struct task_struct *task; + struct rt_mutex_base *lock; + unsigned int wake_state; + int prio; + u64 deadline; + struct ww_acquire_ctx *ww_ctx; }; -enum cgroup_filetype { - CGROUP_FILE_PROCS = 0, - CGROUP_FILE_TASKS = 1, +struct rt_wake_q_head { + struct wake_q_head head; + struct task_struct *rtlock_task; }; -struct cgroup_pidlist { - struct { - enum cgroup_filetype type; - struct pid_namespace *ns; - } key; - pid_t *list; - int length; - struct list_head links; - struct cgroup *owner; - struct delayed_work destroy_dwork; +enum rtmutex_chainwalk { + RT_MUTEX_MIN_CHAINWALK = 0, + RT_MUTEX_FULL_CHAINWALK = 1, }; -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; +enum pm_qos_req_action { + PM_QOS_ADD_REQ = 0, + PM_QOS_UPDATE_REQ = 1, + PM_QOS_REMOVE_REQ = 2, }; -struct cgrp_cset_link { - struct cgroup *cgrp; - struct css_set *cset; - struct list_head cset_link; - struct list_head cgrp_link; +struct sysrq_key_op { + void (* const handler)(int); + const char * const help_msg; + const char * const action_msg; + const int enable_mask; }; -struct cgroup_mgctx { - struct list_head preloaded_src_csets; - struct list_head preloaded_dst_csets; - struct cgroup_taskset tset; - u16 ss_mask; +typedef struct { + seqcount_t seqcount; +} seqcount_latch_t; + +struct dev_printk_info { + char subsystem[16]; + char device[48]; }; -enum cgroup1_param { - Opt_all = 0, - Opt_clone_children = 1, - Opt_cpuset_v2_mode = 2, - Opt_name = 3, - Opt_none = 4, - Opt_noprefix = 5, - Opt_release_agent = 6, - Opt_xattr = 7, +struct kmsg_dump_iter { + u64 cur_seq; + u64 next_seq; }; -typedef __kernel_ulong_t ino_t; +struct kmsg_dumper { + struct list_head list; + void (*dump)(struct kmsg_dumper *, enum kmsg_dump_reason); + enum kmsg_dump_reason max_reason; + bool registered; +}; -enum kernfs_root_flag { - KERNFS_ROOT_CREATE_DEACTIVATED = 1, - KERNFS_ROOT_EXTRA_OPEN_PERM_CHECK = 2, - KERNFS_ROOT_SUPPORT_EXPORTOP = 4, - KERNFS_ROOT_SUPPORT_USER_XATTR = 8, +struct trace_event_raw_console { + struct trace_entry ent; + u32 __data_loc_msg; + char __data[0]; }; -struct bpf_cgroup_storage_key { - __u64 cgroup_inode_id; - __u32 attach_type; +struct trace_event_data_offsets_console { + u32 msg; }; -struct bpf_storage_buffer; +typedef void (*btf_trace_console)(void *, const char *, size_t); -struct bpf_cgroup_storage_map; +struct printk_info { + u64 seq; + u64 ts_nsec; + u16 text_len; + u8 facility; + u8 flags: 5; + u8 level: 3; + u32 caller_id; + struct dev_printk_info dev_info; +}; -struct bpf_cgroup_storage { - union { - 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 printk_record { + struct printk_info *info; + char *text_buf; + unsigned int text_buf_size; }; -struct bpf_storage_buffer { - struct callback_head rcu; - char data[0]; +struct prb_data_blk_lpos { + long unsigned int begin; + long unsigned int next; }; -struct trace_event_raw_cgroup_root { - struct trace_entry ent; - int root; - u16 ss_mask; - u32 __data_loc_name; - char __data[0]; +struct prb_desc { + atomic_long_t state_var; + struct prb_data_blk_lpos text_blk_lpos; }; -struct trace_event_raw_cgroup { - struct trace_entry ent; - int root; - int level; - u64 id; - u32 __data_loc_path; - char __data[0]; +struct prb_data_ring { + unsigned int size_bits; + char *data; + atomic_long_t head_lpos; + atomic_long_t tail_lpos; }; -struct trace_event_raw_cgroup_migrate { - struct trace_entry ent; - int dst_root; - int dst_level; - u64 dst_id; - int pid; - u32 __data_loc_dst_path; - u32 __data_loc_comm; - char __data[0]; +struct prb_desc_ring { + unsigned int count_bits; + struct prb_desc *descs; + struct printk_info *infos; + atomic_long_t head_id; + atomic_long_t tail_id; }; -struct trace_event_raw_cgroup_event { - struct trace_entry ent; - int root; - int level; - u64 id; - u32 __data_loc_path; - int val; - char __data[0]; +struct printk_ringbuffer { + struct prb_desc_ring desc_ring; + struct prb_data_ring text_data_ring; + atomic_long_t fail; }; -struct trace_event_data_offsets_cgroup_root { - u32 name; +struct prb_reserved_entry { + struct printk_ringbuffer *rb; + long unsigned int irqflags; + long unsigned int id; + unsigned int text_space; }; -struct trace_event_data_offsets_cgroup { - u32 path; +enum desc_state { + desc_miss = 4294967295, + desc_reserved = 0, + desc_committed = 1, + desc_finalized = 2, + desc_reusable = 3, }; -struct trace_event_data_offsets_cgroup_migrate { - u32 dst_path; - u32 comm; +struct console_cmdline { + char name[16]; + int index; + bool user_specified; + char *options; }; -struct trace_event_data_offsets_cgroup_event { - u32 path; +enum printk_info_flags { + LOG_NEWLINE = 2, + LOG_CONT = 8, }; -typedef void (*btf_trace_cgroup_setup_root)(void *, struct cgroup_root *); - -typedef void (*btf_trace_cgroup_destroy_root)(void *, struct cgroup_root *); +enum devkmsg_log_bits { + __DEVKMSG_LOG_BIT_ON = 0, + __DEVKMSG_LOG_BIT_OFF = 1, + __DEVKMSG_LOG_BIT_LOCK = 2, +}; -typedef void (*btf_trace_cgroup_remount)(void *, struct cgroup_root *); +enum devkmsg_log_masks { + DEVKMSG_LOG_MASK_ON = 1, + DEVKMSG_LOG_MASK_OFF = 2, + DEVKMSG_LOG_MASK_LOCK = 4, +}; -typedef void (*btf_trace_cgroup_mkdir)(void *, struct cgroup *, const char *); +enum con_msg_format_flags { + MSG_FORMAT_DEFAULT = 0, + MSG_FORMAT_SYSLOG = 1, +}; -typedef void (*btf_trace_cgroup_rmdir)(void *, struct cgroup *, const char *); +struct latched_seq { + seqcount_latch_t latch; + u64 val[2]; +}; -typedef void (*btf_trace_cgroup_release)(void *, struct cgroup *, const char *); +struct devkmsg_user { + atomic64_t seq; + struct ratelimit_state rs; + struct mutex lock; + char buf[8192]; + struct printk_info info; + char text_buf[8192]; + struct printk_record record; +}; -typedef void (*btf_trace_cgroup_rename)(void *, struct cgroup *, const char *); +typedef int pcp_op_T_____5; -typedef void (*btf_trace_cgroup_freeze)(void *, struct cgroup *, const char *); +struct prb_data_block { + long unsigned int id; + char data[0]; +}; -typedef void (*btf_trace_cgroup_unfreeze)(void *, struct cgroup *, const char *); +enum { + IRQ_TYPE_NONE = 0, + IRQ_TYPE_EDGE_RISING = 1, + IRQ_TYPE_EDGE_FALLING = 2, + IRQ_TYPE_EDGE_BOTH = 3, + IRQ_TYPE_LEVEL_HIGH = 4, + IRQ_TYPE_LEVEL_LOW = 8, + IRQ_TYPE_LEVEL_MASK = 12, + IRQ_TYPE_SENSE_MASK = 15, + IRQ_TYPE_DEFAULT = 15, + IRQ_TYPE_PROBE = 16, + IRQ_LEVEL = 256, + IRQ_PER_CPU = 512, + IRQ_NOPROBE = 1024, + IRQ_NOREQUEST = 2048, + IRQ_NOAUTOEN = 4096, + IRQ_NO_BALANCING = 8192, + IRQ_MOVE_PCNTXT = 16384, + IRQ_NESTED_THREAD = 32768, + IRQ_NOTHREAD = 65536, + IRQ_PER_CPU_DEVID = 131072, + IRQ_IS_POLLED = 262144, + IRQ_DISABLE_UNLAZY = 524288, + IRQ_HIDDEN = 1048576, + IRQ_NO_DEBUG = 2097152, +}; -typedef void (*btf_trace_cgroup_attach_task)(void *, struct cgroup *, const char *, struct task_struct *, bool); +enum { + IRQD_TRIGGER_MASK = 15, + IRQD_SETAFFINITY_PENDING = 256, + IRQD_ACTIVATED = 512, + IRQD_NO_BALANCING = 1024, + IRQD_PER_CPU = 2048, + IRQD_AFFINITY_SET = 4096, + IRQD_LEVEL = 8192, + IRQD_WAKEUP_STATE = 16384, + IRQD_MOVE_PCNTXT = 32768, + IRQD_IRQ_DISABLED = 65536, + IRQD_IRQ_MASKED = 131072, + IRQD_IRQ_INPROGRESS = 262144, + IRQD_WAKEUP_ARMED = 524288, + IRQD_FORWARDED_TO_VCPU = 1048576, + IRQD_AFFINITY_MANAGED = 2097152, + IRQD_IRQ_STARTED = 4194304, + IRQD_MANAGED_SHUTDOWN = 8388608, + IRQD_SINGLE_TARGET = 16777216, + IRQD_DEFAULT_TRIGGER_SET = 33554432, + IRQD_CAN_RESERVE = 67108864, + IRQD_MSI_NOMASK_QUIRK = 134217728, + IRQD_HANDLE_ENFORCE_IRQCTX = 268435456, + IRQD_AFFINITY_ON_ACTIVATE = 536870912, + IRQD_IRQ_ENABLED_ON_SUSPEND = 1073741824, +}; -typedef void (*btf_trace_cgroup_transfer_tasks)(void *, struct cgroup *, const char *, struct task_struct *, bool); +struct irq_chip_regs { + long unsigned int enable; + long unsigned int disable; + long unsigned int mask; + long unsigned int ack; + long unsigned int eoi; + long unsigned int type; + long unsigned int polarity; +}; -typedef void (*btf_trace_cgroup_notify_populated)(void *, struct cgroup *, const char *, int); +struct irq_chip_type { + struct irq_chip chip; + struct irq_chip_regs regs; + irq_flow_handler_t handler; + u32 type; + u32 mask_cache_priv; + u32 *mask_cache; +}; -typedef void (*btf_trace_cgroup_notify_frozen)(void *, struct cgroup *, const char *, int); +struct irq_chip_generic { + raw_spinlock_t lock; + void *reg_base; + u32 (*reg_readl)(void *); + void (*reg_writel)(u32, void *); + void (*suspend)(struct irq_chip_generic *); + void (*resume)(struct irq_chip_generic *); + unsigned int irq_base; + unsigned int irq_cnt; + u32 mask_cache; + u32 type_cache; + u32 polarity_cache; + u32 wake_enabled; + u32 wake_active; + unsigned int num_ct; + void *private; + long unsigned int installed; + long unsigned int unused; + struct irq_domain *domain; + struct list_head list; + struct irq_chip_type chip_types[0]; +}; -enum cgroup_opt_features { - OPT_FEATURE_PRESSURE = 0, - OPT_FEATURE_COUNT = 1, +enum irq_gc_flags { + IRQ_GC_INIT_MASK_CACHE = 1, + IRQ_GC_INIT_NESTED_LOCK = 2, + IRQ_GC_MASK_CACHE_PER_TYPE = 4, + IRQ_GC_NO_MASK = 8, + IRQ_GC_BE_IO = 16, }; -enum cgroup2_param { - Opt_nsdelegate = 0, - Opt_memory_localevents = 1, - Opt_memory_recursiveprot = 2, - nr__cgroup2_params = 3, +struct irq_domain_chip_generic { + unsigned int irqs_per_chip; + unsigned int num_chips; + unsigned int irq_flags_to_clear; + unsigned int irq_flags_to_set; + enum irq_gc_flags gc_flags; + struct irq_chip_generic *gc[0]; }; -enum freezer_state_flags { - CGROUP_FREEZER_ONLINE = 1, - CGROUP_FREEZING_SELF = 2, - CGROUP_FREEZING_PARENT = 4, - CGROUP_FROZEN = 8, - CGROUP_FREEZING = 6, +enum { + IRQS_AUTODETECT = 1, + IRQS_SPURIOUS_DISABLED = 2, + IRQS_POLL_INPROGRESS = 8, + IRQS_ONESHOT = 32, + IRQS_REPLAY = 64, + IRQS_WAITING = 128, + IRQS_PENDING = 512, + IRQS_SUSPENDED = 2048, + IRQS_TIMINGS = 4096, + IRQS_NMI = 8192, + IRQS_SYSFS = 16384, }; -struct freezer { - struct cgroup_subsys_state css; - unsigned int state; +enum { + _IRQ_DEFAULT_INIT_FLAGS = 0, + _IRQ_PER_CPU = 512, + _IRQ_LEVEL = 256, + _IRQ_NOPROBE = 1024, + _IRQ_NOREQUEST = 2048, + _IRQ_NOTHREAD = 65536, + _IRQ_NOAUTOEN = 4096, + _IRQ_MOVE_PCNTXT = 16384, + _IRQ_NO_BALANCING = 8192, + _IRQ_NESTED_THREAD = 32768, + _IRQ_PER_CPU_DEVID = 131072, + _IRQ_IS_POLLED = 262144, + _IRQ_DISABLE_UNLAZY = 524288, + _IRQ_HIDDEN = 1048576, + _IRQ_NO_DEBUG = 2097152, + _IRQF_MODIFY_MASK = 2096911, }; -struct pids_cgroup { - struct cgroup_subsys_state css; - atomic64_t counter; - atomic64_t limit; - struct cgroup_file events_file; - atomic64_t events_limit; +enum { + IRQTF_RUNTHREAD = 0, + IRQTF_WARNED = 1, + IRQTF_AFFINITY = 2, + IRQTF_FORCED_THREAD = 3, + IRQTF_READY = 4, }; -enum misc_res_type { - MISC_CG_RES_TYPES = 0, +enum { + IRQCHIP_SET_TYPE_MASKED = 1, + IRQCHIP_EOI_IF_HANDLED = 2, + IRQCHIP_MASK_ON_SUSPEND = 4, + IRQCHIP_ONOFFLINE_ENABLED = 8, + IRQCHIP_SKIP_SET_WAKE = 16, + IRQCHIP_ONESHOT_SAFE = 32, + IRQCHIP_EOI_THREADED = 64, + IRQCHIP_SUPPORTS_LEVEL_MSI = 128, + IRQCHIP_SUPPORTS_NMI = 256, + IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND = 512, + IRQCHIP_AFFINITY_PRE_STARTUP = 1024, }; -struct misc_res { - long unsigned int max; - atomic_long_t usage; - atomic_long_t events; +enum { + IRQC_IS_HARDIRQ = 0, + IRQC_IS_NESTED = 1, }; -struct misc_cg { - struct cgroup_subsys_state css; - struct cgroup_file events_file; - struct misc_res res[0]; +enum { + IRQ_STARTUP_NORMAL = 0, + IRQ_STARTUP_MANAGED = 1, + IRQ_STARTUP_ABORT = 2, }; -struct root_domain; +struct irq_devres { + unsigned int irq; + void *dev_id; +}; -struct fmeter { - int cnt; - int val; - time64_t time; - spinlock_t lock; +struct irq_desc_devres { + unsigned int from; + unsigned int cnt; }; -struct cpuset { - struct cgroup_subsys_state css; - long unsigned int flags; - cpumask_var_t cpus_allowed; - nodemask_t mems_allowed; - cpumask_var_t effective_cpus; - nodemask_t effective_mems; - cpumask_var_t subparts_cpus; - nodemask_t old_mems_allowed; - struct fmeter fmeter; - int attach_in_progress; - int pn; - int relax_domain_level; - int nr_subparts_cpus; - int partition_root_state; - int use_parent_ecpus; - int child_ecpus_count; - struct cgroup_file partition_file; +enum { + IRQ_DOMAIN_FLAG_HIERARCHY = 1, + IRQ_DOMAIN_NAME_ALLOCATED = 2, + IRQ_DOMAIN_FLAG_IPI_PER_CPU = 4, + IRQ_DOMAIN_FLAG_IPI_SINGLE = 8, + IRQ_DOMAIN_FLAG_MSI = 16, + IRQ_DOMAIN_FLAG_MSI_REMAP = 32, + IRQ_DOMAIN_MSI_NOMASK_QUIRK = 64, + IRQ_DOMAIN_FLAG_NO_MAP = 128, + IRQ_DOMAIN_FLAG_NONCORE = 65536, }; -struct tmpmasks { - cpumask_var_t addmask; - cpumask_var_t delmask; - cpumask_var_t new_cpus; +enum { + IRQCHIP_FWNODE_REAL = 0, + IRQCHIP_FWNODE_NAMED = 1, + IRQCHIP_FWNODE_NAMED_ID = 2, }; -typedef enum { - CS_ONLINE = 0, - CS_CPU_EXCLUSIVE = 1, - CS_MEM_EXCLUSIVE = 2, - CS_MEM_HARDWALL = 3, - CS_MEMORY_MIGRATE = 4, - CS_SCHED_LOAD_BALANCE = 5, - CS_SPREAD_PAGE = 6, - CS_SPREAD_SLAB = 7, -} cpuset_flagbits_t; +struct irqchip_fwid { + struct fwnode_handle fwnode; + unsigned int type; + char *name; + phys_addr_t *pa; +}; -enum subparts_cmd { - partcmd_enable = 0, - partcmd_disable = 1, - partcmd_update = 2, +enum { + AFFINITY = 0, + AFFINITY_LIST = 1, + EFFECTIVE = 2, + EFFECTIVE_LIST = 3, }; -struct cpuset_migrate_mm_work { - struct work_struct work; - struct mm_struct *mm; - nodemask_t from; - nodemask_t to; +struct msi_alloc_info { + struct msi_desc *desc; + irq_hw_number_t hwirq; + long unsigned int flags; + union { + long unsigned int ul; + void *ptr; + } scratchpad[2]; }; -typedef enum { - FILE_MEMORY_MIGRATE = 0, - FILE_CPULIST = 1, - FILE_MEMLIST = 2, - FILE_EFFECTIVE_CPULIST = 3, - FILE_EFFECTIVE_MEMLIST = 4, - FILE_SUBPARTS_CPULIST = 5, - FILE_CPU_EXCLUSIVE = 6, - FILE_MEM_EXCLUSIVE = 7, - FILE_MEM_HARDWALL = 8, - FILE_SCHED_LOAD_BALANCE = 9, - FILE_PARTITION_ROOT = 10, - FILE_SCHED_RELAX_DOMAIN_LEVEL = 11, - FILE_MEMORY_PRESSURE_ENABLED = 12, - FILE_MEMORY_PRESSURE = 13, - FILE_SPREAD_PAGE = 14, - FILE_SPREAD_SLAB = 15, -} cpuset_filetype_t; +typedef struct msi_alloc_info msi_alloc_info_t; -struct kernel_pkey_query { - __u32 supported_ops; - __u32 key_size; - __u16 max_data_size; - __u16 max_sig_size; - __u16 max_enc_size; - __u16 max_dec_size; -}; +struct msi_domain_info; -enum kernel_pkey_operation { - kernel_pkey_encrypt = 0, - kernel_pkey_decrypt = 1, - kernel_pkey_sign = 2, - kernel_pkey_verify = 3, +struct msi_domain_ops { + irq_hw_number_t (*get_hwirq)(struct msi_domain_info *, msi_alloc_info_t *); + int (*msi_init)(struct irq_domain *, struct msi_domain_info *, unsigned int, irq_hw_number_t, msi_alloc_info_t *); + void (*msi_free)(struct irq_domain *, struct msi_domain_info *, unsigned int); + int (*msi_check)(struct irq_domain *, struct msi_domain_info *, struct device *); + int (*msi_prepare)(struct irq_domain *, struct device *, int, msi_alloc_info_t *); + void (*msi_finish)(msi_alloc_info_t *, int); + void (*set_desc)(msi_alloc_info_t *, struct msi_desc *); + int (*handle_error)(struct irq_domain *, struct msi_desc *, int); + int (*domain_alloc_irqs)(struct irq_domain *, struct device *, int); + void (*domain_free_irqs)(struct irq_domain *, struct device *); }; -struct kernel_pkey_params { - struct key *key; - const char *encoding; - const char *hash_algo; - char *info; - __u32 in_len; - union { - __u32 out_len; - __u32 in2_len; - }; - enum kernel_pkey_operation op: 8; +struct msi_domain_info { + u32 flags; + struct msi_domain_ops *ops; + struct irq_chip *chip; + void *chip_data; + irq_flow_handler_t handler; + void *handler_data; + const char *handler_name; + void *data; }; -struct key_preparsed_payload { - const char *orig_description; - char *description; - union key_payload payload; - const void *data; - size_t datalen; - size_t quotalen; - time64_t expiry; +enum { + MSI_FLAG_USE_DEF_DOM_OPS = 1, + MSI_FLAG_USE_DEF_CHIP_OPS = 2, + MSI_FLAG_MULTI_PCI_MSI = 4, + MSI_FLAG_PCI_MSIX = 8, + MSI_FLAG_ACTIVATE_EARLY = 16, + MSI_FLAG_MUST_REACTIVATE = 32, + MSI_FLAG_LEVEL_CAPABLE = 64, }; -struct key_match_data { - bool (*cmp)(const struct key *, const struct key_match_data *); - const void *raw_data; - void *preparsed; - unsigned int lookup_type; +struct irq_affinity { + unsigned int pre_vectors; + unsigned int post_vectors; + unsigned int nr_sets; + unsigned int set_size[4]; + void (*calc_sets)(struct irq_affinity *, unsigned int); + void *priv; }; -struct idmap_key { - bool map_up; - u32 id; - u32 count; +struct node_vectors { + unsigned int id; + union { + unsigned int nvectors; + unsigned int ncpus; + }; }; -struct ctl_path { - const char *procname; -}; +typedef void (*call_rcu_func_t)(struct callback_head *, rcu_callback_t); -struct cpu_stop_done { - atomic_t nr_todo; - int ret; +struct rcu_synchronize { + struct callback_head head; struct completion completion; }; -struct cpu_stopper { - struct task_struct *thread; - raw_spinlock_t lock; - bool enabled; - struct list_head works; - struct cpu_stop_work stop_work; - long unsigned int caller; - cpu_stop_fn_t fn; +struct trace_event_raw_rcu_utilization { + struct trace_entry ent; + const char *s; + char __data[0]; }; -enum multi_stop_state { - MULTI_STOP_NONE = 0, - MULTI_STOP_PREPARE = 1, - MULTI_STOP_DISABLE_IRQ = 2, - MULTI_STOP_RUN = 3, - MULTI_STOP_EXIT = 4, +struct trace_event_raw_rcu_stall_warning { + struct trace_entry ent; + const char *rcuname; + const char *msg; + char __data[0]; }; -struct multi_stop_data { - cpu_stop_fn_t fn; - void *data; - unsigned int num_threads; - const struct cpumask *active_cpus; - enum multi_stop_state state; - atomic_t thread_ack; -}; +struct trace_event_data_offsets_rcu_utilization {}; -typedef int __kernel_mqd_t; +struct trace_event_data_offsets_rcu_stall_warning {}; -typedef __kernel_mqd_t mqd_t; +typedef void (*btf_trace_rcu_utilization)(void *, const char *); -enum audit_state { - AUDIT_STATE_DISABLED = 0, - AUDIT_STATE_BUILD = 1, - AUDIT_STATE_RECORD = 2, -}; +typedef void (*btf_trace_rcu_stall_warning)(void *, const char *, const char *); -struct audit_cap_data { - kernel_cap_t permitted; - kernel_cap_t inheritable; - union { - unsigned int fE; - kernel_cap_t effective; - }; - kernel_cap_t ambient; - kuid_t rootid; -}; - -struct audit_names { - struct list_head list; - struct filename *name; - int name_len; - bool hidden; - long unsigned int ino; - dev_t dev; - umode_t mode; - kuid_t uid; - kgid_t gid; - dev_t rdev; - u32 osid; - struct audit_cap_data fcap; - unsigned int fcap_ver; - unsigned char type; - bool should_free; -}; - -struct mq_attr { - __kernel_long_t mq_flags; - __kernel_long_t mq_maxmsg; - __kernel_long_t mq_msgsize; - __kernel_long_t mq_curmsgs; - __kernel_long_t __reserved[4]; -}; - -struct open_how { - __u64 flags; - __u64 mode; - __u64 resolve; -}; - -struct audit_proctitle { - int len; - char *value; -}; - -struct audit_aux_data; - -struct __kernel_sockaddr_storage; - -struct audit_tree_refs; - -struct audit_context { - int dummy; - enum { - AUDIT_CTX_UNUSED = 0, - AUDIT_CTX_SYSCALL = 1, - AUDIT_CTX_URING = 2, - } context; - enum audit_state state; - enum audit_state current_state; - unsigned int serial; - int major; - int uring_op; - struct timespec64 ctime; - long unsigned int argv[4]; - long int return_code; - u64 prio; - int return_valid; - struct audit_names preallocated_names[5]; - int name_count; - struct list_head names_list; - char *filterkey; - struct path pwd; - struct audit_aux_data *aux; - struct audit_aux_data *aux_pids; - struct __kernel_sockaddr_storage *sockaddr; - size_t sockaddr_len; - pid_t pid; - pid_t ppid; - kuid_t uid; - kuid_t euid; - kuid_t suid; - kuid_t fsuid; - kgid_t gid; - kgid_t egid; - kgid_t sgid; - kgid_t fsgid; - long unsigned int personality; - int arch; - pid_t target_pid; - kuid_t target_auid; - kuid_t target_uid; - unsigned int target_sessionid; - u32 target_sid; - char target_comm[16]; - struct audit_tree_refs *trees; - struct audit_tree_refs *first_trees; - struct list_head killed_trees; - int tree_count; - int type; - union { - struct { - int nargs; - long int args[6]; - } socketcall; - struct { - kuid_t uid; - kgid_t gid; - umode_t mode; - u32 osid; - int has_perm; - uid_t perm_uid; - gid_t perm_gid; - umode_t perm_mode; - long unsigned int qbytes; - } ipc; - struct { - mqd_t mqdes; - struct mq_attr mqstat; - } mq_getsetattr; - struct { - mqd_t mqdes; - int sigev_signo; - } mq_notify; - struct { - mqd_t mqdes; - size_t msg_len; - unsigned int msg_prio; - struct timespec64 abs_timeout; - } mq_sendrecv; - struct { - int oflag; - umode_t mode; - struct mq_attr attr; - } mq_open; - struct { - pid_t pid; - struct audit_cap_data cap; - } capset; - struct { - int fd; - int flags; - } mmap; - struct open_how openat2; - struct { - int argc; - } execve; - struct { - char *name; - } module; - struct { - struct audit_ntp_data ntp_data; - struct timespec64 tk_injoffset; - } time; - }; - int fds[2]; - struct audit_proctitle proctitle; -}; - -struct __kernel_sockaddr_storage { - union { - struct { - __kernel_sa_family_t ss_family; - char __data[126]; - }; - void *__align; - }; -}; - -enum audit_nlgrps { - AUDIT_NLGRP_NONE = 0, - AUDIT_NLGRP_READLOG = 1, - __AUDIT_NLGRP_MAX = 2, -}; - -struct audit_status { - __u32 mask; - __u32 enabled; - __u32 failure; - __u32 pid; - __u32 rate_limit; - __u32 backlog_limit; - __u32 lost; - __u32 backlog; - union { - __u32 version; - __u32 feature_bitmap; - }; - __u32 backlog_wait_time; - __u32 backlog_wait_time_actual; -}; - -struct audit_features { - __u32 vers; - __u32 mask; - __u32 features; - __u32 lock; -}; - -struct audit_tty_status { - __u32 enabled; - __u32 log_passwd; -}; - -struct audit_sig_info { - uid_t uid; - pid_t pid; - char ctx[0]; -}; - -enum skb_drop_reason { - SKB_NOT_DROPPED_YET = 0, - SKB_DROP_REASON_NOT_SPECIFIED = 1, - SKB_DROP_REASON_NO_SOCKET = 2, - SKB_DROP_REASON_PKT_TOO_SMALL = 3, - SKB_DROP_REASON_TCP_CSUM = 4, - SKB_DROP_REASON_SOCKET_FILTER = 5, - SKB_DROP_REASON_UDP_CSUM = 6, - SKB_DROP_REASON_NETFILTER_DROP = 7, - SKB_DROP_REASON_OTHERHOST = 8, - SKB_DROP_REASON_IP_CSUM = 9, - SKB_DROP_REASON_IP_INHDR = 10, - SKB_DROP_REASON_IP_RPFILTER = 11, - SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST = 12, - SKB_DROP_REASON_XFRM_POLICY = 13, - SKB_DROP_REASON_IP_NOPROTO = 14, - SKB_DROP_REASON_SOCKET_RCVBUFF = 15, - SKB_DROP_REASON_PROTO_MEM = 16, - SKB_DROP_REASON_TCP_MD5NOTFOUND = 17, - SKB_DROP_REASON_TCP_MD5UNEXPECTED = 18, - SKB_DROP_REASON_TCP_MD5FAILURE = 19, - SKB_DROP_REASON_SOCKET_BACKLOG = 20, - SKB_DROP_REASON_TCP_FLAGS = 21, - SKB_DROP_REASON_TCP_ZEROWINDOW = 22, - SKB_DROP_REASON_TCP_OLD_DATA = 23, - SKB_DROP_REASON_TCP_OVERWINDOW = 24, - SKB_DROP_REASON_TCP_OFOMERGE = 25, - SKB_DROP_REASON_IP_OUTNOROUTES = 26, - SKB_DROP_REASON_BPF_CGROUP_EGRESS = 27, - SKB_DROP_REASON_IPV6DISABLED = 28, - SKB_DROP_REASON_NEIGH_CREATEFAIL = 29, - SKB_DROP_REASON_NEIGH_FAILED = 30, - SKB_DROP_REASON_NEIGH_QUEUEFULL = 31, - SKB_DROP_REASON_NEIGH_DEAD = 32, - SKB_DROP_REASON_TC_EGRESS = 33, - SKB_DROP_REASON_QDISC_DROP = 34, - SKB_DROP_REASON_CPU_BACKLOG = 35, - SKB_DROP_REASON_XDP = 36, - SKB_DROP_REASON_TC_INGRESS = 37, - SKB_DROP_REASON_PTYPE_ABSENT = 38, - SKB_DROP_REASON_SKB_CSUM = 39, - SKB_DROP_REASON_SKB_GSO_SEG = 40, - SKB_DROP_REASON_SKB_UCOPY_FAULT = 41, - SKB_DROP_REASON_DEV_HDR = 42, - SKB_DROP_REASON_DEV_READY = 43, - SKB_DROP_REASON_FULL_RING = 44, - SKB_DROP_REASON_NOMEM = 45, - SKB_DROP_REASON_HDR_TRUNC = 46, - SKB_DROP_REASON_TAP_FILTER = 47, - SKB_DROP_REASON_TAP_TXFILTER = 48, - SKB_DROP_REASON_MAX = 49, -}; - -struct net_generic { - union { - struct { - unsigned int len; - struct callback_head rcu; - } s; - void *ptr[0]; - }; -}; - -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; - kgid_t gid; -}; - -struct netlink_skb_parms { - struct scm_creds creds; - __u32 portid; - __u32 dst_group; - __u32 flags; - struct sock *sk; - bool nsid_is_set; - int nsid; -}; +struct rcu_tasks; -struct netlink_kernel_cfg { - unsigned int groups; - unsigned int flags; - void (*input)(struct sk_buff *); - struct mutex *cb_mutex; - int (*bind)(struct net *, int); - void (*unbind)(struct net *, int); - bool (*compare)(struct net *, struct sock *); -}; +typedef void (*rcu_tasks_gp_func_t)(struct rcu_tasks *); -struct audit_netlink_list { - __u32 portid; - struct net *net; - struct sk_buff_head q; -}; +typedef void (*pregp_func_t)(); -struct audit_net { - struct sock *sk; -}; +typedef void (*pertask_func_t)(struct task_struct *, struct list_head *); -struct auditd_connection { - struct pid *pid; - u32 portid; - struct net *net; - struct callback_head rcu; -}; +typedef void (*postscan_func_t)(struct list_head *); -struct audit_ctl_mutex { - struct mutex lock; - void *owner; -}; +typedef void (*holdouts_func_t)(struct list_head *, bool, bool *); -struct audit_buffer { - struct sk_buff *skb; - struct audit_context *ctx; - gfp_t gfp_mask; -}; +typedef void (*postgp_func_t)(struct rcu_tasks *); -struct audit_reply { - __u32 portid; - struct net *net; - struct sk_buff *skb; +struct rcu_tasks { + struct callback_head *cbs_head; + struct callback_head **cbs_tail; + struct wait_queue_head cbs_wq; + raw_spinlock_t cbs_lock; + int gp_state; + int gp_sleep; + int init_fract; + long unsigned int gp_jiffies; + long unsigned int gp_start; + long unsigned int n_gps; + long unsigned int n_ipis; + long unsigned int n_ipis_fails; + struct task_struct *kthread_ptr; + rcu_tasks_gp_func_t gp_func; + pregp_func_t pregp_func; + pertask_func_t pertask_func; + postscan_func_t postscan_func; + holdouts_func_t holdouts_func; + postgp_func_t postgp_func; + call_rcu_func_t call_func; + char *name; + char *kname; }; enum { - Audit_equal = 0, - Audit_not_equal = 1, - Audit_bitmask = 2, - Audit_bittest = 3, - Audit_lt = 4, - Audit_gt = 5, - Audit_le = 6, - Audit_ge = 7, - Audit_bad = 8, -}; - -struct audit_rule_data { - __u32 flags; - __u32 action; - __u32 field_count; - __u32 mask[64]; - __u32 fields[64]; - __u32 values[64]; - __u32 fieldflags[64]; - __u32 buflen; - char buf[0]; + GP_IDLE = 0, + GP_ENTER = 1, + GP_PASSED = 2, + GP_EXIT = 3, + GP_REPLAY = 4, }; -struct audit_field; - -struct audit_watch; - -struct audit_tree; - -struct audit_fsnotify_mark; +typedef long unsigned int ulong; -struct audit_krule { - u32 pflags; - u32 flags; - u32 listnr; - u32 action; - u32 mask[64]; - u32 buflen; - u32 field_count; - char *filterkey; - struct audit_field *fields; - struct audit_field *arch_f; - struct audit_field *inode_f; - struct audit_watch *watch; - struct audit_tree *tree; - struct audit_fsnotify_mark *exe; - struct list_head rlist; - struct list_head list; - u64 prio; +struct rcu_cblist { + struct callback_head *head; + struct callback_head **tail; + long int len; }; -struct audit_field { - u32 type; - union { - u32 val; - kuid_t uid; - kgid_t gid; - struct { - char *lsm_str; - void *lsm_rule; - }; - }; - u32 op; +enum rcutorture_type { + RCU_FLAVOR = 0, + RCU_TASKS_FLAVOR = 1, + RCU_TASKS_RUDE_FLAVOR = 2, + RCU_TASKS_TRACING_FLAVOR = 3, + RCU_TRIVIAL_FLAVOR = 4, + SRCU_FLAVOR = 5, + INVALID_RCU_FLAVOR = 6, }; -struct audit_entry { - struct list_head list; - struct callback_head rcu; - struct audit_krule rule; +enum tick_dep_bits { + TICK_DEP_BIT_POSIX_TIMER = 0, + TICK_DEP_BIT_PERF_EVENTS = 1, + TICK_DEP_BIT_SCHED = 2, + TICK_DEP_BIT_CLOCK_UNSTABLE = 3, + TICK_DEP_BIT_RCU = 4, + TICK_DEP_BIT_RCU_EXP = 5, }; -struct audit_buffer; - -typedef int __kernel_key_t; - -typedef __kernel_key_t key_t; - -struct cpu_vfs_cap_data { - __u32 magic_etc; - kernel_cap_t permitted; - kernel_cap_t inheritable; - kuid_t rootid; +struct rcu_exp_work { + long unsigned int rew_s; + struct work_struct rew_work; }; -struct kern_ipc_perm { - spinlock_t lock; - bool deleted; - int id; - key_t key; - kuid_t uid; - kgid_t gid; - kuid_t cuid; - kgid_t cgid; - umode_t mode; - long unsigned int seq; - void *security; - struct rhash_head khtnode; - struct callback_head rcu; - refcount_t refcount; - long: 32; +struct rcu_node { + raw_spinlock_t lock; + long unsigned int gp_seq; + long unsigned int gp_seq_needed; + long unsigned int completedqs; + long unsigned int qsmask; + long unsigned int rcu_gp_init_mask; + long unsigned int qsmaskinit; + long unsigned int qsmaskinitnext; + long unsigned int ofl_seq; + long unsigned int expmask; + long unsigned int expmaskinit; + long unsigned int expmaskinitnext; + long unsigned int cbovldmask; + long unsigned int ffmask; + long unsigned int grpmask; + int grplo; + int grphi; + u8 grpnum; + u8 level; + bool wait_blkd_tasks; + struct rcu_node *parent; + struct list_head blkd_tasks; + struct list_head *gp_tasks; + struct list_head *exp_tasks; + struct list_head *boost_tasks; + struct rt_mutex boost_mtx; + long unsigned int boost_time; + struct task_struct *boost_kthread_task; + unsigned int boost_kthread_status; + long unsigned int n_boosts; + long: 64; + raw_spinlock_t fqslock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -26998,300 +27251,471 @@ struct kern_ipc_perm { long: 64; long: 64; long: 64; + spinlock_t exp_lock; + long unsigned int exp_seq_rq; + wait_queue_head_t exp_wq[4]; + struct rcu_exp_work rew; + bool exp_need_flush; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; long: 64; }; -typedef struct fsnotify_mark_connector *fsnotify_connp_t; - -struct fsnotify_mark_connector { - spinlock_t lock; - short unsigned int type; - short unsigned int flags; - __kernel_fsid_t fsid; - union { - fsnotify_connp_t *obj; - struct fsnotify_mark_connector *destroy_next; - }; - struct hlist_head list; +union rcu_noqs { + struct { + u8 norm; + u8 exp; + } b; + u16 s; }; -enum audit_nfcfgop { - AUDIT_XT_OP_REGISTER = 0, - AUDIT_XT_OP_REPLACE = 1, - AUDIT_XT_OP_UNREGISTER = 2, - AUDIT_NFT_OP_TABLE_REGISTER = 3, - AUDIT_NFT_OP_TABLE_UNREGISTER = 4, - AUDIT_NFT_OP_CHAIN_REGISTER = 5, - AUDIT_NFT_OP_CHAIN_UNREGISTER = 6, - AUDIT_NFT_OP_RULE_REGISTER = 7, - AUDIT_NFT_OP_RULE_UNREGISTER = 8, - AUDIT_NFT_OP_SET_REGISTER = 9, - AUDIT_NFT_OP_SET_UNREGISTER = 10, - AUDIT_NFT_OP_SETELEM_REGISTER = 11, - AUDIT_NFT_OP_SETELEM_UNREGISTER = 12, - AUDIT_NFT_OP_GEN_REGISTER = 13, - AUDIT_NFT_OP_OBJ_REGISTER = 14, - AUDIT_NFT_OP_OBJ_UNREGISTER = 15, - AUDIT_NFT_OP_OBJ_RESET = 16, - AUDIT_NFT_OP_FLOWTABLE_REGISTER = 17, - AUDIT_NFT_OP_FLOWTABLE_UNREGISTER = 18, - AUDIT_NFT_OP_INVALID = 19, +struct rcu_data { + long unsigned int gp_seq; + long unsigned int gp_seq_needed; + union rcu_noqs cpu_no_qs; + bool core_needs_qs; + bool beenonline; + bool gpwrap; + bool exp_deferred_qs; + bool cpu_started; + struct rcu_node *mynode; + long unsigned int grpmask; + long unsigned int ticks_this_gp; + struct irq_work defer_qs_iw; + bool defer_qs_iw_pending; + struct work_struct strict_work; + struct rcu_segcblist cblist; + long int qlen_last_fqs_check; + long unsigned int n_cbs_invoked; + long unsigned int n_force_qs_snap; + long int blimit; + int dynticks_snap; + long int dynticks_nesting; + long int dynticks_nmi_nesting; + atomic_t dynticks; + bool rcu_need_heavy_qs; + bool rcu_urgent_qs; + bool rcu_forced_tick; + bool rcu_forced_tick_exp; + struct callback_head barrier_head; + int exp_dynticks_snap; + struct task_struct *rcu_cpu_kthread_task; + unsigned int rcu_cpu_kthread_status; + char rcu_cpu_has_work; + unsigned int softirq_snap; + struct irq_work rcu_iw; + bool rcu_iw_pending; + long unsigned int rcu_iw_gp_seq; + long unsigned int rcu_ofl_gp_seq; + short int rcu_ofl_gp_flags; + long unsigned int rcu_onl_gp_seq; + short int rcu_onl_gp_flags; + long unsigned int last_fqs_resched; + int cpu; }; -enum fsnotify_iter_type { - FSNOTIFY_ITER_TYPE_INODE = 0, - FSNOTIFY_ITER_TYPE_VFSMOUNT = 1, - FSNOTIFY_ITER_TYPE_SB = 2, - FSNOTIFY_ITER_TYPE_PARENT = 3, - FSNOTIFY_ITER_TYPE_INODE2 = 4, - FSNOTIFY_ITER_TYPE_COUNT = 5, +struct rcu_state { + struct rcu_node node[33]; + struct rcu_node *level[3]; + int ncpus; + int n_online_cpus; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + u8 boost; + long unsigned int gp_seq; + long unsigned int gp_max; + struct task_struct *gp_kthread; + struct swait_queue_head gp_wq; + short int gp_flags; + short int gp_state; + long unsigned int gp_wake_time; + long unsigned int gp_wake_seq; + struct mutex barrier_mutex; + atomic_t barrier_cpu_count; + struct completion barrier_completion; + long unsigned int barrier_sequence; + struct mutex exp_mutex; + struct mutex exp_wake_mutex; + long unsigned int expedited_sequence; + atomic_t expedited_need_qs; + struct swait_queue_head expedited_wq; + int ncpus_snap; + u8 cbovld; + u8 cbovldnext; + long unsigned int jiffies_force_qs; + long unsigned int jiffies_kick_kthreads; + long unsigned int n_force_qs; + long unsigned int gp_start; + long unsigned int gp_end; + long unsigned int gp_activity; + long unsigned int gp_req_activity; + long unsigned int jiffies_stall; + long unsigned int jiffies_resched; + long unsigned int n_force_qs_gpstart; + const char *name; + char abbr; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + raw_spinlock_t ofl_lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 audit_aux_data { - struct audit_aux_data *next; - int type; +struct kvfree_rcu_bulk_data { + long unsigned int nr_records; + struct kvfree_rcu_bulk_data *next; + void *records[0]; }; -struct audit_chunk; +struct kfree_rcu_cpu; -struct audit_tree_refs { - struct audit_tree_refs *next; - struct audit_chunk *c[31]; +struct kfree_rcu_cpu_work { + struct rcu_work rcu_work; + struct callback_head *head_free; + struct kvfree_rcu_bulk_data *bkvhead_free[2]; + struct kfree_rcu_cpu *krcp; }; -struct audit_aux_data_pids { - struct audit_aux_data d; - pid_t target_pid[16]; - kuid_t target_auid[16]; - kuid_t target_uid[16]; - unsigned int target_sessionid[16]; - u32 target_sid[16]; - char target_comm[256]; - int pid_count; +struct kfree_rcu_cpu { + struct callback_head *head; + struct kvfree_rcu_bulk_data *bkvhead[2]; + struct kfree_rcu_cpu_work krw_arr[2]; + raw_spinlock_t lock; + struct delayed_work monitor_work; + bool monitor_todo; + bool initialized; + int count; + struct delayed_work page_cache_work; + atomic_t backoff_page_cache_fill; + atomic_t work_in_progress; + struct hrtimer hrtimer; + struct llist_head bkvcache; + int nr_bkv_objs; }; -struct audit_aux_data_bprm_fcaps { - struct audit_aux_data d; - struct audit_cap_data fcap; - unsigned int fcap_ver; - struct audit_cap_data old_pcap; - struct audit_cap_data new_pcap; +struct klp_func { + const char *old_name; + void *new_func; + long unsigned int old_sympos; + void *old_func; + struct kobject kobj; + struct list_head node; + struct list_head stack_node; + long unsigned int old_size; + long unsigned int new_size; + bool nop; + bool patched; + bool transition; }; -struct audit_nfcfgop_tab { - enum audit_nfcfgop op; - const char *s; -}; +struct klp_object; -struct fsnotify_group; +struct klp_callbacks { + int (*pre_patch)(struct klp_object *); + void (*post_patch)(struct klp_object *); + void (*pre_unpatch)(struct klp_object *); + void (*post_unpatch)(struct klp_object *); + bool post_unpatch_enabled; +}; -struct fsnotify_mark { - __u32 mask; - refcount_t refcnt; - struct fsnotify_group *group; - struct list_head g_list; - spinlock_t lock; - struct hlist_node obj_list; - struct fsnotify_mark_connector *connector; - __u32 ignored_mask; - unsigned int flags; +struct klp_object { + const char *name; + struct klp_func *funcs; + struct klp_callbacks callbacks; + struct kobject kobj; + struct list_head func_list; + struct list_head node; + struct module *mod; + bool dynamic; + bool patched; }; -struct audit_fsnotify_mark { - dev_t dev; - long unsigned int ino; - char *path; - struct fsnotify_mark mark; - struct audit_krule *rule; +struct klp_state { + long unsigned int id; + unsigned int version; + void *data; }; -struct fsnotify_iter_info; +struct klp_patch { + struct module *mod; + struct klp_object *objs; + struct klp_state *states; + bool replace; + struct list_head list; + struct kobject kobj; + struct list_head obj_list; + bool enabled; + bool forced; + struct work_struct free_work; + struct completion finish; +}; -struct fsnotify_event; +struct klp_find_arg { + const char *objname; + const char *name; + long unsigned int addr; + long unsigned int count; + long unsigned int pos; +}; -struct fsnotify_ops { - int (*handle_event)(struct fsnotify_group *, u32, const void *, int, struct inode *, const struct qstr *, u32, struct fsnotify_iter_info *); - int (*handle_inode_event)(struct fsnotify_mark *, u32, struct inode *, struct inode *, const struct qstr *, u32); - void (*free_group_priv)(struct fsnotify_group *); - void (*freeing_mark)(struct fsnotify_mark *, struct fsnotify_group *); - void (*free_event)(struct fsnotify_group *, struct fsnotify_event *); - void (*free_mark)(struct fsnotify_mark *); +enum { + FTRACE_OPS_FL_ENABLED = 1, + FTRACE_OPS_FL_DYNAMIC = 2, + FTRACE_OPS_FL_SAVE_REGS = 4, + FTRACE_OPS_FL_SAVE_REGS_IF_SUPPORTED = 8, + FTRACE_OPS_FL_RECURSION = 16, + FTRACE_OPS_FL_STUB = 32, + FTRACE_OPS_FL_INITIALIZED = 64, + FTRACE_OPS_FL_DELETED = 128, + FTRACE_OPS_FL_ADDING = 256, + FTRACE_OPS_FL_REMOVING = 512, + FTRACE_OPS_FL_MODIFYING = 1024, + FTRACE_OPS_FL_ALLOC_TRAMP = 2048, + FTRACE_OPS_FL_IPMODIFY = 4096, + FTRACE_OPS_FL_PID = 8192, + FTRACE_OPS_FL_RCU = 16384, + FTRACE_OPS_FL_TRACE_ARRAY = 32768, + FTRACE_OPS_FL_PERMANENT = 65536, + FTRACE_OPS_FL_DIRECT = 131072, }; -struct inotify_group_private_data { - spinlock_t idr_lock; - struct idr idr; - struct ucounts *ucounts; +struct klp_ops { + struct list_head node; + struct list_head func_stack; + struct ftrace_ops fops; }; -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; - struct ucounts *ucounts; - mempool_t error_events_pool; +typedef int (*klp_shadow_ctor_t)(void *, void *, void *); + +typedef void (*klp_shadow_dtor_t)(void *, void *); + +struct klp_shadow { + struct hlist_node node; + struct callback_head callback_head; + void *obj; + long unsigned int id; + char data[0]; }; -struct fsnotify_group { - const struct fsnotify_ops *ops; - refcount_t refcnt; - spinlock_t notification_lock; - struct list_head notification_list; - wait_queue_head_t notification_waitq; - unsigned int q_len; - unsigned int max_events; - unsigned int priority; - bool shutdown; - struct mutex mark_mutex; - atomic_t user_waits; - struct list_head marks_list; - struct fasync_struct *fsn_fa; - struct fsnotify_event *overflow_event; - struct mem_cgroup *memcg; - union { - void *private; - struct inotify_group_private_data inotify_data; - struct fanotify_group_private_data fanotify_data; - }; +struct dma_sgt_handle { + struct sg_table sgt; + struct page **pages; }; -struct fsnotify_iter_info { - struct fsnotify_mark *marks[5]; - struct fsnotify_group *current_group; - unsigned int report_mask; - int srcu_idx; +struct dma_devres { + size_t size; + void *vaddr; + dma_addr_t dma_handle; + long unsigned int attrs; }; -struct fsnotify_event { - struct list_head list; +struct trace_event_raw_swiotlb_bounced { + struct trace_entry ent; + u32 __data_loc_dev_name; + u64 dma_mask; + dma_addr_t dev_addr; + size_t size; + enum swiotlb_force swiotlb_force; + char __data[0]; }; -enum fsnotify_obj_type { - FSNOTIFY_OBJ_TYPE_ANY = 4294967295, - FSNOTIFY_OBJ_TYPE_INODE = 0, - FSNOTIFY_OBJ_TYPE_VFSMOUNT = 1, - FSNOTIFY_OBJ_TYPE_SB = 2, - FSNOTIFY_OBJ_TYPE_COUNT = 3, - FSNOTIFY_OBJ_TYPE_DETACHED = 3, +struct trace_event_data_offsets_swiotlb_bounced { + u32 dev_name; }; -struct audit_parent; +typedef void (*btf_trace_swiotlb_bounced)(void *, struct device *, dma_addr_t, size_t, enum swiotlb_force); -struct audit_watch { - refcount_t count; - dev_t dev; - char *path; - long unsigned int ino; - struct audit_parent *parent; - struct list_head wlist; - struct list_head rules; +struct seccomp_data { + int nr; + __u32 arch; + __u64 instruction_pointer; + __u64 args[6]; }; -struct audit_parent { - struct list_head watches; - struct fsnotify_mark mark; +struct trace_event_raw_sys_enter { + struct trace_entry ent; + long int id; + long unsigned int args[6]; + char __data[0]; }; -struct audit_chunk; - -struct audit_tree { - refcount_t count; - int goner; - struct audit_chunk *root; - struct list_head chunks; - struct list_head rules; - struct list_head list; - struct list_head same_root; - struct callback_head head; - char pathname[0]; +struct trace_event_raw_sys_exit { + struct trace_entry ent; + long int id; + long int ret; + char __data[0]; }; -struct audit_node { - struct list_head list; - struct audit_tree *owner; - unsigned int index; +struct trace_event_data_offsets_sys_enter {}; + +struct trace_event_data_offsets_sys_exit {}; + +typedef void (*btf_trace_sys_enter)(void *, struct pt_regs *, long int); + +typedef void (*btf_trace_sys_exit)(void *, struct pt_regs *, long int); + +enum kcmp_type { + KCMP_FILE = 0, + KCMP_VM = 1, + KCMP_FILES = 2, + KCMP_FS = 3, + KCMP_SIGHAND = 4, + KCMP_IO = 5, + KCMP_SYSVSEM = 6, + KCMP_EPOLL_TFD = 7, + KCMP_TYPES = 8, }; -struct audit_chunk { - struct list_head hash; - long unsigned int key; - struct fsnotify_mark *mark; - struct list_head trees; - int count; - atomic_long_t refs; - struct callback_head head; - struct audit_node owners[0]; +struct kcmp_epoll_slot { + __u32 efd; + __u32 tfd; + __u32 toff; }; -struct audit_tree_mark { - struct fsnotify_mark mark; - struct audit_chunk *chunk; +enum profile_type { + PROFILE_TASK_EXIT = 0, + PROFILE_MUNMAP = 1, }; -enum { - HASH_SIZE = 128, +struct profile_hit { + u32 pc; + u32 hits; }; -struct kprobe_blacklist_entry { - struct list_head list; - long unsigned int start_addr; - long unsigned int end_addr; +struct stacktrace_cookie { + long unsigned int *store; + unsigned int size; + unsigned int skip; + unsigned int len; }; -enum perf_record_ksymbol_type { - PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0, - PERF_RECORD_KSYMBOL_TYPE_BPF = 1, - PERF_RECORD_KSYMBOL_TYPE_OOL = 2, - PERF_RECORD_KSYMBOL_TYPE_MAX = 3, +typedef __kernel_long_t __kernel_suseconds_t; + +typedef __kernel_suseconds_t suseconds_t; + +typedef __u64 timeu64_t; + +struct __kernel_itimerspec { + struct __kernel_timespec it_interval; + struct __kernel_timespec it_value; }; -struct kprobe_insn_page { - struct list_head list; - kprobe_opcode_t *insns; - struct kprobe_insn_cache *cache; - int nused; - int ngarbage; - char slot_used[0]; +struct timezone { + int tz_minuteswest; + int tz_dsttime; }; -enum kprobe_slot_state { - SLOT_CLEAN = 0, - SLOT_DIRTY = 1, - SLOT_USED = 2, +struct itimerspec64 { + struct timespec64 it_interval; + struct timespec64 it_value; }; -struct rchan; +struct old_itimerspec32 { + struct old_timespec32 it_interval; + struct old_timespec32 it_value; +}; -struct rchan_buf { - void *start; - void *data; - size_t offset; - size_t subbufs_produced; - size_t subbufs_consumed; - struct rchan *chan; - wait_queue_head_t read_wait; - struct irq_work wakeup_work; - struct dentry *dentry; - struct kref kref; - struct page **page_array; - unsigned int page_count; - unsigned int finalized; - size_t *padding; - size_t prev_padding; - size_t bytes_consumed; - size_t early_bytes; - unsigned int cpu; - long: 32; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct old_timex32 { + u32 modes; + s32 offset; + s32 freq; + s32 maxerror; + s32 esterror; + s32 status; + s32 constant; + s32 precision; + s32 tolerance; + struct old_timeval32 time; + s32 tick; + s32 ppsfreq; + s32 jitter; + s32 shift; + s32 stabil; + s32 jitcnt; + s32 calcnt; + s32 errcnt; + s32 stbcnt; + s32 tai; long: 64; long: 64; long: 64; @@ -27299,5074 +27723,5107 @@ struct rchan_buf { long: 64; }; -struct rchan_callbacks; - -struct rchan { - u32 version; - size_t subbuf_size; - size_t n_subbufs; - size_t alloc_size; - const struct rchan_callbacks *cb; - struct kref kref; - void *private_data; - size_t last_toobig; - struct rchan_buf **buf; - int is_global; - struct list_head list; - struct dentry *parent; - int has_base_filename; - char base_filename[255]; +struct trace_event_raw_timer_class { + struct trace_entry ent; + void *timer; + char __data[0]; }; -struct rchan_callbacks { - int (*subbuf_start)(struct rchan_buf *, void *, void *, size_t); - struct dentry * (*create_buf_file)(const char *, struct dentry *, umode_t, struct rchan_buf *, int *); - int (*remove_buf_file)(struct dentry *); +struct trace_event_raw_timer_start { + struct trace_entry ent; + void *timer; + void *function; + long unsigned int expires; + long unsigned int now; + unsigned int flags; + char __data[0]; }; -struct partial_page { - unsigned int offset; - unsigned int len; - long unsigned int private; +struct trace_event_raw_timer_expire_entry { + struct trace_entry ent; + void *timer; + long unsigned int now; + void *function; + long unsigned int baseclk; + char __data[0]; }; -struct splice_pipe_desc { - struct page **pages; - struct partial_page *partial; - int nr_pages; - unsigned int nr_pages_max; - const struct pipe_buf_operations *ops; - void (*spd_release)(struct splice_pipe_desc *, unsigned int); +struct trace_event_raw_hrtimer_init { + struct trace_entry ent; + void *hrtimer; + clockid_t clockid; + enum hrtimer_mode mode; + char __data[0]; }; -struct rchan_percpu_buf_dispatcher { - struct rchan_buf *buf; - struct dentry *dentry; +struct trace_event_raw_hrtimer_start { + struct trace_entry ent; + void *hrtimer; + void *function; + s64 expires; + s64 softexpires; + enum hrtimer_mode mode; + char __data[0]; }; -struct seccomp_notif_sizes { - __u16 seccomp_notif; - __u16 seccomp_notif_resp; - __u16 seccomp_data; +struct trace_event_raw_hrtimer_expire_entry { + struct trace_entry ent; + void *hrtimer; + s64 now; + void *function; + char __data[0]; }; -struct seccomp_notif { - __u64 id; - __u32 pid; - __u32 flags; - struct seccomp_data data; +struct trace_event_raw_hrtimer_class { + struct trace_entry ent; + void *hrtimer; + char __data[0]; }; -struct seccomp_notif_resp { - __u64 id; - __s64 val; - __s32 error; - __u32 flags; +struct trace_event_raw_itimer_state { + struct trace_entry ent; + int which; + long long unsigned int expires; + long int value_sec; + long int value_nsec; + long int interval_sec; + long int interval_nsec; + char __data[0]; }; -struct seccomp_notif_addfd { - __u64 id; - __u32 flags; - __u32 srcfd; - __u32 newfd; - __u32 newfd_flags; +struct trace_event_raw_itimer_expire { + struct trace_entry ent; + int which; + pid_t pid; + long long unsigned int now; + char __data[0]; }; -struct action_cache { - long unsigned int allow_native[8]; - long unsigned int allow_compat[8]; +struct trace_event_raw_tick_stop { + struct trace_entry ent; + int success; + int dependency; + char __data[0]; }; -struct notification; +struct trace_event_data_offsets_timer_class {}; -struct seccomp_filter { - refcount_t refs; - refcount_t users; - bool log; - struct action_cache cache; - struct seccomp_filter *prev; - struct bpf_prog *prog; - struct notification *notif; - struct mutex notify_lock; - wait_queue_head_t wqh; -}; +struct trace_event_data_offsets_timer_start {}; -struct seccomp_metadata { - __u64 filter_off; - __u64 flags; -}; +struct trace_event_data_offsets_timer_expire_entry {}; -struct sock_fprog { - short unsigned int len; - struct sock_filter *filter; -}; +struct trace_event_data_offsets_hrtimer_init {}; -struct compat_sock_fprog { - u16 len; - compat_uptr_t filter; -}; +struct trace_event_data_offsets_hrtimer_start {}; -typedef unsigned int (*bpf_dispatcher_fn)(const void *, const struct bpf_insn *, unsigned int (*)(const void *, const struct bpf_insn *)); +struct trace_event_data_offsets_hrtimer_expire_entry {}; -typedef int (*bpf_aux_classic_check_t)(struct sock_filter *, unsigned int); +struct trace_event_data_offsets_hrtimer_class {}; -enum notify_state { - SECCOMP_NOTIFY_INIT = 0, - SECCOMP_NOTIFY_SENT = 1, - SECCOMP_NOTIFY_REPLIED = 2, -}; +struct trace_event_data_offsets_itimer_state {}; -struct seccomp_knotif { - struct task_struct *task; - u64 id; - const struct seccomp_data *data; - enum notify_state state; - int error; - long int val; - u32 flags; - struct completion ready; - struct list_head list; - struct list_head addfd; -}; +struct trace_event_data_offsets_itimer_expire {}; -struct seccomp_kaddfd { - struct file *file; - int fd; - unsigned int flags; - __u32 ioctl_flags; - union { - bool setfd; - int ret; - }; - struct completion completion; - struct list_head list; -}; +struct trace_event_data_offsets_tick_stop {}; -struct notification { - struct semaphore request; - u64 next_id; - struct list_head notifications; -}; +typedef void (*btf_trace_timer_init)(void *, struct timer_list *); -struct seccomp_log_name { - u32 log; - const char *name; -}; +typedef void (*btf_trace_timer_start)(void *, struct timer_list *, long unsigned int, unsigned int); -enum { - TASKSTATS_TYPE_UNSPEC = 0, - TASKSTATS_TYPE_PID = 1, - TASKSTATS_TYPE_TGID = 2, - TASKSTATS_TYPE_STATS = 3, - TASKSTATS_TYPE_AGGR_PID = 4, - TASKSTATS_TYPE_AGGR_TGID = 5, - TASKSTATS_TYPE_NULL = 6, - __TASKSTATS_TYPE_MAX = 7, -}; +typedef void (*btf_trace_timer_expire_entry)(void *, struct timer_list *, long unsigned int); -enum { - TASKSTATS_CMD_ATTR_UNSPEC = 0, - TASKSTATS_CMD_ATTR_PID = 1, - TASKSTATS_CMD_ATTR_TGID = 2, - TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 3, - TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 4, - __TASKSTATS_CMD_ATTR_MAX = 5, -}; +typedef void (*btf_trace_timer_expire_exit)(void *, struct timer_list *); -enum { - CGROUPSTATS_CMD_UNSPEC = 3, - CGROUPSTATS_CMD_GET = 4, - CGROUPSTATS_CMD_NEW = 5, - __CGROUPSTATS_CMD_MAX = 6, -}; +typedef void (*btf_trace_timer_cancel)(void *, struct timer_list *); -enum { - CGROUPSTATS_TYPE_UNSPEC = 0, - CGROUPSTATS_TYPE_CGROUP_STATS = 1, - __CGROUPSTATS_TYPE_MAX = 2, -}; +typedef void (*btf_trace_hrtimer_init)(void *, struct hrtimer *, clockid_t, enum hrtimer_mode); -enum { - CGROUPSTATS_CMD_ATTR_UNSPEC = 0, - CGROUPSTATS_CMD_ATTR_FD = 1, - __CGROUPSTATS_CMD_ATTR_MAX = 2, -}; +typedef void (*btf_trace_hrtimer_start)(void *, struct hrtimer *, enum hrtimer_mode); -struct genlmsghdr { - __u8 cmd; - __u8 version; - __u16 reserved; -}; +typedef void (*btf_trace_hrtimer_expire_entry)(void *, struct hrtimer *, ktime_t *); -enum { - NLA_UNSPEC = 0, - NLA_U8 = 1, - NLA_U16 = 2, - NLA_U32 = 3, - NLA_U64 = 4, - NLA_STRING = 5, - NLA_FLAG = 6, - NLA_MSECS = 7, - NLA_NESTED = 8, - NLA_NESTED_ARRAY = 9, - NLA_NUL_STRING = 10, - NLA_BINARY = 11, - NLA_S8 = 12, - NLA_S16 = 13, - NLA_S32 = 14, - NLA_S64 = 15, - NLA_BITFIELD32 = 16, - NLA_REJECT = 17, - __NLA_TYPE_MAX = 18, -}; +typedef void (*btf_trace_hrtimer_expire_exit)(void *, struct hrtimer *); -struct genl_multicast_group { - char name[16]; - u8 flags; -}; +typedef void (*btf_trace_hrtimer_cancel)(void *, struct hrtimer *); -struct genl_ops; +typedef void (*btf_trace_itimer_state)(void *, int, const struct itimerspec64 * const, long long unsigned int); -struct genl_info; +typedef void (*btf_trace_itimer_expire)(void *, int, struct pid *, long long unsigned int); -struct genl_small_ops; +typedef void (*btf_trace_tick_stop)(void *, int, int); -struct genl_family { - int id; - unsigned int hdrsize; - char name[16]; - unsigned int version; - unsigned int maxattr; - unsigned int mcgrp_offset; - u8 netnsok: 1; - u8 parallel_ops: 1; - u8 n_ops; - u8 n_small_ops; - u8 n_mcgrps; - const struct nla_policy *policy; - int (*pre_doit)(const struct genl_ops *, struct sk_buff *, struct genl_info *); - void (*post_doit)(const struct genl_ops *, struct sk_buff *, struct genl_info *); - const struct genl_ops *ops; - const struct genl_small_ops *small_ops; - const struct genl_multicast_group *mcgrps; - struct module *module; +struct timer_base { + raw_spinlock_t lock; + struct timer_list *running_timer; + long unsigned int clk; + long unsigned int next_expiry; + unsigned int cpu; + bool next_expiry_recalc; + bool is_idle; + bool timers_pending; + long unsigned int pending_map[8]; + struct hlist_head vectors[512]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 genl_ops { - int (*doit)(struct sk_buff *, struct genl_info *); - int (*start)(struct netlink_callback *); - int (*dumpit)(struct sk_buff *, struct netlink_callback *); - int (*done)(struct netlink_callback *); - const struct nla_policy *policy; - unsigned int maxattr; - u8 cmd; - u8 internal_flags; - u8 flags; - u8 validate; +struct process_timer { + struct timer_list timer; + struct task_struct *task; }; -struct genl_info { - u32 snd_seq; - u32 snd_portid; - struct nlmsghdr *nlhdr; - struct genlmsghdr *genlhdr; - void *userhdr; - struct nlattr **attrs; - possible_net_t _net; - void *user_ptr[2]; - struct netlink_ext_ack *extack; +enum tick_device_mode { + TICKDEV_MODE_PERIODIC = 0, + TICKDEV_MODE_ONESHOT = 1, }; -struct genl_small_ops { - int (*doit)(struct sk_buff *, struct genl_info *); - int (*dumpit)(struct sk_buff *, struct netlink_callback *); - u8 cmd; - u8 internal_flags; - u8 flags; - u8 validate; +struct tick_device { + struct clock_event_device *evtdev; + enum tick_device_mode mode; }; -enum genl_validate_flags { - GENL_DONT_VALIDATE_STRICT = 1, - GENL_DONT_VALIDATE_DUMP = 2, - GENL_DONT_VALIDATE_DUMP_STRICT = 4, +struct ktime_timestamps { + u64 mono; + u64 boot; + u64 real; }; -struct listener { - struct list_head list; - pid_t pid; - char valid; +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 listener_list { - struct rw_semaphore sem; - struct list_head list; +struct system_device_crosststamp { + ktime_t device; + ktime_t sys_realtime; + ktime_t sys_monoraw; }; -enum actions { - REGISTER = 0, - DEREGISTER = 1, - CPU_DONT_CARE = 2, +struct system_counterval_t { + u64 cycles; + struct clocksource *cs; }; -typedef __u32 pcp_op_T_____6; +struct tk_read_base { + struct clocksource *clock; + u64 mask; + u64 cycle_last; + u32 mult; + u32 shift; + u64 xtime_nsec; + ktime_t base; + u64 base_real; +}; -struct tp_module { - struct list_head list; - struct module *mod; +struct timekeeper { + struct tk_read_base tkr_mono; + struct tk_read_base tkr_raw; + u64 xtime_sec; + long unsigned int ktime_sec; + struct timespec64 wall_to_monotonic; + ktime_t offs_real; + ktime_t offs_boot; + ktime_t offs_tai; + s32 tai_offset; + unsigned int clock_was_set_seq; + u8 cs_was_changed_seq; + ktime_t next_leap_ktime; + u64 raw_sec; + struct timespec64 monotonic_to_boot; + u64 cycle_interval; + u64 xtime_interval; + s64 xtime_remainder; + u64 raw_interval; + u64 ntp_tick; + s64 ntp_error; + u32 ntp_error_shift; + u32 ntp_err_mult; + u32 skip_second_overflow; }; -enum tp_func_state { - TP_FUNC_0 = 0, - TP_FUNC_1 = 1, - TP_FUNC_2 = 2, - TP_FUNC_N = 3, +struct audit_ntp_val { + long long int oldval; + long long int newval; }; -enum tp_transition_sync { - TP_TRANSITION_SYNC_1_0_1 = 0, - TP_TRANSITION_SYNC_N_2_1 = 1, - _NR_TP_TRANSITION_SYNC = 2, +struct audit_ntp_data { + struct audit_ntp_val vals[6]; }; -struct tp_transition_snapshot { - long unsigned int rcu; - long unsigned int srcu; - bool ongoing; +enum timekeeping_adv_mode { + TK_ADV_TICK = 0, + TK_ADV_FREQ = 1, }; -struct tp_probes { - struct callback_head rcu; - struct tracepoint_func probes[0]; +struct tk_fast { + seqcount_latch_t seq; + struct tk_read_base base[2]; }; -struct ftrace_hash { - long unsigned int size_bits; - struct hlist_head *buckets; - long unsigned int count; - long unsigned int flags; - struct callback_head rcu; +enum tick_nohz_mode { + NOHZ_MODE_INACTIVE = 0, + NOHZ_MODE_LOWRES = 1, + NOHZ_MODE_HIGHRES = 2, }; -struct ftrace_func_entry { - struct hlist_node hlist; - long unsigned int ip; - long unsigned int direct; +struct tick_sched { + struct hrtimer sched_timer; + long unsigned int check_clocks; + enum tick_nohz_mode nohz_mode; + unsigned int inidle: 1; + unsigned int tick_stopped: 1; + unsigned int idle_active: 1; + unsigned int do_timer_last: 1; + unsigned int got_idle_tick: 1; + ktime_t last_tick; + ktime_t next_tick; + long unsigned int idle_jiffies; + long unsigned int idle_calls; + long unsigned int idle_sleeps; + ktime_t idle_entrytime; + ktime_t idle_waketime; + ktime_t idle_exittime; + ktime_t idle_sleeptime; + ktime_t iowait_sleeptime; + long unsigned int last_jiffies; + u64 timer_expires; + u64 timer_expires_base; + u64 next_timer; + ktime_t idle_expires; + atomic_t tick_dep_mask; }; -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 timer_list_iter { + int cpu; + bool second_pass; + u64 now; }; -enum { - FTRACE_FL_ENABLED = 2147483648, - FTRACE_FL_REGS = 1073741824, - FTRACE_FL_REGS_EN = 536870912, - FTRACE_FL_TRAMP = 268435456, - FTRACE_FL_TRAMP_EN = 134217728, - FTRACE_FL_IPMODIFY = 67108864, - FTRACE_FL_DISABLED = 33554432, - FTRACE_FL_DIRECT = 16777216, - FTRACE_FL_DIRECT_EN = 8388608, +struct tm { + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + long int tm_year; + int tm_wday; + int tm_yday; }; -enum { - FTRACE_UPDATE_CALLS = 1, - FTRACE_DISABLE_CALLS = 2, - FTRACE_UPDATE_TRACE_FUNC = 4, - FTRACE_START_FUNC_RET = 8, - FTRACE_STOP_FUNC_RET = 16, - FTRACE_MAY_SLEEP = 32, +struct cyclecounter { + u64 (*read)(const struct cyclecounter *); + u64 mask; + u32 mult; + u32 shift; }; -enum { - FTRACE_UPDATE_IGNORE = 0, - FTRACE_UPDATE_MAKE_CALL = 1, - FTRACE_UPDATE_MODIFY_CALL = 2, - FTRACE_UPDATE_MAKE_NOP = 3, +struct timecounter { + const struct cyclecounter *cc; + u64 cycle_last; + u64 nsec; + u64 mask; + u64 frac; }; -enum { - FTRACE_ITER_FILTER = 1, - FTRACE_ITER_NOTRACE = 2, - FTRACE_ITER_PRINTALL = 4, - FTRACE_ITER_DO_PROBES = 8, - FTRACE_ITER_PROBE = 16, - FTRACE_ITER_MOD = 32, - FTRACE_ITER_ENABLED = 64, +typedef __kernel_timer_t timer_t; + +enum alarmtimer_type { + ALARM_REALTIME = 0, + ALARM_BOOTTIME = 1, + ALARM_NUMTYPE = 2, + ALARM_REALTIME_FREEZER = 3, + ALARM_BOOTTIME_FREEZER = 4, }; -struct ftrace_graph_ent { - long unsigned int func; - int depth; -} __attribute__((packed)); +enum alarmtimer_restart { + ALARMTIMER_NORESTART = 0, + ALARMTIMER_RESTART = 1, +}; -struct ftrace_graph_ret { - long unsigned int func; - int depth; - unsigned int overrun; - long long unsigned int calltime; - long long unsigned int rettime; +struct alarm { + struct timerqueue_node node; + struct hrtimer timer; + enum alarmtimer_restart (*function)(struct alarm *, ktime_t); + enum alarmtimer_type type; + int state; + void *data; }; -typedef void (*trace_func_graph_ret_t)(struct ftrace_graph_ret *); +struct cpu_timer { + struct timerqueue_node node; + struct timerqueue_head *head; + struct pid *pid; + struct list_head elist; + int firing; + struct task_struct *handling; +}; -typedef int (*trace_func_graph_ent_t)(struct ftrace_graph_ent *); +struct k_clock; -struct fgraph_ops { - trace_func_graph_ent_t entryfunc; - trace_func_graph_ret_t retfunc; +struct k_itimer { + struct list_head list; + struct hlist_node t_hash; + spinlock_t it_lock; + const struct k_clock *kclock; + clockid_t it_clock; + timer_t it_id; + int it_active; + s64 it_overrun; + s64 it_overrun_last; + int it_requeue_pending; + int it_sigev_notify; + ktime_t it_interval; + struct signal_struct *it_signal; + union { + struct pid *it_pid; + struct task_struct *it_process; + }; + struct sigqueue *sigq; + union { + struct { + struct hrtimer timer; + } real; + struct cpu_timer cpu; + struct { + struct alarm alarmtimer; + } alarm; + } it; + struct callback_head rcu; }; -struct prog_entry; +struct k_clock { + int (*clock_getres)(const clockid_t, struct timespec64 *); + int (*clock_set)(const clockid_t, const struct timespec64 *); + int (*clock_get_timespec)(const clockid_t, struct timespec64 *); + ktime_t (*clock_get_ktime)(const clockid_t); + int (*clock_adj)(const clockid_t, struct __kernel_timex *); + int (*timer_create)(struct k_itimer *); + int (*nsleep)(const clockid_t, int, const struct timespec64 *); + int (*timer_set)(struct k_itimer *, int, struct itimerspec64 *, struct itimerspec64 *); + int (*timer_del)(struct k_itimer *); + void (*timer_get)(struct k_itimer *, struct itimerspec64 *); + void (*timer_rearm)(struct k_itimer *); + s64 (*timer_forward)(struct k_itimer *, ktime_t); + ktime_t (*timer_remaining)(struct k_itimer *, ktime_t); + int (*timer_try_to_cancel)(struct k_itimer *); + void (*timer_arm)(struct k_itimer *, ktime_t, bool, bool); + void (*timer_wait_running)(struct k_itimer *); +}; -struct event_filter { - struct prog_entry *prog; - char *filter_string; +struct rtc_time { + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; }; -struct trace_array_cpu; +struct rtc_wkalrm { + unsigned char enabled; + unsigned char pending; + struct rtc_time time; +}; -struct array_buffer { - struct trace_array *tr; - struct trace_buffer *buffer; - struct trace_array_cpu *data; - u64 time_start; - int cpu; +struct rtc_class_ops { + int (*ioctl)(struct device *, unsigned int, long unsigned int); + int (*read_time)(struct device *, struct rtc_time *); + int (*set_time)(struct device *, struct rtc_time *); + int (*read_alarm)(struct device *, struct rtc_wkalrm *); + int (*set_alarm)(struct device *, struct rtc_wkalrm *); + int (*proc)(struct device *, struct seq_file *); + int (*alarm_irq_enable)(struct device *, unsigned int); + int (*read_offset)(struct device *, long int *); + int (*set_offset)(struct device *, long int); }; -struct trace_pid_list; +struct rtc_device; -struct trace_options; +struct rtc_timer { + struct timerqueue_node node; + ktime_t period; + void (*func)(struct rtc_device *); + struct rtc_device *rtc; + int enabled; +}; -struct cond_snapshot; +struct rtc_device { + struct device dev; + struct module *owner; + int id; + const struct rtc_class_ops *ops; + struct mutex ops_lock; + struct cdev char_dev; + long unsigned int flags; + long unsigned int irq_data; + spinlock_t irq_lock; + wait_queue_head_t irq_queue; + struct fasync_struct *async_queue; + int irq_freq; + int max_user_freq; + struct timerqueue_head timerqueue; + struct rtc_timer aie_timer; + struct rtc_timer uie_rtctimer; + struct hrtimer pie_timer; + int pie_enabled; + struct work_struct irqwork; + 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; + time64_t offset_secs; + bool set_start_time; +}; -struct trace_func_repeats; +struct trace_event_raw_alarmtimer_suspend { + struct trace_entry ent; + s64 expires; + unsigned char alarm_type; + char __data[0]; +}; -struct trace_array { - struct list_head list; - char *name; - struct array_buffer array_buffer; - struct array_buffer max_buffer; - bool allocated_snapshot; - long unsigned int max_latency; - struct dentry *d_max_latency; - struct work_struct fsnotify_work; - struct irq_work fsnotify_irqwork; - struct trace_pid_list *filtered_pids; - struct trace_pid_list *filtered_no_pids; - arch_spinlock_t max_lock; - int buffer_disabled; - int sys_refcount_enter; - int sys_refcount_exit; - struct trace_event_file *enter_syscall_files[451]; - struct trace_event_file *exit_syscall_files[451]; - int stop_count; - int clock_id; - int nr_topts; - bool clear_trace; - int buffer_percent; - unsigned int n_err_log_entries; - struct tracer *current_trace; - unsigned int trace_flags; - unsigned char trace_flags_index[32]; - unsigned int flags; - raw_spinlock_t start_lock; - struct list_head err_log; - struct dentry *dir; - struct dentry *options; - struct dentry *percpu_dir; - struct dentry *event_dir; - struct trace_options *topts; - struct list_head systems; - struct list_head events; - struct trace_event_file *trace_marker_file; - cpumask_var_t tracing_cpumask; - int ref; - int trace_ref; - struct ftrace_ops *ops; - struct trace_pid_list *function_pids; - struct trace_pid_list *function_no_pids; - struct list_head func_probes; - struct list_head mod_trace; - struct list_head mod_notrace; - int function_enabled; - int no_filter_buffering_ref; - struct list_head hist_vars; - struct cond_snapshot *cond_snapshot; - struct trace_func_repeats *last_func_repeats; +struct trace_event_raw_alarm_class { + struct trace_entry ent; + void *alarm; + unsigned char alarm_type; + s64 expires; + s64 now; + char __data[0]; }; -struct tracer_flags; +struct trace_event_data_offsets_alarmtimer_suspend {}; -struct tracer { - const char *name; - int (*init)(struct trace_array *); - void (*reset)(struct trace_array *); - void (*start)(struct trace_array *); - void (*stop)(struct trace_array *); - int (*update_thresh)(struct trace_array *); - void (*open)(struct trace_iterator *); - void (*pipe_open)(struct trace_iterator *); - void (*close)(struct trace_iterator *); - void (*pipe_close)(struct trace_iterator *); - ssize_t (*read)(struct trace_iterator *, struct file *, char *, size_t, loff_t *); - ssize_t (*splice_read)(struct trace_iterator *, struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); - void (*print_header)(struct seq_file *); - enum print_line_t (*print_line)(struct trace_iterator *); - int (*set_flag)(struct trace_array *, u32, u32, int); - int (*flag_changed)(struct trace_array *, u32, int); - struct tracer *next; - struct tracer_flags *flags; - int enabled; - bool print_max; - bool allow_instances; - bool use_max_tr; - bool noboot; -}; +struct trace_event_data_offsets_alarm_class {}; -struct event_subsystem; +typedef void (*btf_trace_alarmtimer_suspend)(void *, ktime_t, int); -struct trace_subsystem_dir { - struct list_head list; - struct event_subsystem *subsystem; - struct trace_array *tr; - struct dentry *entry; - int ref_count; - int nr_events; -}; +typedef void (*btf_trace_alarmtimer_fired)(void *, struct alarm *, ktime_t); -union lower_chunk { - union lower_chunk *next; - long unsigned int data[256]; -}; +typedef void (*btf_trace_alarmtimer_start)(void *, struct alarm *, ktime_t); -union upper_chunk { - union upper_chunk *next; - union lower_chunk *data[256]; -}; +typedef void (*btf_trace_alarmtimer_cancel)(void *, struct alarm *, ktime_t); -struct trace_pid_list { - raw_spinlock_t lock; - struct irq_work refill_irqwork; - union upper_chunk *upper[256]; - union upper_chunk *upper_list; - union lower_chunk *lower_list; - int free_upper_chunks; - int free_lower_chunks; +struct alarm_base { + spinlock_t lock; + struct timerqueue_head timerqueue; + ktime_t (*get_ktime)(); + void (*get_timespec)(struct timespec64 *); + clockid_t base_clockid; }; -struct trace_array_cpu { - atomic_t disabled; - void *buffer_page; - long unsigned int entries; - long unsigned int saved_latency; - long unsigned int critical_start; - long unsigned int critical_end; - long unsigned int critical_sequence; - long unsigned int nice; - long unsigned int policy; - long unsigned int rt_priority; - long unsigned int skipped_entries; - u64 preempt_timestamp; - pid_t pid; - kuid_t uid; - char comm[16]; - int ftrace_ignore_pid; - bool ignore_pid; +struct sigevent { + sigval_t sigev_value; + int sigev_signo; + int sigev_notify; + union { + int _pad[12]; + int _tid; + struct { + void (*_function)(sigval_t); + void *_attribute; + } _sigev_thread; + } _sigev_un; }; -struct trace_option_dentry; +typedef struct sigevent sigevent_t; -struct trace_options { - struct tracer *tracer; - struct trace_option_dentry *topts; +struct compat_sigevent { + compat_sigval_t sigev_value; + compat_int_t sigev_signo; + compat_int_t sigev_notify; + union { + compat_int_t _pad[13]; + compat_int_t _tid; + struct { + compat_uptr_t _function; + compat_uptr_t _attribute; + } _sigev_thread; + } _sigev_un; }; -struct tracer_opt; +struct posix_clock; -struct trace_option_dentry { - struct tracer_opt *opt; - struct tracer_flags *flags; - struct trace_array *tr; - struct dentry *entry; +struct posix_clock_operations { + struct module *owner; + int (*clock_adjtime)(struct posix_clock *, struct __kernel_timex *); + int (*clock_gettime)(struct posix_clock *, struct timespec64 *); + int (*clock_getres)(struct posix_clock *, struct timespec64 *); + int (*clock_settime)(struct posix_clock *, const struct timespec64 *); + long int (*ioctl)(struct posix_clock *, unsigned int, long unsigned int); + int (*open)(struct posix_clock *, fmode_t); + __poll_t (*poll)(struct posix_clock *, struct file *, poll_table *); + int (*release)(struct posix_clock *); + ssize_t (*read)(struct posix_clock *, uint, char *, size_t); }; -enum { - TRACE_PIDS = 1, - TRACE_NO_PIDS = 2, +struct posix_clock { + struct posix_clock_operations ops; + struct cdev cdev; + struct device *dev; + struct rw_semaphore rwsem; + bool zombie; }; -typedef bool (*cond_update_fn_t)(struct trace_array *, void *); - -struct cond_snapshot { - void *cond_data; - cond_update_fn_t update; +struct posix_clock_desc { + struct file *fp; + struct posix_clock *clk; }; -struct trace_func_repeats { - long unsigned int ip; - long unsigned int parent_ip; - long unsigned int count; - u64 ts_last_call; +struct __kernel_old_itimerval { + struct __kernel_old_timeval it_interval; + struct __kernel_old_timeval it_value; }; -enum { - TRACE_ARRAY_FL_GLOBAL = 1, +struct old_itimerval32 { + struct old_timeval32 it_interval; + struct old_timeval32 it_value; }; -struct tracer_opt { - const char *name; - u32 bit; +struct ce_unbind { + struct clock_event_device *ce; + int res; }; -struct tracer_flags { - u32 val; - struct tracer_opt *opts; - struct tracer *trace; +enum tick_broadcast_state { + TICK_BROADCAST_EXIT = 0, + TICK_BROADCAST_ENTER = 1, }; -struct ftrace_mod_load { - struct list_head list; - char *func; - char *module; - int enable; +struct proc_timens_offset { + int clockid; + struct timespec64 val; }; -enum { - FTRACE_HASH_FL_MOD = 1, +union futex_key { + struct { + u64 i_seq; + long unsigned int pgoff; + unsigned int offset; + } shared; + struct { + union { + struct mm_struct *mm; + u64 __tmp; + }; + long unsigned int address; + unsigned int offset; + } private; + struct { + u64 ptr; + long unsigned int word; + unsigned int offset; + } both; }; -struct ftrace_func_command { +struct futex_pi_state { struct list_head list; - char *name; - int (*func)(struct trace_array *, struct ftrace_hash *, char *, char *, char *, int); + struct rt_mutex_base pi_mutex; + struct task_struct *owner; + refcount_t refcount; + union futex_key key; }; -struct ftrace_probe_ops { - void (*func)(long unsigned int, long unsigned int, struct trace_array *, struct ftrace_probe_ops *, void *); - int (*init)(struct ftrace_probe_ops *, struct trace_array *, long unsigned int, void *, void **); - void (*free)(struct ftrace_probe_ops *, struct trace_array *, long unsigned int, void *); - int (*print)(struct seq_file *, long unsigned int, struct ftrace_probe_ops *, void *); +struct futex_q { + struct plist_node list; + struct task_struct *task; + spinlock_t *lock_ptr; + union futex_key key; + struct futex_pi_state *pi_state; + struct rt_mutex_waiter *rt_waiter; + union futex_key *requeue_pi_key; + u32 bitset; + atomic_t requeue_state; }; -typedef int (*ftrace_mapper_func)(void *); +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 trace_parser { - bool cont; - char *buffer; - unsigned int idx; - unsigned int size; +struct futex_hash_bucket { + atomic_t waiters; + spinlock_t lock; + struct plist_head chain; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -enum trace_iterator_bits { - TRACE_ITER_PRINT_PARENT_BIT = 0, - TRACE_ITER_SYM_OFFSET_BIT = 1, - TRACE_ITER_SYM_ADDR_BIT = 2, - TRACE_ITER_VERBOSE_BIT = 3, - TRACE_ITER_RAW_BIT = 4, - TRACE_ITER_HEX_BIT = 5, - TRACE_ITER_BIN_BIT = 6, - TRACE_ITER_BLOCK_BIT = 7, - TRACE_ITER_PRINTK_BIT = 8, - TRACE_ITER_ANNOTATE_BIT = 9, - TRACE_ITER_USERSTACKTRACE_BIT = 10, - TRACE_ITER_SYM_USEROBJ_BIT = 11, - TRACE_ITER_PRINTK_MSGONLY_BIT = 12, - TRACE_ITER_CONTEXT_INFO_BIT = 13, - TRACE_ITER_LATENCY_FMT_BIT = 14, - TRACE_ITER_RECORD_CMD_BIT = 15, - TRACE_ITER_RECORD_TGID_BIT = 16, - TRACE_ITER_OVERWRITE_BIT = 17, - TRACE_ITER_STOP_ON_FREE_BIT = 18, - TRACE_ITER_IRQ_INFO_BIT = 19, - TRACE_ITER_MARKERS_BIT = 20, - TRACE_ITER_EVENT_FORK_BIT = 21, - TRACE_ITER_PAUSE_ON_TRACE_BIT = 22, - 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, +enum futex_access { + FUTEX_READ = 0, + FUTEX_WRITE = 1, }; -struct event_subsystem { - struct list_head list; - const char *name; - struct event_filter *filter; - int ref_count; +struct cfd_percpu { + call_single_data_t csd; }; -enum regex_type { - MATCH_FULL = 0, - MATCH_FRONT_ONLY = 1, - MATCH_MIDDLE_ONLY = 2, - MATCH_END_ONLY = 3, - MATCH_GLOB = 4, - MATCH_INDEX = 5, +struct call_function_data { + struct cfd_percpu *pcpu; + cpumask_var_t cpumask; + cpumask_var_t cpumask_ipi; }; -struct tracer_stat { - const char *name; - void * (*stat_start)(struct tracer_stat *); - void * (*stat_next)(void *, int); - cmp_func_t stat_cmp; - int (*stat_show)(struct seq_file *, void *); - void (*stat_release)(void *); - int (*stat_headers)(struct seq_file *); +struct smp_call_on_cpu_struct { + struct work_struct work; + struct completion done; + int (*func)(void *); + void *data; + int ret; + int cpu; }; -enum { - FTRACE_MODIFY_ENABLE_FL = 1, - FTRACE_MODIFY_MAY_SLEEP_FL = 2, +typedef short unsigned int __kernel_old_uid_t; + +typedef short unsigned int __kernel_old_gid_t; + +typedef __kernel_old_uid_t old_uid_t; + +typedef __kernel_old_gid_t old_gid_t; + +struct latch_tree_root { + seqcount_latch_t seq; + struct rb_root tree[2]; }; -struct ftrace_profile { - struct hlist_node node; - long unsigned int ip; - long unsigned int counter; - long long unsigned int time; - long long unsigned int time_squared; +struct latch_tree_ops { + bool (*less)(struct latch_tree_node *, struct latch_tree_node *); + int (*comp)(void *, struct latch_tree_node *); }; -struct ftrace_profile_page { - struct ftrace_profile_page *next; - long unsigned int index; - struct ftrace_profile records[0]; +struct modversion_info { + long unsigned int crc; + char name[56]; }; -struct ftrace_profile_stat { - atomic_t disabled; - struct hlist_head *hash; - struct ftrace_profile_page *pages; - struct ftrace_profile_page *start; - struct tracer_stat stat; +struct module_use { + struct list_head source_list; + struct list_head target_list; + struct module *source; + struct module *target; }; -struct ftrace_func_probe { - struct ftrace_probe_ops *probe_ops; - struct ftrace_ops ops; - struct trace_array *tr; - struct list_head list; - void *data; - int ref; +struct module_sect_attr { + struct bin_attribute battr; + long unsigned int address; }; -struct ftrace_page { - struct ftrace_page *next; - struct dyn_ftrace *records; - int index; - int order; +struct module_sect_attrs { + struct attribute_group grp; + unsigned int nsections; + struct module_sect_attr attrs[0]; }; -struct ftrace_rec_iter { - struct ftrace_page *pg; - int index; +struct module_notes_attrs { + struct kobject *dir; + unsigned int notes; + struct bin_attribute attrs[0]; }; -struct ftrace_iterator { - loff_t pos; - loff_t func_pos; - loff_t mod_pos; - struct ftrace_page *pg; - struct dyn_ftrace *func; - struct ftrace_func_probe *probe; - struct ftrace_func_entry *probe_entry; - struct trace_parser parser; - struct ftrace_hash *hash; - struct ftrace_ops *ops; - struct trace_array *tr; - struct list_head *mod_list; - int pidx; - int idx; - unsigned int flags; +enum kernel_read_file_id { + READING_UNKNOWN = 0, + READING_FIRMWARE = 1, + READING_MODULE = 2, + READING_KEXEC_IMAGE = 3, + READING_KEXEC_INITRAMFS = 4, + READING_POLICY = 5, + READING_X509_CERTIFICATE = 6, + READING_MAX_ID = 7, }; -struct ftrace_glob { - char *search; - unsigned int len; - int type; +enum kernel_load_data_id { + LOADING_UNKNOWN = 0, + LOADING_FIRMWARE = 1, + LOADING_MODULE = 2, + LOADING_KEXEC_IMAGE = 3, + LOADING_KEXEC_INITRAMFS = 4, + LOADING_POLICY = 5, + LOADING_X509_CERTIFICATE = 6, + LOADING_MAX_ID = 7, }; -struct ftrace_func_map { - struct ftrace_func_entry entry; - void *data; +enum { + PROC_ENTRY_PERMANENT = 1, }; -struct ftrace_func_mapper { - struct ftrace_hash hash; +struct load_info { + const char *name; + struct module *mod; + Elf64_Ehdr *hdr; + long unsigned int len; + Elf64_Shdr *sechdrs; + char *secstrings; + char *strtab; + long unsigned int symoffs; + long unsigned int stroffs; + long unsigned int init_typeoffs; + long unsigned int core_typeoffs; + struct _ddebug *debug; + unsigned int num_debug; + bool sig_ok; + long unsigned int mod_kallsyms_init_off; + struct { + unsigned int sym; + unsigned int str; + unsigned int mod; + unsigned int vers; + unsigned int info; + unsigned int pcpu; + } index; }; -struct ftrace_direct_func { - struct list_head next; - long unsigned int addr; - int count; +struct trace_event_raw_module_load { + struct trace_entry ent; + unsigned int taints; + u32 __data_loc_name; + char __data[0]; }; -enum graph_filter_type { - GRAPH_FILTER_NOTRACE = 0, - GRAPH_FILTER_FUNCTION = 1, +struct trace_event_raw_module_free { + struct trace_entry ent; + u32 __data_loc_name; + char __data[0]; }; -struct ftrace_graph_data { - struct ftrace_hash *hash; - struct ftrace_func_entry *entry; - int idx; - enum graph_filter_type type; - struct ftrace_hash *new_hash; - const struct seq_operations *seq_ops; - struct trace_parser parser; +struct trace_event_raw_module_refcnt { + struct trace_entry ent; + long unsigned int ip; + int refcnt; + u32 __data_loc_name; + char __data[0]; }; -struct ftrace_mod_func { - struct list_head list; - char *name; +struct trace_event_raw_module_request { + struct trace_entry ent; long unsigned int ip; - unsigned int size; + bool wait; + u32 __data_loc_name; + char __data[0]; }; -struct ftrace_mod_map { - struct callback_head rcu; - struct list_head list; - struct module *mod; - long unsigned int start_addr; - long unsigned int end_addr; - struct list_head funcs; - unsigned int num_funcs; +struct trace_event_data_offsets_module_load { + u32 name; }; -struct ftrace_init_func { - struct list_head list; - long unsigned int ip; +struct trace_event_data_offsets_module_free { + u32 name; }; -enum ring_buffer_type { - RINGBUF_TYPE_DATA_TYPE_LEN_MAX = 28, - RINGBUF_TYPE_PADDING = 29, - RINGBUF_TYPE_TIME_EXTEND = 30, - RINGBUF_TYPE_TIME_STAMP = 31, +struct trace_event_data_offsets_module_refcnt { + u32 name; }; -enum ring_buffer_flags { - RB_FL_OVERWRITE = 1, +struct trace_event_data_offsets_module_request { + u32 name; }; -struct ring_buffer_per_cpu; +typedef void (*btf_trace_module_load)(void *, struct module *); -struct buffer_page; +typedef void (*btf_trace_module_free)(void *, struct module *); -struct ring_buffer_iter { - struct ring_buffer_per_cpu *cpu_buffer; - long unsigned int head; - long unsigned int next_event; - struct buffer_page *head_page; - struct buffer_page *cache_reader_page; - long unsigned int cache_read; - u64 read_stamp; - u64 page_stamp; - struct ring_buffer_event *event; - int missed_events; -}; +typedef void (*btf_trace_module_get)(void *, struct module *, long unsigned int); -struct rb_irq_work { - struct irq_work work; - wait_queue_head_t waiters; - wait_queue_head_t full_waiters; - bool waiters_pending; - bool full_waiters_pending; - bool wakeup_full; -}; +typedef void (*btf_trace_module_put)(void *, struct module *, long unsigned int); -struct trace_buffer { - unsigned int flags; - int cpus; - atomic_t record_disabled; - cpumask_var_t cpumask; - struct lock_class_key *reader_lock_key; - struct mutex mutex; - struct ring_buffer_per_cpu **buffers; - struct hlist_node node; - u64 (*clock)(); - struct rb_irq_work irq_work; - bool time_stamp_abs; +typedef void (*btf_trace_module_request)(void *, char *, bool, long unsigned int); + +struct mod_tree_root { + struct latch_tree_root root; + long unsigned int addr_min; + long unsigned int addr_max; }; -enum { - RB_LEN_TIME_EXTEND = 8, - RB_LEN_TIME_STAMP = 8, +enum mod_license { + NOT_GPL_ONLY = 0, + GPL_ONLY = 1, }; -struct buffer_data_page { - u64 time_stamp; - local_t commit; - unsigned char data[0]; +struct symsearch { + const struct kernel_symbol *start; + const struct kernel_symbol *stop; + const s32 *crcs; + enum mod_license license; }; -struct buffer_page { - struct list_head list; - local_t write; - unsigned int read; - local_t entries; - long unsigned int real_end; - struct buffer_data_page *page; +struct find_symbol_arg { + const char *name; + bool gplok; + bool warn; + struct module *owner; + const s32 *crc; + const struct kernel_symbol *sym; + enum mod_license license; }; -struct rb_event_info { - u64 ts; - u64 delta; - u64 before; - u64 after; - long unsigned int length; - struct buffer_page *tail_page; - int add_timestamp; +struct mod_initfree { + struct llist_node node; + void *module_init; }; -enum { - RB_ADD_STAMP_NONE = 0, - RB_ADD_STAMP_EXTEND = 2, - RB_ADD_STAMP_ABSOLUTE = 4, - RB_ADD_STAMP_FORCE = 8, +struct module_signature { + u8 algo; + u8 hash; + u8 id_type; + u8 signer_len; + u8 key_id_len; + u8 __pad[3]; + __be32 sig_len; }; -enum { - RB_CTX_TRANSITION = 0, - RB_CTX_NMI = 1, - RB_CTX_IRQ = 2, - RB_CTX_SOFTIRQ = 3, - RB_CTX_NORMAL = 4, - RB_CTX_MAX = 5, +enum pkey_id_type { + PKEY_ID_PGP = 0, + PKEY_ID_X509 = 1, + PKEY_ID_PKCS7 = 2, }; -struct rb_time_struct { - local64_t time; +struct kallsym_iter { + loff_t pos; + loff_t pos_arch_end; + loff_t pos_mod_end; + loff_t pos_ftrace_mod_end; + loff_t pos_bpf_end; + long unsigned int value; + unsigned int nameoff; + char type; + char name[128]; + char module_name[56]; + int exported; + int show_value; }; -typedef struct rb_time_struct rb_time_t; +typedef __u16 comp_t; -struct ring_buffer_per_cpu { - int cpu; - atomic_t record_disabled; - atomic_t resize_disabled; - struct trace_buffer *buffer; - raw_spinlock_t reader_lock; - arch_spinlock_t lock; - struct lock_class_key lock_key; - struct buffer_data_page *free_page; - long unsigned int nr_pages; - unsigned int current_context; - struct list_head *pages; - struct buffer_page *head_page; - struct buffer_page *tail_page; - struct buffer_page *commit_page; - struct buffer_page *reader_page; - long unsigned int lost_events; - long unsigned int last_overrun; - long unsigned int nest; - local_t entries_bytes; - local_t entries; - local_t overrun; - local_t commit_overrun; - local_t dropped_events; - local_t committing; - local_t commits; - local_t pages_touched; - local_t pages_read; - long int last_pages_touch; - size_t shortest_full; - long unsigned int read; - 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; - struct work_struct update_pages_work; - struct completion update_done; - struct rb_irq_work irq_work; +struct acct_v3 { + char ac_flag; + char ac_version; + __u16 ac_tty; + __u32 ac_exitcode; + __u32 ac_uid; + __u32 ac_gid; + __u32 ac_pid; + __u32 ac_ppid; + __u32 ac_btime; + __u32 ac_etime; + comp_t ac_utime; + comp_t ac_stime; + comp_t ac_mem; + comp_t ac_io; + comp_t ac_rw; + comp_t ac_minflt; + comp_t ac_majflt; + comp_t ac_swaps; + char ac_comm[16]; }; -enum trace_iter_flags { - TRACE_FILE_LAT_FMT = 1, - TRACE_FILE_ANNOTATE = 2, - TRACE_FILE_TIME_IN_NS = 4, +typedef struct acct_v3 acct_t; + +struct fs_pin { + wait_queue_head_t wait; + int done; + struct hlist_node s_list; + struct hlist_node m_list; + void (*kill)(struct fs_pin *); }; -enum trace_flag_type { - TRACE_FLAG_IRQS_OFF = 1, - TRACE_FLAG_IRQS_NOSUPPORT = 2, - TRACE_FLAG_NEED_RESCHED = 4, - TRACE_FLAG_HARDIRQ = 8, - TRACE_FLAG_SOFTIRQ = 16, - TRACE_FLAG_PREEMPT_RESCHED = 32, - TRACE_FLAG_NMI = 64, - TRACE_FLAG_BH_OFF = 128, +struct bsd_acct_struct { + struct fs_pin pin; + atomic_long_t count; + struct callback_head rcu; + struct mutex lock; + int active; + long unsigned int needcheck; + struct file *file; + struct pid_namespace *ns; + struct work_struct work; + struct completion done; }; -enum trace_type { - __TRACE_FIRST_TYPE = 0, - TRACE_FN = 1, - TRACE_CTX = 2, - TRACE_WAKE = 3, - TRACE_STACK = 4, - TRACE_PRINT = 5, - TRACE_BPRINT = 6, - TRACE_MMIO_RW = 7, - TRACE_MMIO_MAP = 8, - TRACE_BRANCH = 9, - TRACE_GRAPH_RET = 10, - TRACE_GRAPH_ENT = 11, - TRACE_USER_STACK = 12, - TRACE_BLK = 13, - TRACE_BPUTS = 14, - TRACE_HWLAT = 15, - TRACE_OSNOISE = 16, - TRACE_TIMERLAT = 17, - TRACE_RAW_DATA = 18, - TRACE_FUNC_REPEATS = 19, - __TRACE_LAST_TYPE = 20, +typedef u32 note_buf_t[92]; + +struct compat_kexec_segment { + compat_uptr_t buf; + compat_size_t bufsz; + compat_ulong_t mem; + compat_size_t memsz; }; -struct ftrace_entry { - struct trace_entry ent; - long unsigned int ip; - long unsigned int parent_ip; +enum migrate_reason { + MR_COMPACTION = 0, + MR_MEMORY_FAILURE = 1, + MR_MEMORY_HOTPLUG = 2, + MR_SYSCALL = 3, + MR_MEMPOLICY_MBIND = 4, + MR_NUMA_MISPLACED = 5, + MR_CONTIG_RANGE = 6, + MR_LONGTERM_PIN = 7, + MR_DEMOTION = 8, + MR_TYPES = 9, }; -struct ctx_switch_entry { - struct trace_entry ent; - unsigned int prev_pid; - unsigned int next_pid; - unsigned int next_cpu; - unsigned char prev_prio; - unsigned char prev_state; - unsigned char next_prio; - unsigned char next_state; +typedef __kernel_ulong_t ino_t; + +enum kernfs_node_type { + KERNFS_DIR = 1, + KERNFS_FILE = 2, + KERNFS_LINK = 4, }; -struct stack_entry { - struct trace_entry ent; - int size; - long unsigned int caller[8]; +enum kernfs_root_flag { + KERNFS_ROOT_CREATE_DEACTIVATED = 1, + KERNFS_ROOT_EXTRA_OPEN_PERM_CHECK = 2, + KERNFS_ROOT_SUPPORT_EXPORTOP = 4, + KERNFS_ROOT_SUPPORT_USER_XATTR = 8, }; -struct userstack_entry { - struct trace_entry ent; - unsigned int tgid; - long unsigned int caller[8]; +struct kernfs_fs_context { + struct kernfs_root *root; + void *ns_tag; + long unsigned int magic; + bool new_sb_created; }; -struct bprint_entry { - struct trace_entry ent; - long unsigned int ip; - const char *fmt; - u32 buf[0]; +enum bpf_link_type { + BPF_LINK_TYPE_UNSPEC = 0, + BPF_LINK_TYPE_RAW_TRACEPOINT = 1, + BPF_LINK_TYPE_TRACING = 2, + BPF_LINK_TYPE_CGROUP = 3, + BPF_LINK_TYPE_ITER = 4, + BPF_LINK_TYPE_NETNS = 5, + BPF_LINK_TYPE_XDP = 6, + BPF_LINK_TYPE_PERF_EVENT = 7, + MAX_BPF_LINK_TYPE = 8, }; -struct print_entry { - struct trace_entry ent; - long unsigned int ip; - char buf[0]; +struct bpf_link_info { + __u32 type; + __u32 id; + __u32 prog_id; + union { + struct { + __u64 tp_name; + __u32 tp_name_len; + } raw_tracepoint; + struct { + __u32 attach_type; + __u32 target_obj_id; + __u32 target_btf_id; + } tracing; + struct { + __u64 cgroup_id; + __u32 attach_type; + } cgroup; + struct { + __u64 target_name; + __u32 target_name_len; + union { + struct { + __u32 map_id; + } map; + }; + } iter; + struct { + __u32 netns_ino; + __u32 attach_type; + } netns; + struct { + __u32 ifindex; + } xdp; + }; }; -struct raw_data_entry { - struct trace_entry ent; - unsigned int id; - char buf[0]; +struct bpf_link_ops; + +struct bpf_link { + atomic64_t refcnt; + u32 id; + enum bpf_link_type type; + const struct bpf_link_ops *ops; + struct bpf_prog *prog; + struct work_struct work; }; -struct bputs_entry { - struct trace_entry ent; - long unsigned int ip; - const char *str; +struct bpf_link_ops { + void (*release)(struct bpf_link *); + void (*dealloc)(struct bpf_link *); + int (*detach)(struct bpf_link *); + int (*update_prog)(struct bpf_link *, struct bpf_prog *, struct bpf_prog *); + void (*show_fdinfo)(const struct bpf_link *, struct seq_file *); + int (*fill_link_info)(const struct bpf_link *, struct bpf_link_info *); }; -struct hwlat_entry { - struct trace_entry ent; - u64 duration; - u64 outer_duration; - u64 nmi_total_ts; - struct timespec64 timestamp; - unsigned int nmi_count; - unsigned int seqnum; - unsigned int count; +struct bpf_cgroup_link { + struct bpf_link link; + struct cgroup *cgroup; + enum bpf_attach_type type; }; -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 { + CGRP_NOTIFY_ON_RELEASE = 0, + CGRP_CPUSET_CLONE_CHILDREN = 1, + CGRP_FREEZE = 2, + CGRP_FROZEN = 3, + CGRP_KILL = 4, }; -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; +enum { + CGRP_ROOT_NOPREFIX = 2, + CGRP_ROOT_XATTR = 4, + CGRP_ROOT_NS_DELEGATE = 8, + CGRP_ROOT_CPUSET_V2_MODE = 16, + CGRP_ROOT_MEMORY_LOCAL_EVENTS = 32, + CGRP_ROOT_MEMORY_RECURSIVE_PROT = 64, }; -struct timerlat_entry { - struct trace_entry ent; - unsigned int seqnum; - int context; - u64 timer_latency; +struct cgroup_taskset { + struct list_head src_csets; + struct list_head dst_csets; + int nr_tasks; + int ssid; + struct list_head *csets; + struct css_set *cur_cset; + struct task_struct *cur_task; }; -enum trace_iterator_flags { - TRACE_ITER_PRINT_PARENT = 1, - TRACE_ITER_SYM_OFFSET = 2, - TRACE_ITER_SYM_ADDR = 4, - TRACE_ITER_VERBOSE = 8, - TRACE_ITER_RAW = 16, - TRACE_ITER_HEX = 32, - TRACE_ITER_BIN = 64, - TRACE_ITER_BLOCK = 128, - TRACE_ITER_PRINTK = 256, - TRACE_ITER_ANNOTATE = 512, - TRACE_ITER_USERSTACKTRACE = 1024, - TRACE_ITER_SYM_USEROBJ = 2048, - TRACE_ITER_PRINTK_MSGONLY = 4096, - TRACE_ITER_CONTEXT_INFO = 8192, - TRACE_ITER_LATENCY_FMT = 16384, - TRACE_ITER_RECORD_CMD = 32768, - TRACE_ITER_RECORD_TGID = 65536, - TRACE_ITER_OVERWRITE = 131072, - TRACE_ITER_STOP_ON_FREE = 262144, - TRACE_ITER_IRQ_INFO = 524288, - TRACE_ITER_MARKERS = 1048576, - TRACE_ITER_EVENT_FORK = 2097152, - TRACE_ITER_PAUSE_ON_TRACE = 4194304, - TRACE_ITER_HASH_PTR = 8388608, - TRACE_ITER_FUNCTION = 16777216, - TRACE_ITER_FUNC_FORK = 33554432, - TRACE_ITER_DISPLAY_GRAPH = 67108864, - TRACE_ITER_STACKTRACE = 134217728, +struct css_task_iter { + struct cgroup_subsys *ss; + unsigned int flags; + struct list_head *cset_pos; + struct list_head *cset_head; + struct list_head *tcset_pos; + struct list_head *tcset_head; + struct list_head *task_pos; + struct list_head *cur_tasks_head; + struct css_set *cur_cset; + struct css_set *cur_dcset; + struct task_struct *cur_task; + struct list_head iters_node; }; -struct trace_mark { - long long unsigned int val; - char sym; +struct cgroup_fs_context { + struct kernfs_fs_context kfc; + struct cgroup_root *root; + struct cgroup_namespace *ns; + unsigned int flags; + bool cpuset_clone_children; + bool none; + bool all_ss; + u16 subsys_mask; + char *name; + char *release_agent; }; -typedef struct vfsmount * (*debugfs_automount_t)(struct dentry *, void *); +struct cgroup_pidlist; -struct trace_export { - struct trace_export *next; - void (*write)(struct trace_export *, const void *, unsigned int); - int flags; +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; }; -enum fsnotify_data_type { - FSNOTIFY_EVENT_NONE = 0, - FSNOTIFY_EVENT_PATH = 1, - FSNOTIFY_EVENT_INODE = 2, - FSNOTIFY_EVENT_DENTRY = 3, - FSNOTIFY_EVENT_ERROR = 4, +struct cgrp_cset_link { + struct cgroup *cgrp; + struct css_set *cset; + struct list_head cset_link; + struct list_head cgrp_link; }; -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, +struct cgroup_mgctx { + struct list_head preloaded_src_csets; + struct list_head preloaded_dst_csets; + struct cgroup_taskset tset; + u16 ss_mask; }; -struct trace_min_max_param { - struct mutex *lock; - u64 *val; - u64 *min; - u64 *max; +struct trace_event_raw_cgroup_root { + struct trace_entry ent; + int root; + u16 ss_mask; + u32 __data_loc_name; + char __data[0]; }; -struct trace_eval_map_head { - struct module *mod; - long unsigned int length; +struct trace_event_raw_cgroup { + struct trace_entry ent; + int root; + int level; + u64 id; + u32 __data_loc_path; + char __data[0]; }; -union trace_eval_map_item; - -struct trace_eval_map_tail { - union trace_eval_map_item *next; - const char *end; +struct trace_event_raw_cgroup_migrate { + struct trace_entry ent; + int dst_root; + int dst_level; + u64 dst_id; + int pid; + u32 __data_loc_dst_path; + u32 __data_loc_comm; + char __data[0]; }; -union trace_eval_map_item { - struct trace_eval_map map; - struct trace_eval_map_head head; - struct trace_eval_map_tail tail; +struct trace_event_raw_cgroup_event { + struct trace_entry ent; + int root; + int level; + u64 id; + u32 __data_loc_path; + int val; + char __data[0]; }; -struct saved_cmdlines_buffer { - unsigned int map_pid_to_cmdline[32769]; - unsigned int *map_cmdline_to_pid; - unsigned int cmdline_num; - int cmdline_idx; - char *saved_cmdlines; +struct trace_event_data_offsets_cgroup_root { + u32 name; }; -struct ftrace_stack { - long unsigned int calls[1024]; +struct trace_event_data_offsets_cgroup { + u32 path; }; -struct ftrace_stacks { - struct ftrace_stack stacks[4]; +struct trace_event_data_offsets_cgroup_migrate { + u32 dst_path; + u32 comm; }; -struct trace_buffer_struct { - int nesting; - char buffer[4096]; +struct trace_event_data_offsets_cgroup_event { + u32 path; }; -struct ftrace_buffer_info { - struct trace_iterator iter; - void *spare; - unsigned int spare_cpu; - unsigned int read; -}; +typedef void (*btf_trace_cgroup_setup_root)(void *, struct cgroup_root *); -struct err_info { - const char **errs; - u8 type; - u16 pos; - u64 ts; -}; +typedef void (*btf_trace_cgroup_destroy_root)(void *, struct cgroup_root *); -struct tracing_log_err { - struct list_head list; - struct err_info info; - char loc[128]; - char *cmd; -}; +typedef void (*btf_trace_cgroup_remount)(void *, struct cgroup_root *); -struct buffer_ref { - struct trace_buffer *buffer; - void *page; - int cpu; - refcount_t refcount; -}; +typedef void (*btf_trace_cgroup_mkdir)(void *, struct cgroup *, const char *); -struct ftrace_func_mapper; +typedef void (*btf_trace_cgroup_rmdir)(void *, struct cgroup *, const char *); -struct stat_node { - struct rb_node node; - void *stat; -}; +typedef void (*btf_trace_cgroup_release)(void *, struct cgroup *, const char *); -struct stat_session { - struct list_head session_list; - struct tracer_stat *ts; - struct rb_root stat_root; - struct mutex stat_mutex; - struct dentry *file; -}; +typedef void (*btf_trace_cgroup_rename)(void *, struct cgroup *, const char *); -typedef int (*tracing_map_cmp_fn_t)(void *, void *); +typedef void (*btf_trace_cgroup_freeze)(void *, struct cgroup *, const char *); -struct tracing_map_field { - tracing_map_cmp_fn_t cmp_fn; - union { - atomic64_t sum; - unsigned int offset; - }; -}; +typedef void (*btf_trace_cgroup_unfreeze)(void *, struct cgroup *, const char *); -struct tracing_map; +typedef void (*btf_trace_cgroup_attach_task)(void *, struct cgroup *, const char *, struct task_struct *, bool); -struct tracing_map_elt { - struct tracing_map *map; - struct tracing_map_field *fields; - atomic64_t *vars; - bool *var_set; - void *key; - void *private_data; -}; +typedef void (*btf_trace_cgroup_transfer_tasks)(void *, struct cgroup *, const char *, struct task_struct *, bool); -struct tracing_map_sort_key { - unsigned int field_idx; - bool descending; -}; +typedef void (*btf_trace_cgroup_notify_populated)(void *, struct cgroup *, const char *, int); -struct tracing_map_array; +typedef void (*btf_trace_cgroup_notify_frozen)(void *, struct cgroup *, const char *, int); -struct tracing_map_ops; +enum cgroup_opt_features { + OPT_FEATURE_PRESSURE = 0, + OPT_FEATURE_COUNT = 1, +}; -struct tracing_map { - unsigned int key_size; - unsigned int map_bits; - unsigned int map_size; - unsigned int max_elts; - atomic_t next_elt; - struct tracing_map_array *elts; - struct tracing_map_array *map; - const struct tracing_map_ops *ops; - void *private_data; - struct tracing_map_field fields[6]; - unsigned int n_fields; - int key_idx[3]; - unsigned int n_keys; - struct tracing_map_sort_key sort_key; - unsigned int n_vars; - atomic64_t hits; - atomic64_t drops; +enum cgroup2_param { + Opt_nsdelegate = 0, + Opt_memory_localevents = 1, + Opt_memory_recursiveprot = 2, + nr__cgroup2_params = 3, }; -struct tracing_map_entry { - u32 key; - struct tracing_map_elt *val; +struct cgroupstats { + __u64 nr_sleeping; + __u64 nr_running; + __u64 nr_stopped; + __u64 nr_uninterruptible; + __u64 nr_io_wait; }; -struct tracing_map_sort_entry { - void *key; - struct tracing_map_elt *elt; - bool elt_copied; - bool dup; +enum cgroup_filetype { + CGROUP_FILE_PROCS = 0, + CGROUP_FILE_TASKS = 1, }; -struct tracing_map_array { - unsigned int entries_per_page; - unsigned int entry_size_shift; - unsigned int entry_shift; - unsigned int entry_mask; - unsigned int n_pages; - void **pages; +struct cgroup_pidlist { + struct { + enum cgroup_filetype type; + struct pid_namespace *ns; + } key; + pid_t *list; + int length; + struct list_head links; + struct cgroup *owner; + struct delayed_work destroy_dwork; }; -struct tracing_map_ops { - int (*elt_alloc)(struct tracing_map_elt *); - void (*elt_free)(struct tracing_map_elt *); - void (*elt_clear)(struct tracing_map_elt *); - void (*elt_init)(struct tracing_map_elt *); +enum cgroup1_param { + Opt_all = 0, + Opt_clone_children = 1, + Opt_cpuset_v2_mode = 2, + Opt_name = 3, + Opt_none = 4, + Opt_noprefix = 5, + Opt_release_agent = 6, + Opt_xattr = 7, }; -struct trace_bprintk_fmt { - struct list_head list; - const char *fmt; +enum freezer_state_flags { + CGROUP_FREEZER_ONLINE = 1, + CGROUP_FREEZING_SELF = 2, + CGROUP_FREEZING_PARENT = 4, + CGROUP_FROZEN = 8, + CGROUP_FREEZING = 6, }; -enum { - TRACE_FUNC_NO_OPTS = 0, - TRACE_FUNC_OPT_STACK = 1, - TRACE_FUNC_OPT_NO_REPEATS = 2, - TRACE_FUNC_OPT_HIGHEST_BIT = 4, +struct freezer { + struct cgroup_subsys_state css; + unsigned int state; }; -enum { - MODE_NONE = 0, - MODE_ROUND_ROBIN = 1, - MODE_PER_CPU = 2, - MODE_MAX = 3, +struct pids_cgroup { + struct cgroup_subsys_state css; + atomic64_t counter; + atomic64_t limit; + struct cgroup_file events_file; + atomic64_t events_limit; }; -struct hwlat_kthread_data { - struct task_struct *kthread; - u64 nmi_ts_start; - u64 nmi_total_ts; - int nmi_count; - int nmi_cpu; -}; +typedef struct { + char *from; + char *to; +} substring_t; -struct hwlat_sample { - u64 seqnum; - u64 duration; - u64 outer_duration; - u64 nmi_total_ts; - struct timespec64 timestamp; - int nmi_count; - int count; +enum rdmacg_resource_type { + RDMACG_RESOURCE_HCA_HANDLE = 0, + RDMACG_RESOURCE_HCA_OBJECT = 1, + RDMACG_RESOURCE_MAX = 2, }; -struct hwlat_data { - struct mutex lock; - u64 count; - u64 sample_window; - u64 sample_width; - int thread_mode; +struct rdma_cgroup { + struct cgroup_subsys_state css; + struct list_head rpools; }; -struct trace_event_raw_thread_noise { - struct trace_entry ent; - char comm[16]; - u64 start; - u64 duration; - pid_t pid; - char __data[0]; +struct rdmacg_device { + struct list_head dev_node; + struct list_head rpools; + char *name; }; -struct trace_event_raw_softirq_noise { - struct trace_entry ent; - u64 start; - u64 duration; - int vector; - char __data[0]; +enum rdmacg_file_type { + RDMACG_RESOURCE_TYPE_MAX = 0, + RDMACG_RESOURCE_TYPE_STAT = 1, }; -struct trace_event_raw_irq_noise { - struct trace_entry ent; - u64 start; - u64 duration; - u32 __data_loc_desc; - int vector; - char __data[0]; +struct rdmacg_resource { + int max; + int usage; }; -struct trace_event_raw_nmi_noise { - struct trace_entry ent; - u64 start; - u64 duration; - char __data[0]; +struct rdmacg_resource_pool { + struct rdmacg_device *device; + struct rdmacg_resource resources[2]; + struct list_head cg_node; + struct list_head dev_node; + u64 usage_sum; + int num_max_cnt; }; -struct trace_event_raw_sample_threshold { - struct trace_entry ent; - u64 start; - u64 duration; - u64 interference; - char __data[0]; +struct fmeter { + int cnt; + int val; + time64_t time; + spinlock_t lock; }; -struct trace_event_data_offsets_thread_noise {}; - -struct trace_event_data_offsets_softirq_noise {}; - -struct trace_event_data_offsets_irq_noise { - u32 desc; +struct cpuset { + struct cgroup_subsys_state css; + long unsigned int flags; + cpumask_var_t cpus_allowed; + nodemask_t mems_allowed; + cpumask_var_t effective_cpus; + nodemask_t effective_mems; + cpumask_var_t subparts_cpus; + nodemask_t old_mems_allowed; + struct fmeter fmeter; + int attach_in_progress; + int pn; + int relax_domain_level; + int nr_subparts_cpus; + int partition_root_state; + int use_parent_ecpus; + int child_ecpus_count; + struct cgroup_file partition_file; }; -struct trace_event_data_offsets_nmi_noise {}; - -struct trace_event_data_offsets_sample_threshold {}; - -typedef void (*btf_trace_thread_noise)(void *, struct task_struct *, u64, u64); +struct tmpmasks { + cpumask_var_t addmask; + cpumask_var_t delmask; + cpumask_var_t new_cpus; +}; -typedef void (*btf_trace_softirq_noise)(void *, int, u64, u64); +typedef enum { + CS_ONLINE = 0, + CS_CPU_EXCLUSIVE = 1, + CS_MEM_EXCLUSIVE = 2, + CS_MEM_HARDWALL = 3, + CS_MEMORY_MIGRATE = 4, + CS_SCHED_LOAD_BALANCE = 5, + CS_SPREAD_PAGE = 6, + CS_SPREAD_SLAB = 7, +} cpuset_flagbits_t; -typedef void (*btf_trace_irq_noise)(void *, int, const char *, u64, u64); +enum subparts_cmd { + partcmd_enable = 0, + partcmd_disable = 1, + partcmd_update = 2, +}; -typedef void (*btf_trace_nmi_noise)(void *, u64, u64); +struct cpuset_migrate_mm_work { + struct work_struct work; + struct mm_struct *mm; + nodemask_t from; + nodemask_t to; +}; -typedef void (*btf_trace_sample_threshold)(void *, u64, u64, u64); +typedef enum { + FILE_MEMORY_MIGRATE = 0, + FILE_CPULIST = 1, + FILE_MEMLIST = 2, + FILE_EFFECTIVE_CPULIST = 3, + FILE_EFFECTIVE_MEMLIST = 4, + FILE_SUBPARTS_CPULIST = 5, + FILE_CPU_EXCLUSIVE = 6, + FILE_MEM_EXCLUSIVE = 7, + FILE_MEM_HARDWALL = 8, + FILE_SCHED_LOAD_BALANCE = 9, + FILE_PARTITION_ROOT = 10, + FILE_SCHED_RELAX_DOMAIN_LEVEL = 11, + FILE_MEMORY_PRESSURE_ENABLED = 12, + FILE_MEMORY_PRESSURE = 13, + FILE_SPREAD_PAGE = 14, + FILE_SPREAD_SLAB = 15, +} cpuset_filetype_t; -struct osnoise_instance { - struct list_head list; - struct trace_array *tr; +enum misc_res_type { + MISC_CG_RES_TYPES = 0, }; -struct osn_nmi { - u64 count; - u64 delta_start; +struct misc_res { + long unsigned int max; + atomic_long_t usage; + bool failed; }; -struct osn_irq { - u64 count; - u64 arrival_time; - u64 delta_start; +struct misc_cg { + struct cgroup_subsys_state css; + struct misc_res res[0]; }; -struct osn_softirq { - u64 count; - u64 arrival_time; - u64 delta_start; +struct kernel_pkey_query { + __u32 supported_ops; + __u32 key_size; + __u16 max_data_size; + __u16 max_sig_size; + __u16 max_enc_size; + __u16 max_dec_size; }; -struct osn_thread { - u64 count; - u64 arrival_time; - u64 delta_start; +enum kernel_pkey_operation { + kernel_pkey_encrypt = 0, + kernel_pkey_decrypt = 1, + kernel_pkey_sign = 2, + kernel_pkey_verify = 3, }; -struct osnoise_variables { - struct task_struct *kthread; - bool sampling; - pid_t pid; - struct osn_nmi nmi; - struct osn_irq irq; - struct osn_softirq softirq; - struct osn_thread thread; - local_t int_counter; +struct kernel_pkey_params { + struct key *key; + const char *encoding; + const char *hash_algo; + char *info; + __u32 in_len; + union { + __u32 out_len; + __u32 in2_len; + }; + enum kernel_pkey_operation op: 8; }; -struct timerlat_variables { - struct task_struct *kthread; - struct hrtimer timer; - u64 rel_period; - u64 abs_period; - bool tracing_thread; - u64 count; +struct key_preparsed_payload { + const char *orig_description; + char *description; + union key_payload payload; + const void *data; + size_t datalen; + size_t quotalen; + time64_t expiry; }; -struct osnoise_sample { - u64 runtime; - u64 noise; - u64 max_sample; - int hw_count; - int nmi_count; - int irq_count; - int softirq_count; - int thread_count; +struct key_match_data { + bool (*cmp)(const struct key *, const struct key_match_data *); + const void *raw_data; + void *preparsed; + unsigned int lookup_type; }; -struct timerlat_sample { - u64 timer_latency; - unsigned int seqnum; - int context; +struct idmap_key { + bool map_up; + u32 id; + u32 count; }; -struct osnoise_data { - u64 sample_period; - u64 sample_runtime; - u64 stop_tracing; - u64 stop_tracing_total; - u64 timerlat_period; - u64 print_stack; - int timerlat_tracer; - bool tainted; +struct ctl_path { + const char *procname; }; -struct trace_stack { - int stack_size; - int nr_entries; - long unsigned int calls[256]; +struct cpu_stop_done { + atomic_t nr_todo; + int ret; + struct completion completion; }; -enum { - TRACE_NOP_OPT_ACCEPT = 1, - TRACE_NOP_OPT_REFUSE = 2, +struct cpu_stopper { + struct task_struct *thread; + raw_spinlock_t lock; + bool enabled; + struct list_head works; + struct cpu_stop_work stop_work; + long unsigned int caller; + cpu_stop_fn_t fn; }; -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; - struct ftrace_graph_ret ret; +enum multi_stop_state { + MULTI_STOP_NONE = 0, + MULTI_STOP_PREPARE = 1, + MULTI_STOP_DISABLE_IRQ = 2, + MULTI_STOP_RUN = 3, + MULTI_STOP_EXIT = 4, }; -struct fgraph_cpu_data { - pid_t last_pid; - int depth; - int depth_irq; - int ignore; - long unsigned int enter_funcs[50]; +struct multi_stop_data { + cpu_stop_fn_t fn; + void *data; + unsigned int num_threads; + const struct cpumask *active_cpus; + enum multi_stop_state state; + atomic_t thread_ack; }; -struct fgraph_data { - struct fgraph_cpu_data *cpu_data; - struct ftrace_graph_ent_entry ent; - struct ftrace_graph_ret_entry ret; - int failed; - int cpu; - int: 32; -} __attribute__((packed)); +typedef int __kernel_mqd_t; -enum { - FLAGS_FILL_FULL = 268435456, - FLAGS_FILL_START = 536870912, - FLAGS_FILL_END = 805306368, -}; +typedef __kernel_mqd_t mqd_t; -struct blk_crypto_key; +enum audit_state { + AUDIT_STATE_DISABLED = 0, + AUDIT_STATE_BUILD = 1, + AUDIT_STATE_RECORD = 2, +}; -struct bio_crypt_ctx { - const struct blk_crypto_key *bc_key; - u64 bc_dun[4]; +struct audit_cap_data { + kernel_cap_t permitted; + kernel_cap_t inheritable; + union { + unsigned int fE; + kernel_cap_t effective; + }; + kernel_cap_t ambient; + kuid_t rootid; }; -enum req_opf { - REQ_OP_READ = 0, - REQ_OP_WRITE = 1, - REQ_OP_FLUSH = 2, - REQ_OP_DISCARD = 3, - REQ_OP_SECURE_ERASE = 5, - REQ_OP_WRITE_ZEROES = 9, - REQ_OP_ZONE_OPEN = 10, - REQ_OP_ZONE_CLOSE = 11, - REQ_OP_ZONE_FINISH = 12, - REQ_OP_ZONE_APPEND = 13, - REQ_OP_ZONE_RESET = 15, - REQ_OP_ZONE_RESET_ALL = 17, - REQ_OP_DRV_IN = 34, - REQ_OP_DRV_OUT = 35, - REQ_OP_LAST = 36, +struct audit_names { + struct list_head list; + struct filename *name; + int name_len; + bool hidden; + long unsigned int ino; + dev_t dev; + umode_t mode; + kuid_t uid; + kgid_t gid; + dev_t rdev; + struct lsmblob oblob; + struct audit_cap_data fcap; + unsigned int fcap_ver; + unsigned char type; + bool should_free; }; -enum req_flag_bits { - __REQ_FAILFAST_DEV = 8, - __REQ_FAILFAST_TRANSPORT = 9, - __REQ_FAILFAST_DRIVER = 10, - __REQ_SYNC = 11, - __REQ_META = 12, - __REQ_PRIO = 13, - __REQ_NOMERGE = 14, - __REQ_IDLE = 15, - __REQ_INTEGRITY = 16, - __REQ_FUA = 17, - __REQ_PREFLUSH = 18, - __REQ_RAHEAD = 19, - __REQ_BACKGROUND = 20, - __REQ_NOWAIT = 21, - __REQ_CGROUP_PUNT = 22, - __REQ_NOUNMAP = 23, - __REQ_POLLED = 24, - __REQ_DRV = 25, - __REQ_SWAP = 26, - __REQ_NR_BITS = 27, +struct mq_attr { + __kernel_long_t mq_flags; + __kernel_long_t mq_maxmsg; + __kernel_long_t mq_msgsize; + __kernel_long_t mq_curmsgs; + __kernel_long_t __reserved[4]; }; -struct sbitmap_word { - long unsigned int word; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 audit_proctitle { + int len; + char *value; }; -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 { - atomic_t wait_cnt; - wait_queue_head_t wait; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 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; -}; - -typedef __u32 req_flags_t; - -enum mq_rq_state { - MQ_RQ_IDLE = 0, - MQ_RQ_IN_FLIGHT = 1, - MQ_RQ_COMPLETE = 2, -}; +struct audit_aux_data; -typedef void rq_end_io_fn(struct request *, blk_status_t); +struct __kernel_sockaddr_storage; -struct blk_crypto_keyslot; +struct audit_tree_refs; -struct request { - struct request_queue *q; - struct blk_mq_ctx *mq_ctx; - struct blk_mq_hw_ctx *mq_hctx; - unsigned int cmd_flags; - req_flags_t rq_flags; - int tag; - int internal_tag; - unsigned int timeout; - unsigned int __data_len; - sector_t __sector; - struct bio *bio; - struct bio *biotail; - union { - struct list_head queuelist; - struct request *rq_next; - }; - struct block_device *part; - u64 alloc_time_ns; - u64 start_time_ns; - u64 io_start_time_ns; - short unsigned int wbt_flags; - short unsigned int stats_sectors; - short unsigned int nr_phys_segments; - short unsigned int nr_integrity_segments; - struct bio_crypt_ctx *crypt_ctx; - struct blk_crypto_keyslot *crypt_keyslot; - short unsigned int write_hint; - short unsigned int ioprio; - enum mq_rq_state state; - atomic_t ref; - long unsigned int deadline; - union { - struct hlist_node hash; - struct llist_node ipi_list; - }; - union { - struct rb_node rb_node; - struct bio_vec special_vec; - void *completion_data; - }; +struct audit_context { + int dummy; + int in_syscall; + enum audit_state state; + enum audit_state current_state; + unsigned int serial; + int major; + struct timespec64 ctime; + long unsigned int argv[4]; + long int return_code; + u64 prio; + int return_valid; + struct audit_names preallocated_names[5]; + int name_count; + struct list_head names_list; + char *filterkey; + struct path pwd; + struct audit_aux_data *aux; + struct audit_aux_data *aux_pids; + struct __kernel_sockaddr_storage *sockaddr; + size_t sockaddr_len; + pid_t pid; + pid_t ppid; + kuid_t uid; + kuid_t euid; + kuid_t suid; + kuid_t fsuid; + kgid_t gid; + kgid_t egid; + kgid_t sgid; + kgid_t fsgid; + long unsigned int personality; + int arch; + pid_t target_pid; + kuid_t target_auid; + kuid_t target_uid; + unsigned int target_sessionid; + struct lsmblob target_lsm; + char target_comm[16]; + struct audit_tree_refs *trees; + struct audit_tree_refs *first_trees; + struct list_head killed_trees; + int tree_count; + int type; union { struct { - struct io_cq *icq; - void *priv[2]; - } elv; + int nargs; + long int args[6]; + } socketcall; struct { - unsigned int seq; - struct list_head list; - rq_end_io_fn *saved_end_io; - } flush; + kuid_t uid; + kgid_t gid; + umode_t mode; + struct lsmblob oblob; + int has_perm; + uid_t perm_uid; + gid_t perm_gid; + umode_t perm_mode; + long unsigned int qbytes; + } ipc; + struct { + mqd_t mqdes; + struct mq_attr mqstat; + } mq_getsetattr; + struct { + mqd_t mqdes; + int sigev_signo; + } mq_notify; + struct { + mqd_t mqdes; + size_t msg_len; + unsigned int msg_prio; + struct timespec64 abs_timeout; + } mq_sendrecv; + struct { + int oflag; + umode_t mode; + struct mq_attr attr; + } mq_open; + struct { + pid_t pid; + struct audit_cap_data cap; + } capset; + struct { + int fd; + int flags; + } mmap; + struct { + int argc; + } execve; + struct { + char *name; + } module; + struct { + struct audit_ntp_data ntp_data; + struct timespec64 tk_injoffset; + } time; }; + int fds[2]; + struct audit_proctitle proctitle; +}; + +struct __kernel_sockaddr_storage { union { - struct __call_single_data csd; - u64 fifo_time; + struct { + __kernel_sa_family_t ss_family; + char __data[126]; + }; + void *__align; }; - rq_end_io_fn *end_io; - void *end_io_data; }; -struct blk_mq_tags { - unsigned int nr_tags; - unsigned int nr_reserved_tags; - atomic_t active_queues; - struct sbitmap_queue bitmap_tags; - struct sbitmap_queue breserved_tags; - struct request **rqs; - struct request **static_rqs; - struct list_head page_list; - spinlock_t lock; +enum audit_nlgrps { + AUDIT_NLGRP_NONE = 0, + AUDIT_NLGRP_READLOG = 1, + __AUDIT_NLGRP_MAX = 2, }; -struct blk_trace { - int trace_state; - struct rchan *rchan; - long unsigned int *sequence; - unsigned char *msg_data; - u16 act_mask; - u64 start_lba; - u64 end_lba; - u32 pid; - u32 dev; - struct dentry *dir; - struct list_head running_list; - atomic_t dropped; +struct audit_status { + __u32 mask; + __u32 enabled; + __u32 failure; + __u32 pid; + __u32 rate_limit; + __u32 backlog_limit; + __u32 lost; + __u32 backlog; + union { + __u32 version; + __u32 feature_bitmap; + }; + __u32 backlog_wait_time; + __u32 backlog_wait_time_actual; }; -struct blk_flush_queue { - unsigned int flush_pending_idx: 1; - unsigned int flush_running_idx: 1; - blk_status_t rq_status; - long unsigned int flush_pending_since; - struct list_head flush_queue[2]; - struct list_head flush_data_in_flight; - struct request *flush_rq; - spinlock_t mq_flush_lock; +struct audit_features { + __u32 vers; + __u32 mask; + __u32 features; + __u32 lock; }; -struct blk_mq_queue_map { - unsigned int *mq_map; - unsigned int nr_queues; - unsigned int queue_offset; +struct audit_tty_status { + __u32 enabled; + __u32 log_passwd; }; -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; - struct blk_mq_tags **tags; - struct blk_mq_tags *shared_tags; - struct mutex tag_list_lock; - struct list_head tag_list; +struct lsmcontext { + char *context; + u32 len; + int slot; }; -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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 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; - unsigned int numa_node; - unsigned int queue_num; - atomic_t nr_active; - struct hlist_node cpuhp_online; - struct hlist_node cpuhp_dead; - struct kobject kobj; - struct dentry *debugfs_dir; - struct dentry *sched_debugfs_dir; - struct list_head hctx_list; - long: 64; - long: 64; - long: 64; +struct audit_sig_info { + uid_t uid; + pid_t pid; + char ctx[0]; }; -struct blk_mq_queue_data { - struct request *rq; - bool last; +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, }; -enum blktrace_cat { - BLK_TC_READ = 1, - BLK_TC_WRITE = 2, - BLK_TC_FLUSH = 4, - BLK_TC_SYNC = 8, - BLK_TC_SYNCIO = 8, - BLK_TC_QUEUE = 16, - BLK_TC_REQUEUE = 32, - BLK_TC_ISSUE = 64, - BLK_TC_COMPLETE = 128, - BLK_TC_FS = 256, - BLK_TC_PC = 512, - BLK_TC_NOTIFY = 1024, - BLK_TC_AHEAD = 2048, - BLK_TC_META = 4096, - BLK_TC_DISCARD = 8192, - BLK_TC_DRV_DATA = 16384, - BLK_TC_FUA = 32768, - BLK_TC_END = 32768, +struct net_generic { + union { + struct { + unsigned int len; + struct callback_head rcu; + } s; + void *ptr[0]; + }; }; -enum blktrace_act { - __BLK_TA_QUEUE = 1, - __BLK_TA_BACKMERGE = 2, - __BLK_TA_FRONTMERGE = 3, - __BLK_TA_GETRQ = 4, - __BLK_TA_SLEEPRQ = 5, - __BLK_TA_REQUEUE = 6, - __BLK_TA_ISSUE = 7, - __BLK_TA_COMPLETE = 8, - __BLK_TA_PLUG = 9, - __BLK_TA_UNPLUG_IO = 10, - __BLK_TA_UNPLUG_TIMER = 11, - __BLK_TA_INSERT = 12, - __BLK_TA_SPLIT = 13, - __BLK_TA_BOUNCE = 14, - __BLK_TA_REMAP = 15, - __BLK_TA_ABORT = 16, - __BLK_TA_DRV_DATA = 17, - __BLK_TA_CGROUP = 256, +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; }; -enum blktrace_notify { - __BLK_TN_PROCESS = 0, - __BLK_TN_TIMESTAMP = 1, - __BLK_TN_MESSAGE = 2, - __BLK_TN_CGROUP = 256, +struct scm_creds { + u32 pid; + kuid_t uid; + kgid_t gid; }; -struct blk_io_trace { - __u32 magic; - __u32 sequence; - __u64 time; - __u64 sector; - __u32 bytes; - __u32 action; - __u32 pid; - __u32 device; - __u32 cpu; - __u16 error; - __u16 pdu_len; +struct netlink_skb_parms { + struct scm_creds creds; + __u32 portid; + __u32 dst_group; + __u32 flags; + struct sock *sk; + bool nsid_is_set; + int nsid; }; -struct blk_io_trace_remap { - __be32 device_from; - __be32 device_to; - __be64 sector_from; +struct netlink_kernel_cfg { + unsigned int groups; + unsigned int flags; + void (*input)(struct sk_buff *); + struct mutex *cb_mutex; + int (*bind)(struct net *, int); + void (*unbind)(struct net *, int); + bool (*compare)(struct net *, struct sock *); }; -enum { - Blktrace_setup = 1, - Blktrace_running = 2, - Blktrace_stopped = 3, +struct audit_netlink_list { + __u32 portid; + struct net *net; + struct sk_buff_head q; }; -struct blk_user_trace_setup { - char name[32]; - __u16 act_mask; - __u32 buf_size; - __u32 buf_nr; - __u64 start_lba; - __u64 end_lba; - __u32 pid; +struct audit_net { + struct sock *sk; }; -enum blk_crypto_mode_num { - BLK_ENCRYPTION_MODE_INVALID = 0, - BLK_ENCRYPTION_MODE_AES_256_XTS = 1, - BLK_ENCRYPTION_MODE_AES_128_CBC_ESSIV = 2, - BLK_ENCRYPTION_MODE_ADIANTUM = 3, - BLK_ENCRYPTION_MODE_MAX = 4, +struct auditd_connection { + struct pid *pid; + u32 portid; + struct net *net; + struct callback_head rcu; }; -struct blk_crypto_config { - enum blk_crypto_mode_num crypto_mode; - unsigned int data_unit_size; - unsigned int dun_bytes; +struct audit_ctl_mutex { + struct mutex lock; + void *owner; }; -struct blk_crypto_key { - struct blk_crypto_config crypto_cfg; - unsigned int data_unit_size_bits; - unsigned int size; - u8 raw[64]; +struct audit_buffer { + struct sk_buff *skb; + struct audit_context *ctx; + gfp_t gfp_mask; }; -typedef void blk_log_action_t(struct trace_iterator *, const char *, bool); +struct audit_reply { + __u32 portid; + struct net *net; + struct sk_buff *skb; +}; -struct ftrace_event_field { - struct list_head link; - const char *name; - const char *type; - int filter_type; - int offset; - int size; - int is_signed; +enum { + Audit_equal = 0, + Audit_not_equal = 1, + Audit_bitmask = 2, + Audit_bittest = 3, + Audit_lt = 4, + Audit_gt = 5, + Audit_le = 6, + Audit_ge = 7, + Audit_bad = 8, }; -struct module_string { - struct list_head next; - struct module *module; - char *str; +struct audit_rule_data { + __u32 flags; + __u32 action; + __u32 field_count; + __u32 mask[64]; + __u32 fields[64]; + __u32 values[64]; + __u32 fieldflags[64]; + __u32 buflen; + char buf[0]; }; -enum { - FORMAT_HEADER = 1, - FORMAT_FIELD_SEPERATOR = 2, - FORMAT_PRINTFMT = 3, -}; +struct audit_field; -struct event_probe_data { - struct trace_event_file *file; - long unsigned int count; - int ref; - bool enable; -}; +struct audit_watch; -struct syscall_trace_enter { - struct trace_entry ent; - int nr; - long unsigned int args[0]; -}; +struct audit_tree; -struct syscall_trace_exit { - struct trace_entry ent; - int nr; - long int ret; -}; +struct audit_fsnotify_mark; -struct syscall_tp_t { - long long unsigned int regs; - long unsigned int syscall_nr; - long unsigned int ret; +struct audit_krule { + u32 pflags; + u32 flags; + u32 listnr; + u32 action; + u32 mask[64]; + u32 buflen; + u32 field_count; + char *filterkey; + struct audit_field *fields; + struct audit_field *arch_f; + struct audit_field *inode_f; + struct audit_watch *watch; + struct audit_tree *tree; + struct audit_fsnotify_mark *exe; + struct list_head rlist; + struct list_head list; + u64 prio; }; -struct syscall_tp_t___2 { - long long unsigned int regs; - long unsigned int syscall_nr; - long unsigned int args[6]; +struct audit_field { + u32 type; + union { + u32 val; + kuid_t uid; + kgid_t gid; + struct { + bool lsm_isset; + char *lsm_str; + void *lsm_rules[4]; + }; + }; + u32 op; }; -typedef long unsigned int perf_trace_t[1024]; - -struct filter_pred; - -struct prog_entry { - int target; - int when_to_branch; - struct filter_pred *pred; +struct audit_entry { + struct list_head list; + struct callback_head rcu; + struct audit_krule rule; }; -typedef int (*filter_pred_fn_t)(struct filter_pred *, void *); +typedef int __kernel_key_t; -struct regex; +typedef __kernel_key_t key_t; -typedef int (*regex_match_func)(char *, struct regex *, int); +struct cpu_vfs_cap_data { + __u32 magic_etc; + kernel_cap_t permitted; + kernel_cap_t inheritable; + kuid_t rootid; +}; -struct regex { - char pattern[256]; - int len; - int field_len; - regex_match_func match; +struct kern_ipc_perm { + spinlock_t lock; + bool deleted; + int id; + key_t key; + kuid_t uid; + kgid_t gid; + kuid_t cuid; + kgid_t cgid; + umode_t mode; + long unsigned int seq; + void *security; + struct rhash_head khtnode; + struct callback_head rcu; + refcount_t refcount; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 filter_pred { - filter_pred_fn_t fn; - u64 val; - struct regex regex; - short unsigned int *ops; - struct ftrace_event_field *field; - int offset; - int not; - int op; +typedef struct fsnotify_mark_connector *fsnotify_connp_t; + +struct fsnotify_mark_connector { + spinlock_t lock; + short unsigned int type; + short unsigned int flags; + __kernel_fsid_t fsid; + union { + fsnotify_connp_t *obj; + struct fsnotify_mark_connector *destroy_next; + }; + struct hlist_head list; }; -enum filter_op_ids { - OP_GLOB = 0, - OP_NE = 1, - OP_EQ = 2, - OP_LE = 3, - OP_LT = 4, - OP_GE = 5, - OP_GT = 6, - OP_BAND = 7, - OP_MAX = 8, +enum audit_nfcfgop { + AUDIT_XT_OP_REGISTER = 0, + AUDIT_XT_OP_REPLACE = 1, + AUDIT_XT_OP_UNREGISTER = 2, + AUDIT_NFT_OP_TABLE_REGISTER = 3, + AUDIT_NFT_OP_TABLE_UNREGISTER = 4, + AUDIT_NFT_OP_CHAIN_REGISTER = 5, + AUDIT_NFT_OP_CHAIN_UNREGISTER = 6, + AUDIT_NFT_OP_RULE_REGISTER = 7, + AUDIT_NFT_OP_RULE_UNREGISTER = 8, + AUDIT_NFT_OP_SET_REGISTER = 9, + AUDIT_NFT_OP_SET_UNREGISTER = 10, + AUDIT_NFT_OP_SETELEM_REGISTER = 11, + AUDIT_NFT_OP_SETELEM_UNREGISTER = 12, + AUDIT_NFT_OP_GEN_REGISTER = 13, + AUDIT_NFT_OP_OBJ_REGISTER = 14, + AUDIT_NFT_OP_OBJ_UNREGISTER = 15, + AUDIT_NFT_OP_OBJ_RESET = 16, + AUDIT_NFT_OP_FLOWTABLE_REGISTER = 17, + AUDIT_NFT_OP_FLOWTABLE_UNREGISTER = 18, + AUDIT_NFT_OP_INVALID = 19, }; -enum { - FILT_ERR_NONE = 0, - FILT_ERR_INVALID_OP = 1, - FILT_ERR_TOO_MANY_OPEN = 2, - FILT_ERR_TOO_MANY_CLOSE = 3, - FILT_ERR_MISSING_QUOTE = 4, - FILT_ERR_OPERAND_TOO_LONG = 5, - FILT_ERR_EXPECT_STRING = 6, - FILT_ERR_EXPECT_DIGIT = 7, - FILT_ERR_ILLEGAL_FIELD_OP = 8, - FILT_ERR_FIELD_NOT_FOUND = 9, - FILT_ERR_ILLEGAL_INTVAL = 10, - FILT_ERR_BAD_SUBSYS_FILTER = 11, - FILT_ERR_TOO_MANY_PREDS = 12, - FILT_ERR_INVALID_FILTER = 13, - FILT_ERR_IP_FIELD_ONLY = 14, - FILT_ERR_INVALID_VALUE = 15, - FILT_ERR_ERRNO = 16, - FILT_ERR_NO_FILTER = 17, +enum fsnotify_obj_type { + FSNOTIFY_OBJ_TYPE_INODE = 0, + FSNOTIFY_OBJ_TYPE_PARENT = 1, + FSNOTIFY_OBJ_TYPE_VFSMOUNT = 2, + FSNOTIFY_OBJ_TYPE_SB = 3, + FSNOTIFY_OBJ_TYPE_COUNT = 4, + FSNOTIFY_OBJ_TYPE_DETACHED = 4, }; -struct filter_parse_error { - int lasterr; - int lasterr_pos; +struct audit_aux_data { + struct audit_aux_data *next; + int type; }; -typedef int (*parse_pred_fn)(const char *, void *, int, struct filter_parse_error *, struct filter_pred **); +struct audit_chunk; -enum { - INVERT = 1, - PROCESS_AND = 2, - PROCESS_OR = 4, +struct audit_tree_refs { + struct audit_tree_refs *next; + struct audit_chunk *c[31]; }; -struct ustring_buffer { - char buffer[1024]; +struct audit_aux_data_pids { + struct audit_aux_data d; + pid_t target_pid[16]; + kuid_t target_auid[16]; + kuid_t target_uid[16]; + unsigned int target_sessionid[16]; + struct lsmblob target_lsm[16]; + char target_comm[256]; + int pid_count; }; -enum { - TOO_MANY_CLOSE = 4294967295, - TOO_MANY_OPEN = 4294967294, - MISSING_QUOTE = 4294967293, +struct audit_aux_data_bprm_fcaps { + struct audit_aux_data d; + struct audit_cap_data fcap; + unsigned int fcap_ver; + struct audit_cap_data old_pcap; + struct audit_cap_data new_pcap; }; -struct filter_list { - struct list_head list; - struct event_filter *filter; +struct audit_nfcfgop_tab { + enum audit_nfcfgop op; + const char *s; }; -struct function_filter_data { - struct ftrace_ops *ops; - int first_filter; - int first_notrace; -}; +struct audit_parent; -enum { - EVENT_TRIGGER_FL_PROBE = 1, +struct audit_watch { + refcount_t count; + dev_t dev; + char *path; + long unsigned int ino; + struct audit_parent *parent; + struct list_head wlist; + struct list_head rules; }; -struct event_trigger_ops; +struct fsnotify_group; -struct event_command; +struct fsnotify_iter_info; -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; - char *filter_str; - void *private_data; - bool paused; - bool paused_tmp; - struct list_head list; - char *name; - struct list_head named_list; - struct event_trigger_data *named_data; +struct fsnotify_mark; + +struct fsnotify_event; + +struct fsnotify_ops { + int (*handle_event)(struct fsnotify_group *, u32, const void *, int, struct inode *, const struct qstr *, u32, struct fsnotify_iter_info *); + int (*handle_inode_event)(struct fsnotify_mark *, u32, struct inode *, struct inode *, const struct qstr *, u32); + void (*free_group_priv)(struct fsnotify_group *); + void (*freeing_mark)(struct fsnotify_mark *, struct fsnotify_group *); + void (*free_event)(struct fsnotify_event *); + void (*free_mark)(struct fsnotify_mark *); }; -struct event_trigger_ops { - void (*trigger)(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 *); +struct inotify_group_private_data { + spinlock_t idr_lock; + struct idr idr; + struct ucounts *ucounts; }; -struct event_command { - struct list_head list; - char *name; - enum event_trigger_type trigger_type; +struct fanotify_group_private_data { + struct hlist_head *merge_hash; + struct list_head access_list; + wait_queue_head_t access_waitq; int flags; - int (*parse)(struct event_command *, struct trace_event_file *, char *, char *, char *); - int (*reg)(char *, struct event_trigger_data *, struct trace_event_file *); - void (*unreg)(char *, struct event_trigger_data *, struct trace_event_file *); - void (*unreg_all)(struct trace_event_file *); - int (*set_filter)(char *, struct event_trigger_data *, struct trace_event_file *); - struct event_trigger_ops * (*get_trigger_ops)(char *, char *); + int f_flags; + struct ucounts *ucounts; }; -struct enable_trigger_data { - struct trace_event_file *file; - bool enable; - bool hist; +struct fsnotify_group { + const struct fsnotify_ops *ops; + refcount_t refcnt; + spinlock_t notification_lock; + struct list_head notification_list; + wait_queue_head_t notification_waitq; + unsigned int q_len; + unsigned int max_events; + unsigned int priority; + bool shutdown; + struct mutex mark_mutex; + atomic_t user_waits; + struct list_head marks_list; + struct fasync_struct *fsn_fa; + struct fsnotify_event *overflow_event; + struct mem_cgroup *memcg; + union { + void *private; + struct inotify_group_private_data inotify_data; + struct fanotify_group_private_data fanotify_data; + }; }; -enum event_command_flags { - EVENT_CMD_FL_POST_TRIGGER = 1, - EVENT_CMD_FL_NEEDS_REC = 2, +struct fsnotify_iter_info { + struct fsnotify_mark *marks[4]; + unsigned int report_mask; + int srcu_idx; }; -struct eprobe_trace_entry_head { - struct trace_entry ent; +struct fsnotify_mark { + __u32 mask; + refcount_t refcnt; + struct fsnotify_group *group; + struct list_head g_list; + spinlock_t lock; + struct hlist_node obj_list; + struct fsnotify_mark_connector *connector; + __u32 ignored_mask; + unsigned int flags; }; -struct dyn_event; - -struct dyn_event_operations { +struct fsnotify_event { 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; +struct audit_parent { + struct list_head watches; + struct fsnotify_mark mark; }; -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 audit_fsnotify_mark { + dev_t dev; + long unsigned int ino; + char *path; + struct fsnotify_mark mark; + struct audit_krule *rule; }; -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 audit_tree { + refcount_t count; + int goner; + struct audit_chunk *root; + struct list_head chunks; + struct list_head rules; + struct list_head list; + struct list_head same_root; + struct callback_head head; + char pathname[0]; }; -struct fetch_type { - const char *name; - size_t size; - int is_signed; - print_type_func_t print; - const char *fmt; - const char *fmttype; +struct node { + struct list_head list; + struct audit_tree *owner; + unsigned int index; }; -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 audit_chunk { + struct list_head hash; + long unsigned int key; + struct fsnotify_mark *mark; + struct list_head trees; + int count; + atomic_long_t refs; + struct callback_head head; + struct node owners[0]; }; -struct trace_uprobe_filter { - rwlock_t rwlock; - int nr_systemwide; - struct list_head perf_events; +struct audit_tree_mark { + struct fsnotify_mark mark; + struct audit_chunk *chunk; }; -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]; +enum { + HASH_SIZE = 128, }; -struct trace_probe { +struct kprobe_blacklist_entry { struct list_head list; - struct trace_probe_event *event; - ssize_t size; - unsigned int nr_args; - struct probe_arg args[0]; + long unsigned int start_addr; + long unsigned int end_addr; }; -struct event_file_link { - struct trace_event_file *file; - struct list_head list; +enum perf_record_ksymbol_type { + PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0, + PERF_RECORD_KSYMBOL_TYPE_BPF = 1, + PERF_RECORD_KSYMBOL_TYPE_OOL = 2, + PERF_RECORD_KSYMBOL_TYPE_MAX = 3, }; -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 kprobe_insn_page { + struct list_head list; + kprobe_opcode_t *insns; + struct kprobe_insn_cache *cache; + int nused; + int ngarbage; + char slot_used[0]; }; -struct trace_eprobe { - const char *event_system; - const char *event_name; - struct trace_event_call *event; - struct dyn_event devent; - struct trace_probe tp; +enum kprobe_slot_state { + SLOT_CLEAN = 0, + SLOT_DIRTY = 1, + SLOT_USED = 2, }; -struct eprobe_data { - struct trace_event_file *file; - struct trace_eprobe *ep; +struct seccomp_notif_sizes { + __u16 seccomp_notif; + __u16 seccomp_notif_resp; + __u16 seccomp_data; }; -struct synth_field; - -struct synth_event { - struct dyn_event devent; - int ref; - char *name; - struct synth_field **fields; - unsigned int n_fields; - struct synth_field **dynamic_fields; - unsigned int n_dynamic_fields; - unsigned int n_u64; - struct trace_event_class class; - struct trace_event_call call; - struct tracepoint *tp; - struct module *mod; +struct seccomp_notif { + __u64 id; + __u32 pid; + __u32 flags; + struct seccomp_data data; }; -struct synth_field { - char *type; - char *name; - size_t size; - unsigned int offset; - unsigned int field_pos; - bool is_signed; - bool is_string; - bool is_dynamic; +struct seccomp_notif_resp { + __u64 id; + __s64 val; + __s32 error; + __u32 flags; }; -enum { - HIST_ERR_NONE = 0, - HIST_ERR_DUPLICATE_VAR = 1, - HIST_ERR_VAR_NOT_UNIQUE = 2, - HIST_ERR_TOO_MANY_VARS = 3, - HIST_ERR_MALFORMED_ASSIGNMENT = 4, - HIST_ERR_NAMED_MISMATCH = 5, - HIST_ERR_TRIGGER_EEXIST = 6, - HIST_ERR_TRIGGER_ENOENT_CLEAR = 7, - HIST_ERR_SET_CLOCK_FAIL = 8, - HIST_ERR_BAD_FIELD_MODIFIER = 9, - HIST_ERR_TOO_MANY_SUBEXPR = 10, - HIST_ERR_TIMESTAMP_MISMATCH = 11, - HIST_ERR_TOO_MANY_FIELD_VARS = 12, - HIST_ERR_EVENT_FILE_NOT_FOUND = 13, - HIST_ERR_HIST_NOT_FOUND = 14, - HIST_ERR_HIST_CREATE_FAIL = 15, - HIST_ERR_SYNTH_VAR_NOT_FOUND = 16, - HIST_ERR_SYNTH_EVENT_NOT_FOUND = 17, - HIST_ERR_SYNTH_TYPE_MISMATCH = 18, - HIST_ERR_SYNTH_COUNT_MISMATCH = 19, - HIST_ERR_FIELD_VAR_PARSE_FAIL = 20, - HIST_ERR_VAR_CREATE_FIND_FAIL = 21, - HIST_ERR_ONX_NOT_VAR = 22, - HIST_ERR_ONX_VAR_NOT_FOUND = 23, - HIST_ERR_ONX_VAR_CREATE_FAIL = 24, - HIST_ERR_FIELD_VAR_CREATE_FAIL = 25, - HIST_ERR_TOO_MANY_PARAMS = 26, - HIST_ERR_PARAM_NOT_FOUND = 27, - HIST_ERR_INVALID_PARAM = 28, - HIST_ERR_ACTION_NOT_FOUND = 29, - HIST_ERR_NO_SAVE_PARAMS = 30, - HIST_ERR_TOO_MANY_SAVE_ACTIONS = 31, - HIST_ERR_ACTION_MISMATCH = 32, - HIST_ERR_NO_CLOSING_PAREN = 33, - HIST_ERR_SUBSYS_NOT_FOUND = 34, - HIST_ERR_INVALID_SUBSYS_EVENT = 35, - HIST_ERR_INVALID_REF_KEY = 36, - HIST_ERR_VAR_NOT_FOUND = 37, - HIST_ERR_FIELD_NOT_FOUND = 38, - HIST_ERR_EMPTY_ASSIGNMENT = 39, - HIST_ERR_INVALID_SORT_MODIFIER = 40, - HIST_ERR_EMPTY_SORT_FIELD = 41, - HIST_ERR_TOO_MANY_SORT_FIELDS = 42, - HIST_ERR_INVALID_SORT_FIELD = 43, - HIST_ERR_INVALID_STR_OPERAND = 44, - HIST_ERR_EXPECT_NUMBER = 45, - HIST_ERR_UNARY_MINUS_SUBEXPR = 46, - HIST_ERR_DIVISION_BY_ZERO = 47, +struct seccomp_notif_addfd { + __u64 id; + __u32 flags; + __u32 srcfd; + __u32 newfd; + __u32 newfd_flags; }; -struct hist_field; +struct action_cache { + long unsigned int allow_native[8]; + long unsigned int allow_compat[8]; +}; -typedef u64 (*hist_field_fn_t)(struct hist_field *, struct tracing_map_elt *, struct trace_buffer *, struct ring_buffer_event *, void *); +struct notification; -struct hist_trigger_data; +struct seccomp_filter { + refcount_t refs; + refcount_t users; + bool log; + struct action_cache cache; + struct seccomp_filter *prev; + struct bpf_prog *prog; + struct notification *notif; + struct mutex notify_lock; + wait_queue_head_t wqh; +}; -struct hist_var { - char *name; - struct hist_trigger_data *hist_data; - unsigned int idx; +struct seccomp_metadata { + __u64 filter_off; + __u64 flags; }; -enum field_op_id { - FIELD_OP_NONE = 0, - FIELD_OP_PLUS = 1, - FIELD_OP_MINUS = 2, - FIELD_OP_UNARY_MINUS = 3, - FIELD_OP_DIV = 4, - FIELD_OP_MULT = 5, +struct sock_fprog { + short unsigned int len; + struct sock_filter *filter; }; -struct hist_field { - struct ftrace_event_field *field; - long unsigned int flags; - hist_field_fn_t fn; - unsigned int ref; - 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; - struct hist_var var; - enum field_op_id operator; - char *system; - char *event_name; - char *name; - unsigned int var_ref_idx; - bool read_once; - unsigned int var_str_idx; - u64 constant; - u64 div_multiplier; +struct compat_sock_fprog { + u16 len; + compat_uptr_t filter; }; -struct hist_trigger_attrs; +typedef unsigned int (*bpf_dispatcher_fn)(const void *, const struct bpf_insn *, unsigned int (*)(const void *, const struct bpf_insn *)); -struct action_data; +typedef int (*bpf_aux_classic_check_t)(struct sock_filter *, unsigned int); -struct field_var; +enum notify_state { + SECCOMP_NOTIFY_INIT = 0, + SECCOMP_NOTIFY_SENT = 1, + SECCOMP_NOTIFY_REPLIED = 2, +}; -struct field_var_hist; +struct seccomp_knotif { + struct task_struct *task; + u64 id; + const struct seccomp_data *data; + enum notify_state state; + int error; + long int val; + u32 flags; + struct completion ready; + struct list_head list; + struct list_head addfd; +}; -struct hist_trigger_data { - struct hist_field *fields[22]; - unsigned int n_vals; - unsigned int n_keys; - unsigned int n_fields; - unsigned int n_vars; - unsigned int n_var_str; - unsigned int key_size; - struct tracing_map_sort_key sort_keys[2]; - unsigned int n_sort_keys; - struct trace_event_file *event_file; - struct hist_trigger_attrs *attrs; - struct tracing_map *map; - bool enable_timestamps; - bool remove; - struct hist_field *var_refs[16]; - unsigned int n_var_refs; - struct action_data *actions[8]; - unsigned int n_actions; - struct field_var *field_vars[64]; - unsigned int n_field_vars; - unsigned int n_field_var_str; - struct field_var_hist *field_var_hists[64]; - unsigned int n_field_var_hists; - struct field_var *save_vars[64]; - unsigned int n_save_vars; - unsigned int n_save_var_str; +struct seccomp_kaddfd { + struct file *file; + int fd; + unsigned int flags; + __u32 ioctl_flags; + union { + bool setfd; + int ret; + }; + struct completion completion; + struct list_head list; }; -enum hist_field_flags { - HIST_FIELD_FL_HITCOUNT = 1, - HIST_FIELD_FL_KEY = 2, - HIST_FIELD_FL_STRING = 4, - HIST_FIELD_FL_HEX = 8, - HIST_FIELD_FL_SYM = 16, - HIST_FIELD_FL_SYM_OFFSET = 32, - HIST_FIELD_FL_EXECNAME = 64, - HIST_FIELD_FL_SYSCALL = 128, - HIST_FIELD_FL_STACKTRACE = 256, - HIST_FIELD_FL_LOG2 = 512, - HIST_FIELD_FL_TIMESTAMP = 1024, - HIST_FIELD_FL_TIMESTAMP_USECS = 2048, - HIST_FIELD_FL_VAR = 4096, - HIST_FIELD_FL_EXPR = 8192, - HIST_FIELD_FL_VAR_REF = 16384, - HIST_FIELD_FL_CPU = 32768, - HIST_FIELD_FL_ALIAS = 65536, - HIST_FIELD_FL_BUCKET = 131072, - HIST_FIELD_FL_CONST = 262144, +struct notification { + struct semaphore request; + u64 next_id; + struct list_head notifications; }; -struct var_defs { - unsigned int n_vars; - char *name[16]; - char *expr[16]; +struct seccomp_log_name { + u32 log; + const char *name; }; -struct hist_trigger_attrs { - char *keys_str; - char *vals_str; - char *sort_key_str; - char *name; - char *clock; - bool pause; - bool cont; - bool clear; - bool ts_in_usecs; - unsigned int map_bits; - char *assignment_str[16]; - unsigned int n_assignments; - char *action_str[8]; - unsigned int n_actions; - struct var_defs var_defs; +struct rchan; + +struct rchan_buf { + void *start; + void *data; + size_t offset; + size_t subbufs_produced; + size_t subbufs_consumed; + struct rchan *chan; + wait_queue_head_t read_wait; + struct irq_work wakeup_work; + struct dentry *dentry; + struct kref kref; + struct page **page_array; + unsigned int page_count; + unsigned int finalized; + size_t *padding; + size_t prev_padding; + size_t bytes_consumed; + size_t early_bytes; + unsigned int cpu; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -struct field_var { - struct hist_field *var; - struct hist_field *val; +struct rchan_callbacks; + +struct rchan { + u32 version; + size_t subbuf_size; + size_t n_subbufs; + size_t alloc_size; + const struct rchan_callbacks *cb; + struct kref kref; + void *private_data; + size_t last_toobig; + struct rchan_buf **buf; + int is_global; + struct list_head list; + struct dentry *parent; + int has_base_filename; + char base_filename[255]; }; -struct field_var_hist { - struct hist_trigger_data *hist_data; - char *cmd; +struct rchan_callbacks { + int (*subbuf_start)(struct rchan_buf *, void *, void *, size_t); + struct dentry * (*create_buf_file)(const char *, struct dentry *, umode_t, struct rchan_buf *, int *); + int (*remove_buf_file)(struct dentry *); }; -enum handler_id { - HANDLER_ONMATCH = 1, - HANDLER_ONMAX = 2, - HANDLER_ONCHANGE = 3, +struct partial_page { + unsigned int offset; + unsigned int len; + long unsigned int private; }; -enum action_id { - ACTION_SAVE = 1, - ACTION_TRACE = 2, - ACTION_SNAPSHOT = 3, +struct splice_pipe_desc { + struct page **pages; + struct partial_page *partial; + int nr_pages; + unsigned int nr_pages_max; + const struct pipe_buf_operations *ops; + void (*spd_release)(struct splice_pipe_desc *, unsigned int); }; -typedef void (*action_fn_t)(struct hist_trigger_data *, struct tracing_map_elt *, struct trace_buffer *, void *, struct ring_buffer_event *, void *, struct action_data *, u64 *); +struct rchan_percpu_buf_dispatcher { + struct rchan_buf *buf; + struct dentry *dentry; +}; -typedef bool (*check_track_val_fn_t)(u64, u64); +enum { + TASKSTATS_TYPE_UNSPEC = 0, + TASKSTATS_TYPE_PID = 1, + TASKSTATS_TYPE_TGID = 2, + TASKSTATS_TYPE_STATS = 3, + TASKSTATS_TYPE_AGGR_PID = 4, + TASKSTATS_TYPE_AGGR_TGID = 5, + TASKSTATS_TYPE_NULL = 6, + __TASKSTATS_TYPE_MAX = 7, +}; -struct action_data { - enum handler_id handler; - enum action_id action; - char *action_name; - action_fn_t fn; - unsigned int n_params; - char *params[64]; - unsigned int var_ref_idx[16]; - struct synth_event *synth_event; - bool use_trace_keyword; - char *synth_event_name; - union { - struct { - char *event; - char *event_system; - } match_data; - struct { - char *var_str; - struct hist_field *var_ref; - struct hist_field *track_var; - check_track_val_fn_t check_val; - action_fn_t save_data; - } track_data; - }; +enum { + TASKSTATS_CMD_ATTR_UNSPEC = 0, + TASKSTATS_CMD_ATTR_PID = 1, + TASKSTATS_CMD_ATTR_TGID = 2, + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 3, + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 4, + __TASKSTATS_CMD_ATTR_MAX = 5, }; -struct track_data { - u64 track_val; - bool updated; - unsigned int key_len; - void *key; - struct tracing_map_elt elt; - struct action_data *action_data; - struct hist_trigger_data *hist_data; +enum { + CGROUPSTATS_CMD_UNSPEC = 3, + CGROUPSTATS_CMD_GET = 4, + CGROUPSTATS_CMD_NEW = 5, + __CGROUPSTATS_CMD_MAX = 6, }; -struct hist_elt_data { - char *comm; - u64 *var_ref_vals; - char **field_var_str; - int n_field_var_str; +enum { + CGROUPSTATS_TYPE_UNSPEC = 0, + CGROUPSTATS_TYPE_CGROUP_STATS = 1, + __CGROUPSTATS_TYPE_MAX = 2, }; -struct snapshot_context { - struct tracing_map_elt *elt; - void *key; +enum { + CGROUPSTATS_CMD_ATTR_UNSPEC = 0, + CGROUPSTATS_CMD_ATTR_FD = 1, + __CGROUPSTATS_CMD_ATTR_MAX = 2, }; -typedef void (*synth_probe_func_t)(void *, u64 *, unsigned int *); +struct genlmsghdr { + __u8 cmd; + __u8 version; + __u16 reserved; +}; -struct hist_var_data { - struct list_head list; - struct hist_trigger_data *hist_data; +enum { + NLA_UNSPEC = 0, + NLA_U8 = 1, + NLA_U16 = 2, + NLA_U32 = 3, + NLA_U64 = 4, + NLA_STRING = 5, + NLA_FLAG = 6, + NLA_MSECS = 7, + NLA_NESTED = 8, + NLA_NESTED_ARRAY = 9, + NLA_NUL_STRING = 10, + NLA_BINARY = 11, + NLA_S8 = 12, + NLA_S16 = 13, + NLA_S32 = 14, + NLA_S64 = 15, + NLA_BITFIELD32 = 16, + NLA_REJECT = 17, + __NLA_TYPE_MAX = 18, }; -enum bpf_func_id { - BPF_FUNC_unspec = 0, - BPF_FUNC_map_lookup_elem = 1, - BPF_FUNC_map_update_elem = 2, - BPF_FUNC_map_delete_elem = 3, - BPF_FUNC_probe_read = 4, - BPF_FUNC_ktime_get_ns = 5, - BPF_FUNC_trace_printk = 6, - BPF_FUNC_get_prandom_u32 = 7, - BPF_FUNC_get_smp_processor_id = 8, - BPF_FUNC_skb_store_bytes = 9, - BPF_FUNC_l3_csum_replace = 10, - BPF_FUNC_l4_csum_replace = 11, - BPF_FUNC_tail_call = 12, - BPF_FUNC_clone_redirect = 13, - BPF_FUNC_get_current_pid_tgid = 14, - BPF_FUNC_get_current_uid_gid = 15, - BPF_FUNC_get_current_comm = 16, - BPF_FUNC_get_cgroup_classid = 17, - BPF_FUNC_skb_vlan_push = 18, - BPF_FUNC_skb_vlan_pop = 19, - BPF_FUNC_skb_get_tunnel_key = 20, - BPF_FUNC_skb_set_tunnel_key = 21, - BPF_FUNC_perf_event_read = 22, - BPF_FUNC_redirect = 23, - BPF_FUNC_get_route_realm = 24, - BPF_FUNC_perf_event_output = 25, - BPF_FUNC_skb_load_bytes = 26, - BPF_FUNC_get_stackid = 27, - BPF_FUNC_csum_diff = 28, - BPF_FUNC_skb_get_tunnel_opt = 29, - BPF_FUNC_skb_set_tunnel_opt = 30, - BPF_FUNC_skb_change_proto = 31, - BPF_FUNC_skb_change_type = 32, - BPF_FUNC_skb_under_cgroup = 33, - BPF_FUNC_get_hash_recalc = 34, - BPF_FUNC_get_current_task = 35, - BPF_FUNC_probe_write_user = 36, - BPF_FUNC_current_task_under_cgroup = 37, - BPF_FUNC_skb_change_tail = 38, - BPF_FUNC_skb_pull_data = 39, - BPF_FUNC_csum_update = 40, - BPF_FUNC_set_hash_invalid = 41, - BPF_FUNC_get_numa_node_id = 42, - BPF_FUNC_skb_change_head = 43, - BPF_FUNC_xdp_adjust_head = 44, - BPF_FUNC_probe_read_str = 45, - BPF_FUNC_get_socket_cookie = 46, - BPF_FUNC_get_socket_uid = 47, - BPF_FUNC_set_hash = 48, - BPF_FUNC_setsockopt = 49, - BPF_FUNC_skb_adjust_room = 50, - BPF_FUNC_redirect_map = 51, - BPF_FUNC_sk_redirect_map = 52, - BPF_FUNC_sock_map_update = 53, - BPF_FUNC_xdp_adjust_meta = 54, - BPF_FUNC_perf_event_read_value = 55, - BPF_FUNC_perf_prog_read_value = 56, - BPF_FUNC_getsockopt = 57, - BPF_FUNC_override_return = 58, - BPF_FUNC_sock_ops_cb_flags_set = 59, - BPF_FUNC_msg_redirect_map = 60, - BPF_FUNC_msg_apply_bytes = 61, - BPF_FUNC_msg_cork_bytes = 62, - BPF_FUNC_msg_pull_data = 63, - BPF_FUNC_bind = 64, - BPF_FUNC_xdp_adjust_tail = 65, - BPF_FUNC_skb_get_xfrm_state = 66, - BPF_FUNC_get_stack = 67, - BPF_FUNC_skb_load_bytes_relative = 68, - BPF_FUNC_fib_lookup = 69, - BPF_FUNC_sock_hash_update = 70, - BPF_FUNC_msg_redirect_hash = 71, - BPF_FUNC_sk_redirect_hash = 72, - BPF_FUNC_lwt_push_encap = 73, - BPF_FUNC_lwt_seg6_store_bytes = 74, - BPF_FUNC_lwt_seg6_adjust_srh = 75, - BPF_FUNC_lwt_seg6_action = 76, - BPF_FUNC_rc_repeat = 77, - BPF_FUNC_rc_keydown = 78, - BPF_FUNC_skb_cgroup_id = 79, - BPF_FUNC_get_current_cgroup_id = 80, - BPF_FUNC_get_local_storage = 81, - BPF_FUNC_sk_select_reuseport = 82, - BPF_FUNC_skb_ancestor_cgroup_id = 83, - BPF_FUNC_sk_lookup_tcp = 84, - BPF_FUNC_sk_lookup_udp = 85, - BPF_FUNC_sk_release = 86, - BPF_FUNC_map_push_elem = 87, - BPF_FUNC_map_pop_elem = 88, - BPF_FUNC_map_peek_elem = 89, - BPF_FUNC_msg_push_data = 90, - BPF_FUNC_msg_pop_data = 91, - BPF_FUNC_rc_pointer_rel = 92, - BPF_FUNC_spin_lock = 93, - BPF_FUNC_spin_unlock = 94, - BPF_FUNC_sk_fullsock = 95, - BPF_FUNC_tcp_sock = 96, - BPF_FUNC_skb_ecn_set_ce = 97, - BPF_FUNC_get_listener_sock = 98, - BPF_FUNC_skc_lookup_tcp = 99, - BPF_FUNC_tcp_check_syncookie = 100, - BPF_FUNC_sysctl_get_name = 101, - BPF_FUNC_sysctl_get_current_value = 102, - BPF_FUNC_sysctl_get_new_value = 103, - BPF_FUNC_sysctl_set_new_value = 104, - BPF_FUNC_strtol = 105, - BPF_FUNC_strtoul = 106, - BPF_FUNC_sk_storage_get = 107, - BPF_FUNC_sk_storage_delete = 108, - BPF_FUNC_send_signal = 109, - BPF_FUNC_tcp_gen_syncookie = 110, - BPF_FUNC_skb_output = 111, - BPF_FUNC_probe_read_user = 112, - BPF_FUNC_probe_read_kernel = 113, - BPF_FUNC_probe_read_user_str = 114, - BPF_FUNC_probe_read_kernel_str = 115, - BPF_FUNC_tcp_send_ack = 116, - BPF_FUNC_send_signal_thread = 117, - BPF_FUNC_jiffies64 = 118, - BPF_FUNC_read_branch_records = 119, - BPF_FUNC_get_ns_current_pid_tgid = 120, - BPF_FUNC_xdp_output = 121, - BPF_FUNC_get_netns_cookie = 122, - BPF_FUNC_get_current_ancestor_cgroup_id = 123, - BPF_FUNC_sk_assign = 124, - BPF_FUNC_ktime_get_boot_ns = 125, - BPF_FUNC_seq_printf = 126, - BPF_FUNC_seq_write = 127, - BPF_FUNC_sk_cgroup_id = 128, - BPF_FUNC_sk_ancestor_cgroup_id = 129, - BPF_FUNC_ringbuf_output = 130, - BPF_FUNC_ringbuf_reserve = 131, - BPF_FUNC_ringbuf_submit = 132, - BPF_FUNC_ringbuf_discard = 133, - BPF_FUNC_ringbuf_query = 134, - BPF_FUNC_csum_level = 135, - BPF_FUNC_skc_to_tcp6_sock = 136, - BPF_FUNC_skc_to_tcp_sock = 137, - BPF_FUNC_skc_to_tcp_timewait_sock = 138, - BPF_FUNC_skc_to_tcp_request_sock = 139, - BPF_FUNC_skc_to_udp6_sock = 140, - BPF_FUNC_get_task_stack = 141, - BPF_FUNC_load_hdr_opt = 142, - BPF_FUNC_store_hdr_opt = 143, - BPF_FUNC_reserve_hdr_opt = 144, - BPF_FUNC_inode_storage_get = 145, - BPF_FUNC_inode_storage_delete = 146, - BPF_FUNC_d_path = 147, - BPF_FUNC_copy_from_user = 148, - BPF_FUNC_snprintf_btf = 149, - BPF_FUNC_seq_printf_btf = 150, - BPF_FUNC_skb_cgroup_classid = 151, - BPF_FUNC_redirect_neigh = 152, - BPF_FUNC_per_cpu_ptr = 153, - BPF_FUNC_this_cpu_ptr = 154, - BPF_FUNC_redirect_peer = 155, - BPF_FUNC_task_storage_get = 156, - BPF_FUNC_task_storage_delete = 157, - BPF_FUNC_get_current_task_btf = 158, - BPF_FUNC_bprm_opts_set = 159, - BPF_FUNC_ktime_get_coarse_ns = 160, - BPF_FUNC_ima_inode_hash = 161, - BPF_FUNC_sock_from_file = 162, - BPF_FUNC_check_mtu = 163, - BPF_FUNC_for_each_map_elem = 164, - BPF_FUNC_snprintf = 165, - BPF_FUNC_sys_bpf = 166, - BPF_FUNC_btf_find_by_name_kind = 167, - BPF_FUNC_sys_close = 168, - BPF_FUNC_timer_init = 169, - BPF_FUNC_timer_set_callback = 170, - BPF_FUNC_timer_start = 171, - BPF_FUNC_timer_cancel = 172, - BPF_FUNC_get_func_ip = 173, - BPF_FUNC_get_attach_cookie = 174, - BPF_FUNC_task_pt_regs = 175, - BPF_FUNC_get_branch_snapshot = 176, - BPF_FUNC_trace_vprintk = 177, - BPF_FUNC_skc_to_unix_sock = 178, - BPF_FUNC_kallsyms_lookup_name = 179, - BPF_FUNC_find_vma = 180, - BPF_FUNC_loop = 181, - BPF_FUNC_strncmp = 182, - BPF_FUNC_get_func_arg = 183, - BPF_FUNC_get_func_ret = 184, - BPF_FUNC_get_func_arg_cnt = 185, - BPF_FUNC_get_retval = 186, - BPF_FUNC_set_retval = 187, - BPF_FUNC_xdp_get_buff_len = 188, - BPF_FUNC_xdp_load_bytes = 189, - BPF_FUNC_xdp_store_bytes = 190, - BPF_FUNC_copy_from_user_task = 191, - BPF_FUNC_skb_set_tstamp = 192, - BPF_FUNC_ima_file_hash = 193, - __BPF_FUNC_MAX_ID = 194, +struct genl_multicast_group { + char name[16]; + u8 flags; }; -enum { - BPF_F_INDEX_MASK = 4294967295, - BPF_F_CURRENT_CPU = 4294967295, - BPF_F_CTXLEN_MASK = 0, -}; +struct genl_ops; -enum { - BPF_F_GET_BRANCH_RECORDS_SIZE = 1, -}; +struct genl_info; -struct bpf_perf_event_value { - __u64 counter; - __u64 enabled; - __u64 running; -}; +struct genl_small_ops; -struct bpf_raw_tracepoint_args { - __u64 args[0]; +struct genl_family { + int id; + unsigned int hdrsize; + char name[16]; + unsigned int version; + unsigned int maxattr; + unsigned int mcgrp_offset; + u8 netnsok: 1; + u8 parallel_ops: 1; + u8 n_ops; + u8 n_small_ops; + u8 n_mcgrps; + const struct nla_policy *policy; + int (*pre_doit)(const struct genl_ops *, struct sk_buff *, struct genl_info *); + void (*post_doit)(const struct genl_ops *, struct sk_buff *, struct genl_info *); + const struct genl_ops *ops; + const struct genl_small_ops *small_ops; + const struct genl_multicast_group *mcgrps; + struct module *module; }; -enum bpf_task_fd_type { - BPF_FD_TYPE_RAW_TRACEPOINT = 0, - BPF_FD_TYPE_TRACEPOINT = 1, - BPF_FD_TYPE_KPROBE = 2, - BPF_FD_TYPE_KRETPROBE = 3, - BPF_FD_TYPE_UPROBE = 4, - BPF_FD_TYPE_URETPROBE = 5, +struct genl_ops { + int (*doit)(struct sk_buff *, struct genl_info *); + int (*start)(struct netlink_callback *); + int (*dumpit)(struct sk_buff *, struct netlink_callback *); + int (*done)(struct netlink_callback *); + const struct nla_policy *policy; + unsigned int maxattr; + u8 cmd; + u8 internal_flags; + u8 flags; + u8 validate; }; -struct btf_ptr { - void *ptr; - __u32 type_id; - __u32 flags; +struct genl_info { + u32 snd_seq; + u32 snd_portid; + struct nlmsghdr *nlhdr; + struct genlmsghdr *genlhdr; + void *userhdr; + struct nlattr **attrs; + possible_net_t _net; + void *user_ptr[2]; + struct netlink_ext_ack *extack; }; -enum { - BTF_F_COMPACT = 1, - BTF_F_NONAME = 2, - BTF_F_PTR_RAW = 4, - BTF_F_ZERO = 8, +struct genl_small_ops { + int (*doit)(struct sk_buff *, struct genl_info *); + int (*dumpit)(struct sk_buff *, struct netlink_callback *); + u8 cmd; + u8 internal_flags; + u8 flags; + u8 validate; }; -struct 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; +enum genl_validate_flags { + GENL_DONT_VALIDATE_STRICT = 1, + GENL_DONT_VALIDATE_DUMP = 2, + GENL_DONT_VALIDATE_DUMP_STRICT = 4, }; -struct bpf_local_storage_map_bucket; - -struct bpf_local_storage_map { - struct bpf_map map; - struct bpf_local_storage_map_bucket *buckets; - u32 bucket_log; - u16 elem_size; - u16 cache_idx; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 listener { + struct list_head list; + pid_t pid; + char valid; }; -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 listener_list { + struct rw_semaphore sem; + struct list_head list; }; -enum bpf_access_type { - BPF_READ = 1, - BPF_WRITE = 2, +enum actions { + REGISTER = 0, + DEREGISTER = 1, + CPU_DONT_CARE = 2, }; -struct bpf_verifier_log; +typedef __u32 pcp_op_T_____6; -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 tp_module { + struct list_head list; + struct module *mod; }; -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 *, enum bpf_type_flag *); +enum tp_func_state { + TP_FUNC_0 = 0, + TP_FUNC_1 = 1, + TP_FUNC_2 = 2, + TP_FUNC_N = 3, }; -struct bpf_array_aux { - struct list_head poke_progs; - struct bpf_map *map; - struct mutex poke_mutex; - struct work_struct work; +enum tp_transition_sync { + TP_TRANSITION_SYNC_1_0_1 = 0, + TP_TRANSITION_SYNC_N_2_1 = 1, + _NR_TP_TRANSITION_SYNC = 2, }; -struct bpf_array { - struct bpf_map map; - u32 elem_size; - u32 index_mask; - struct bpf_array_aux *aux; - union { - char value[0]; - void *ptrs[0]; - void *pptrs[0]; - }; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 tp_transition_snapshot { + long unsigned int rcu; + long unsigned int srcu; + bool ongoing; }; -struct bpf_event_entry { - struct perf_event *event; - struct file *perf_file; - struct file *map_file; +struct tp_probes { struct callback_head rcu; + struct tracepoint_func probes[0]; }; -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; +struct ftrace_hash { + long unsigned int size_bits; + struct hlist_head *buckets; + long unsigned int count; + long unsigned int flags; + struct callback_head rcu; }; -typedef u32 (*bpf_prog_run_fn)(const struct bpf_prog *, const void *); - -typedef user_pt_regs bpf_user_pt_regs_t; - -struct bpf_perf_event_data { - bpf_user_pt_regs_t regs; - __u64 sample_period; - __u64 addr; +struct ftrace_func_entry { + struct hlist_node hlist; + long unsigned int ip; + long unsigned int direct; }; -struct btf_id_set { - u32 cnt; - u32 ids[0]; +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 perf_event_query_bpf { - __u32 ids_len; - __u32 prog_cnt; - __u32 ids[0]; +enum { + FTRACE_FL_ENABLED = 2147483648, + FTRACE_FL_REGS = 1073741824, + FTRACE_FL_REGS_EN = 536870912, + FTRACE_FL_TRAMP = 268435456, + FTRACE_FL_TRAMP_EN = 134217728, + FTRACE_FL_IPMODIFY = 67108864, + FTRACE_FL_DISABLED = 33554432, + FTRACE_FL_DIRECT = 16777216, + FTRACE_FL_DIRECT_EN = 8388608, }; -struct bpf_perf_event_data_kern { - bpf_user_pt_regs_t *regs; - struct perf_sample_data *data; - struct perf_event *event; +enum { + FTRACE_UPDATE_CALLS = 1, + FTRACE_DISABLE_CALLS = 2, + FTRACE_UPDATE_TRACE_FUNC = 4, + FTRACE_START_FUNC_RET = 8, + FTRACE_STOP_FUNC_RET = 16, + FTRACE_MAY_SLEEP = 32, }; enum { - BTF_TRACING_TYPE_TASK = 0, - BTF_TRACING_TYPE_FILE = 1, - BTF_TRACING_TYPE_VMA = 2, - MAX_BTF_TRACING_TYPE = 3, + FTRACE_UPDATE_IGNORE = 0, + FTRACE_UPDATE_MAKE_CALL = 1, + FTRACE_UPDATE_MODIFY_CALL = 2, + FTRACE_UPDATE_MAKE_NOP = 3, }; -struct bpf_local_storage_map_bucket { - struct hlist_head list; - raw_spinlock_t lock; +enum { + FTRACE_ITER_FILTER = 1, + FTRACE_ITER_NOTRACE = 2, + FTRACE_ITER_PRINTALL = 4, + FTRACE_ITER_DO_PROBES = 8, + FTRACE_ITER_PROBE = 16, + FTRACE_ITER_MOD = 32, + FTRACE_ITER_ENABLED = 64, }; -struct bpf_local_storage_data { - struct bpf_local_storage_map *smap; - u8 data[0]; -}; +struct ftrace_graph_ent { + long unsigned int func; + int depth; +} __attribute__((packed)); -struct trace_event_raw_bpf_trace_printk { - struct trace_entry ent; - u32 __data_loc_bpf_string; - char __data[0]; +struct ftrace_graph_ret { + long unsigned int func; + int depth; + unsigned int overrun; + long long unsigned int calltime; + long long unsigned int rettime; }; -struct trace_event_data_offsets_bpf_trace_printk { - u32 bpf_string; -}; +typedef void (*trace_func_graph_ret_t)(struct ftrace_graph_ret *); -typedef void (*btf_trace_bpf_trace_printk)(void *, const char *); +typedef int (*trace_func_graph_ent_t)(struct ftrace_graph_ent *); -struct bpf_trace_module { - struct module *module; - struct list_head list; +struct fgraph_ops { + trace_func_graph_ent_t entryfunc; + trace_func_graph_ret_t retfunc; }; -typedef u64 (*btf_bpf_probe_read_user)(void *, u32, const void *); - -typedef u64 (*btf_bpf_probe_read_user_str)(void *, u32, const void *); - -typedef u64 (*btf_bpf_probe_read_kernel)(void *, u32, const void *); - -typedef u64 (*btf_bpf_probe_read_kernel_str)(void *, u32, const void *); - -typedef u64 (*btf_bpf_probe_write_user)(void *, const void *, u32); +struct prog_entry; -typedef u64 (*btf_bpf_trace_printk)(char *, u32, u64, u64, u64); +struct event_filter { + struct prog_entry *prog; + char *filter_string; +}; -typedef u64 (*btf_bpf_trace_vprintk)(char *, u32, const void *, u32); +struct trace_array_cpu; -typedef u64 (*btf_bpf_seq_printf)(struct seq_file *, char *, u32, const void *, u32); +struct array_buffer { + struct trace_array *tr; + struct trace_buffer *buffer; + struct trace_array_cpu *data; + u64 time_start; + int cpu; +}; -typedef u64 (*btf_bpf_seq_write)(struct seq_file *, const void *, u32); +struct trace_pid_list; -typedef u64 (*btf_bpf_seq_printf_btf)(struct seq_file *, struct btf_ptr *, u32, u64); +struct trace_options; -typedef u64 (*btf_bpf_perf_event_read)(struct bpf_map *, u64); +struct cond_snapshot; -typedef u64 (*btf_bpf_perf_event_read_value)(struct bpf_map *, u64, struct bpf_perf_event_value *, u32); +struct trace_func_repeats; -struct bpf_trace_sample_data { - struct perf_sample_data sds[3]; +struct trace_array { + struct list_head list; + char *name; + struct array_buffer array_buffer; + struct array_buffer max_buffer; + bool allocated_snapshot; + long unsigned int max_latency; + struct dentry *d_max_latency; + struct work_struct fsnotify_work; + struct irq_work fsnotify_irqwork; + struct trace_pid_list *filtered_pids; + struct trace_pid_list *filtered_no_pids; + arch_spinlock_t max_lock; + int buffer_disabled; + int sys_refcount_enter; + int sys_refcount_exit; + 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; + bool clear_trace; + int buffer_percent; + unsigned int n_err_log_entries; + struct tracer *current_trace; + unsigned int trace_flags; + unsigned char trace_flags_index[32]; + unsigned int flags; + raw_spinlock_t start_lock; + struct list_head err_log; + struct dentry *dir; + struct dentry *options; + struct dentry *percpu_dir; + struct dentry *event_dir; + struct trace_options *topts; + struct list_head systems; + struct list_head events; + struct trace_event_file *trace_marker_file; + cpumask_var_t tracing_cpumask; + int ref; + int trace_ref; + struct ftrace_ops *ops; + struct trace_pid_list *function_pids; + struct trace_pid_list *function_no_pids; + struct list_head func_probes; + struct list_head mod_trace; + struct list_head mod_notrace; + int function_enabled; + int no_filter_buffering_ref; + struct list_head hist_vars; + struct cond_snapshot *cond_snapshot; + struct trace_func_repeats *last_func_repeats; }; -typedef u64 (*btf_bpf_perf_event_output)(struct pt_regs *, struct bpf_map *, u64, void *, u64); +struct tracer_flags; -struct bpf_nested_pt_regs { - struct pt_regs regs[3]; +struct tracer { + const char *name; + int (*init)(struct trace_array *); + void (*reset)(struct trace_array *); + void (*start)(struct trace_array *); + void (*stop)(struct trace_array *); + int (*update_thresh)(struct trace_array *); + void (*open)(struct trace_iterator *); + void (*pipe_open)(struct trace_iterator *); + void (*close)(struct trace_iterator *); + void (*pipe_close)(struct trace_iterator *); + ssize_t (*read)(struct trace_iterator *, struct file *, char *, size_t, loff_t *); + ssize_t (*splice_read)(struct trace_iterator *, struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); + void (*print_header)(struct seq_file *); + enum print_line_t (*print_line)(struct trace_iterator *); + int (*set_flag)(struct trace_array *, u32, u32, int); + int (*flag_changed)(struct trace_array *, u32, int); + struct tracer *next; + struct tracer_flags *flags; + int enabled; + bool print_max; + bool allow_instances; + bool use_max_tr; + bool noboot; }; -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 event_subsystem; -struct send_signal_irq_work { - struct irq_work irq_work; - struct task_struct *task; - u32 sig; - enum pid_type type; +struct trace_subsystem_dir { + struct list_head list; + struct event_subsystem *subsystem; + struct trace_array *tr; + struct dentry *entry; + int ref_count; + int nr_events; }; -typedef u64 (*btf_bpf_send_signal)(u32); - -typedef u64 (*btf_bpf_send_signal_thread)(u32); +struct trace_pid_list { + int pid_max; + long unsigned int *pids; +}; -typedef u64 (*btf_bpf_d_path)(struct path *, char *, u32); +struct trace_array_cpu { + atomic_t disabled; + void *buffer_page; + long unsigned int entries; + long unsigned int saved_latency; + long unsigned int critical_start; + long unsigned int critical_end; + long unsigned int critical_sequence; + long unsigned int nice; + long unsigned int policy; + long unsigned int rt_priority; + long unsigned int skipped_entries; + u64 preempt_timestamp; + pid_t pid; + kuid_t uid; + char comm[16]; + int ftrace_ignore_pid; + bool ignore_pid; +}; -typedef u64 (*btf_bpf_snprintf_btf)(char *, u32, struct btf_ptr *, u32, u64); +struct trace_option_dentry; -typedef u64 (*btf_bpf_get_func_ip_tracing)(void *); +struct trace_options { + struct tracer *tracer; + struct trace_option_dentry *topts; +}; -typedef u64 (*btf_bpf_get_func_ip_kprobe)(struct pt_regs *); +struct tracer_opt; -typedef u64 (*btf_bpf_get_func_ip_kprobe_multi)(struct pt_regs *); +struct trace_option_dentry { + struct tracer_opt *opt; + struct tracer_flags *flags; + struct trace_array *tr; + struct dentry *entry; +}; -typedef u64 (*btf_bpf_get_attach_cookie_kprobe_multi)(struct pt_regs *); +enum { + TRACE_PIDS = 1, + TRACE_NO_PIDS = 2, +}; -typedef u64 (*btf_bpf_get_attach_cookie_trace)(void *); +typedef bool (*cond_update_fn_t)(struct trace_array *, void *); -typedef u64 (*btf_bpf_get_attach_cookie_pe)(struct bpf_perf_event_data_kern *); +struct cond_snapshot { + void *cond_data; + cond_update_fn_t update; +}; -typedef u64 (*btf_bpf_get_branch_snapshot)(void *, u32, u64); +struct trace_func_repeats { + long unsigned int ip; + long unsigned int parent_ip; + long unsigned int count; + u64 ts_last_call; +}; -typedef u64 (*btf_get_func_arg)(void *, u32, u64 *); +enum { + TRACE_ARRAY_FL_GLOBAL = 1, +}; -typedef u64 (*btf_get_func_ret)(void *, u64 *); +struct tracer_opt { + const char *name; + u32 bit; +}; -typedef u64 (*btf_get_func_arg_cnt)(void *); +struct tracer_flags { + u32 val; + struct tracer_opt *opts; + struct tracer *trace; +}; -typedef u64 (*btf_bpf_perf_event_output_tp)(void *, struct bpf_map *, u64, void *, u64); +struct ftrace_mod_load { + struct list_head list; + char *func; + char *module; + int enable; +}; -typedef u64 (*btf_bpf_get_stackid_tp)(void *, struct bpf_map *, u64); +enum { + FTRACE_HASH_FL_MOD = 1, +}; -typedef u64 (*btf_bpf_get_stack_tp)(void *, void *, u32, u64); +struct ftrace_func_command { + struct list_head list; + char *name; + int (*func)(struct trace_array *, struct ftrace_hash *, char *, char *, char *, int); +}; -typedef u64 (*btf_bpf_perf_prog_read_value)(struct bpf_perf_event_data_kern *, struct bpf_perf_event_value *, u32); +struct ftrace_probe_ops { + void (*func)(long unsigned int, long unsigned int, struct trace_array *, struct ftrace_probe_ops *, void *); + int (*init)(struct ftrace_probe_ops *, struct trace_array *, long unsigned int, void *, void **); + void (*free)(struct ftrace_probe_ops *, struct trace_array *, long unsigned int, void *); + int (*print)(struct seq_file *, long unsigned int, struct ftrace_probe_ops *, void *); +}; -typedef u64 (*btf_bpf_read_branch_records)(struct bpf_perf_event_data_kern *, void *, u32, u64); +typedef int (*ftrace_mapper_func)(void *); -struct bpf_raw_tp_regs { - struct pt_regs regs[3]; +struct trace_parser { + bool cont; + char *buffer; + unsigned int idx; + unsigned int size; }; -typedef u64 (*btf_bpf_perf_event_output_raw_tp)(struct bpf_raw_tracepoint_args *, struct bpf_map *, u64, void *, u64); - -typedef u64 (*btf_bpf_get_stackid_raw_tp)(struct bpf_raw_tracepoint_args *, struct bpf_map *, u64); +enum trace_iterator_bits { + TRACE_ITER_PRINT_PARENT_BIT = 0, + TRACE_ITER_SYM_OFFSET_BIT = 1, + TRACE_ITER_SYM_ADDR_BIT = 2, + TRACE_ITER_VERBOSE_BIT = 3, + TRACE_ITER_RAW_BIT = 4, + TRACE_ITER_HEX_BIT = 5, + TRACE_ITER_BIN_BIT = 6, + TRACE_ITER_BLOCK_BIT = 7, + TRACE_ITER_PRINTK_BIT = 8, + TRACE_ITER_ANNOTATE_BIT = 9, + TRACE_ITER_USERSTACKTRACE_BIT = 10, + TRACE_ITER_SYM_USEROBJ_BIT = 11, + TRACE_ITER_PRINTK_MSGONLY_BIT = 12, + TRACE_ITER_CONTEXT_INFO_BIT = 13, + TRACE_ITER_LATENCY_FMT_BIT = 14, + TRACE_ITER_RECORD_CMD_BIT = 15, + TRACE_ITER_RECORD_TGID_BIT = 16, + TRACE_ITER_OVERWRITE_BIT = 17, + TRACE_ITER_STOP_ON_FREE_BIT = 18, + TRACE_ITER_IRQ_INFO_BIT = 19, + TRACE_ITER_MARKERS_BIT = 20, + TRACE_ITER_EVENT_FORK_BIT = 21, + TRACE_ITER_PAUSE_ON_TRACE_BIT = 22, + 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, +}; -typedef u64 (*btf_bpf_get_stack_raw_tp)(struct bpf_raw_tracepoint_args *, void *, u32, u64); +struct event_subsystem { + struct list_head list; + const char *name; + struct event_filter *filter; + int ref_count; +}; -enum dynevent_type { - DYNEVENT_TYPE_SYNTH = 1, - DYNEVENT_TYPE_KPROBE = 2, - DYNEVENT_TYPE_NONE = 3, +enum regex_type { + MATCH_FULL = 0, + MATCH_FRONT_ONLY = 1, + MATCH_MIDDLE_ONLY = 2, + MATCH_END_ONLY = 3, + MATCH_GLOB = 4, + MATCH_INDEX = 5, }; -struct dynevent_cmd; +struct tracer_stat { + const char *name; + void * (*stat_start)(struct tracer_stat *); + void * (*stat_next)(void *, int); + cmp_func_t stat_cmp; + int (*stat_show)(struct seq_file *, void *); + void (*stat_release)(void *); + int (*stat_headers)(struct seq_file *); +}; -typedef int (*dynevent_create_fn_t)(struct dynevent_cmd *); +enum { + FTRACE_MODIFY_ENABLE_FL = 1, + FTRACE_MODIFY_MAY_SLEEP_FL = 2, +}; -struct dynevent_cmd { - struct seq_buf seq; - const char *event_name; - unsigned int n_fields; - enum dynevent_type type; - dynevent_create_fn_t run_command; - void *private_data; +struct ftrace_profile { + struct hlist_node node; + long unsigned int ip; + long unsigned int counter; + long long unsigned int time; + long long unsigned int time_squared; }; -struct synth_field_desc { - const char *type; - const char *name; +struct ftrace_profile_page { + struct ftrace_profile_page *next; + long unsigned int index; + struct ftrace_profile records[0]; }; -struct synth_trace_event; +struct ftrace_profile_stat { + atomic_t disabled; + struct hlist_head *hash; + struct ftrace_profile_page *pages; + struct ftrace_profile_page *start; + struct tracer_stat stat; +}; -struct synth_event_trace_state { - struct trace_event_buffer fbuffer; - struct synth_trace_event *entry; - struct trace_buffer *buffer; - struct synth_event *event; - unsigned int cur_field; - unsigned int n_u64; - bool disabled; - bool add_next; - bool add_name; +struct ftrace_func_probe { + struct ftrace_probe_ops *probe_ops; + struct ftrace_ops ops; + struct trace_array *tr; + struct list_head list; + void *data; + int ref; }; -struct synth_trace_event { - struct trace_entry ent; - u64 fields[0]; +struct ftrace_page { + struct ftrace_page *next; + struct dyn_ftrace *records; + int index; + int order; }; -typedef int (*dynevent_check_arg_fn_t)(void *); +struct ftrace_rec_iter { + struct ftrace_page *pg; + int index; +}; -struct dynevent_arg { - const char *str; - char separator; +struct ftrace_iterator { + loff_t pos; + loff_t func_pos; + loff_t mod_pos; + struct ftrace_page *pg; + struct dyn_ftrace *func; + struct ftrace_func_probe *probe; + struct ftrace_func_entry *probe_entry; + struct trace_parser parser; + struct ftrace_hash *hash; + struct ftrace_ops *ops; + struct trace_array *tr; + struct list_head *mod_list; + int pidx; + int idx; + unsigned int flags; }; -struct dynevent_arg_pair { - const char *lhs; - const char *rhs; - char operator; - char separator; +struct ftrace_glob { + char *search; + unsigned int len; + int type; }; -enum { - SYNTH_ERR_BAD_NAME = 0, - SYNTH_ERR_INVALID_CMD = 1, - SYNTH_ERR_INVALID_DYN_CMD = 2, - SYNTH_ERR_EVENT_EXISTS = 3, - SYNTH_ERR_TOO_MANY_FIELDS = 4, - SYNTH_ERR_INCOMPLETE_TYPE = 5, - SYNTH_ERR_INVALID_TYPE = 6, - SYNTH_ERR_INVALID_FIELD = 7, - SYNTH_ERR_INVALID_ARRAY_SPEC = 8, +struct ftrace_func_map { + struct ftrace_func_entry entry; + void *data; }; -struct trace_event_raw_error_report_template { - struct trace_entry ent; - enum error_detector error_detector; - long unsigned int id; - char __data[0]; +struct ftrace_func_mapper { + struct ftrace_hash hash; }; -struct trace_event_data_offsets_error_report_template {}; +enum graph_filter_type { + GRAPH_FILTER_NOTRACE = 0, + GRAPH_FILTER_FUNCTION = 1, +}; -typedef void (*btf_trace_error_report_end)(void *, enum error_detector, long unsigned int); +struct ftrace_graph_data { + struct ftrace_hash *hash; + struct ftrace_func_entry *entry; + int idx; + enum graph_filter_type type; + struct ftrace_hash *new_hash; + const struct seq_operations *seq_ops; + struct trace_parser parser; +}; -struct kprobe_trace_entry_head { - struct trace_entry ent; +struct ftrace_mod_func { + struct list_head list; + char *name; long unsigned int ip; + unsigned int size; }; -struct kretprobe_trace_entry_head { - struct trace_entry ent; - long unsigned int func; - long unsigned int ret_ip; +struct ftrace_mod_map { + struct callback_head rcu; + struct list_head list; + struct module *mod; + long unsigned int start_addr; + long unsigned int end_addr; + struct list_head funcs; + unsigned int num_funcs; }; -struct trace_kprobe { - struct dyn_event devent; - struct kretprobe rp; - long unsigned int *nhit; - const char *symbol; - struct trace_probe tp; +struct ftrace_init_func { + struct list_head list; + long unsigned int ip; }; -enum cpufreq_table_sorting { - CPUFREQ_TABLE_UNSORTED = 0, - CPUFREQ_TABLE_SORTED_ASCENDING = 1, - CPUFREQ_TABLE_SORTED_DESCENDING = 2, +enum ring_buffer_type { + RINGBUF_TYPE_DATA_TYPE_LEN_MAX = 28, + RINGBUF_TYPE_PADDING = 29, + RINGBUF_TYPE_TIME_EXTEND = 30, + RINGBUF_TYPE_TIME_STAMP = 31, }; -struct cpufreq_cpuinfo { - unsigned int max_freq; - unsigned int min_freq; - unsigned int transition_latency; +enum ring_buffer_flags { + RB_FL_OVERWRITE = 1, }; -struct cpufreq_stats; - -struct thermal_cooling_device; - -struct clk; +struct ring_buffer_per_cpu; -struct cpufreq_governor; +struct buffer_page; -struct cpufreq_frequency_table; +struct ring_buffer_iter { + struct ring_buffer_per_cpu *cpu_buffer; + long unsigned int head; + long unsigned int next_event; + struct buffer_page *head_page; + struct buffer_page *cache_reader_page; + long unsigned int cache_read; + u64 read_stamp; + u64 page_stamp; + struct ring_buffer_event *event; + int missed_events; +}; -struct cpufreq_policy { - cpumask_var_t cpus; - cpumask_var_t related_cpus; - cpumask_var_t real_cpus; - unsigned int shared_type; - unsigned int cpu; - struct clk *clk; - struct cpufreq_cpuinfo cpuinfo; - unsigned int min; - unsigned int max; - unsigned int cur; - unsigned int suspend_freq; - unsigned int policy; - unsigned int last_policy; - struct cpufreq_governor *governor; - void *governor_data; - char last_governor[16]; - struct work_struct update; - struct freq_constraints constraints; - struct freq_qos_request *min_freq_req; - struct freq_qos_request *max_freq_req; - struct cpufreq_frequency_table *freq_table; - enum cpufreq_table_sorting freq_table_sorted; - struct list_head policy_list; - struct kobject kobj; - struct completion kobj_unregister; - struct rw_semaphore rwsem; - bool fast_switch_possible; - bool fast_switch_enabled; - bool strict_target; - bool efficiencies_available; - unsigned int transition_delay_us; - bool dvfs_possible_from_any_cpu; - 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 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 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 trace_buffer { + unsigned int flags; + int cpus; + atomic_t record_disabled; + cpumask_var_t cpumask; + struct lock_class_key *reader_lock_key; + struct mutex mutex; + struct ring_buffer_per_cpu **buffers; + struct hlist_node node; + u64 (*clock)(); + struct rb_irq_work irq_work; + bool time_stamp_abs; }; -struct cpufreq_frequency_table { - unsigned int flags; - unsigned int driver_data; - unsigned int frequency; +enum { + RB_LEN_TIME_EXTEND = 8, + RB_LEN_TIME_STAMP = 8, }; -struct trace_event_raw_cpu { - struct trace_entry ent; - u32 state; - u32 cpu_id; - char __data[0]; +struct buffer_data_page { + u64 time_stamp; + local_t commit; + unsigned char data[0]; }; -struct trace_event_raw_powernv_throttle { - struct trace_entry ent; - int chip_id; - u32 __data_loc_reason; - int pmax; - char __data[0]; +struct buffer_page { + struct list_head list; + local_t write; + unsigned int read; + local_t entries; + long unsigned int real_end; + struct buffer_data_page *page; }; -struct trace_event_raw_pstate_sample { - struct trace_entry ent; - u32 core_busy; - u32 scaled_busy; - u32 from; - u32 to; - u64 mperf; - u64 aperf; - u64 tsc; - u32 freq; - u32 io_boost; - char __data[0]; +struct rb_event_info { + u64 ts; + u64 delta; + u64 before; + u64 after; + long unsigned int length; + struct buffer_page *tail_page; + int add_timestamp; }; -struct trace_event_raw_cpu_frequency_limits { - struct trace_entry ent; - u32 min_freq; - u32 max_freq; - u32 cpu_id; - char __data[0]; +enum { + RB_ADD_STAMP_NONE = 0, + RB_ADD_STAMP_EXTEND = 2, + RB_ADD_STAMP_ABSOLUTE = 4, + RB_ADD_STAMP_FORCE = 8, }; -struct trace_event_raw_device_pm_callback_start { - struct trace_entry ent; - u32 __data_loc_device; - u32 __data_loc_driver; - u32 __data_loc_parent; - u32 __data_loc_pm_ops; - int event; - char __data[0]; +enum { + RB_CTX_TRANSITION = 0, + RB_CTX_NMI = 1, + RB_CTX_IRQ = 2, + RB_CTX_SOFTIRQ = 3, + RB_CTX_NORMAL = 4, + RB_CTX_MAX = 5, }; -struct trace_event_raw_device_pm_callback_end { - struct trace_entry ent; - u32 __data_loc_device; - u32 __data_loc_driver; - int error; - char __data[0]; +struct rb_time_struct { + local64_t time; }; -struct trace_event_raw_suspend_resume { - struct trace_entry ent; - const char *action; - int val; - bool start; - char __data[0]; +typedef struct rb_time_struct rb_time_t; + +struct ring_buffer_per_cpu { + int cpu; + atomic_t record_disabled; + atomic_t resize_disabled; + struct trace_buffer *buffer; + raw_spinlock_t reader_lock; + arch_spinlock_t lock; + struct lock_class_key lock_key; + struct buffer_data_page *free_page; + long unsigned int nr_pages; + unsigned int current_context; + struct list_head *pages; + struct buffer_page *head_page; + struct buffer_page *tail_page; + struct buffer_page *commit_page; + struct buffer_page *reader_page; + long unsigned int lost_events; + long unsigned int last_overrun; + long unsigned int nest; + local_t entries_bytes; + local_t entries; + local_t overrun; + local_t commit_overrun; + local_t dropped_events; + local_t committing; + local_t commits; + local_t pages_touched; + local_t pages_lost; + local_t pages_read; + long int last_pages_touch; + size_t shortest_full; + long unsigned int read; + 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; + struct work_struct update_pages_work; + struct completion update_done; + struct rb_irq_work irq_work; }; -struct trace_event_raw_wakeup_source { - struct trace_entry ent; - u32 __data_loc_name; - u64 state; - char __data[0]; +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); + int flags; }; -struct trace_event_raw_clock { - struct trace_entry ent; - u32 __data_loc_name; - u64 state; - u64 cpu_id; - char __data[0]; +enum fsnotify_data_type { + FSNOTIFY_EVENT_NONE = 0, + FSNOTIFY_EVENT_PATH = 1, + FSNOTIFY_EVENT_INODE = 2, }; -struct trace_event_raw_power_domain { - struct trace_entry ent; - u32 __data_loc_name; - u64 state; - u64 cpu_id; - char __data[0]; +enum trace_iter_flags { + TRACE_FILE_LAT_FMT = 1, + TRACE_FILE_ANNOTATE = 2, + TRACE_FILE_TIME_IN_NS = 4, }; -struct trace_event_raw_cpu_latency_qos_request { - struct trace_entry ent; - s32 value; - char __data[0]; +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 trace_event_raw_pm_qos_update { +enum trace_type { + __TRACE_FIRST_TYPE = 0, + TRACE_FN = 1, + TRACE_CTX = 2, + TRACE_WAKE = 3, + TRACE_STACK = 4, + TRACE_PRINT = 5, + TRACE_BPRINT = 6, + TRACE_MMIO_RW = 7, + TRACE_MMIO_MAP = 8, + TRACE_BRANCH = 9, + TRACE_GRAPH_RET = 10, + TRACE_GRAPH_ENT = 11, + TRACE_USER_STACK = 12, + TRACE_BLK = 13, + TRACE_BPUTS = 14, + TRACE_HWLAT = 15, + TRACE_OSNOISE = 16, + TRACE_TIMERLAT = 17, + TRACE_RAW_DATA = 18, + TRACE_FUNC_REPEATS = 19, + __TRACE_LAST_TYPE = 20, +}; + +struct ftrace_entry { struct trace_entry ent; - enum pm_qos_req_action action; - int prev_value; - int curr_value; - char __data[0]; + long unsigned int ip; + long unsigned int parent_ip; }; -struct trace_event_raw_dev_pm_qos_request { +struct stack_entry { struct trace_entry ent; - u32 __data_loc_name; - enum dev_pm_qos_req_type type; - s32 new_value; - char __data[0]; + int size; + long unsigned int caller[8]; }; -struct trace_event_data_offsets_cpu {}; +struct bprint_entry { + struct trace_entry ent; + long unsigned int ip; + const char *fmt; + u32 buf[0]; +}; -struct trace_event_data_offsets_powernv_throttle { - u32 reason; +struct print_entry { + struct trace_entry ent; + long unsigned int ip; + char buf[0]; }; -struct trace_event_data_offsets_pstate_sample {}; +struct raw_data_entry { + struct trace_entry ent; + unsigned int id; + char buf[0]; +}; -struct trace_event_data_offsets_cpu_frequency_limits {}; +struct bputs_entry { + struct trace_entry ent; + long unsigned int ip; + const char *str; +}; -struct trace_event_data_offsets_device_pm_callback_start { - u32 device; - u32 driver; - u32 parent; - u32 pm_ops; +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; }; -struct trace_event_data_offsets_device_pm_callback_end { - u32 device; - u32 driver; +enum trace_iterator_flags { + TRACE_ITER_PRINT_PARENT = 1, + TRACE_ITER_SYM_OFFSET = 2, + TRACE_ITER_SYM_ADDR = 4, + TRACE_ITER_VERBOSE = 8, + TRACE_ITER_RAW = 16, + TRACE_ITER_HEX = 32, + TRACE_ITER_BIN = 64, + TRACE_ITER_BLOCK = 128, + TRACE_ITER_PRINTK = 256, + TRACE_ITER_ANNOTATE = 512, + TRACE_ITER_USERSTACKTRACE = 1024, + TRACE_ITER_SYM_USEROBJ = 2048, + TRACE_ITER_PRINTK_MSGONLY = 4096, + TRACE_ITER_CONTEXT_INFO = 8192, + TRACE_ITER_LATENCY_FMT = 16384, + TRACE_ITER_RECORD_CMD = 32768, + TRACE_ITER_RECORD_TGID = 65536, + TRACE_ITER_OVERWRITE = 131072, + TRACE_ITER_STOP_ON_FREE = 262144, + TRACE_ITER_IRQ_INFO = 524288, + TRACE_ITER_MARKERS = 1048576, + TRACE_ITER_EVENT_FORK = 2097152, + TRACE_ITER_PAUSE_ON_TRACE = 4194304, + 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_event_data_offsets_suspend_resume {}; +struct trace_min_max_param { + struct mutex *lock; + u64 *val; + u64 *min; + u64 *max; +}; -struct trace_event_data_offsets_wakeup_source { - u32 name; +struct saved_cmdlines_buffer { + unsigned int map_pid_to_cmdline[32769]; + unsigned int *map_cmdline_to_pid; + unsigned int cmdline_num; + int cmdline_idx; + char *saved_cmdlines; }; -struct trace_event_data_offsets_clock { - u32 name; +struct ftrace_stack { + long unsigned int calls[1024]; }; -struct trace_event_data_offsets_power_domain { - u32 name; +struct ftrace_stacks { + struct ftrace_stack stacks[4]; }; -struct trace_event_data_offsets_cpu_latency_qos_request {}; +struct trace_buffer_struct { + int nesting; + char buffer[4096]; +}; -struct trace_event_data_offsets_pm_qos_update {}; +struct ftrace_buffer_info { + struct trace_iterator iter; + void *spare; + unsigned int spare_cpu; + unsigned int read; +}; -struct trace_event_data_offsets_dev_pm_qos_request { - u32 name; +struct err_info { + const char **errs; + u8 type; + u8 pos; + u64 ts; }; -typedef void (*btf_trace_cpu_idle)(void *, unsigned int, unsigned int); +struct tracing_log_err { + struct list_head list; + struct err_info info; + char loc[128]; + char cmd[256]; +}; -typedef void (*btf_trace_powernv_throttle)(void *, int, const char *, int); +struct buffer_ref { + struct trace_buffer *buffer; + void *page; + int cpu; + refcount_t refcount; +}; -typedef void (*btf_trace_pstate_sample)(void *, u32, u32, u32, u32, u64, u64, u64, u32, u32); +struct ctx_switch_entry { + struct trace_entry ent; + unsigned int prev_pid; + unsigned int next_pid; + unsigned int next_cpu; + unsigned char prev_prio; + unsigned char prev_state; + unsigned char next_prio; + unsigned char next_state; +}; -typedef void (*btf_trace_cpu_frequency)(void *, unsigned int, unsigned int); +struct userstack_entry { + struct trace_entry ent; + unsigned int tgid; + long unsigned int caller[8]; +}; -typedef void (*btf_trace_cpu_frequency_limits)(void *, struct cpufreq_policy *); +struct hwlat_entry { + struct trace_entry ent; + u64 duration; + u64 outer_duration; + u64 nmi_total_ts; + struct timespec64 timestamp; + unsigned int nmi_count; + unsigned int seqnum; + unsigned int count; +}; -typedef void (*btf_trace_device_pm_callback_start)(void *, struct device *, const char *, int); +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; +}; -typedef void (*btf_trace_device_pm_callback_end)(void *, struct device *, int); +struct timerlat_entry { + struct trace_entry ent; + unsigned int seqnum; + int context; + u64 timer_latency; +}; -typedef void (*btf_trace_suspend_resume)(void *, const char *, int, bool); +struct trace_mark { + long long unsigned int val; + char sym; +}; -typedef void (*btf_trace_wakeup_source_activate)(void *, const char *, unsigned int); +struct stat_node { + struct rb_node node; + void *stat; +}; -typedef void (*btf_trace_wakeup_source_deactivate)(void *, const char *, unsigned int); +struct stat_session { + struct list_head session_list; + struct tracer_stat *ts; + struct rb_root stat_root; + struct mutex stat_mutex; + struct dentry *file; +}; -typedef void (*btf_trace_clock_enable)(void *, const char *, unsigned int, unsigned int); +struct trace_bprintk_fmt { + struct list_head list; + const char *fmt; +}; -typedef void (*btf_trace_clock_disable)(void *, const char *, unsigned int, unsigned int); +typedef int (*tracing_map_cmp_fn_t)(void *, void *); -typedef void (*btf_trace_clock_set_rate)(void *, const char *, unsigned int, unsigned int); +struct tracing_map_field { + tracing_map_cmp_fn_t cmp_fn; + union { + atomic64_t sum; + unsigned int offset; + }; +}; -typedef void (*btf_trace_power_domain_target)(void *, const char *, unsigned int, unsigned int); +struct tracing_map; -typedef void (*btf_trace_pm_qos_add_request)(void *, s32); +struct tracing_map_elt { + struct tracing_map *map; + struct tracing_map_field *fields; + atomic64_t *vars; + bool *var_set; + void *key; + void *private_data; +}; -typedef void (*btf_trace_pm_qos_update_request)(void *, s32); +struct tracing_map_sort_key { + unsigned int field_idx; + bool descending; +}; -typedef void (*btf_trace_pm_qos_remove_request)(void *, s32); +struct tracing_map_array; -typedef void (*btf_trace_pm_qos_update_target)(void *, enum pm_qos_req_action, int, int); +struct tracing_map_ops; -typedef void (*btf_trace_pm_qos_update_flags)(void *, enum pm_qos_req_action, int, int); - -typedef void (*btf_trace_dev_pm_qos_add_request)(void *, const char *, enum dev_pm_qos_req_type, s32); - -typedef void (*btf_trace_dev_pm_qos_update_request)(void *, const char *, enum dev_pm_qos_req_type, s32); - -typedef void (*btf_trace_dev_pm_qos_remove_request)(void *, const char *, enum dev_pm_qos_req_type, s32); - -struct trace_probe_log { - const char *subsystem; - const char **argv; - int argc; - int index; +struct tracing_map { + unsigned int key_size; + unsigned int map_bits; + unsigned int map_size; + unsigned int max_elts; + atomic_t next_elt; + struct tracing_map_array *elts; + struct tracing_map_array *map; + const struct tracing_map_ops *ops; + void *private_data; + struct tracing_map_field fields[6]; + unsigned int n_fields; + int key_idx[3]; + unsigned int n_keys; + struct tracing_map_sort_key sort_key; + unsigned int n_vars; + atomic64_t hits; + atomic64_t drops; }; -enum uprobe_filter_ctx { - UPROBE_FILTER_REGISTER = 0, - UPROBE_FILTER_UNREGISTER = 1, - UPROBE_FILTER_MMAP = 2, +struct tracing_map_entry { + u32 key; + struct tracing_map_elt *val; }; -struct uprobe_consumer { - int (*handler)(struct uprobe_consumer *, struct pt_regs *); - int (*ret_handler)(struct uprobe_consumer *, long unsigned int, struct pt_regs *); - bool (*filter)(struct uprobe_consumer *, enum uprobe_filter_ctx, struct mm_struct *); - struct uprobe_consumer *next; +struct tracing_map_sort_entry { + void *key; + struct tracing_map_elt *elt; + bool elt_copied; + bool dup; }; -struct uprobe_trace_entry_head { - struct trace_entry ent; - long unsigned int vaddr[0]; +struct tracing_map_array { + unsigned int entries_per_page; + unsigned int entry_size_shift; + unsigned int entry_shift; + unsigned int entry_mask; + unsigned int n_pages; + void **pages; }; -struct trace_uprobe { - struct dyn_event devent; - struct uprobe_consumer consumer; - struct path path; - struct inode *inode; - char *filename; - long unsigned int offset; - long unsigned int ref_ctr_offset; - long unsigned int nhit; - struct trace_probe tp; +struct tracing_map_ops { + int (*elt_alloc)(struct tracing_map_elt *); + void (*elt_free)(struct tracing_map_elt *); + void (*elt_clear)(struct tracing_map_elt *); + void (*elt_init)(struct tracing_map_elt *); }; -struct uprobe_dispatch_data { - struct trace_uprobe *tu; - long unsigned int bp_addr; +enum { + TRACE_FUNC_NO_OPTS = 0, + TRACE_FUNC_OPT_STACK = 1, + TRACE_FUNC_OPT_NO_REPEATS = 2, + TRACE_FUNC_OPT_HIGHEST_BIT = 4, }; -struct uprobe_cpu_buffer { - struct mutex mutex; - void *buf; +enum { + MODE_NONE = 0, + MODE_ROUND_ROBIN = 1, + MODE_PER_CPU = 2, + MODE_MAX = 3, }; -typedef bool (*filter_func_t)(struct uprobe_consumer *, enum uprobe_filter_ctx, struct mm_struct *); - -enum bpf_cmd { - BPF_MAP_CREATE = 0, - BPF_MAP_LOOKUP_ELEM = 1, - BPF_MAP_UPDATE_ELEM = 2, - BPF_MAP_DELETE_ELEM = 3, - BPF_MAP_GET_NEXT_KEY = 4, - BPF_PROG_LOAD = 5, - BPF_OBJ_PIN = 6, - BPF_OBJ_GET = 7, - BPF_PROG_ATTACH = 8, - BPF_PROG_DETACH = 9, - BPF_PROG_TEST_RUN = 10, - BPF_PROG_RUN = 10, - BPF_PROG_GET_NEXT_ID = 11, - BPF_MAP_GET_NEXT_ID = 12, - BPF_PROG_GET_FD_BY_ID = 13, - BPF_MAP_GET_FD_BY_ID = 14, - BPF_OBJ_GET_INFO_BY_FD = 15, - BPF_PROG_QUERY = 16, - BPF_RAW_TRACEPOINT_OPEN = 17, - BPF_BTF_LOAD = 18, - BPF_BTF_GET_FD_BY_ID = 19, - BPF_TASK_FD_QUERY = 20, - BPF_MAP_LOOKUP_AND_DELETE_ELEM = 21, - BPF_MAP_FREEZE = 22, - BPF_BTF_GET_NEXT_ID = 23, - BPF_MAP_LOOKUP_BATCH = 24, - BPF_MAP_LOOKUP_AND_DELETE_BATCH = 25, - BPF_MAP_UPDATE_BATCH = 26, - BPF_MAP_DELETE_BATCH = 27, - BPF_LINK_CREATE = 28, - BPF_LINK_UPDATE = 29, - BPF_LINK_GET_FD_BY_ID = 30, - BPF_LINK_GET_NEXT_ID = 31, - BPF_ENABLE_STATS = 32, - BPF_ITER_CREATE = 33, - BPF_LINK_DETACH = 34, - BPF_PROG_BIND_MAP = 35, +struct hwlat_kthread_data { + struct task_struct *kthread; + u64 nmi_ts_start; + u64 nmi_total_ts; + int nmi_count; + int nmi_cpu; }; -enum bpf_link_type { - BPF_LINK_TYPE_UNSPEC = 0, - BPF_LINK_TYPE_RAW_TRACEPOINT = 1, - BPF_LINK_TYPE_TRACING = 2, - BPF_LINK_TYPE_CGROUP = 3, - BPF_LINK_TYPE_ITER = 4, - BPF_LINK_TYPE_NETNS = 5, - BPF_LINK_TYPE_XDP = 6, - BPF_LINK_TYPE_PERF_EVENT = 7, - BPF_LINK_TYPE_KPROBE_MULTI = 8, - MAX_BPF_LINK_TYPE = 9, +struct hwlat_sample { + u64 seqnum; + u64 duration; + u64 outer_duration; + u64 nmi_total_ts; + struct timespec64 timestamp; + int nmi_count; + int count; }; -enum { - BPF_ANY = 0, - BPF_NOEXIST = 1, - BPF_EXIST = 2, - BPF_F_LOCK = 4, +struct hwlat_data { + struct mutex lock; + u64 count; + u64 sample_window; + u64 sample_width; + int thread_mode; }; -enum { - BPF_F_NO_PREALLOC = 1, - BPF_F_NO_COMMON_LRU = 2, - BPF_F_NUMA_NODE = 4, - BPF_F_RDONLY = 8, - BPF_F_WRONLY = 16, - BPF_F_STACK_BUILD_ID = 32, - BPF_F_ZERO_SEED = 64, - BPF_F_RDONLY_PROG = 128, - BPF_F_WRONLY_PROG = 256, - BPF_F_CLONE = 512, - BPF_F_MMAPABLE = 1024, - BPF_F_PRESERVE_ELEMS = 2048, - BPF_F_INNER_MAP = 4096, +struct trace_event_raw_thread_noise { + struct trace_entry ent; + char comm[16]; + u64 start; + u64 duration; + pid_t pid; + char __data[0]; }; -enum bpf_stats_type { - BPF_STATS_RUN_TIME = 0, +struct trace_event_raw_softirq_noise { + struct trace_entry ent; + u64 start; + u64 duration; + int vector; + char __data[0]; }; -struct bpf_prog_info { - __u32 type; - __u32 id; - __u8 tag[8]; - __u32 jited_prog_len; - __u32 xlated_prog_len; - __u64 jited_prog_insns; - __u64 xlated_prog_insns; - __u64 load_time; - __u32 created_by_uid; - __u32 nr_map_ids; - __u64 map_ids; - char name[16]; - __u32 ifindex; - __u32 gpl_compatible: 1; - __u64 netns_dev; - __u64 netns_ino; - __u32 nr_jited_ksyms; - __u32 nr_jited_func_lens; - __u64 jited_ksyms; - __u64 jited_func_lens; - __u32 btf_id; - __u32 func_info_rec_size; - __u64 func_info; - __u32 nr_func_info; - __u32 nr_line_info; - __u64 line_info; - __u64 jited_line_info; - __u32 nr_jited_line_info; - __u32 line_info_rec_size; - __u32 jited_line_info_rec_size; - __u32 nr_prog_tags; - __u64 prog_tags; - __u64 run_time_ns; - __u64 run_cnt; - __u64 recursion_misses; - __u32 verified_insns; +struct trace_event_raw_irq_noise { + struct trace_entry ent; + u64 start; + u64 duration; + u32 __data_loc_desc; + int vector; + char __data[0]; }; -struct bpf_map_info { - __u32 type; - __u32 id; - __u32 key_size; - __u32 value_size; - __u32 max_entries; - __u32 map_flags; - char name[16]; - __u32 ifindex; - __u32 btf_vmlinux_value_type_id; - __u64 netns_dev; - __u64 netns_ino; - __u32 btf_id; - __u32 btf_key_type_id; - __u32 btf_value_type_id; - __u64 map_extra; +struct trace_event_raw_nmi_noise { + struct trace_entry ent; + u64 start; + u64 duration; + char __data[0]; }; -struct bpf_btf_info { - __u64 btf; - __u32 btf_size; - __u32 id; - __u64 name; - __u32 name_len; - __u32 kernel_btf; +struct trace_event_raw_sample_threshold { + struct trace_entry ent; + u64 start; + u64 duration; + u64 interference; + char __data[0]; }; -struct bpf_link_info { - __u32 type; - __u32 id; - __u32 prog_id; - union { - struct { - __u64 tp_name; - __u32 tp_name_len; - } raw_tracepoint; - struct { - __u32 attach_type; - __u32 target_obj_id; - __u32 target_btf_id; - } tracing; - struct { - __u64 cgroup_id; - __u32 attach_type; - } cgroup; - struct { - __u64 target_name; - __u32 target_name_len; - union { - struct { - __u32 map_id; - } map; - }; - } iter; - struct { - __u32 netns_ino; - __u32 attach_type; - } netns; - struct { - __u32 ifindex; - } xdp; - }; +struct trace_event_data_offsets_thread_noise {}; + +struct trace_event_data_offsets_softirq_noise {}; + +struct trace_event_data_offsets_irq_noise { + u32 desc; }; -struct rhash_lock_head; +struct trace_event_data_offsets_nmi_noise {}; -struct bucket_table { - unsigned int size; - unsigned int nest; - u32 hash_rnd; - struct list_head walkers; - struct callback_head rcu; - struct bucket_table *future_tbl; - struct lockdep_map dep_map; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 rhash_lock_head *buckets[0]; +struct trace_event_data_offsets_sample_threshold {}; + +typedef void (*btf_trace_thread_noise)(void *, struct task_struct *, u64, u64); + +typedef void (*btf_trace_softirq_noise)(void *, int, u64, u64); + +typedef void (*btf_trace_irq_noise)(void *, int, const char *, u64, u64); + +typedef void (*btf_trace_nmi_noise)(void *, u64, u64); + +typedef void (*btf_trace_sample_threshold)(void *, u64, u64, u64); + +struct osn_nmi { + u64 count; + u64 delta_start; }; -typedef sockptr_t bpfptr_t; +struct osn_irq { + u64 count; + u64 arrival_time; + u64 delta_start; +}; -struct bpf_verifier_log { - u32 level; - char kbuf[1024]; - char *ubuf; - u32 len_used; - u32 len_total; +struct osn_softirq { + u64 count; + u64 arrival_time; + u64 delta_start; }; -struct bpf_subprog_info { - u32 start; - u32 linfo_idx; - u16 stack_depth; - bool has_tail_call; - bool tail_call_reachable; - bool has_ld_abs; - bool is_async_cb; +struct osn_thread { + u64 count; + u64 arrival_time; + u64 delta_start; }; -struct bpf_id_pair { - u32 old; - u32 cur; +struct osnoise_variables { + struct task_struct *kthread; + bool sampling; + pid_t pid; + struct osn_nmi nmi; + struct osn_irq irq; + struct osn_softirq softirq; + struct osn_thread thread; + local_t int_counter; }; -struct bpf_verifier_stack_elem; +struct timerlat_variables { + struct task_struct *kthread; + struct hrtimer timer; + u64 rel_period; + u64 abs_period; + bool tracing_thread; + u64 count; +}; -struct bpf_verifier_state; +struct osnoise_sample { + u64 runtime; + u64 noise; + u64 max_sample; + int hw_count; + int nmi_count; + int irq_count; + int softirq_count; + int thread_count; +}; -struct bpf_verifier_state_list; +struct timerlat_sample { + u64 timer_latency; + unsigned int seqnum; + int context; +}; -struct bpf_insn_aux_data; +struct osnoise_data { + u64 sample_period; + u64 sample_runtime; + u64 stop_tracing; + u64 stop_tracing_total; + u64 timerlat_period; + u64 print_stack; + int timerlat_tracer; + bool tainted; +}; -struct bpf_verifier_env { - u32 insn_idx; - u32 prev_insn_idx; - struct bpf_prog *prog; - const struct bpf_verifier_ops *ops; - struct bpf_verifier_stack_elem *head; +struct trace_stack { int stack_size; - bool strict_alignment; - bool test_state_freq; - struct bpf_verifier_state *cur_state; - struct bpf_verifier_state_list **explored_states; - struct bpf_verifier_state_list *free_list; - struct bpf_map *used_maps[64]; - struct btf_mod_pair used_btfs[64]; - u32 used_map_cnt; - u32 used_btf_cnt; - u32 id_gen; - bool explore_alu_limits; - bool allow_ptr_leaks; - bool allow_uninit_stack; - bool allow_ptr_to_map_access; - bool bpf_capable; - bool bypass_spec_v1; - bool bypass_spec_v4; - bool seen_direct_write; - struct bpf_insn_aux_data *insn_aux_data; - const struct bpf_line_info *prev_linfo; - struct bpf_verifier_log log; - struct bpf_subprog_info subprog_info[257]; - struct bpf_id_pair idmap_scratch[75]; - struct { - int *insn_state; - int *insn_stack; - int cur_stack; - } cfg; - u32 pass_cnt; - u32 subprog_cnt; - u32 prev_insn_processed; - u32 insn_processed; - u32 prev_jmps_processed; - u32 jmps_processed; - u64 verification_time; - u32 max_states_per_insn; - u32 total_states; - u32 peak_states; - u32 longest_mark_read_walk; - bpfptr_t fd_array; - u32 scratched_regs; - u64 scratched_stack_slots; - u32 prev_log_len; - u32 prev_insn_print_len; - char type_str_buf[64]; + int nr_entries; + long unsigned int calls[256]; }; -struct tnum { - u64 value; - u64 mask; +enum { + TRACE_NOP_OPT_ACCEPT = 1, + TRACE_NOP_OPT_REFUSE = 2, }; -enum bpf_reg_liveness { - REG_LIVE_NONE = 0, - REG_LIVE_READ32 = 1, - REG_LIVE_READ64 = 2, - REG_LIVE_READ = 3, - REG_LIVE_WRITTEN = 4, - REG_LIVE_DONE = 8, +struct ftrace_graph_ent_entry { + struct trace_entry ent; + struct ftrace_graph_ent graph_ent; }; -struct bpf_reg_state { - enum bpf_reg_type type; - s32 off; - union { - int range; - struct { - struct bpf_map *map_ptr; - u32 map_uid; - }; - struct { - struct btf *btf; - u32 btf_id; - }; - u32 mem_size; - struct { - long unsigned int raw1; - long unsigned int raw2; - } raw; - u32 subprogno; - }; - u32 id; - u32 ref_obj_id; - struct tnum var_off; - s64 smin_value; - s64 smax_value; - u64 umin_value; - u64 umax_value; - s32 s32_min_value; - s32 s32_max_value; - u32 u32_min_value; - u32 u32_max_value; - struct bpf_reg_state *parent; - u32 frameno; - s32 subreg_def; - enum bpf_reg_liveness live; - bool precise; +struct ftrace_graph_ret_entry { + struct trace_entry ent; + struct ftrace_graph_ret ret; }; -struct bpf_reference_state; +struct fgraph_cpu_data { + pid_t last_pid; + int depth; + int depth_irq; + int ignore; + long unsigned int enter_funcs[50]; +}; -struct bpf_stack_state; +struct fgraph_data { + struct fgraph_cpu_data *cpu_data; + struct ftrace_graph_ent_entry ent; + struct ftrace_graph_ret_entry ret; + int failed; + int cpu; + long: 0; +} __attribute__((packed)); -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; +enum { + FLAGS_FILL_FULL = 268435456, + FLAGS_FILL_START = 536870912, + FLAGS_FILL_END = 805306368, }; -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 disk_stats { + u64 nsecs[4]; + long unsigned int sectors[4]; + long unsigned int ios[4]; + long unsigned int merges[4]; + long unsigned int io_ticks; + local_t in_flight[2]; }; -struct bpf_link_ops; +struct blk_crypto_key; -struct bpf_link { - atomic64_t refcnt; - u32 id; - enum bpf_link_type type; - const struct bpf_link_ops *ops; - struct bpf_prog *prog; - struct work_struct work; +struct bio_crypt_ctx { + const struct blk_crypto_key *bc_key; + u64 bc_dun[4]; }; -struct bpf_link_ops { - void (*release)(struct bpf_link *); - void (*dealloc)(struct bpf_link *); - int (*detach)(struct bpf_link *); - int (*update_prog)(struct bpf_link *, struct bpf_prog *, struct bpf_prog *); - void (*show_fdinfo)(const struct bpf_link *, struct seq_file *); - int (*fill_link_info)(const struct bpf_link *, struct bpf_link_info *); +enum req_opf { + REQ_OP_READ = 0, + REQ_OP_WRITE = 1, + REQ_OP_FLUSH = 2, + REQ_OP_DISCARD = 3, + REQ_OP_SECURE_ERASE = 5, + REQ_OP_WRITE_SAME = 7, + REQ_OP_WRITE_ZEROES = 9, + REQ_OP_ZONE_OPEN = 10, + REQ_OP_ZONE_CLOSE = 11, + REQ_OP_ZONE_FINISH = 12, + REQ_OP_ZONE_APPEND = 13, + REQ_OP_ZONE_RESET = 15, + REQ_OP_ZONE_RESET_ALL = 17, + REQ_OP_DRV_IN = 34, + REQ_OP_DRV_OUT = 35, + REQ_OP_LAST = 36, }; -struct bpf_link_primer { - struct bpf_link *link; - struct file *file; - int fd; - u32 id; +enum req_flag_bits { + __REQ_FAILFAST_DEV = 8, + __REQ_FAILFAST_TRANSPORT = 9, + __REQ_FAILFAST_DRIVER = 10, + __REQ_SYNC = 11, + __REQ_META = 12, + __REQ_PRIO = 13, + __REQ_NOMERGE = 14, + __REQ_IDLE = 15, + __REQ_INTEGRITY = 16, + __REQ_FUA = 17, + __REQ_PREFLUSH = 18, + __REQ_RAHEAD = 19, + __REQ_BACKGROUND = 20, + __REQ_NOWAIT = 21, + __REQ_CGROUP_PUNT = 22, + __REQ_NOUNMAP = 23, + __REQ_HIPRI = 24, + __REQ_DRV = 25, + __REQ_SWAP = 26, + __REQ_NR_BITS = 27, }; -struct rhash_lock_head {}; +struct blk_mq_ctxs; -enum btf_kfunc_type { - BTF_KFUNC_TYPE_CHECK = 0, - BTF_KFUNC_TYPE_ACQUIRE = 1, - BTF_KFUNC_TYPE_RELEASE = 2, - BTF_KFUNC_TYPE_RET_NULL = 3, - BTF_KFUNC_TYPE_MAX = 4, +struct blk_mq_ctx { + struct { + spinlock_t lock; + struct list_head rq_lists[3]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + }; + unsigned 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: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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; + long: 64; + long: 64; + long: 64; + long: 64; + 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 bpf_stack_state { - struct bpf_reg_state spilled_ptr; - u8 slot_type[8]; +struct blk_mq_alloc_data { + struct request_queue *q; + blk_mq_req_flags_t flags; + unsigned int shallow_depth; + unsigned int cmd_flags; + struct blk_mq_ctx *ctx; + struct blk_mq_hw_ctx *hctx; }; -struct bpf_reference_state { - int id; - int insn_idx; +struct blk_stat_callback { + struct list_head list; + struct timer_list timer; + struct blk_rq_stat *cpu_stat; + int (*bucket_fn)(const struct request *); + unsigned int buckets; + struct blk_rq_stat *stat; + void (*timer_fn)(struct blk_stat_callback *); + void *data; + struct callback_head rcu; }; -struct bpf_idx_pair { - u32 prev_idx; - u32 idx; +struct blk_trace { + int trace_state; + struct rchan *rchan; + long unsigned int *sequence; + unsigned char *msg_data; + u16 act_mask; + u64 start_lba; + u64 end_lba; + u32 pid; + u32 dev; + struct dentry *dir; + struct list_head running_list; + atomic_t dropped; }; -struct bpf_verifier_state { - struct bpf_func_state *frame[8]; - struct bpf_verifier_state *parent; - u32 branches; - u32 insn_idx; - u32 curframe; - u32 active_spin_lock; - bool speculative; - u32 first_insn_idx; - u32 last_insn_idx; - struct bpf_idx_pair *jmp_history; - u32 jmp_history_cnt; +struct blk_flush_queue { + unsigned int flush_pending_idx: 1; + unsigned int flush_running_idx: 1; + blk_status_t rq_status; + long unsigned int flush_pending_since; + struct list_head flush_queue[2]; + struct list_head flush_data_in_flight; + struct request *flush_rq; + spinlock_t mq_flush_lock; }; -struct bpf_verifier_state_list { - struct bpf_verifier_state state; - struct bpf_verifier_state_list *next; - int miss_cnt; - int hit_cnt; +enum blktrace_cat { + BLK_TC_READ = 1, + BLK_TC_WRITE = 2, + BLK_TC_FLUSH = 4, + BLK_TC_SYNC = 8, + BLK_TC_SYNCIO = 8, + BLK_TC_QUEUE = 16, + BLK_TC_REQUEUE = 32, + BLK_TC_ISSUE = 64, + BLK_TC_COMPLETE = 128, + BLK_TC_FS = 256, + BLK_TC_PC = 512, + BLK_TC_NOTIFY = 1024, + BLK_TC_AHEAD = 2048, + BLK_TC_META = 4096, + BLK_TC_DISCARD = 8192, + BLK_TC_DRV_DATA = 16384, + BLK_TC_FUA = 32768, + BLK_TC_END = 32768, }; -struct bpf_insn_aux_data { - union { - enum bpf_reg_type ptr_type; - long unsigned int map_ptr_state; - s32 call_imm; - u32 alu_limit; - struct { - u32 map_index; - u32 map_off; - }; - struct { - enum bpf_reg_type reg_type; - union { - struct { - struct btf *btf; - u32 btf_id; - }; - u32 mem_size; - }; - } btf_var; - }; - u64 map_key_state; - int ctx_field_size; - u32 seen; - bool sanitize_stack_spill; - bool zext_dst; - u8 alu_state; - unsigned int orig_idx; - bool prune_point; +enum blktrace_act { + __BLK_TA_QUEUE = 1, + __BLK_TA_BACKMERGE = 2, + __BLK_TA_FRONTMERGE = 3, + __BLK_TA_GETRQ = 4, + __BLK_TA_SLEEPRQ = 5, + __BLK_TA_REQUEUE = 6, + __BLK_TA_ISSUE = 7, + __BLK_TA_COMPLETE = 8, + __BLK_TA_PLUG = 9, + __BLK_TA_UNPLUG_IO = 10, + __BLK_TA_UNPLUG_TIMER = 11, + __BLK_TA_INSERT = 12, + __BLK_TA_SPLIT = 13, + __BLK_TA_BOUNCE = 14, + __BLK_TA_REMAP = 15, + __BLK_TA_ABORT = 16, + __BLK_TA_DRV_DATA = 17, + __BLK_TA_CGROUP = 256, }; -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 blktrace_notify { + __BLK_TN_PROCESS = 0, + __BLK_TN_TIMESTAMP = 1, + __BLK_TN_MESSAGE = 2, + __BLK_TN_CGROUP = 256, }; -enum bpf_audit { - BPF_AUDIT_LOAD = 0, - BPF_AUDIT_UNLOAD = 1, - BPF_AUDIT_MAX = 2, +struct blk_io_trace { + __u32 magic; + __u32 sequence; + __u64 time; + __u64 sector; + __u32 bytes; + __u32 action; + __u32 pid; + __u32 device; + __u32 cpu; + __u16 error; + __u16 pdu_len; }; -struct bpf_prog_kstats { - u64 nsecs; - u64 cnt; - u64 misses; +struct blk_io_trace_remap { + __be32 device_from; + __be32 device_to; + __be64 sector_from; }; -struct bpf_tracing_link { - struct bpf_link link; - enum bpf_attach_type attach_type; - struct bpf_trampoline *trampoline; - struct bpf_prog *tgt_prog; +enum { + Blktrace_setup = 1, + Blktrace_running = 2, + Blktrace_stopped = 3, }; -struct bpf_raw_tp_link { - struct bpf_link link; - struct bpf_raw_event_map *btp; +struct blk_user_trace_setup { + char name[32]; + __u16 act_mask; + __u32 buf_size; + __u32 buf_nr; + __u64 start_lba; + __u64 end_lba; + __u32 pid; }; -struct bpf_perf_link { - struct bpf_link link; - struct file *perf_file; +struct blk_mq_tags { + unsigned int nr_tags; + unsigned int nr_reserved_tags; + atomic_t active_queues; + struct sbitmap_queue *bitmap_tags; + struct sbitmap_queue *breserved_tags; + struct sbitmap_queue __bitmap_tags; + struct sbitmap_queue __breserved_tags; + struct request **rqs; + struct request **static_rqs; + struct list_head page_list; + spinlock_t lock; }; -typedef u64 (*btf_bpf_sys_bpf)(int, union bpf_attr *, u32); - -typedef u64 (*btf_bpf_sys_close)(u32); - -typedef u64 (*btf_bpf_kallsyms_lookup_name)(const char *, int, int, u64 *); - -enum { - BTF_KIND_UNKN = 0, - BTF_KIND_INT = 1, - BTF_KIND_PTR = 2, - BTF_KIND_ARRAY = 3, - BTF_KIND_STRUCT = 4, - BTF_KIND_UNION = 5, - BTF_KIND_ENUM = 6, - BTF_KIND_FWD = 7, - BTF_KIND_TYPEDEF = 8, - BTF_KIND_VOLATILE = 9, - BTF_KIND_CONST = 10, - BTF_KIND_RESTRICT = 11, - BTF_KIND_FUNC = 12, - BTF_KIND_FUNC_PROTO = 13, - BTF_KIND_VAR = 14, - BTF_KIND_DATASEC = 15, - BTF_KIND_FLOAT = 16, - BTF_KIND_DECL_TAG = 17, - BTF_KIND_TYPE_TAG = 18, - NR_BTF_KINDS = 19, - BTF_KIND_MAX = 18, +enum blk_crypto_mode_num { + BLK_ENCRYPTION_MODE_INVALID = 0, + BLK_ENCRYPTION_MODE_AES_256_XTS = 1, + BLK_ENCRYPTION_MODE_AES_128_CBC_ESSIV = 2, + BLK_ENCRYPTION_MODE_ADIANTUM = 3, + BLK_ENCRYPTION_MODE_MAX = 4, }; -struct btf_member { - __u32 name_off; - __u32 type; - __u32 offset; +struct blk_crypto_config { + enum blk_crypto_mode_num crypto_mode; + unsigned int data_unit_size; + unsigned int dun_bytes; }; -struct btf_param { - __u32 name_off; - __u32 type; +struct blk_crypto_key { + struct blk_crypto_config crypto_cfg; + unsigned int data_unit_size_bits; + unsigned int size; + u8 raw[64]; }; -enum btf_func_linkage { - BTF_FUNC_STATIC = 0, - BTF_FUNC_GLOBAL = 1, - BTF_FUNC_EXTERN = 2, +struct blk_mq_ctxs { + struct kobject kobj; + struct blk_mq_ctx *queue_ctx; }; -struct btf_var_secinfo { - __u32 type; - __u32 offset; - __u32 size; -}; +typedef void blk_log_action_t(struct trace_iterator *, const char *, bool); -enum sk_action { - SK_DROP = 0, - SK_PASS = 1, +struct ftrace_event_field { + struct list_head link; + const char *name; + const char *type; + int filter_type; + int offset; + int size; + int is_signed; }; -enum bpf_core_relo_kind { - BPF_CORE_FIELD_BYTE_OFFSET = 0, - BPF_CORE_FIELD_BYTE_SIZE = 1, - BPF_CORE_FIELD_EXISTS = 2, - BPF_CORE_FIELD_SIGNED = 3, - BPF_CORE_FIELD_LSHIFT_U64 = 4, - BPF_CORE_FIELD_RSHIFT_U64 = 5, - BPF_CORE_TYPE_ID_LOCAL = 6, - BPF_CORE_TYPE_ID_TARGET = 7, - BPF_CORE_TYPE_EXISTS = 8, - BPF_CORE_TYPE_SIZE = 9, - BPF_CORE_ENUMVAL_EXISTS = 10, - BPF_CORE_ENUMVAL_VALUE = 11, +struct module_string { + struct list_head next; + struct module *module; + char *str; }; -struct bpf_core_relo { - __u32 insn_off; - __u32 type_id; - __u32 access_str_off; - enum bpf_core_relo_kind kind; +enum { + FORMAT_HEADER = 1, + FORMAT_FIELD_SEPERATOR = 2, + FORMAT_PRINTFMT = 3, }; -enum bpf_jit_poke_reason { - BPF_POKE_REASON_TAIL_CALL = 0, +struct event_probe_data { + struct trace_event_file *file; + long unsigned int count; + int ref; + bool enable; }; -struct bpf_kfunc_desc { - struct btf_func_model func_model; - u32 func_id; - s32 imm; - u16 offset; +struct syscall_trace_enter { + struct trace_entry ent; + int nr; + long unsigned int args[0]; }; -struct bpf_kfunc_desc_tab { - struct bpf_kfunc_desc descs[256]; - u32 nr_descs; +struct syscall_trace_exit { + struct trace_entry ent; + int nr; + long int ret; }; -struct bpf_kfunc_btf { - struct btf *btf; - struct module *module; - u16 offset; +struct syscall_tp_t { + long long unsigned int regs; + long unsigned int syscall_nr; + long unsigned int ret; }; -struct bpf_kfunc_btf_tab { - struct bpf_kfunc_btf descs[256]; - u32 nr_descs; +struct syscall_tp_t___2 { + long long unsigned int regs; + long unsigned int syscall_nr; + long unsigned int args[6]; }; -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 *); - -struct bpf_core_ctx { - struct bpf_verifier_log *log; - const struct btf *btf; -}; - -enum bpf_stack_slot_type { - STACK_INVALID = 0, - STACK_SPILL = 1, - STACK_MISC = 2, - STACK_ZERO = 3, -}; +typedef long unsigned int perf_trace_t[256]; -struct bpf_verifier_stack_elem { - struct bpf_verifier_state st; - int insn_idx; - int prev_insn_idx; - struct bpf_verifier_stack_elem *next; - u32 log_pos; -}; +struct filter_pred; -enum { - BTF_SOCK_TYPE_INET = 0, - BTF_SOCK_TYPE_INET_CONN = 1, - BTF_SOCK_TYPE_INET_REQ = 2, - BTF_SOCK_TYPE_INET_TW = 3, - BTF_SOCK_TYPE_REQ = 4, - BTF_SOCK_TYPE_SOCK = 5, - BTF_SOCK_TYPE_SOCK_COMMON = 6, - BTF_SOCK_TYPE_TCP = 7, - BTF_SOCK_TYPE_TCP_REQ = 8, - BTF_SOCK_TYPE_TCP_TW = 9, - BTF_SOCK_TYPE_TCP6 = 10, - BTF_SOCK_TYPE_UDP = 11, - BTF_SOCK_TYPE_UDP6 = 12, - BTF_SOCK_TYPE_UNIX = 13, - MAX_BTF_SOCK_TYPE = 14, +struct prog_entry { + int target; + int when_to_branch; + struct filter_pred *pred; }; -typedef void (*bpf_insn_print_t)(void *, const char *, ...); +typedef int (*filter_pred_fn_t)(struct filter_pred *, void *); -typedef const char * (*bpf_insn_revmap_call_t)(void *, const struct bpf_insn *); +struct regex; -typedef const char * (*bpf_insn_print_imm_t)(void *, const struct bpf_insn *, __u64); +typedef int (*regex_match_func)(char *, struct regex *, int); -struct bpf_insn_cbs { - bpf_insn_print_t cb_print; - bpf_insn_revmap_call_t cb_call; - bpf_insn_print_imm_t cb_imm; - void *private_data; +struct regex { + char pattern[256]; + int len; + int field_len; + regex_match_func match; }; -struct bpf_call_arg_meta { - struct bpf_map *map_ptr; - bool raw_mode; - bool pkt_access; - int regno; - int access_size; - 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; +struct filter_pred { + filter_pred_fn_t fn; + u64 val; + struct regex regex; + short unsigned int *ops; + struct ftrace_event_field *field; + int offset; + int not; + int op; }; -enum reg_arg_type { - SRC_OP = 0, - DST_OP = 1, - DST_OP_NO_MARK = 2, +enum filter_op_ids { + OP_GLOB = 0, + OP_NE = 1, + OP_EQ = 2, + OP_LE = 3, + OP_LT = 4, + OP_GE = 5, + OP_GT = 6, + OP_BAND = 7, + OP_MAX = 8, }; -enum stack_access_src { - ACCESS_DIRECT = 1, - ACCESS_HELPER = 2, +enum { + FILT_ERR_NONE = 0, + FILT_ERR_INVALID_OP = 1, + FILT_ERR_TOO_MANY_OPEN = 2, + FILT_ERR_TOO_MANY_CLOSE = 3, + FILT_ERR_MISSING_QUOTE = 4, + FILT_ERR_OPERAND_TOO_LONG = 5, + FILT_ERR_EXPECT_STRING = 6, + FILT_ERR_EXPECT_DIGIT = 7, + FILT_ERR_ILLEGAL_FIELD_OP = 8, + FILT_ERR_FIELD_NOT_FOUND = 9, + FILT_ERR_ILLEGAL_INTVAL = 10, + FILT_ERR_BAD_SUBSYS_FILTER = 11, + FILT_ERR_TOO_MANY_PREDS = 12, + FILT_ERR_INVALID_FILTER = 13, + FILT_ERR_IP_FIELD_ONLY = 14, + FILT_ERR_INVALID_VALUE = 15, + FILT_ERR_ERRNO = 16, + FILT_ERR_NO_FILTER = 17, }; -struct bpf_reg_types { - const enum bpf_reg_type types[10]; - u32 *btf_id; +struct filter_parse_error { + int lasterr; + int lasterr_pos; }; +typedef int (*parse_pred_fn)(const char *, void *, int, struct filter_parse_error *, struct filter_pred **); + enum { - AT_PKT_END = 4294967295, - BEYOND_PKT_END = 4294967294, + INVERT = 1, + PROCESS_AND = 2, + PROCESS_OR = 4, }; -typedef int (*set_callee_state_fn)(struct bpf_verifier_env *, struct bpf_func_state *, struct bpf_func_state *, int); +struct ustring_buffer { + char buffer[1024]; +}; enum { - REASON_BOUNDS = 4294967295, - REASON_TYPE = 4294967294, - REASON_PATHS = 4294967293, - REASON_LIMIT = 4294967292, - REASON_STACK = 4294967291, + TOO_MANY_CLOSE = 4294967295, + TOO_MANY_OPEN = 4294967294, + MISSING_QUOTE = 4294967293, }; -struct bpf_sanitize_info { - struct bpf_insn_aux_data aux; - bool mask_to_left; +struct filter_list { + struct list_head list; + struct event_filter *filter; }; -enum { - DISCOVERED = 16, - EXPLORED = 32, - FALLTHROUGH = 1, - BRANCH = 2, +struct function_filter_data { + struct ftrace_ops *ops; + int first_filter; + int first_notrace; }; enum { - DONE_EXPLORING = 0, - KEEP_EXPLORING = 1, + EVENT_TRIGGER_FL_PROBE = 1, }; -enum xdp_action { - XDP_ABORTED = 0, - XDP_DROP = 1, - XDP_PASS = 2, - XDP_TX = 3, - XDP_REDIRECT = 4, +struct event_trigger_ops; + +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; + char *filter_str; + void *private_data; + bool paused; + bool paused_tmp; + struct list_head list; + char *name; + struct list_head named_list; + struct event_trigger_data *named_data; }; -struct bpf_empty_prog_array { - struct bpf_prog_array hdr; - struct bpf_prog *null_prog; +struct event_trigger_ops { + 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 *); }; -enum bpf_text_poke_type { - BPF_MOD_CALL = 0, - BPF_MOD_JUMP = 1, +struct event_command { + struct list_head list; + char *name; + enum event_trigger_type trigger_type; + int flags; + int (*func)(struct event_command *, struct trace_event_file *, char *, char *, char *); + int (*reg)(char *, struct event_trigger_ops *, struct event_trigger_data *, struct trace_event_file *); + void (*unreg)(char *, struct event_trigger_ops *, struct event_trigger_data *, struct trace_event_file *); + void (*unreg_all)(struct trace_event_file *); + int (*set_filter)(char *, struct event_trigger_data *, struct trace_event_file *); + struct event_trigger_ops * (*get_trigger_ops)(char *, char *); }; -struct rnd_state { - __u32 s1; - __u32 s2; - __u32 s3; - __u32 s4; +struct enable_trigger_data { + struct trace_event_file *file; + bool enable; + bool hist; }; -enum xdp_mem_type { - MEM_TYPE_PAGE_SHARED = 0, - MEM_TYPE_PAGE_ORDER0 = 1, - MEM_TYPE_PAGE_POOL = 2, - MEM_TYPE_XSK_BUFF_POOL = 3, - MEM_TYPE_MAX = 4, +enum event_command_flags { + EVENT_CMD_FL_POST_TRIGGER = 1, + EVENT_CMD_FL_NEEDS_REC = 2, }; -struct xdp_cpumap_stats { - unsigned int redirect; - unsigned int pass; - unsigned int drop; +struct eprobe_trace_entry_head { + struct trace_entry ent; + unsigned int type; }; -struct bpf_prog_pack { +struct dyn_event; + +struct dyn_event_operations { struct list_head list; - void *ptr; - long unsigned int bitmap[0]; + 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 bpf_prog_dummy { - struct bpf_prog prog; +struct dyn_event { + struct list_head list; + struct dyn_event_operations *ops; }; -typedef u64 (*btf_bpf_user_rnd_u32)(); - -typedef u64 (*btf_bpf_get_raw_cpu_id)(); +typedef int (*print_type_func_t)(struct trace_seq *, void *, void *); -struct _bpf_dtab_netdev { - struct net_device *dev; +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 xdp_mem_allocator { - struct xdp_mem_info mem; +struct fetch_insn { + enum fetch_op op; union { - void *allocator; - struct page_pool *page_pool; + 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 rhash_head node; - struct callback_head rcu; }; -struct trace_event_raw_xdp_exception { - struct trace_entry ent; - int prog_id; - u32 act; - int ifindex; - char __data[0]; +struct fetch_type { + const char *name; + size_t size; + int is_signed; + print_type_func_t print; + const char *fmt; + const char *fmttype; }; -struct trace_event_raw_xdp_bulk_tx { - struct trace_entry ent; - int ifindex; - u32 act; - int drops; - int sent; - int err; - char __data[0]; +struct 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_event_raw_xdp_redirect_template { - struct trace_entry ent; - int prog_id; - u32 act; - int ifindex; - int err; - int to_ifindex; - u32 map_id; - int map_index; - char __data[0]; +struct trace_uprobe_filter { + rwlock_t rwlock; + int nr_systemwide; + struct list_head perf_events; }; -struct trace_event_raw_xdp_cpumap_kthread { - struct trace_entry ent; - int map_id; - u32 act; - int cpu; - unsigned int drops; - unsigned int processed; - int sched; - unsigned int xdp_pass; - unsigned int xdp_drop; - unsigned int xdp_redirect; - char __data[0]; +struct trace_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_event_raw_xdp_cpumap_enqueue { - struct trace_entry ent; - int map_id; - u32 act; - int cpu; - unsigned int drops; - unsigned int processed; - int to_cpu; - char __data[0]; +struct trace_probe { + struct list_head list; + struct trace_probe_event *event; + ssize_t size; + unsigned int nr_args; + struct probe_arg args[0]; }; -struct trace_event_raw_xdp_devmap_xmit { - struct trace_entry ent; - int from_ifindex; - u32 act; - int to_ifindex; - int drops; - int sent; - int err; - char __data[0]; +struct event_file_link { + struct trace_event_file *file; + struct list_head list; }; -struct trace_event_raw_mem_disconnect { - struct trace_entry ent; - const struct xdp_mem_allocator *xa; - u32 mem_id; - u32 mem_type; - const void *allocator; - char __data[0]; +enum probe_print_type { + PROBE_PRINT_NORMAL = 0, + PROBE_PRINT_RETURN = 1, + PROBE_PRINT_EVENT = 2, }; -struct trace_event_raw_mem_connect { - struct trace_entry ent; - const struct xdp_mem_allocator *xa; - u32 mem_id; - u32 mem_type; - const void *allocator; - const struct xdp_rxq_info *rxq; - int ifindex; - char __data[0]; +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_event_raw_mem_return_failed { - struct trace_entry ent; - const struct page *page; - u32 mem_id; - u32 mem_type; - char __data[0]; +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 trace_event_data_offsets_xdp_exception {}; - -struct trace_event_data_offsets_xdp_bulk_tx {}; - -struct trace_event_data_offsets_xdp_redirect_template {}; +struct eprobe_data { + struct trace_event_file *file; + struct trace_eprobe *ep; +}; -struct trace_event_data_offsets_xdp_cpumap_kthread {}; +enum dynevent_type { + DYNEVENT_TYPE_SYNTH = 1, + DYNEVENT_TYPE_KPROBE = 2, + DYNEVENT_TYPE_NONE = 3, +}; -struct trace_event_data_offsets_xdp_cpumap_enqueue {}; +struct dynevent_cmd; -struct trace_event_data_offsets_xdp_devmap_xmit {}; +typedef int (*dynevent_create_fn_t)(struct dynevent_cmd *); -struct trace_event_data_offsets_mem_disconnect {}; +struct dynevent_cmd { + struct seq_buf seq; + const char *event_name; + unsigned int n_fields; + enum dynevent_type type; + dynevent_create_fn_t run_command; + void *private_data; +}; -struct trace_event_data_offsets_mem_connect {}; +struct synth_field_desc { + const char *type; + const char *name; +}; -struct trace_event_data_offsets_mem_return_failed {}; +struct synth_trace_event; -typedef void (*btf_trace_xdp_exception)(void *, const struct net_device *, const struct bpf_prog *, u32); +struct synth_event; -typedef void (*btf_trace_xdp_bulk_tx)(void *, const struct net_device *, int, int, int); - -typedef void (*btf_trace_xdp_redirect)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32); - -typedef void (*btf_trace_xdp_redirect_err)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32); - -typedef void (*btf_trace_xdp_redirect_map)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32); - -typedef void (*btf_trace_xdp_redirect_map_err)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32); - -typedef void (*btf_trace_xdp_cpumap_kthread)(void *, int, unsigned int, unsigned int, int, struct xdp_cpumap_stats *); - -typedef void (*btf_trace_xdp_cpumap_enqueue)(void *, int, unsigned int, unsigned int, int); - -typedef void (*btf_trace_xdp_devmap_xmit)(void *, const struct net_device *, const struct net_device *, int, int, int); - -typedef void (*btf_trace_mem_disconnect)(void *, const struct xdp_mem_allocator *); +struct synth_event_trace_state { + struct trace_event_buffer fbuffer; + struct synth_trace_event *entry; + struct trace_buffer *buffer; + struct synth_event *event; + unsigned int cur_field; + unsigned int n_u64; + bool disabled; + bool add_next; + bool add_name; +}; -typedef void (*btf_trace_mem_connect)(void *, const struct xdp_mem_allocator *, const struct xdp_rxq_info *); +struct synth_trace_event { + struct trace_entry ent; + u64 fields[0]; +}; -typedef void (*btf_trace_mem_return_failed)(void *, const struct xdp_mem_info *, const struct page *); +struct synth_field; -struct tree_descr { - const char *name; - const struct file_operations *ops; - int mode; +struct synth_event { + struct dyn_event devent; + int ref; + char *name; + struct synth_field **fields; + unsigned int n_fields; + struct synth_field **dynamic_fields; + unsigned int n_dynamic_fields; + unsigned int n_u64; + struct trace_event_class class; + struct trace_event_call call; + struct tracepoint *tp; + struct module *mod; }; -struct bpf_preload_info { - char link_name[16]; - struct bpf_link *link; -}; +typedef int (*dynevent_check_arg_fn_t)(void *); -struct bpf_preload_ops { - int (*preload)(struct bpf_preload_info *); - struct module *owner; +struct dynevent_arg { + const char *str; + char separator; }; -enum bpf_type { - BPF_TYPE_UNSPEC = 0, - BPF_TYPE_PROG = 1, - BPF_TYPE_MAP = 2, - BPF_TYPE_LINK = 3, +struct dynevent_arg_pair { + const char *lhs; + const char *rhs; + char operator; + char separator; }; -struct map_iter { - void *key; - bool done; +struct synth_field { + char *type; + char *name; + size_t size; + unsigned int offset; + unsigned int field_pos; + bool is_signed; + bool is_string; + bool is_dynamic; }; enum { - OPT_MODE = 0, -}; - -struct bpf_mount_opts { - umode_t mode; + SYNTH_ERR_BAD_NAME = 0, + SYNTH_ERR_INVALID_CMD = 1, + SYNTH_ERR_INVALID_DYN_CMD = 2, + SYNTH_ERR_EVENT_EXISTS = 3, + SYNTH_ERR_TOO_MANY_FIELDS = 4, + SYNTH_ERR_INCOMPLETE_TYPE = 5, + SYNTH_ERR_INVALID_TYPE = 6, + SYNTH_ERR_INVALID_FIELD = 7, + SYNTH_ERR_INVALID_ARRAY_SPEC = 8, }; -union bpf_iter_link_info { - struct { - __u32 map_fd; - } map; +enum { + HIST_ERR_NONE = 0, + HIST_ERR_DUPLICATE_VAR = 1, + HIST_ERR_VAR_NOT_UNIQUE = 2, + HIST_ERR_TOO_MANY_VARS = 3, + HIST_ERR_MALFORMED_ASSIGNMENT = 4, + HIST_ERR_NAMED_MISMATCH = 5, + HIST_ERR_TRIGGER_EEXIST = 6, + HIST_ERR_TRIGGER_ENOENT_CLEAR = 7, + HIST_ERR_SET_CLOCK_FAIL = 8, + HIST_ERR_BAD_FIELD_MODIFIER = 9, + HIST_ERR_TOO_MANY_SUBEXPR = 10, + HIST_ERR_TIMESTAMP_MISMATCH = 11, + HIST_ERR_TOO_MANY_FIELD_VARS = 12, + HIST_ERR_EVENT_FILE_NOT_FOUND = 13, + HIST_ERR_HIST_NOT_FOUND = 14, + HIST_ERR_HIST_CREATE_FAIL = 15, + HIST_ERR_SYNTH_VAR_NOT_FOUND = 16, + HIST_ERR_SYNTH_EVENT_NOT_FOUND = 17, + HIST_ERR_SYNTH_TYPE_MISMATCH = 18, + HIST_ERR_SYNTH_COUNT_MISMATCH = 19, + HIST_ERR_FIELD_VAR_PARSE_FAIL = 20, + HIST_ERR_VAR_CREATE_FIND_FAIL = 21, + HIST_ERR_ONX_NOT_VAR = 22, + HIST_ERR_ONX_VAR_NOT_FOUND = 23, + HIST_ERR_ONX_VAR_CREATE_FAIL = 24, + HIST_ERR_FIELD_VAR_CREATE_FAIL = 25, + HIST_ERR_TOO_MANY_PARAMS = 26, + HIST_ERR_PARAM_NOT_FOUND = 27, + HIST_ERR_INVALID_PARAM = 28, + HIST_ERR_ACTION_NOT_FOUND = 29, + HIST_ERR_NO_SAVE_PARAMS = 30, + HIST_ERR_TOO_MANY_SAVE_ACTIONS = 31, + HIST_ERR_ACTION_MISMATCH = 32, + HIST_ERR_NO_CLOSING_PAREN = 33, + HIST_ERR_SUBSYS_NOT_FOUND = 34, + HIST_ERR_INVALID_SUBSYS_EVENT = 35, + HIST_ERR_INVALID_REF_KEY = 36, + HIST_ERR_VAR_NOT_FOUND = 37, + HIST_ERR_FIELD_NOT_FOUND = 38, + HIST_ERR_EMPTY_ASSIGNMENT = 39, + HIST_ERR_INVALID_SORT_MODIFIER = 40, + HIST_ERR_EMPTY_SORT_FIELD = 41, + HIST_ERR_TOO_MANY_SORT_FIELDS = 42, + HIST_ERR_INVALID_SORT_FIELD = 43, + HIST_ERR_INVALID_STR_OPERAND = 44, }; -typedef int (*bpf_iter_attach_target_t)(struct bpf_prog *, union bpf_iter_link_info *, struct bpf_iter_aux_info *); - -typedef void (*bpf_iter_detach_target_t)(struct bpf_iter_aux_info *); - -typedef void (*bpf_iter_show_fdinfo_t)(const struct bpf_iter_aux_info *, struct seq_file *); - -typedef int (*bpf_iter_fill_link_info_t)(const struct bpf_iter_aux_info *, struct bpf_link_info *); +struct hist_field; -typedef const struct bpf_func_proto * (*bpf_iter_get_func_proto_t)(enum bpf_func_id, const struct bpf_prog *); +typedef u64 (*hist_field_fn_t)(struct hist_field *, struct tracing_map_elt *, struct trace_buffer *, struct ring_buffer_event *, void *); -enum bpf_iter_feature { - BPF_ITER_RESCHED = 1, -}; +struct hist_trigger_data; -struct bpf_iter_reg { - const char *target; - bpf_iter_attach_target_t attach_target; - bpf_iter_detach_target_t detach_target; - bpf_iter_show_fdinfo_t show_fdinfo; - bpf_iter_fill_link_info_t fill_link_info; - bpf_iter_get_func_proto_t get_func_proto; - u32 ctx_arg_info_size; - u32 feature; - struct bpf_ctx_arg_aux ctx_arg_info[2]; - const struct bpf_iter_seq_info *seq_info; +struct hist_var { + char *name; + struct hist_trigger_data *hist_data; + unsigned int idx; }; -struct bpf_iter_meta { - union { - struct seq_file *seq; - }; - u64 session_id; - u64 seq_num; +enum field_op_id { + FIELD_OP_NONE = 0, + FIELD_OP_PLUS = 1, + FIELD_OP_MINUS = 2, + FIELD_OP_UNARY_MINUS = 3, }; -struct bpf_iter_target_info { - struct list_head list; - const struct bpf_iter_reg *reg_info; - u32 btf_id; +struct hist_field { + struct ftrace_event_field *field; + long unsigned int flags; + hist_field_fn_t fn; + unsigned int ref; + 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; + struct hist_var var; + enum field_op_id operator; + char *system; + char *event_name; + char *name; + unsigned int var_ref_idx; + bool read_once; + unsigned int var_str_idx; }; -struct bpf_iter_link { - struct bpf_link link; - struct bpf_iter_aux_info aux; - struct bpf_iter_target_info *tinfo; -}; +struct hist_trigger_attrs; -struct bpf_iter_priv_data { - struct bpf_iter_target_info *tinfo; - const struct bpf_iter_seq_info *seq_info; - struct bpf_prog *prog; - u64 session_id; - u64 seq_num; - bool done_stop; - long: 56; - u8 target_private[0]; -}; +struct action_data; -typedef u64 (*btf_bpf_for_each_map_elem)(struct bpf_map *, void *, void *, u64); +struct field_var; -typedef u64 (*btf_bpf_loop)(u32, void *, void *, u64); +struct field_var_hist; -struct bpf_spin_lock { - __u32 val; +struct hist_trigger_data { + struct hist_field *fields[22]; + unsigned int n_vals; + unsigned int n_keys; + unsigned int n_fields; + unsigned int n_vars; + unsigned int n_var_str; + unsigned int key_size; + struct tracing_map_sort_key sort_keys[2]; + unsigned int n_sort_keys; + struct trace_event_file *event_file; + struct hist_trigger_attrs *attrs; + struct tracing_map *map; + bool enable_timestamps; + bool remove; + struct hist_field *var_refs[16]; + unsigned int n_var_refs; + struct action_data *actions[8]; + unsigned int n_actions; + struct field_var *field_vars[64]; + unsigned int n_field_vars; + unsigned int n_field_var_str; + struct field_var_hist *field_var_hists[64]; + unsigned int n_field_var_hists; + struct field_var *save_vars[64]; + unsigned int n_save_vars; + unsigned int n_save_var_str; }; -struct bpf_timer { - long: 64; - long: 64;}; - -struct bpf_pidns_info { - __u32 pid; - __u32 tgid; +enum hist_field_flags { + HIST_FIELD_FL_HITCOUNT = 1, + HIST_FIELD_FL_KEY = 2, + HIST_FIELD_FL_STRING = 4, + HIST_FIELD_FL_HEX = 8, + HIST_FIELD_FL_SYM = 16, + HIST_FIELD_FL_SYM_OFFSET = 32, + HIST_FIELD_FL_EXECNAME = 64, + HIST_FIELD_FL_SYSCALL = 128, + HIST_FIELD_FL_STACKTRACE = 256, + HIST_FIELD_FL_LOG2 = 512, + HIST_FIELD_FL_TIMESTAMP = 1024, + HIST_FIELD_FL_TIMESTAMP_USECS = 2048, + HIST_FIELD_FL_VAR = 4096, + HIST_FIELD_FL_EXPR = 8192, + HIST_FIELD_FL_VAR_REF = 16384, + HIST_FIELD_FL_CPU = 32768, + HIST_FIELD_FL_ALIAS = 65536, + HIST_FIELD_FL_BUCKET = 131072, }; -struct bpf_cg_run_ctx { - struct bpf_run_ctx run_ctx; - const struct bpf_prog_array_item *prog_item; - int retval; +struct var_defs { + unsigned int n_vars; + char *name[16]; + char *expr[16]; }; -typedef u64 (*btf_bpf_map_lookup_elem)(struct bpf_map *, void *); - -typedef u64 (*btf_bpf_map_update_elem)(struct bpf_map *, void *, void *, u64); - -typedef u64 (*btf_bpf_map_delete_elem)(struct bpf_map *, void *); - -typedef u64 (*btf_bpf_map_push_elem)(struct bpf_map *, void *, u64); - -typedef u64 (*btf_bpf_map_pop_elem)(struct bpf_map *, void *); - -typedef u64 (*btf_bpf_map_peek_elem)(struct bpf_map *, void *); - -typedef u64 (*btf_bpf_get_smp_processor_id)(); - -typedef u64 (*btf_bpf_get_numa_node_id)(); - -typedef u64 (*btf_bpf_ktime_get_ns)(); - -typedef u64 (*btf_bpf_ktime_get_boot_ns)(); - -typedef u64 (*btf_bpf_ktime_get_coarse_ns)(); - -typedef u64 (*btf_bpf_get_current_pid_tgid)(); - -typedef u64 (*btf_bpf_get_current_uid_gid)(); - -typedef u64 (*btf_bpf_get_current_comm)(char *, u32); - -typedef u64 (*btf_bpf_spin_lock)(struct bpf_spin_lock *); - -typedef u64 (*btf_bpf_spin_unlock)(struct bpf_spin_lock *); - -typedef u64 (*btf_bpf_jiffies64)(); - -typedef u64 (*btf_bpf_get_current_cgroup_id)(); - -typedef u64 (*btf_bpf_get_current_ancestor_cgroup_id)(int); - -typedef u64 (*btf_bpf_get_local_storage)(struct bpf_map *, u64); - -typedef u64 (*btf_bpf_strtol)(const char *, size_t, u64, long int *); - -typedef u64 (*btf_bpf_strtoul)(const char *, size_t, u64, long unsigned int *); - -typedef u64 (*btf_bpf_strncmp)(const char *, u32, const char *); - -typedef u64 (*btf_bpf_get_ns_current_pid_tgid)(u64, u64, struct bpf_pidns_info *, u32); - -typedef u64 (*btf_bpf_event_output_data)(void *, struct bpf_map *, u64, void *, u64); - -typedef u64 (*btf_bpf_copy_from_user)(void *, u32, const void *); - -typedef u64 (*btf_bpf_copy_from_user_task)(void *, u32, const void *, struct task_struct *, u64); - -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]; +struct hist_trigger_attrs { + char *keys_str; + char *vals_str; + char *sort_key_str; + char *name; + char *clock; + bool pause; + bool cont; + bool clear; + bool ts_in_usecs; + unsigned int map_bits; + char *assignment_str[16]; + unsigned int n_assignments; + char *action_str[8]; + unsigned int n_actions; + struct var_defs var_defs; }; -typedef 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 field_var { + struct hist_field *var; + struct hist_field *val; }; -struct bpf_timer_kern { - struct bpf_hrtimer *timer; - struct bpf_spin_lock lock; +struct field_var_hist { + struct hist_trigger_data *hist_data; + char *cmd; }; -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 *); - -struct bpf_iter_seq_map_info { - u32 map_id; +enum handler_id { + HANDLER_ONMATCH = 1, + HANDLER_ONMAX = 2, + HANDLER_ONCHANGE = 3, }; -struct bpf_iter__bpf_map { - union { - struct bpf_iter_meta *meta; - }; - union { - struct bpf_map *map; - }; +enum action_id { + ACTION_SAVE = 1, + ACTION_TRACE = 2, + ACTION_SNAPSHOT = 3, }; -struct bpf_iter_seq_prog_info { - u32 prog_id; -}; +typedef void (*action_fn_t)(struct hist_trigger_data *, struct tracing_map_elt *, struct trace_buffer *, void *, struct ring_buffer_event *, void *, struct action_data *, u64 *); -struct bpf_iter__bpf_prog { - union { - struct bpf_iter_meta *meta; - }; - union { - struct bpf_prog *prog; - }; -}; +typedef bool (*check_track_val_fn_t)(u64, u64); -struct bpf_iter__bpf_map_elem { - union { - struct bpf_iter_meta *meta; - }; - union { - struct bpf_map *map; - }; - union { - void *key; - }; +struct action_data { + enum handler_id handler; + enum action_id action; + char *action_name; + action_fn_t fn; + unsigned int n_params; + char *params[64]; + unsigned int var_ref_idx[64]; + struct synth_event *synth_event; + bool use_trace_keyword; + char *synth_event_name; union { - void *value; + struct { + char *event; + char *event_system; + } match_data; + struct { + char *var_str; + struct hist_field *var_ref; + struct hist_field *track_var; + check_track_val_fn_t check_val; + action_fn_t save_data; + } track_data; }; }; -struct pcpu_freelist_node; - -struct pcpu_freelist_head { - struct pcpu_freelist_node *first; - raw_spinlock_t lock; +struct track_data { + u64 track_val; + bool updated; + unsigned int key_len; + void *key; + struct tracing_map_elt elt; + struct action_data *action_data; + struct hist_trigger_data *hist_data; }; -struct pcpu_freelist_node { - struct pcpu_freelist_node *next; +struct hist_elt_data { + char *comm; + u64 *var_ref_vals; + char **field_var_str; + int n_field_var_str; }; -struct pcpu_freelist { - struct pcpu_freelist_head *freelist; - struct pcpu_freelist_head extralist; +struct snapshot_context { + struct tracing_map_elt *elt; + void *key; }; -struct bpf_lru_node { +typedef void (*synth_probe_func_t)(void *, u64 *, unsigned int *); + +struct hist_var_data { struct list_head list; - u16 cpu; - u8 type; - u8 ref; + struct hist_trigger_data *hist_data; }; -struct bpf_lru_list { - struct list_head lists[3]; - unsigned int counts[2]; - struct list_head *next_inactive_rotation; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - raw_spinlock_t lock; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +enum 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, }; -struct bpf_lru_locallist { - struct list_head lists[2]; - u16 next_steal; +enum { + BPF_F_INDEX_MASK = 4294967295, + BPF_F_CURRENT_CPU = 4294967295, + BPF_F_CTXLEN_MASK = 0, +}; + +enum { + BPF_F_GET_BRANCH_RECORDS_SIZE = 1, +}; + +struct bpf_perf_event_value { + __u64 counter; + __u64 enabled; + __u64 running; +}; + +struct bpf_raw_tracepoint_args { + __u64 args[0]; +}; + +enum bpf_task_fd_type { + BPF_FD_TYPE_RAW_TRACEPOINT = 0, + BPF_FD_TYPE_TRACEPOINT = 1, + BPF_FD_TYPE_KPROBE = 2, + BPF_FD_TYPE_KRETPROBE = 3, + BPF_FD_TYPE_UPROBE = 4, + BPF_FD_TYPE_URETPROBE = 5, +}; + +struct btf_ptr { + void *ptr; + __u32 type_id; + __u32 flags; +}; + +enum { + BTF_F_COMPACT = 1, + BTF_F_NONAME = 2, + BTF_F_PTR_RAW = 4, + 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_common_lru { - struct bpf_lru_list lru_list; - struct bpf_lru_locallist *local_list; - long: 64; +struct bpf_local_storage_map_bucket; + +struct bpf_local_storage_map { + struct bpf_map map; + struct bpf_local_storage_map_bucket *buckets; + u32 bucket_log; + u16 elem_size; + u16 cache_idx; long: 64; long: 64; long: 64; @@ -32399,84 +32856,86 @@ struct bpf_common_lru { long: 64; }; -typedef bool (*del_from_htab_func)(void *, struct bpf_lru_node *); - -struct bpf_lru { +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 bpf_common_lru common_lru; - struct bpf_lru_list *percpu_lru; + 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]; }; - del_from_htab_func del_from_htab; - void *del_arg; - unsigned int hash_offset; - unsigned int nr_scans; - bool percpu; - long: 56; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 { + 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 bucket { - struct hlist_nulls_head head; +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 { - raw_spinlock_t raw_lock; - spinlock_t lock; + int ctx_field_size; + struct { + struct btf *btf; + u32 btf_id; + }; }; + struct bpf_verifier_log *log; }; -struct htab_elem; +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_htab { +struct bpf_array_aux { + 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; + struct work_struct work; +}; + +struct bpf_array { struct bpf_map map; - struct bucket *buckets; - void *elems; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; + u32 elem_size; + u32 index_mask; + struct bpf_array_aux *aux; + union { + char value[0]; + void *ptrs[0]; + void *pptrs[0]; + }; long: 64; long: 64; long: 64; @@ -32486,17 +32945,6 @@ struct bpf_htab { long: 64; long: 64; long: 64; - union { - struct pcpu_freelist freelist; - struct bpf_lru lru; - }; - struct htab_elem **extra_elems; - atomic_t count; - u32 n_buckets; - u32 elem_size; - u32 hashrnd; - struct lock_class_key lockdep_key; - int *map_locked[8]; long: 64; long: 64; long: 64; @@ -32520,691 +32968,536 @@ struct bpf_htab { long: 64; }; -struct htab_elem { - union { - struct hlist_nulls_node hash_node; - struct { - void *padding; - union { - struct bpf_htab *htab; - struct pcpu_freelist_node fnode; - struct htab_elem *batch_flink; - }; - }; - }; - union { - struct callback_head rcu; - struct bpf_lru_node lru_node; - }; - u32 hash; - int: 32; - char key[0]; +struct bpf_event_entry { + struct perf_event *event; + struct file *perf_file; + struct file *map_file; + struct callback_head rcu; }; -struct bpf_iter_seq_hash_map_info { - struct bpf_map *map; - struct bpf_htab *htab; - void *percpu_value_buf; - u32 bucket_id; - u32 skip_elems; -}; +typedef long unsigned int (*bpf_ctx_copy_t)(void *, const void *, long unsigned int, long unsigned int); -struct mmap_unlock_irq_work { - struct irq_work irq_work; - struct mm_struct *mm; +struct bpf_trace_run_ctx { + struct bpf_run_ctx run_ctx; + u64 bpf_cookie; }; -struct bpf_iter_seq_task_common { - struct pid_namespace *ns; +typedef u32 (*bpf_prog_run_fn)(const struct bpf_prog *, const void *); + +typedef user_pt_regs bpf_user_pt_regs_t; + +struct bpf_perf_event_data { + bpf_user_pt_regs_t regs; + __u64 sample_period; + __u64 addr; }; -struct bpf_iter_seq_task_info { - struct bpf_iter_seq_task_common common; - u32 tid; +struct perf_event_query_bpf { + __u32 ids_len; + __u32 prog_cnt; + __u32 ids[0]; }; -struct bpf_iter__task { - union { - struct bpf_iter_meta *meta; - }; - union { - struct task_struct *task; - }; +struct bpf_perf_event_data_kern { + bpf_user_pt_regs_t *regs; + struct perf_sample_data *data; + struct perf_event *event; }; -struct bpf_iter_seq_task_file_info { - struct bpf_iter_seq_task_common common; - struct task_struct *task; - u32 tid; - u32 fd; +struct btf_id_set { + u32 cnt; + u32 ids[0]; }; -struct bpf_iter__task_file { - union { - struct bpf_iter_meta *meta; - }; - union { - struct task_struct *task; - }; - u32 fd; - union { - struct file *file; - }; +struct bpf_local_storage_map_bucket { + struct hlist_head list; + raw_spinlock_t lock; }; -struct bpf_iter_seq_task_vma_info { - struct bpf_iter_seq_task_common common; +struct bpf_local_storage_data { + struct bpf_local_storage_map *smap; + u8 data[0]; +}; + +struct trace_event_raw_bpf_trace_printk { + struct trace_entry ent; + u32 __data_loc_bpf_string; + char __data[0]; +}; + +struct trace_event_data_offsets_bpf_trace_printk { + u32 bpf_string; +}; + +typedef void (*btf_trace_bpf_trace_printk)(void *, const char *); + +struct bpf_trace_module { + struct module *module; + struct list_head list; +}; + +typedef u64 (*btf_bpf_override_return)(struct pt_regs *, long unsigned int); + +typedef u64 (*btf_bpf_probe_read_user)(void *, u32, const void *); + +typedef u64 (*btf_bpf_probe_read_user_str)(void *, u32, const void *); + +typedef u64 (*btf_bpf_probe_read_kernel)(void *, u32, const void *); + +typedef u64 (*btf_bpf_probe_read_kernel_str)(void *, u32, const void *); + +typedef u64 (*btf_bpf_probe_write_user)(void *, const void *, u32); + +typedef u64 (*btf_bpf_trace_printk)(char *, u32, u64, u64, u64); + +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); + +typedef u64 (*btf_bpf_seq_printf_btf)(struct seq_file *, struct btf_ptr *, u32, u64); + +typedef u64 (*btf_bpf_perf_event_read)(struct bpf_map *, u64); + +typedef u64 (*btf_bpf_perf_event_read_value)(struct bpf_map *, u64, struct bpf_perf_event_value *, u32); + +struct bpf_trace_sample_data { + struct perf_sample_data sds[3]; +}; + +typedef u64 (*btf_bpf_perf_event_output)(struct pt_regs *, struct bpf_map *, u64, void *, u64); + +struct bpf_nested_pt_regs { + struct pt_regs regs[3]; +}; + +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 { + struct irq_work irq_work; struct task_struct *task; - struct vm_area_struct *vma; - u32 tid; - long unsigned int prev_vm_start; - long unsigned int prev_vm_end; + u32 sig; + enum pid_type type; }; -enum bpf_task_vma_iter_find_op { - task_vma_iter_first_vma = 0, - task_vma_iter_next_vma = 1, - task_vma_iter_find_vma = 2, +typedef u64 (*btf_bpf_send_signal)(u32); + +typedef u64 (*btf_bpf_send_signal_thread)(u32); + +typedef u64 (*btf_bpf_d_path)(struct path *, char *, u32); + +typedef u64 (*btf_bpf_snprintf_btf)(char *, u32, struct btf_ptr *, u32, u64); + +typedef u64 (*btf_bpf_get_func_ip_tracing)(void *); + +typedef u64 (*btf_bpf_get_func_ip_kprobe)(struct pt_regs *); + +typedef u64 (*btf_bpf_get_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); + +typedef u64 (*btf_bpf_get_stack_tp)(void *, void *, u32, u64); + +typedef u64 (*btf_bpf_perf_prog_read_value)(struct bpf_perf_event_data_kern *, struct bpf_perf_event_value *, u32); + +typedef u64 (*btf_bpf_read_branch_records)(struct bpf_perf_event_data_kern *, void *, u32, u64); + +struct bpf_raw_tp_regs { + struct pt_regs regs[3]; }; -struct bpf_iter__task_vma { - union { - struct bpf_iter_meta *meta; - }; - union { - struct task_struct *task; - }; - union { - struct vm_area_struct *vma; - }; +typedef u64 (*btf_bpf_perf_event_output_raw_tp)(struct bpf_raw_tracepoint_args *, struct bpf_map *, u64, void *, u64); + +typedef u64 (*btf_bpf_get_stackid_raw_tp)(struct bpf_raw_tracepoint_args *, struct bpf_map *, u64); + +typedef u64 (*btf_bpf_get_stack_raw_tp)(struct bpf_raw_tracepoint_args *, void *, u32, u64); + +struct kprobe_trace_entry_head { + struct trace_entry ent; + long unsigned int ip; }; -typedef u64 (*btf_bpf_find_vma)(struct task_struct *, u64, bpf_callback_t, void *, u64); +struct kretprobe_trace_entry_head { + struct trace_entry ent; + long unsigned int func; + long unsigned int ret_ip; +}; -enum bpf_lru_list_type { - BPF_LRU_LIST_T_ACTIVE = 0, - BPF_LRU_LIST_T_INACTIVE = 1, - BPF_LRU_LIST_T_FREE = 2, - BPF_LRU_LOCAL_LIST_T_FREE = 3, - BPF_LRU_LOCAL_LIST_T_PENDING = 4, +struct trace_kprobe { + struct dyn_event devent; + struct kretprobe rp; + long unsigned int *nhit; + const char *symbol; + struct trace_probe tp; }; -struct bpf_iter_seq_array_map_info { - struct bpf_map *map; - void *percpu_value_buf; - u32 index; +enum error_detector { + ERROR_DETECTOR_KFENCE = 0, + ERROR_DETECTOR_KASAN = 1, }; -struct prog_poke_elem { - struct list_head list; - struct bpf_prog_aux *aux; +struct trace_event_raw_error_report_template { + struct trace_entry ent; + enum error_detector error_detector; + long unsigned int id; + char __data[0]; }; -struct bpf_lpm_trie_key { - __u32 prefixlen; - __u8 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 clk; + +enum cpufreq_table_sorting { + CPUFREQ_TABLE_UNSORTED = 0, + CPUFREQ_TABLE_SORTED_ASCENDING = 1, + CPUFREQ_TABLE_SORTED_DESCENDING = 2, }; -struct lpm_trie_node { - struct callback_head rcu; - struct lpm_trie_node *child[2]; - u32 prefixlen; - u32 flags; - u8 data[0]; +struct cpufreq_cpuinfo { + unsigned int max_freq; + unsigned int min_freq; + unsigned int transition_latency; }; -struct lpm_trie { - struct bpf_map map; - struct lpm_trie_node *root; - size_t n_entries; - size_t max_prefixlen; - size_t data_size; - spinlock_t lock; - 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; - 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 cpufreq_stats; + +struct thermal_cooling_device; + +struct cpufreq_governor; + +struct cpufreq_frequency_table; + +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 bpf_bloom_filter { - struct bpf_map map; - u32 bitset_mask; - u32 hash_seed; - u32 aligned_u32_count; - u32 nr_hash_funcs; - long unsigned int bitset[0]; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 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 bpf_cgroup_storage_map { - struct bpf_map map; - spinlock_t lock; - struct rb_root root; - struct list_head list; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 cpufreq_frequency_table { + unsigned int flags; + unsigned int driver_data; + unsigned int frequency; }; -struct bpf_queue_stack { - struct bpf_map map; - raw_spinlock_t lock; - u32 head; - u32 tail; - u32 size; - char elements[0]; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 trace_event_raw_cpu { + struct trace_entry ent; + u32 state; + u32 cpu_id; + char __data[0]; }; -enum { - BPF_RB_NO_WAKEUP = 1, - BPF_RB_FORCE_WAKEUP = 2, +struct trace_event_raw_powernv_throttle { + struct trace_entry ent; + int chip_id; + u32 __data_loc_reason; + int pmax; + char __data[0]; }; -enum { - BPF_RB_AVAIL_DATA = 0, - BPF_RB_RING_SIZE = 1, - BPF_RB_CONS_POS = 2, - BPF_RB_PROD_POS = 3, +struct trace_event_raw_pstate_sample { + struct trace_entry ent; + u32 core_busy; + u32 scaled_busy; + u32 from; + u32 to; + u64 mperf; + u64 aperf; + u64 tsc; + u32 freq; + u32 io_boost; + char __data[0]; }; -enum { - BPF_RINGBUF_BUSY_BIT = 2147483648, - BPF_RINGBUF_DISCARD_BIT = 1073741824, - BPF_RINGBUF_HDR_SZ = 8, +struct trace_event_raw_cpu_frequency_limits { + struct trace_entry ent; + u32 min_freq; + u32 max_freq; + u32 cpu_id; + char __data[0]; }; -struct bpf_ringbuf { - wait_queue_head_t waitq; - struct irq_work work; - u64 mask; - struct page **pages; - int nr_pages; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - spinlock_t spinlock; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 trace_event_raw_device_pm_callback_start { + struct trace_entry ent; + u32 __data_loc_device; + u32 __data_loc_driver; + u32 __data_loc_parent; + u32 __data_loc_pm_ops; + int event; + char __data[0]; +}; + +struct trace_event_raw_device_pm_callback_end { + struct trace_entry ent; + u32 __data_loc_device; + u32 __data_loc_driver; + int error; + char __data[0]; +}; + +struct trace_event_raw_suspend_resume { + struct trace_entry ent; + const char *action; + int val; + bool start; + char __data[0]; +}; + +struct trace_event_raw_wakeup_source { + struct trace_entry ent; + u32 __data_loc_name; + u64 state; + char __data[0]; +}; + +struct trace_event_raw_clock { + struct trace_entry ent; + u32 __data_loc_name; + u64 state; + u64 cpu_id; + char __data[0]; +}; + +struct trace_event_raw_power_domain { + struct trace_entry ent; + u32 __data_loc_name; + u64 state; + u64 cpu_id; + char __data[0]; +}; + +struct trace_event_raw_cpu_latency_qos_request { + struct trace_entry ent; + s32 value; + char __data[0]; +}; + +struct trace_event_raw_pm_qos_update { + struct trace_entry ent; + enum pm_qos_req_action action; + int prev_value; + int curr_value; + char __data[0]; +}; + +struct trace_event_raw_dev_pm_qos_request { + struct trace_entry ent; + u32 __data_loc_name; + enum dev_pm_qos_req_type type; + s32 new_value; + char __data[0]; +}; + +struct trace_event_data_offsets_cpu {}; + +struct trace_event_data_offsets_powernv_throttle { + u32 reason; +}; + +struct trace_event_data_offsets_pstate_sample {}; + +struct trace_event_data_offsets_cpu_frequency_limits {}; + +struct trace_event_data_offsets_device_pm_callback_start { + u32 device; + u32 driver; + u32 parent; + u32 pm_ops; +}; + +struct trace_event_data_offsets_device_pm_callback_end { + u32 device; + u32 driver; +}; + +struct trace_event_data_offsets_suspend_resume {}; + +struct trace_event_data_offsets_wakeup_source { + u32 name; +}; + +struct trace_event_data_offsets_clock { + u32 name; +}; + +struct trace_event_data_offsets_power_domain { + u32 name; +}; + +struct trace_event_data_offsets_cpu_latency_qos_request {}; + +struct trace_event_data_offsets_pm_qos_update {}; + +struct trace_event_data_offsets_dev_pm_qos_request { + u32 name; +}; + +typedef void (*btf_trace_cpu_idle)(void *, unsigned int, unsigned int); + +typedef void (*btf_trace_powernv_throttle)(void *, int, const char *, int); + +typedef void (*btf_trace_pstate_sample)(void *, u32, u32, u32, u32, u64, u64, u64, u32, u32); + +typedef void (*btf_trace_cpu_frequency)(void *, unsigned int, unsigned int); + +typedef void (*btf_trace_cpu_frequency_limits)(void *, struct cpufreq_policy *); + +typedef void (*btf_trace_device_pm_callback_start)(void *, struct device *, const char *, int); + +typedef void (*btf_trace_device_pm_callback_end)(void *, struct device *, int); + +typedef void (*btf_trace_suspend_resume)(void *, const char *, int, bool); + +typedef void (*btf_trace_wakeup_source_activate)(void *, const char *, unsigned int); + +typedef void (*btf_trace_wakeup_source_deactivate)(void *, const char *, unsigned int); + +typedef void (*btf_trace_clock_enable)(void *, const char *, unsigned int, unsigned int); + +typedef void (*btf_trace_clock_disable)(void *, const char *, unsigned int, unsigned int); + +typedef void (*btf_trace_clock_set_rate)(void *, const char *, unsigned int, unsigned int); + +typedef void (*btf_trace_power_domain_target)(void *, const char *, unsigned int, unsigned int); + +typedef void (*btf_trace_pm_qos_add_request)(void *, s32); + +typedef void (*btf_trace_pm_qos_update_request)(void *, s32); + +typedef void (*btf_trace_pm_qos_remove_request)(void *, s32); + +typedef void (*btf_trace_pm_qos_update_target)(void *, enum pm_qos_req_action, int, int); + +typedef void (*btf_trace_pm_qos_update_flags)(void *, enum pm_qos_req_action, int, int); + +typedef void (*btf_trace_dev_pm_qos_add_request)(void *, const char *, enum dev_pm_qos_req_type, s32); + +typedef void (*btf_trace_dev_pm_qos_update_request)(void *, const char *, enum dev_pm_qos_req_type, s32); + +typedef void (*btf_trace_dev_pm_qos_remove_request)(void *, const char *, enum dev_pm_qos_req_type, s32); + +struct trace_probe_log { + const char *subsystem; + const char **argv; + int argc; + int index; +}; + +enum uprobe_filter_ctx { + UPROBE_FILTER_REGISTER = 0, + UPROBE_FILTER_UNREGISTER = 1, + UPROBE_FILTER_MMAP = 2, +}; + +struct uprobe_consumer { + int (*handler)(struct uprobe_consumer *, struct pt_regs *); + int (*ret_handler)(struct uprobe_consumer *, long unsigned int, struct pt_regs *); + bool (*filter)(struct uprobe_consumer *, enum uprobe_filter_ctx, struct mm_struct *); + struct uprobe_consumer *next; +}; + +struct uprobe_trace_entry_head { + struct trace_entry ent; + long unsigned int vaddr[0]; +}; + +struct trace_uprobe { + struct dyn_event devent; + struct uprobe_consumer consumer; + struct path path; + struct inode *inode; + char *filename; + long unsigned int offset; + long unsigned int ref_ctr_offset; + long unsigned int nhit; + struct trace_probe tp; +}; + +struct uprobe_dispatch_data { + struct trace_uprobe *tu; + long unsigned int bp_addr; +}; + +struct uprobe_cpu_buffer { + struct mutex mutex; + void *buf; +}; + +typedef bool (*filter_func_t)(struct uprobe_consumer *, enum uprobe_filter_ctx, struct mm_struct *); + +struct rhash_lock_head; + +struct bucket_table { + unsigned int size; + unsigned int nest; + u32 hash_rnd; + struct list_head walkers; + struct callback_head rcu; + struct bucket_table *future_tbl; + struct lockdep_map dep_map; long: 64; long: 64; long: 64; @@ -33230,9891 +33523,2945 @@ struct bpf_ringbuf { long: 64; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long unsigned int consumer_pos; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long unsigned int producer_pos; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - char data[0]; -}; - -struct bpf_ringbuf_map { - struct bpf_map map; - struct bpf_ringbuf *rb; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 bpf_ringbuf_hdr { - u32 len; - u32 pg_off; -}; - -typedef u64 (*btf_bpf_ringbuf_reserve)(struct bpf_map *, u64, u64); - -typedef u64 (*btf_bpf_ringbuf_submit)(void *, u64); - -typedef u64 (*btf_bpf_ringbuf_discard)(void *, u64); - -typedef u64 (*btf_bpf_ringbuf_output)(struct bpf_map *, void *, u64, u64); - -typedef u64 (*btf_bpf_ringbuf_query)(struct bpf_map *, u64); - -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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 bpf_local_storage_data sdata; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 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, gfp_t); - -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_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, gfp_t); - -typedef u64 (*btf_bpf_inode_storage_delete)(struct bpf_map *, struct inode *); - -struct bpf_tramp_progs { - struct bpf_prog *progs[38]; - int nr_progs; -}; - -struct btf_enum { - __u32 name_off; - __s32 val; -}; - -struct btf_array { - __u32 type; - __u32 index_type; - __u32 nelems; -}; - -enum { - BTF_VAR_STATIC = 0, - BTF_VAR_GLOBAL_ALLOCATED = 1, - BTF_VAR_GLOBAL_EXTERN = 2, -}; - -struct btf_var { - __u32 linkage; -}; - -struct btf_decl_tag { - __s32 component_idx; -}; - -struct bpf_flow_keys { - __u16 nhoff; - __u16 thoff; - __u16 addr_proto; - __u8 is_frag; - __u8 is_first_frag; - __u8 is_encap; - __u8 ip_proto; - __be16 n_proto; - __be16 sport; - __be16 dport; - union { - struct { - __be32 ipv4_src; - __be32 ipv4_dst; - }; - struct { - __u32 ipv6_src[4]; - __u32 ipv6_dst[4]; - }; - }; - __u32 flags; - __be32 flow_label; -}; - -struct bpf_sock { - __u32 bound_dev_if; - __u32 family; - __u32 type; - __u32 protocol; - __u32 mark; - __u32 priority; - __u32 src_ip4; - __u32 src_ip6[4]; - __u32 src_port; - __be16 dst_port; - __u32 dst_ip4; - __u32 dst_ip6[4]; - __u32 state; - __s32 rx_queue_mapping; -}; - -struct __sk_buff { - __u32 len; - __u32 pkt_type; - __u32 mark; - __u32 queue_mapping; - __u32 protocol; - __u32 vlan_present; - __u32 vlan_tci; - __u32 vlan_proto; - __u32 priority; - __u32 ingress_ifindex; - __u32 ifindex; - __u32 tc_index; - __u32 cb[5]; - __u32 hash; - __u32 tc_classid; - __u32 data; - __u32 data_end; - __u32 napi_id; - __u32 family; - __u32 remote_ip4; - __u32 local_ip4; - __u32 remote_ip6[4]; - __u32 local_ip6[4]; - __u32 remote_port; - __u32 local_port; - __u32 data_meta; - union { - struct bpf_flow_keys *flow_keys; - }; - __u64 tstamp; - __u32 wire_len; - __u32 gso_segs; - union { - struct bpf_sock *sk; - }; - __u32 gso_size; - __u8 tstamp_type; - __u64 hwtstamp; -}; - -struct xdp_md { - __u32 data; - __u32 data_end; - __u32 data_meta; - __u32 ingress_ifindex; - __u32 rx_queue_index; - __u32 egress_ifindex; -}; - -struct sk_msg_md { - union { - void *data; - }; - union { - void *data_end; - }; - __u32 family; - __u32 remote_ip4; - __u32 local_ip4; - __u32 remote_ip6[4]; - __u32 local_ip6[4]; - __u32 remote_port; - __u32 local_port; - __u32 size; - union { - struct bpf_sock *sk; - }; -}; - -struct sk_reuseport_md { - union { - void *data; - }; - union { - void *data_end; - }; - __u32 len; - __u32 eth_protocol; - __u32 ip_protocol; - __u32 bind_inany; - __u32 hash; - union { - struct bpf_sock *sk; - }; - union { - struct bpf_sock *migrating_sk; - }; -}; - -struct bpf_sock_addr { - __u32 user_family; - __u32 user_ip4; - __u32 user_ip6[4]; - __u32 user_port; - __u32 family; - __u32 type; - __u32 protocol; - __u32 msg_src_ip4; - __u32 msg_src_ip6[4]; - union { - struct bpf_sock *sk; - }; -}; - -struct bpf_sock_ops { - __u32 op; - union { - __u32 args[4]; - __u32 reply; - __u32 replylong[4]; - }; - __u32 family; - __u32 remote_ip4; - __u32 local_ip4; - __u32 remote_ip6[4]; - __u32 local_ip6[4]; - __u32 remote_port; - __u32 local_port; - __u32 is_fullsock; - __u32 snd_cwnd; - __u32 srtt_us; - __u32 bpf_sock_ops_cb_flags; - __u32 state; - __u32 rtt_min; - __u32 snd_ssthresh; - __u32 rcv_nxt; - __u32 snd_nxt; - __u32 snd_una; - __u32 mss_cache; - __u32 ecn_flags; - __u32 rate_delivered; - __u32 rate_interval_us; - __u32 packets_out; - __u32 retrans_out; - __u32 total_retrans; - __u32 segs_in; - __u32 data_segs_in; - __u32 segs_out; - __u32 data_segs_out; - __u32 lost_out; - __u32 sacked_out; - __u32 sk_txhash; - __u64 bytes_received; - __u64 bytes_acked; - union { - struct bpf_sock *sk; - }; - union { - void *skb_data; - }; - union { - void *skb_data_end; - }; - __u32 skb_len; - __u32 skb_tcp_flags; -}; - -struct bpf_cgroup_dev_ctx { - __u32 access_type; - __u32 major; - __u32 minor; -}; - -struct bpf_sysctl { - __u32 write; - __u32 file_pos; -}; - -struct bpf_sockopt { - union { - struct bpf_sock *sk; - }; - union { - void *optval; - }; - union { - void *optval_end; - }; - __s32 level; - __s32 optname; - __s32 optlen; - __s32 retval; -}; - -struct bpf_sk_lookup { - union { - union { - struct bpf_sock *sk; - }; - __u64 cookie; - }; - __u32 family; - __u32 protocol; - __u32 remote_ip4; - __u32 remote_ip6[4]; - __be16 remote_port; - __u32 local_ip4; - __u32 local_ip6[4]; - __u32 local_port; - __u32 ingress_ifindex; -}; - -struct sk_reuseport_kern { - struct sk_buff *skb; - struct sock *sk; - struct sock *selected_sk; - struct sock *migrating_sk; - void *data_end; - u32 hash; - u32 reuseport_id; - bool bind_inany; -}; - -struct btf_kfunc_id_set { - struct module *owner; - union { - struct { - struct btf_id_set *check_set; - struct btf_id_set *acquire_set; - struct btf_id_set *release_set; - struct btf_id_set *ret_null_set; - }; - struct btf_id_set *sets[4]; - }; -}; - -struct bpf_flow_dissector { - struct bpf_flow_keys *flow_keys; - const struct sk_buff *skb; - const void *data; - const void *data_end; -}; - -struct inet_listen_hashbucket { - spinlock_t lock; - unsigned int count; - union { - struct hlist_head head; - struct hlist_nulls_head nulls_head; - }; -}; - -struct inet_ehash_bucket; - -struct inet_bind_hashbucket; - -struct inet_hashinfo { - struct inet_ehash_bucket *ehash; - spinlock_t *ehash_locks; - unsigned int ehash_mask; - unsigned int ehash_locks_mask; - struct kmem_cache *bind_bucket_cachep; - struct inet_bind_hashbucket *bhash; - unsigned int bhash_size; - unsigned int lhash2_mask; - struct inet_listen_hashbucket *lhash2; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 inet_listen_hashbucket listening_hash[32]; -}; - -struct ip_ra_chain { - struct ip_ra_chain *next; - struct sock *sk; - union { - void (*destructor)(struct sock *); - struct sock *saved_sk; - }; - struct callback_head rcu; -}; - -struct fib_table { - struct hlist_node tb_hlist; - u32 tb_id; - int tb_num_default; - struct callback_head rcu; - long unsigned int *tb_data; - long unsigned int __data[0]; -}; - -struct inet_peer_base { - struct rb_root rb_root; - seqlock_t lock; - int total; -}; - -struct tcp_fastopen_context { - siphash_key_t key[2]; - int num; - struct callback_head rcu; -}; - -struct bpf_sock_addr_kern { - struct sock *sk; - struct sockaddr *uaddr; - u64 tmp_reg; - void *t_ctx; -}; - -struct bpf_sock_ops_kern { - struct sock *sk; - union { - u32 args[4]; - u32 reply; - u32 replylong[4]; - }; - struct sk_buff *syn_skb; - struct sk_buff *skb; - void *skb_data_end; - u8 op; - u8 is_fullsock; - u8 remaining_opt_len; - u64 temp; -}; - -struct bpf_sysctl_kern { - struct ctl_table_header *head; - struct ctl_table *table; - void *cur_val; - size_t cur_len; - void *new_val; - size_t new_len; - int new_updated; - int write; - loff_t *ppos; - u64 tmp_reg; -}; - -struct bpf_sockopt_kern { - struct sock *sk; - u8 *optval; - u8 *optval_end; - s32 level; - s32 optname; - s32 optlen; - struct task_struct *current_task; - u64 tmp_reg; -}; - -struct bpf_sk_lookup_kern { - u16 family; - u16 protocol; - __be16 sport; - u16 dport; - struct { - __be32 saddr; - __be32 daddr; - } v4; - struct { - const struct in6_addr *saddr; - const struct in6_addr *daddr; - } v6; - struct sock *selected_sk; - u32 ingress_ifindex; - bool no_reuseport; -}; - -struct lwtunnel_state { - __u16 type; - __u16 flags; - __u16 headroom; - atomic_t refcnt; - int (*orig_output)(struct net *, struct sock *, struct sk_buff *); - int (*orig_input)(struct sk_buff *); - struct callback_head rcu; - __u8 data[0]; -}; - -struct sock_reuseport { - struct callback_head rcu; - u16 max_socks; - u16 num_socks; - u16 num_closed_socks; - unsigned int synq_overflow_ts; - unsigned int reuseport_id; - unsigned int bind_inany: 1; - unsigned int has_conns: 1; - struct bpf_prog *prog; - struct sock *socks[0]; -}; - -struct sk_psock_progs { - struct bpf_prog *msg_parser; - struct bpf_prog *stream_parser; - struct bpf_prog *stream_verdict; - struct bpf_prog *skb_verdict; -}; - -struct 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 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 sk_psock_work_state { - struct sk_buff *skb; - u32 len; - u32 off; -}; - -struct sk_msg; - -struct sk_psock { - struct sock *sk; - struct sock *sk_redir; - u32 apply_bytes; - u32 cork_bytes; - u32 eval; - 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_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; -}; - -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 onlink: 1; - __u8 autoconf: 1; - __u8 reserved: 6; - __be32 valid; - __be32 prefered; - __be32 reserved2; - struct in6_addr prefix; -}; - -struct inet_ehash_bucket { - struct hlist_nulls_head chain; -}; - -struct inet_bind_hashbucket { - spinlock_t lock; - struct hlist_head chain; -}; - -struct ack_sample { - u32 pkts_acked; - s32 rtt_us; - u32 in_flight; -}; - -struct rate_sample { - u64 prior_mstamp; - u32 prior_delivered; - u32 prior_delivered_ce; - s32 delivered; - s32 delivered_ce; - long int interval_us; - u32 snd_interval_us; - u32 rcv_interval_us; - long int rtt_us; - int losses; - u32 acked_sacked; - u32 prior_in_flight; - u32 last_end_seq; - bool is_app_limited; - bool is_retrans; - bool is_ack_delayed; -}; - -struct sk_msg_sg { - u32 start; - u32 curr; - u32 end; - u32 size; - u32 copybreak; - long unsigned int copy[1]; - struct scatterlist data[19]; -}; - -struct sk_msg { - struct sk_msg_sg sg; - void *data; - void *data_end; - u32 apply_bytes; - u32 cork_bytes; - u32 flags; - struct sk_buff *skb; - struct sock *sk_redir; - struct sock *sk; - struct list_head list; -}; - -struct bpf_core_cand { - const struct btf *btf; - __u32 id; -}; - -struct bpf_core_cand_list { - struct bpf_core_cand *cands; - int len; -}; - -struct bpf_core_accessor { - __u32 type_id; - __u32 idx; - const char *name; -}; - -struct bpf_core_spec { - const struct btf *btf; - struct bpf_core_accessor spec[64]; - __u32 root_type_id; - enum bpf_core_relo_kind relo_kind; - int len; - int raw_spec[64]; - int raw_len; - __u32 bit_offset; -}; - -struct bpf_core_relo_res { - __u32 orig_val; - __u32 new_val; - bool poison; - bool validate; - bool fail_memsz_adjust; - __u32 orig_sz; - __u32 orig_type_id; - __u32 new_sz; - __u32 new_type_id; -}; - -enum btf_kfunc_hook { - BTF_KFUNC_HOOK_XDP = 0, - BTF_KFUNC_HOOK_TC = 1, - BTF_KFUNC_HOOK_STRUCT_OPS = 2, - BTF_KFUNC_HOOK_MAX = 3, -}; - -enum { - BTF_KFUNC_SET_MAX_CNT = 32, -}; - -struct btf_kfunc_set_tab { - struct btf_id_set *sets[12]; -}; - -enum verifier_phase { - CHECK_META = 0, - CHECK_TYPE = 1, -}; - -struct resolve_vertex { - const struct btf_type *t; - u32 type_id; - u16 next_member; -}; - -enum visit_state { - NOT_VISITED = 0, - VISITED = 1, - RESOLVED = 2, -}; - -enum resolve_mode { - RESOLVE_TBD = 0, - RESOLVE_PTR = 1, - RESOLVE_STRUCT_OR_ARRAY = 2, -}; - -struct btf_sec_info { - u32 off; - u32 len; -}; - -struct btf_verifier_env { - struct btf *btf; - u8 *visit_states; - struct resolve_vertex stack[32]; - struct bpf_verifier_log log; - u32 log_type_id; - u32 top_stack; - enum verifier_phase phase; - enum resolve_mode resolve_mode; -}; - -struct btf_show { - u64 flags; - void *target; - void (*showfn)(struct btf_show *, const char *, struct __va_list_tag *); - const struct btf *btf; - struct { - u8 depth; - u8 depth_to_show; - u8 depth_check; - u8 array_member: 1; - u8 array_terminated: 1; - u16 array_encoding; - u32 type_id; - int status; - const struct btf_type *type; - const struct btf_member *member; - char name[80]; - } state; - struct { - u32 size; - void *head; - void *data; - u8 safe[32]; - } obj; -}; - -struct btf_kind_operations { - s32 (*check_meta)(struct btf_verifier_env *, const struct btf_type *, u32); - int (*resolve)(struct btf_verifier_env *, const struct resolve_vertex *); - int (*check_member)(struct btf_verifier_env *, const struct btf_type *, const struct btf_member *, const struct btf_type *); - int (*check_kflag_member)(struct btf_verifier_env *, const struct btf_type *, const struct btf_member *, const struct btf_type *); - void (*log_details)(struct btf_verifier_env *, const struct btf_type *); - void (*show)(const struct btf *, const struct btf_type *, u32, void *, u8, struct btf_show *); -}; - -struct bpf_ctx_convert { - struct __sk_buff BPF_PROG_TYPE_SOCKET_FILTER_prog; - struct sk_buff BPF_PROG_TYPE_SOCKET_FILTER_kern; - struct __sk_buff BPF_PROG_TYPE_SCHED_CLS_prog; - struct sk_buff BPF_PROG_TYPE_SCHED_CLS_kern; - struct __sk_buff BPF_PROG_TYPE_SCHED_ACT_prog; - struct sk_buff BPF_PROG_TYPE_SCHED_ACT_kern; - struct xdp_md BPF_PROG_TYPE_XDP_prog; - struct xdp_buff BPF_PROG_TYPE_XDP_kern; - struct __sk_buff BPF_PROG_TYPE_CGROUP_SKB_prog; - struct sk_buff BPF_PROG_TYPE_CGROUP_SKB_kern; - struct bpf_sock BPF_PROG_TYPE_CGROUP_SOCK_prog; - struct sock BPF_PROG_TYPE_CGROUP_SOCK_kern; - struct bpf_sock_addr BPF_PROG_TYPE_CGROUP_SOCK_ADDR_prog; - struct bpf_sock_addr_kern BPF_PROG_TYPE_CGROUP_SOCK_ADDR_kern; - struct __sk_buff BPF_PROG_TYPE_LWT_IN_prog; - struct sk_buff BPF_PROG_TYPE_LWT_IN_kern; - struct __sk_buff BPF_PROG_TYPE_LWT_OUT_prog; - struct sk_buff BPF_PROG_TYPE_LWT_OUT_kern; - struct __sk_buff BPF_PROG_TYPE_LWT_XMIT_prog; - struct sk_buff BPF_PROG_TYPE_LWT_XMIT_kern; - struct __sk_buff BPF_PROG_TYPE_LWT_SEG6LOCAL_prog; - struct sk_buff BPF_PROG_TYPE_LWT_SEG6LOCAL_kern; - struct bpf_sock_ops BPF_PROG_TYPE_SOCK_OPS_prog; - struct bpf_sock_ops_kern BPF_PROG_TYPE_SOCK_OPS_kern; - struct __sk_buff BPF_PROG_TYPE_SK_SKB_prog; - struct sk_buff BPF_PROG_TYPE_SK_SKB_kern; - struct sk_msg_md BPF_PROG_TYPE_SK_MSG_prog; - struct sk_msg BPF_PROG_TYPE_SK_MSG_kern; - struct __sk_buff BPF_PROG_TYPE_FLOW_DISSECTOR_prog; - struct bpf_flow_dissector BPF_PROG_TYPE_FLOW_DISSECTOR_kern; - bpf_user_pt_regs_t BPF_PROG_TYPE_KPROBE_prog; - struct pt_regs BPF_PROG_TYPE_KPROBE_kern; - __u64 BPF_PROG_TYPE_TRACEPOINT_prog; - u64 BPF_PROG_TYPE_TRACEPOINT_kern; - struct bpf_perf_event_data BPF_PROG_TYPE_PERF_EVENT_prog; - struct bpf_perf_event_data_kern BPF_PROG_TYPE_PERF_EVENT_kern; - struct bpf_raw_tracepoint_args BPF_PROG_TYPE_RAW_TRACEPOINT_prog; - u64 BPF_PROG_TYPE_RAW_TRACEPOINT_kern; - struct bpf_raw_tracepoint_args BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE_prog; - u64 BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE_kern; - void *BPF_PROG_TYPE_TRACING_prog; - void *BPF_PROG_TYPE_TRACING_kern; - struct bpf_cgroup_dev_ctx BPF_PROG_TYPE_CGROUP_DEVICE_prog; - struct bpf_cgroup_dev_ctx BPF_PROG_TYPE_CGROUP_DEVICE_kern; - struct bpf_sysctl BPF_PROG_TYPE_CGROUP_SYSCTL_prog; - struct bpf_sysctl_kern BPF_PROG_TYPE_CGROUP_SYSCTL_kern; - struct bpf_sockopt BPF_PROG_TYPE_CGROUP_SOCKOPT_prog; - struct bpf_sockopt_kern BPF_PROG_TYPE_CGROUP_SOCKOPT_kern; - __u32 BPF_PROG_TYPE_LIRC_MODE2_prog; - u32 BPF_PROG_TYPE_LIRC_MODE2_kern; - struct sk_reuseport_md BPF_PROG_TYPE_SK_REUSEPORT_prog; - struct sk_reuseport_kern BPF_PROG_TYPE_SK_REUSEPORT_kern; - struct bpf_sk_lookup BPF_PROG_TYPE_SK_LOOKUP_prog; - struct bpf_sk_lookup_kern BPF_PROG_TYPE_SK_LOOKUP_kern; - void *BPF_PROG_TYPE_STRUCT_OPS_prog; - void *BPF_PROG_TYPE_STRUCT_OPS_kern; - void *BPF_PROG_TYPE_EXT_prog; - void *BPF_PROG_TYPE_EXT_kern; - void *BPF_PROG_TYPE_LSM_prog; - void *BPF_PROG_TYPE_LSM_kern; - void *BPF_PROG_TYPE_SYSCALL_prog; - void *BPF_PROG_TYPE_SYSCALL_kern; -}; - -enum { - __ctx_convertBPF_PROG_TYPE_SOCKET_FILTER = 0, - __ctx_convertBPF_PROG_TYPE_SCHED_CLS = 1, - __ctx_convertBPF_PROG_TYPE_SCHED_ACT = 2, - __ctx_convertBPF_PROG_TYPE_XDP = 3, - __ctx_convertBPF_PROG_TYPE_CGROUP_SKB = 4, - __ctx_convertBPF_PROG_TYPE_CGROUP_SOCK = 5, - __ctx_convertBPF_PROG_TYPE_CGROUP_SOCK_ADDR = 6, - __ctx_convertBPF_PROG_TYPE_LWT_IN = 7, - __ctx_convertBPF_PROG_TYPE_LWT_OUT = 8, - __ctx_convertBPF_PROG_TYPE_LWT_XMIT = 9, - __ctx_convertBPF_PROG_TYPE_LWT_SEG6LOCAL = 10, - __ctx_convertBPF_PROG_TYPE_SOCK_OPS = 11, - __ctx_convertBPF_PROG_TYPE_SK_SKB = 12, - __ctx_convertBPF_PROG_TYPE_SK_MSG = 13, - __ctx_convertBPF_PROG_TYPE_FLOW_DISSECTOR = 14, - __ctx_convertBPF_PROG_TYPE_KPROBE = 15, - __ctx_convertBPF_PROG_TYPE_TRACEPOINT = 16, - __ctx_convertBPF_PROG_TYPE_PERF_EVENT = 17, - __ctx_convertBPF_PROG_TYPE_RAW_TRACEPOINT = 18, - __ctx_convertBPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 19, - __ctx_convertBPF_PROG_TYPE_TRACING = 20, - __ctx_convertBPF_PROG_TYPE_CGROUP_DEVICE = 21, - __ctx_convertBPF_PROG_TYPE_CGROUP_SYSCTL = 22, - __ctx_convertBPF_PROG_TYPE_CGROUP_SOCKOPT = 23, - __ctx_convertBPF_PROG_TYPE_LIRC_MODE2 = 24, - __ctx_convertBPF_PROG_TYPE_SK_REUSEPORT = 25, - __ctx_convertBPF_PROG_TYPE_SK_LOOKUP = 26, - __ctx_convertBPF_PROG_TYPE_STRUCT_OPS = 27, - __ctx_convertBPF_PROG_TYPE_EXT = 28, - __ctx_convertBPF_PROG_TYPE_LSM = 29, - __ctx_convertBPF_PROG_TYPE_SYSCALL = 30, - __ctx_convert_unused = 31, -}; - -enum bpf_struct_walk_result { - WALK_SCALAR = 0, - WALK_PTR = 1, - WALK_STRUCT = 2, -}; - -struct btf_show_snprintf { - struct btf_show show; - int len_left; - 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_cand_cache { - const char *name; - u32 name_len; - u16 kind; - u16 cnt; - struct { - const struct btf *btf; - u32 id; - } cands[0]; -}; - -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 { - __u32 ifindex; - union { - int fd; - __u32 id; - } bpf_prog; -}; - -enum net_device_flags { - IFF_UP = 1, - IFF_BROADCAST = 2, - IFF_DEBUG = 4, - IFF_LOOPBACK = 8, - IFF_POINTOPOINT = 16, - IFF_NOTRAILERS = 32, - IFF_RUNNING = 64, - IFF_NOARP = 128, - IFF_PROMISC = 256, - IFF_ALLMULTI = 512, - IFF_MASTER = 1024, - IFF_SLAVE = 2048, - IFF_MULTICAST = 4096, - IFF_PORTSEL = 8192, - IFF_AUTOMEDIA = 16384, - IFF_DYNAMIC = 32768, - IFF_LOWER_UP = 65536, - IFF_DORMANT = 131072, - IFF_ECHO = 262144, -}; - -enum netdev_priv_flags { - IFF_802_1Q_VLAN = 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, - IFF_CHANGE_PROTO_DOWN = 0, -}; - -struct xdp_dev_bulk_queue { - struct xdp_frame *q[16]; - struct list_head flush_node; - struct net_device *dev; - struct net_device *dev_rx; - struct bpf_prog *xdp_prog; - unsigned int count; -}; - -enum netdev_cmd { - NETDEV_UP = 1, - NETDEV_DOWN = 2, - NETDEV_REBOOT = 3, - NETDEV_CHANGE = 4, - NETDEV_REGISTER = 5, - NETDEV_UNREGISTER = 6, - NETDEV_CHANGEMTU = 7, - NETDEV_CHANGEADDR = 8, - NETDEV_PRE_CHANGEADDR = 9, - NETDEV_GOING_DOWN = 10, - NETDEV_CHANGENAME = 11, - NETDEV_FEAT_CHANGE = 12, - NETDEV_BONDING_FAILOVER = 13, - NETDEV_PRE_UP = 14, - NETDEV_PRE_TYPE_CHANGE = 15, - NETDEV_POST_TYPE_CHANGE = 16, - NETDEV_POST_INIT = 17, - NETDEV_RELEASE = 18, - NETDEV_NOTIFY_PEERS = 19, - NETDEV_JOIN = 20, - NETDEV_CHANGEUPPER = 21, - NETDEV_RESEND_IGMP = 22, - NETDEV_PRECHANGEMTU = 23, - NETDEV_CHANGEINFODATA = 24, - NETDEV_BONDING_INFO = 25, - NETDEV_PRECHANGEUPPER = 26, - NETDEV_CHANGELOWERSTATE = 27, - NETDEV_UDP_TUNNEL_PUSH_INFO = 28, - NETDEV_UDP_TUNNEL_DROP_INFO = 29, - NETDEV_CHANGE_TX_QUEUE_LEN = 30, - NETDEV_CVLAN_FILTER_PUSH_INFO = 31, - NETDEV_CVLAN_FILTER_DROP_INFO = 32, - NETDEV_SVLAN_FILTER_PUSH_INFO = 33, - NETDEV_SVLAN_FILTER_DROP_INFO = 34, - NETDEV_OFFLOAD_XSTATS_ENABLE = 35, - NETDEV_OFFLOAD_XSTATS_DISABLE = 36, - NETDEV_OFFLOAD_XSTATS_REPORT_USED = 37, - NETDEV_OFFLOAD_XSTATS_REPORT_DELTA = 38, -}; - -struct netdev_notifier_info { - struct net_device *dev; - 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 { - struct net_device *dev; - struct hlist_node index_hlist; - struct bpf_dtab *dtab; - struct bpf_prog *xdp_prog; - struct callback_head rcu; - unsigned int idx; - struct bpf_devmap_val val; -}; - -struct bpf_dtab { - struct bpf_map map; - struct bpf_dtab_netdev **netdev_map; - struct list_head list; - struct hlist_head *dev_index_head; - spinlock_t index_lock; - unsigned int items; - u32 n_buckets; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -struct bpf_cpumap_val { - __u32 qsize; - union { - int fd; - __u32 id; - } bpf_prog; -}; - -struct bpf_cpu_map_entry; - -struct xdp_bulk_queue { - void *q[8]; - struct list_head flush_node; - struct bpf_cpu_map_entry *obj; - unsigned int count; -}; - -struct bpf_cpu_map; - -struct bpf_cpu_map_entry { - u32 cpu; - int map_id; - struct xdp_bulk_queue *bulkq; - struct bpf_cpu_map *cmap; - struct ptr_ring *queue; - struct task_struct *kthread; - struct bpf_cpumap_val value; - struct bpf_prog *prog; - atomic_t refcnt; - struct callback_head rcu; - struct work_struct kthread_stop_wq; -}; - -struct bpf_cpu_map { - struct bpf_map map; - struct bpf_cpu_map_entry **cpu_map; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 rhlist_head { - struct rhash_head rhead; - struct rhlist_head *next; -}; - -struct bpf_prog_offload_ops { - int (*insn_hook)(struct bpf_verifier_env *, int, int); - int (*finalize)(struct bpf_verifier_env *); - int (*replace_insn)(struct bpf_verifier_env *, u32, struct bpf_insn *); - int (*remove_insns)(struct bpf_verifier_env *, u32, u32); - int (*prepare)(struct bpf_prog *); - int (*translate)(struct bpf_prog *); - void (*destroy)(struct bpf_prog *); -}; - -struct bpf_offload_dev { - const struct bpf_prog_offload_ops *ops; - struct list_head netdevs; - void *priv; -}; - -typedef struct ns_common *ns_get_path_helper_t(void *); - -struct bpf_offload_netdev { - struct rhash_head l; - struct net_device *netdev; - struct bpf_offload_dev *offdev; - struct list_head progs; - struct list_head maps; - struct list_head offdev_netdevs; -}; - -struct ns_get_path_bpf_prog_args { - struct bpf_prog *prog; - struct bpf_prog_info *info; -}; - -struct ns_get_path_bpf_map_args { - struct bpf_offloaded_map *offmap; - struct bpf_map_info *info; -}; - -struct bpf_netns_link { - struct bpf_link link; - enum bpf_attach_type type; - enum netns_bpf_attach_type netns_type; - struct net *net; - struct list_head node; -}; - -enum bpf_stack_build_id_status { - BPF_STACK_BUILD_ID_EMPTY = 0, - BPF_STACK_BUILD_ID_VALID = 1, - BPF_STACK_BUILD_ID_IP = 2, -}; - -struct bpf_stack_build_id { - __s32 status; - unsigned char build_id[20]; - union { - __u64 offset; - __u64 ip; - }; -}; - -enum { - BPF_F_SKIP_FIELD_MASK = 255, - BPF_F_USER_STACK = 256, - BPF_F_FAST_STACK_CMP = 512, - BPF_F_REUSE_STACKID = 1024, - BPF_F_USER_BUILD_ID = 2048, -}; - -enum perf_callchain_context { - PERF_CONTEXT_HV = 4294967264, - PERF_CONTEXT_KERNEL = 4294967168, - PERF_CONTEXT_USER = 4294966784, - PERF_CONTEXT_GUEST = 4294965248, - PERF_CONTEXT_GUEST_KERNEL = 4294965120, - PERF_CONTEXT_GUEST_USER = 4294964736, - PERF_CONTEXT_MAX = 4294963201, -}; - -struct stack_map_bucket { - struct pcpu_freelist_node fnode; - u32 hash; - u32 nr; - u64 data[0]; -}; - -struct bpf_stack_map { - struct bpf_map map; - void *elems; - struct pcpu_freelist freelist; - u32 n_buckets; - struct stack_map_bucket *buckets[0]; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; - -typedef u64 (*btf_bpf_get_stackid)(struct pt_regs *, struct bpf_map *, u64); - -typedef u64 (*btf_bpf_get_stackid_pe)(struct bpf_perf_event_data_kern *, struct bpf_map *, u64); - -typedef u64 (*btf_bpf_get_stack)(struct pt_regs *, void *, u32, u64); - -typedef u64 (*btf_bpf_get_task_stack)(struct task_struct *, void *, u32, u64); - -typedef u64 (*btf_bpf_get_stack_pe)(struct bpf_perf_event_data_kern *, void *, u32, u64); - -enum sock_type { - SOCK_STREAM = 1, - SOCK_DGRAM = 2, - SOCK_RAW = 3, - SOCK_RDM = 4, - SOCK_SEQPACKET = 5, - SOCK_DCCP = 6, - SOCK_PACKET = 10, -}; - -enum sock_flags { - SOCK_DEAD = 0, - SOCK_DONE = 1, - SOCK_URGINLINE = 2, - SOCK_KEEPOPEN = 3, - SOCK_LINGER = 4, - SOCK_DESTROY = 5, - SOCK_BROADCAST = 6, - SOCK_TIMESTAMP = 7, - SOCK_ZAPPED = 8, - SOCK_USE_WRITE_QUEUE = 9, - SOCK_DBG = 10, - SOCK_RCVTSTAMP = 11, - SOCK_RCVTSTAMPNS = 12, - SOCK_LOCALROUTE = 13, - SOCK_MEMALLOC = 14, - SOCK_TIMESTAMPING_RX_SOFTWARE = 15, - SOCK_FASYNC = 16, - SOCK_RXQ_OVFL = 17, - SOCK_ZEROCOPY = 18, - SOCK_WIFI_STATUS = 19, - SOCK_NOFCS = 20, - SOCK_FILTER_LOCKED = 21, - SOCK_SELECT_ERR_QUEUE = 22, - SOCK_RCU_FREE = 23, - SOCK_TXTIME = 24, - SOCK_XDP = 25, - SOCK_TSTAMP_NEW = 26, -}; - -struct reuseport_array { - struct bpf_map map; - struct sock *ptrs[0]; -}; - -enum { - BPF_F_SYSCTL_BASE_NAME = 1, -}; - -struct qdisc_skb_cb { - struct { - unsigned int pkt_len; - u16 slave_dev_queue_mapping; - u16 tc_classid; - }; - unsigned char data[20]; -}; - -struct bpf_skb_data_end { - struct qdisc_skb_cb qdisc_cb; - void *data_meta; - void *data_end; -}; - -struct bpf_sockopt_buf { - u8 data[32]; -}; - -enum { - TCPF_ESTABLISHED = 2, - TCPF_SYN_SENT = 4, - TCPF_SYN_RECV = 8, - TCPF_FIN_WAIT1 = 16, - TCPF_FIN_WAIT2 = 32, - TCPF_TIME_WAIT = 64, - TCPF_CLOSE = 128, - TCPF_CLOSE_WAIT = 256, - TCPF_LAST_ACK = 512, - TCPF_LISTEN = 1024, - TCPF_CLOSING = 2048, - TCPF_NEW_SYN_RECV = 4096, -}; - -struct bpf_cgroup_link { - struct bpf_link link; - struct cgroup *cgroup; - enum bpf_attach_type type; -}; - -struct bpf_prog_list { - struct list_head node; - struct bpf_prog *prog; - struct bpf_cgroup_link *link; - struct bpf_cgroup_storage *storage[2]; -}; - -typedef u64 (*btf_bpf_get_retval)(); - -typedef u64 (*btf_bpf_set_retval)(int); - -typedef u64 (*btf_bpf_sysctl_get_name)(struct bpf_sysctl_kern *, char *, size_t, u64); - -typedef u64 (*btf_bpf_sysctl_get_current_value)(struct bpf_sysctl_kern *, char *, size_t); - -typedef u64 (*btf_bpf_sysctl_get_new_value)(struct bpf_sysctl_kern *, char *, size_t); - -typedef u64 (*btf_bpf_sysctl_set_new_value)(struct bpf_sysctl_kern *, const char *, size_t); - -typedef u64 (*btf_bpf_get_netns_cookie_sockopt)(struct bpf_sockopt_kern *); - -struct bpf_dummy_ops_state { - int val; -}; - -struct bpf_dummy_ops { - int (*test_1)(struct bpf_dummy_ops_state *); - int (*test_2)(struct bpf_dummy_ops_state *, int, short unsigned int, char, long unsigned int); -}; - -enum bpf_struct_ops_state { - BPF_STRUCT_OPS_STATE_INIT = 0, - BPF_STRUCT_OPS_STATE_INUSE = 1, - BPF_STRUCT_OPS_STATE_TOBEFREE = 2, -}; - -struct bpf_struct_ops_value { - refcount_t refcnt; - enum bpf_struct_ops_state state; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - char data[0]; -}; - -struct bpf_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; - long: 64; - long: 64; - long: 64; - long: 64; - 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 bpf_struct_ops_value kvalue; -}; - -struct bpf_struct_ops_bpf_dummy_ops { - refcount_t refcnt; - enum bpf_struct_ops_state state; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 bpf_dummy_ops data; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 bpf_struct_ops_tcp_congestion_ops { - refcount_t refcnt; - enum bpf_struct_ops_state state; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 tcp_congestion_ops data; -}; - -enum { - BPF_STRUCT_OPS_TYPE_bpf_dummy_ops = 0, - BPF_STRUCT_OPS_TYPE_tcp_congestion_ops = 1, - __NR_BPF_STRUCT_OPS_TYPE = 2, -}; - -enum libbpf_print_level { - LIBBPF_WARN = 0, - LIBBPF_INFO = 1, - LIBBPF_DEBUG = 2, -}; - -enum perf_branch_sample_type { - PERF_SAMPLE_BRANCH_USER = 1, - PERF_SAMPLE_BRANCH_KERNEL = 2, - PERF_SAMPLE_BRANCH_HV = 4, - PERF_SAMPLE_BRANCH_ANY = 8, - PERF_SAMPLE_BRANCH_ANY_CALL = 16, - PERF_SAMPLE_BRANCH_ANY_RETURN = 32, - PERF_SAMPLE_BRANCH_IND_CALL = 64, - PERF_SAMPLE_BRANCH_ABORT_TX = 128, - PERF_SAMPLE_BRANCH_IN_TX = 256, - PERF_SAMPLE_BRANCH_NO_TX = 512, - PERF_SAMPLE_BRANCH_COND = 1024, - PERF_SAMPLE_BRANCH_CALL_STACK = 2048, - PERF_SAMPLE_BRANCH_IND_JUMP = 4096, - PERF_SAMPLE_BRANCH_CALL = 8192, - PERF_SAMPLE_BRANCH_NO_FLAGS = 16384, - PERF_SAMPLE_BRANCH_NO_CYCLES = 32768, - PERF_SAMPLE_BRANCH_TYPE_SAVE = 65536, - PERF_SAMPLE_BRANCH_HW_INDEX = 131072, - PERF_SAMPLE_BRANCH_MAX = 262144, -}; - -enum perf_event_read_format { - PERF_FORMAT_TOTAL_TIME_ENABLED = 1, - PERF_FORMAT_TOTAL_TIME_RUNNING = 2, - PERF_FORMAT_ID = 4, - PERF_FORMAT_GROUP = 8, - PERF_FORMAT_MAX = 16, -}; - -enum perf_event_ioc_flags { - PERF_IOC_FLAG_GROUP = 1, -}; - -struct perf_event_mmap_page { - __u32 version; - __u32 compat_version; - __u32 lock; - __u32 index; - __s64 offset; - __u64 time_enabled; - __u64 time_running; - union { - __u64 capabilities; - struct { - __u64 cap_bit0: 1; - __u64 cap_bit0_is_deprecated: 1; - __u64 cap_user_rdpmc: 1; - __u64 cap_user_time: 1; - __u64 cap_user_time_zero: 1; - __u64 cap_user_time_short: 1; - __u64 cap_____res: 58; - }; - }; - __u16 pmc_width; - __u16 time_shift; - __u32 time_mult; - __u64 time_offset; - __u64 time_zero; - __u32 size; - __u32 __reserved_1; - __u64 time_cycles; - __u64 time_mask; - __u8 __reserved[928]; - __u64 data_head; - __u64 data_tail; - __u64 data_offset; - __u64 data_size; - __u64 aux_head; - __u64 aux_tail; - __u64 aux_offset; - __u64 aux_size; -}; - -struct perf_ns_link_info { - __u64 dev; - __u64 ino; -}; - -enum { - NET_NS_INDEX = 0, - UTS_NS_INDEX = 1, - IPC_NS_INDEX = 2, - PID_NS_INDEX = 3, - USER_NS_INDEX = 4, - MNT_NS_INDEX = 5, - CGROUP_NS_INDEX = 6, - NR_NAMESPACES = 7, -}; - -enum perf_event_type { - PERF_RECORD_MMAP = 1, - PERF_RECORD_LOST = 2, - PERF_RECORD_COMM = 3, - PERF_RECORD_EXIT = 4, - PERF_RECORD_THROTTLE = 5, - PERF_RECORD_UNTHROTTLE = 6, - PERF_RECORD_FORK = 7, - PERF_RECORD_READ = 8, - PERF_RECORD_SAMPLE = 9, - PERF_RECORD_MMAP2 = 10, - PERF_RECORD_AUX = 11, - PERF_RECORD_ITRACE_START = 12, - PERF_RECORD_LOST_SAMPLES = 13, - PERF_RECORD_SWITCH = 14, - PERF_RECORD_SWITCH_CPU_WIDE = 15, - PERF_RECORD_NAMESPACES = 16, - PERF_RECORD_KSYMBOL = 17, - PERF_RECORD_BPF_EVENT = 18, - PERF_RECORD_CGROUP = 19, - PERF_RECORD_TEXT_POKE = 20, - PERF_RECORD_AUX_OUTPUT_HW_ID = 21, - PERF_RECORD_MAX = 22, -}; - -enum perf_addr_filter_action_t { - PERF_ADDR_FILTER_ACTION_STOP = 0, - PERF_ADDR_FILTER_ACTION_START = 1, - PERF_ADDR_FILTER_ACTION_FILTER = 2, -}; - -struct perf_addr_filter { - struct list_head entry; - struct path path; - long unsigned int offset; - long unsigned int size; - enum perf_addr_filter_action_t action; -}; - -struct swevent_hlist { - struct hlist_head heads[256]; - struct callback_head callback_head; -}; - -struct pmu_event_list { - raw_spinlock_t lock; - struct list_head list; -}; - -struct perf_buffer { - refcount_t refcount; - struct callback_head callback_head; - int nr_pages; - int overwrite; - int paused; - atomic_t poll; - local_t head; - unsigned int nest; - local_t events; - local_t wakeup; - local_t lost; - long int watermark; - long int aux_watermark; - spinlock_t event_lock; - struct list_head event_list; - atomic_t mmap_count; - long unsigned int mmap_locked; - struct user_struct *mmap_user; - long int aux_head; - unsigned int aux_nest; - long int aux_wakeup; - long unsigned int aux_pgoff; - int aux_nr_pages; - int aux_overwrite; - atomic_t aux_mmap_count; - long unsigned int aux_mmap_locked; - void (*free_aux)(void *); - refcount_t aux_refcount; - int aux_in_sampling; - void **aux_pages; - void *aux_priv; - struct perf_event_mmap_page *user_page; - void *data_pages[0]; -}; - -struct match_token { - int token; - const char *pattern; -}; - -enum { - MAX_OPT_ARGS = 3, -}; - -typedef struct { - char *from; - char *to; -} substring_t; - -struct min_heap { - void *data; - int nr; - int size; -}; - -struct min_heap_callbacks { - int elem_size; - bool (*less)(const void *, const void *); - void (*swp)(void *, void *); -}; - -typedef int (*remote_function_f)(void *); - -struct remote_function_call { - struct task_struct *p; - remote_function_f func; - void *info; - int ret; -}; - -typedef void (*event_f)(struct perf_event *, struct perf_cpu_context *, struct perf_event_context *, void *); - -struct event_function_struct { - struct perf_event *event; - event_f func; - void *data; -}; - -enum event_type_t { - EVENT_FLEXIBLE = 1, - EVENT_PINNED = 2, - EVENT_TIME = 4, - EVENT_CPU = 8, - EVENT_ALL = 3, -}; - -struct __group_key { - int cpu; - struct cgroup *cgroup; -}; - -struct stop_event_data { - struct perf_event *event; - unsigned int restart; -}; - -struct perf_read_data { - struct perf_event *event; - bool group; - int ret; -}; - -struct perf_read_event { - struct perf_event_header header; - u32 pid; - u32 tid; -}; - -typedef void perf_iterate_f(struct perf_event *, void *); - -struct remote_output { - struct perf_buffer *rb; - int err; -}; - -struct perf_task_event { - struct task_struct *task; - struct perf_event_context *task_ctx; - struct { - struct perf_event_header header; - u32 pid; - u32 ppid; - u32 tid; - u32 ptid; - u64 time; - } event_id; -}; - -struct perf_comm_event { - struct task_struct *task; - char *comm; - int comm_size; - struct { - struct perf_event_header header; - u32 pid; - u32 tid; - } event_id; -}; - -struct perf_namespaces_event { - struct task_struct *task; - struct { - struct perf_event_header header; - u32 pid; - u32 tid; - u64 nr_namespaces; - struct perf_ns_link_info link_info[7]; - } event_id; -}; - -struct perf_cgroup_event { - char *path; - int path_size; - struct { - struct perf_event_header header; - u64 id; - char path[0]; - } event_id; -}; - -struct perf_mmap_event { - struct vm_area_struct *vma; - const char *file_name; - int file_size; - int maj; - int min; - u64 ino; - u64 ino_generation; - u32 prot; - u32 flags; - u8 build_id[20]; - u32 build_id_size; - struct { - struct perf_event_header header; - u32 pid; - u32 tid; - u64 start; - u64 len; - u64 pgoff; - } event_id; -}; - -struct perf_switch_event { - struct task_struct *task; - struct task_struct *next_prev; - struct { - struct perf_event_header header; - u32 next_prev_pid; - u32 next_prev_tid; - } event_id; -}; - -struct perf_ksymbol_event { - const char *name; - int name_len; - struct { - struct perf_event_header header; - u64 addr; - u32 len; - u16 ksym_type; - u16 flags; - } event_id; -}; - -struct perf_bpf_event { - struct bpf_prog *prog; - struct { - struct perf_event_header header; - u16 type; - u16 flags; - u32 id; - u8 tag[8]; - } event_id; -}; - -struct perf_text_poke_event { - const void *old_bytes; - const void *new_bytes; - size_t pad; - u16 old_len; - u16 new_len; - struct { - struct perf_event_header header; - u64 addr; - } event_id; -}; - -struct swevent_htable { - struct swevent_hlist *swevent_hlist; - struct mutex hlist_mutex; - int hlist_refcount; - int recursion[4]; -}; - -enum perf_probe_config { - PERF_PROBE_CONFIG_IS_RETPROBE = 1, - PERF_UPROBE_REF_CTR_OFFSET_BITS = 32, - PERF_UPROBE_REF_CTR_OFFSET_SHIFT = 32, -}; - -enum { - IF_ACT_NONE = 4294967295, - IF_ACT_FILTER = 0, - IF_ACT_START = 1, - IF_ACT_STOP = 2, - IF_SRC_FILE = 3, - IF_SRC_KERNEL = 4, - IF_SRC_FILEADDR = 5, - IF_SRC_KERNELADDR = 6, -}; - -enum { - IF_STATE_ACTION = 0, - IF_STATE_SOURCE = 1, - IF_STATE_END = 2, -}; - -struct perf_aux_event { - struct perf_event_header header; - u64 hw_id; -}; - -struct perf_aux_event___2 { - struct perf_event_header header; - u32 pid; - u32 tid; -}; - -struct perf_aux_event___3 { - struct perf_event_header header; - u64 offset; - u64 size; - u64 flags; -}; - -enum { - BPF_F_BPRM_SECUREEXEC = 1, -}; - -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; -}; - -struct watch_notification; - -typedef u64 (*btf_bpf_bprm_opts_set)(struct linux_binprm *, u64); - -typedef u64 (*btf_bpf_ima_inode_hash)(struct inode *, void *, u32); - -typedef u64 (*btf_bpf_ima_file_hash)(struct file *, void *, u32); - -struct callchain_cpus_entries { - struct callback_head callback_head; - struct perf_callchain_entry *cpu_entries[0]; -}; - -struct uprobe { - struct rb_node rb_node; - refcount_t ref; - struct rw_semaphore register_rwsem; - struct rw_semaphore consumer_rwsem; - struct list_head pending_list; - struct uprobe_consumer *consumers; - struct inode *inode; - loff_t offset; - loff_t ref_ctr_offset; - long unsigned int flags; - struct arch_uprobe arch; -}; - -struct xol_area { - wait_queue_head_t wq; - atomic_t slot_count; - long unsigned int *bitmap; - struct vm_special_mapping xol_mapping; - struct page *pages[2]; - long unsigned int vaddr; -}; - -struct compact_control; - -struct capture_control { - struct compact_control *cc; - struct page *page; -}; - -typedef int filler_t(void *, struct page *); - -struct page_vma_mapped_walk { - long unsigned int pfn; - long unsigned int nr_pages; - long unsigned int pgoff; - struct vm_area_struct *vma; - long unsigned int address; - pmd_t *pmd; - pte_t *pte; - spinlock_t *ptl; - unsigned int flags; -}; - -enum mmu_notifier_event { - MMU_NOTIFY_UNMAP = 0, - MMU_NOTIFY_CLEAR = 1, - MMU_NOTIFY_PROTECTION_VMA = 2, - MMU_NOTIFY_PROTECTION_PAGE = 3, - MMU_NOTIFY_SOFT_DIRTY = 4, - MMU_NOTIFY_RELEASE = 5, - MMU_NOTIFY_MIGRATE = 6, - MMU_NOTIFY_EXCLUSIVE = 7, -}; - -struct mmu_notifier_range { - struct 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 compact_control { - struct list_head freepages; - struct list_head migratepages; - unsigned int nr_freepages; - unsigned int nr_migratepages; - long unsigned int free_pfn; - long unsigned int migrate_pfn; - long unsigned int fast_start_pfn; - struct zone *zone; - long unsigned int total_migrate_scanned; - long unsigned int total_free_scanned; - short unsigned int fast_search_fail; - short int search_order; - const gfp_t gfp_mask; - int order; - int migratetype; - const unsigned int alloc_flags; - const int highest_zoneidx; - enum migrate_mode mode; - bool ignore_skip_hint; - bool no_set_skip_hint; - bool ignore_block_suitable; - bool direct_compaction; - bool proactive_compaction; - bool whole_zone; - bool contended; - bool rescan; - bool alloc_contig; -}; - -struct delayed_uprobe { - struct list_head list; - struct uprobe *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; - long unsigned int vaddr; -}; - -struct static_key_mod { - struct static_key_mod *next; - struct jump_entry *entries; - struct module *mod; -}; - -struct static_key_deferred { - struct static_key key; - long unsigned int timeout; - struct delayed_work work; -}; - -struct parallel_data; - -struct padata_priv { - struct list_head list; - struct parallel_data *pd; - int cb_cpu; - unsigned int seq_nr; - int info; - void (*parallel)(struct padata_priv *); - void (*serial)(struct padata_priv *); -}; - -struct padata_cpumask { - cpumask_var_t pcpu; - cpumask_var_t cbcpu; -}; - -struct padata_shell; - -struct padata_list; - -struct padata_serial_queue; - -struct parallel_data { - struct padata_shell *ps; - struct padata_list *reorder_list; - struct padata_serial_queue *squeue; - refcount_t refcnt; - unsigned int seq_nr; - unsigned int processed; - int cpu; - struct padata_cpumask cpumask; - struct work_struct reorder_work; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - spinlock_t lock; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - 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 padata_list { - struct list_head list; - spinlock_t lock; -}; - -struct padata_serial_queue { - struct padata_list serial; - struct work_struct work; - struct parallel_data *pd; -}; - -struct padata_instance; - -struct padata_shell { - struct padata_instance *pinst; - struct parallel_data *pd; - struct parallel_data *opd; - struct list_head list; -}; - -struct padata_instance { - struct hlist_node cpu_online_node; - struct hlist_node cpu_dead_node; - struct workqueue_struct *parallel_wq; - struct workqueue_struct *serial_wq; - struct list_head pslist; - struct padata_cpumask cpumask; - struct kobject kobj; - struct mutex lock; - u8 flags; -}; - -struct padata_mt_job { - void (*thread_fn)(long unsigned int, long unsigned int, void *); - void *fn_arg; - long unsigned int start; - long unsigned int size; - long unsigned int align; - long unsigned int min_chunk; - int max_threads; -}; - -struct padata_work { - struct work_struct pw_work; - struct list_head pw_list; - void *pw_data; -}; - -struct padata_mt_job_state { - spinlock_t lock; - struct completion completion; - struct padata_mt_job *job; - int nworks; - int nworks_fini; - long unsigned int chunk_size; -}; - -struct padata_sysfs_entry { - struct attribute attr; - ssize_t (*show)(struct padata_instance *, struct attribute *, char *); - ssize_t (*store)(struct padata_instance *, struct attribute *, const char *, size_t); -}; - -enum rseq_cpu_id_state { - RSEQ_CPU_ID_UNINITIALIZED = 4294967295, - RSEQ_CPU_ID_REGISTRATION_FAILED = 4294967294, -}; - -enum rseq_flags { - RSEQ_FLAG_UNREGISTER = 1, -}; - -enum rseq_cs_flags { - RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = 1, - RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = 2, - RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = 4, -}; - -struct rseq_cs { - __u32 version; - __u32 flags; - __u64 start_ip; - __u64 post_commit_offset; - __u64 abort_ip; -}; - -struct trace_event_raw_rseq_update { - struct trace_entry ent; - s32 cpu_id; - char __data[0]; -}; - -struct trace_event_raw_rseq_ip_fixup { - struct trace_entry ent; - long unsigned int regs_ip; - long unsigned int start_ip; - long unsigned int post_commit_offset; - long unsigned int abort_ip; - char __data[0]; -}; - -struct trace_event_data_offsets_rseq_update {}; - -struct trace_event_data_offsets_rseq_ip_fixup {}; - -typedef void (*btf_trace_rseq_update)(void *, struct task_struct *); - -typedef void (*btf_trace_rseq_ip_fixup)(void *, long unsigned int, long unsigned int, long unsigned int, long unsigned int); - -struct pkcs7_message; - -struct watch; - -struct watch_list { - struct callback_head rcu; - struct hlist_head watchers; - void (*release_watch)(struct watch *); - spinlock_t lock; -}; - -enum watch_notification_type { - WATCH_TYPE_META = 0, - WATCH_TYPE_KEY_NOTIFY = 1, - WATCH_TYPE__NR = 2, -}; - -enum watch_meta_notification_subtype { - WATCH_META_REMOVAL_NOTIFICATION = 0, - WATCH_META_LOSS_NOTIFICATION = 1, -}; - -struct watch_notification { - __u32 type: 24; - __u32 subtype: 8; - __u32 info; -}; - -struct watch_notification_type_filter { - __u32 type; - __u32 info_filter; - __u32 info_mask; - __u32 subtype_filter[8]; -}; - -struct watch_notification_filter { - __u32 nr_filters; - __u32 __reserved; - struct watch_notification_type_filter filters[0]; -}; - -struct watch_notification_removal { - struct watch_notification watch; - __u64 id; -}; - -struct watch_type_filter { - enum watch_notification_type type; - __u32 subtype_filter[1]; - __u32 info_filter; - __u32 info_mask; -}; - -struct watch_filter { - union { - struct callback_head rcu; - long unsigned int type_filter[1]; - }; - u32 nr_filters; - struct watch_type_filter filters[0]; -}; - -struct watch_queue { - struct callback_head rcu; - struct watch_filter *filter; - struct pipe_inode_info *pipe; - struct hlist_head watches; - struct page **notes; - long unsigned int *notes_bitmap; - struct kref usage; - spinlock_t lock; - unsigned int nr_notes; - unsigned int nr_pages; - bool defunct; -}; - -struct watch { - union { - struct callback_head rcu; - u32 info_id; - }; - struct watch_queue *queue; - struct hlist_node queue_node; - struct watch_list *watch_list; - struct hlist_node list_node; - const struct cred *cred; - void *private; - u64 id; - struct kref usage; -}; - -struct reciprocal_value { - u32 m; - u8 sh1; - u8 sh2; -}; - -struct kmem_cache_order_objects { - unsigned int x; -}; - -struct kmem_cache_cpu; - -struct kmem_cache_node; - -struct kmem_cache { - struct kmem_cache_cpu *cpu_slab; - slab_flags_t flags; - long unsigned int min_partial; - unsigned int size; - unsigned int object_size; - struct reciprocal_value reciprocal_size; - unsigned int offset; - unsigned int cpu_partial; - unsigned int cpu_partial_slabs; - struct kmem_cache_order_objects oo; - struct kmem_cache_order_objects max; - struct kmem_cache_order_objects min; - gfp_t allocflags; - int refcount; - void (*ctor)(void *); - unsigned int inuse; - unsigned int align; - unsigned int red_left_pad; - const char *name; - struct list_head list; - struct kobject kobj; - long unsigned int random; - unsigned int remote_node_defrag_ratio; - unsigned int *random_seq; - unsigned int useroffset; - unsigned int usersize; - struct kmem_cache_node *node[2]; -}; - -struct slab { - long unsigned int __page_flags; - union { - struct list_head slab_list; - struct callback_head callback_head; - struct { - struct slab *next; - int slabs; - }; - }; - struct kmem_cache *slab_cache; - void *freelist; - union { - long unsigned int counters; - struct { - unsigned int inuse: 16; - unsigned int objects: 15; - unsigned int frozen: 1; - }; - }; - unsigned int __unused; - atomic_t __page_refcount; - long unsigned int memcg_data; -}; - -struct kmem_cache_cpu { - void **freelist; - long unsigned int tid; - struct slab *slab; - struct slab *partial; - local_lock_t lock; -}; - -struct kmem_cache_node { - spinlock_t list_lock; - long unsigned int nr_partial; - struct list_head partial; - atomic_long_t nr_slabs; - atomic_long_t total_objects; - struct list_head full; -}; - -typedef void (*xa_update_node_t)(struct xa_node *); - -struct xa_state { - struct xarray *xa; - long unsigned int xa_index; - unsigned char xa_shift; - unsigned char xa_sibs; - unsigned char xa_offset; - unsigned char xa_pad; - struct xa_node *xa_node; - struct xa_node *xa_alloc; - xa_update_node_t xa_update; - struct list_lru *xa_lru; -}; - -typedef int __kernel_rwf_t; - -enum positive_aop_returns { - AOP_WRITEPAGE_ACTIVATE = 524288, - AOP_TRUNCATED_PAGE = 524289, -}; - -struct vm_event_state { - long unsigned int event[80]; -}; - -enum mapping_flags { - AS_EIO = 0, - AS_ENOSPC = 1, - AS_MM_ALL_LOCKS = 2, - AS_UNEVICTABLE = 3, - AS_EXITING = 4, - AS_NO_WRITEBACK_TAGS = 5, - AS_LARGE_FOLIO_SUPPORT = 6, -}; - -struct wait_page_key { - struct folio *folio; - int bit_nr; - int page_match; -}; - -struct pagevec { - unsigned char nr; - bool percpu_pvec_drained; - struct page *pages[15]; -}; - -struct folio_batch { - unsigned char nr; - bool percpu_pvec_drained; - struct folio *folios[15]; -}; - -struct trace_event_raw_mm_filemap_op_page_cache { - struct trace_entry ent; - long unsigned int pfn; - long unsigned int i_ino; - long unsigned int index; - dev_t s_dev; - unsigned char order; - char __data[0]; -}; - -struct trace_event_raw_filemap_set_wb_err { - struct trace_entry ent; - long unsigned int i_ino; - dev_t s_dev; - errseq_t errseq; - char __data[0]; -}; - -struct trace_event_raw_file_check_and_advance_wb_err { - struct trace_entry ent; - struct file *file; - long unsigned int i_ino; - dev_t s_dev; - errseq_t old; - errseq_t new; - char __data[0]; -}; - -struct trace_event_data_offsets_mm_filemap_op_page_cache {}; - -struct trace_event_data_offsets_filemap_set_wb_err {}; - -struct trace_event_data_offsets_file_check_and_advance_wb_err {}; - -typedef void (*btf_trace_mm_filemap_delete_from_page_cache)(void *, struct folio *); - -typedef void (*btf_trace_mm_filemap_add_to_page_cache)(void *, struct folio *); - -typedef void (*btf_trace_filemap_set_wb_err)(void *, struct address_space *, errseq_t); - -typedef void (*btf_trace_file_check_and_advance_wb_err)(void *, struct file *, errseq_t); - -enum behavior { - EXCLUSIVE = 0, - SHARED = 1, - DROP = 2, -}; - -enum oom_constraint { - CONSTRAINT_NONE = 0, - CONSTRAINT_CPUSET = 1, - CONSTRAINT_MEMORY_POLICY = 2, - CONSTRAINT_MEMCG = 3, -}; - -struct oom_control { - struct zonelist *zonelist; - nodemask_t *nodemask; - struct mem_cgroup *memcg; - const gfp_t gfp_mask; - const int order; - long unsigned int totalpages; - struct task_struct *chosen; - long int chosen_points; - enum oom_constraint constraint; -}; - -enum compact_priority { - COMPACT_PRIO_SYNC_FULL = 0, - MIN_COMPACT_PRIORITY = 0, - COMPACT_PRIO_SYNC_LIGHT = 1, - MIN_COMPACT_COSTLY_PRIORITY = 1, - DEF_COMPACT_PRIORITY = 1, - COMPACT_PRIO_ASYNC = 2, - INIT_COMPACT_PRIORITY = 2, -}; - -enum compact_result { - COMPACT_NOT_SUITABLE_ZONE = 0, - COMPACT_SKIPPED = 1, - COMPACT_DEFERRED = 2, - COMPACT_NO_SUITABLE_PAGE = 3, - COMPACT_CONTINUE = 4, - COMPACT_COMPLETE = 5, - COMPACT_PARTIAL_SKIPPED = 6, - COMPACT_CONTENDED = 7, - COMPACT_SUCCESS = 8, -}; - -struct trace_event_raw_oom_score_adj_update { - struct trace_entry ent; - pid_t pid; - char comm[16]; - short int oom_score_adj; - char __data[0]; -}; - -struct trace_event_raw_reclaim_retry_zone { - struct trace_entry ent; - int node; - int zone_idx; - int order; - long unsigned int reclaimable; - long unsigned int available; - long unsigned int min_wmark; - int no_progress_loops; - bool wmark_check; - char __data[0]; -}; - -struct trace_event_raw_mark_victim { - struct trace_entry ent; - int pid; - char __data[0]; -}; - -struct trace_event_raw_wake_reaper { - struct trace_entry ent; - int pid; - char __data[0]; -}; - -struct trace_event_raw_start_task_reaping { - struct trace_entry ent; - int pid; - char __data[0]; -}; - -struct trace_event_raw_finish_task_reaping { - struct trace_entry ent; - int pid; - char __data[0]; -}; - -struct trace_event_raw_skip_task_reaping { - struct trace_entry ent; - int pid; - char __data[0]; -}; - -struct trace_event_raw_compact_retry { - struct trace_entry ent; - int order; - int priority; - int result; - int retries; - int max_retries; - bool ret; - char __data[0]; -}; - -struct trace_event_data_offsets_oom_score_adj_update {}; - -struct trace_event_data_offsets_reclaim_retry_zone {}; - -struct trace_event_data_offsets_mark_victim {}; - -struct trace_event_data_offsets_wake_reaper {}; - -struct trace_event_data_offsets_start_task_reaping {}; - -struct trace_event_data_offsets_finish_task_reaping {}; - -struct trace_event_data_offsets_skip_task_reaping {}; - -struct trace_event_data_offsets_compact_retry {}; - -typedef void (*btf_trace_oom_score_adj_update)(void *, struct task_struct *); - -typedef void (*btf_trace_reclaim_retry_zone)(void *, struct zoneref *, int, long unsigned int, long unsigned int, long unsigned int, int, bool); - -typedef void (*btf_trace_mark_victim)(void *, int); - -typedef void (*btf_trace_wake_reaper)(void *, int); - -typedef void (*btf_trace_start_task_reaping)(void *, int); - -typedef void (*btf_trace_finish_task_reaping)(void *, int); - -typedef void (*btf_trace_skip_task_reaping)(void *, int); - -typedef void (*btf_trace_compact_retry)(void *, int, enum compact_priority, enum compact_result, int, int, bool); - -struct zap_details; - -enum { - XA_CHECK_SCHED = 4096, -}; - -enum wb_state { - WB_registered = 0, - WB_writeback_running = 1, - WB_has_dirty_io = 2, - WB_start_all = 3, -}; - -struct wb_lock_cookie { - bool locked; - long unsigned int flags; -}; - -typedef int (*writepage_t)(struct page *, struct writeback_control *, void *); - -enum page_memcg_data_flags { - MEMCG_DATA_OBJCGS = 1, - MEMCG_DATA_KMEM = 2, - __NR_MEMCG_DATA_FLAGS = 4, -}; - -struct dirty_throttle_control { - struct wb_domain *dom; - struct dirty_throttle_control *gdtc; - struct bdi_writeback *wb; - struct fprop_local_percpu *wb_completions; - long unsigned int avail; - long unsigned int dirty; - long unsigned int thresh; - long unsigned int bg_thresh; - long unsigned int wb_dirty; - long unsigned int wb_thresh; - long unsigned int wb_bg_thresh; - long unsigned int pos_ratio; -}; - -struct vmem_altmap { - long unsigned int base_pfn; - const long unsigned int end_pfn; - const long unsigned int reserve; - long unsigned int free; - long unsigned int align; - long unsigned int alloc; -}; - -enum memory_type { - MEMORY_DEVICE_PRIVATE = 1, - MEMORY_DEVICE_FS_DAX = 2, - MEMORY_DEVICE_GENERIC = 3, - MEMORY_DEVICE_PCI_P2PDMA = 4, -}; - -struct dev_pagemap_ops; - -struct dev_pagemap { - struct vmem_altmap altmap; - struct percpu_ref ref; - struct completion done; - enum memory_type type; - unsigned int flags; - long unsigned int vmemmap_shift; - const struct dev_pagemap_ops *ops; - void *owner; - int nr_range; - union { - struct range range; - struct range ranges[0]; - }; -}; - -typedef void compound_page_dtor(struct page *); - -struct dev_pagemap_ops { - void (*page_free)(struct page *); - vm_fault_t (*migrate_to_ram)(struct vm_fault *); -}; - -struct trace_event_raw_mm_lru_insertion { - struct trace_entry ent; - struct folio *folio; - long unsigned int pfn; - enum lru_list lru; - long unsigned int flags; - char __data[0]; -}; - -struct trace_event_raw_mm_lru_activate { - struct trace_entry ent; - struct folio *folio; - long unsigned int pfn; - char __data[0]; -}; - -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 folio *); - -typedef void (*btf_trace_mm_lru_activate)(void *, struct folio *); - -struct lru_rotate { - local_lock_t lock; - struct pagevec pvec; -}; - -struct lru_pvecs { - local_lock_t lock; - struct pagevec lru_add; - struct pagevec lru_deactivate_file; - struct pagevec lru_deactivate; - struct pagevec lru_lazyfree; - struct pagevec activate_page; -}; - -enum lruvec_flags { - LRUVEC_CONGESTED = 0, -}; - -enum pgdat_flags { - PGDAT_DIRTY = 0, - PGDAT_WRITEBACK = 1, - 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; - unsigned int nr_congested; - unsigned int nr_writeback; - unsigned int nr_immediate; - unsigned int nr_pageout; - unsigned int nr_activate[2]; - unsigned int nr_ref_keep; - unsigned int nr_unmap_fail; - unsigned int nr_lazyfree_fail; -}; - -struct mem_cgroup_reclaim_cookie { - pg_data_t *pgdat; - unsigned int generation; -}; - -enum ttu_flags { - TTU_SPLIT_HUGE_PMD = 4, - TTU_IGNORE_MLOCK = 8, - TTU_SYNC = 16, - TTU_IGNORE_HWPOISON = 32, - TTU_BATCH_FLUSH = 64, - TTU_RMAP_LOCKED = 128, -}; - -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 { - struct trace_entry ent; - int nid; - char __data[0]; -}; - -struct trace_event_raw_mm_vmscan_kswapd_wake { - struct trace_entry ent; - int nid; - int zid; - int order; - char __data[0]; -}; - -struct trace_event_raw_mm_vmscan_wakeup_kswapd { - struct trace_entry ent; - int nid; - int zid; - int order; - gfp_t gfp_flags; - char __data[0]; -}; - -struct trace_event_raw_mm_vmscan_direct_reclaim_begin_template { - struct trace_entry ent; - int order; - gfp_t gfp_flags; - char __data[0]; -}; - -struct trace_event_raw_mm_vmscan_direct_reclaim_end_template { - struct trace_entry ent; - long unsigned int nr_reclaimed; - char __data[0]; -}; - -struct trace_event_raw_mm_shrink_slab_start { - struct trace_entry ent; - struct shrinker *shr; - void *shrink; - int nid; - long int nr_objects_to_shrink; - gfp_t gfp_flags; - long unsigned int cache_items; - long long unsigned int delta; - long unsigned int total_scan; - int priority; - char __data[0]; -}; - -struct trace_event_raw_mm_shrink_slab_end { - struct trace_entry ent; - struct shrinker *shr; - int nid; - void *shrink; - long int unused_scan; - long int new_scan; - int retval; - long int total_scan; - char __data[0]; -}; - -struct trace_event_raw_mm_vmscan_lru_isolate { - struct trace_entry ent; - int highest_zoneidx; - int order; - long unsigned int nr_requested; - long unsigned int nr_scanned; - long unsigned int nr_skipped; - long unsigned int nr_taken; - unsigned int isolate_mode; - int lru; - char __data[0]; -}; - -struct trace_event_raw_mm_vmscan_write_folio { - struct trace_entry ent; - long unsigned int pfn; - int reclaim_flags; - char __data[0]; -}; - -struct trace_event_raw_mm_vmscan_lru_shrink_inactive { - struct trace_entry ent; - int nid; - long unsigned int nr_scanned; - long unsigned int nr_reclaimed; - long unsigned int nr_dirty; - long unsigned int nr_writeback; - long unsigned int nr_congested; - long unsigned int nr_immediate; - unsigned int nr_activate0; - unsigned int nr_activate1; - long unsigned int nr_ref_keep; - long unsigned int nr_unmap_fail; - int priority; - int reclaim_flags; - char __data[0]; -}; - -struct trace_event_raw_mm_vmscan_lru_shrink_active { - struct trace_entry ent; - int nid; - long unsigned int nr_taken; - long unsigned int nr_active; - long unsigned int nr_deactivated; - long unsigned int nr_referenced; - int priority; - int reclaim_flags; - char __data[0]; -}; - -struct trace_event_raw_mm_vmscan_node_reclaim_begin { - struct trace_entry ent; - int nid; - int order; - gfp_t gfp_flags; - char __data[0]; -}; - -struct trace_event_raw_mm_vmscan_throttled { - struct trace_entry ent; - int nid; - int usec_timeout; - int usec_delayed; - int reason; - char __data[0]; -}; - -struct trace_event_data_offsets_mm_vmscan_kswapd_sleep {}; - -struct trace_event_data_offsets_mm_vmscan_kswapd_wake {}; - -struct trace_event_data_offsets_mm_vmscan_wakeup_kswapd {}; - -struct trace_event_data_offsets_mm_vmscan_direct_reclaim_begin_template {}; - -struct trace_event_data_offsets_mm_vmscan_direct_reclaim_end_template {}; - -struct trace_event_data_offsets_mm_shrink_slab_start {}; - -struct trace_event_data_offsets_mm_shrink_slab_end {}; - -struct trace_event_data_offsets_mm_vmscan_lru_isolate {}; - -struct trace_event_data_offsets_mm_vmscan_write_folio {}; - -struct trace_event_data_offsets_mm_vmscan_lru_shrink_inactive {}; - -struct trace_event_data_offsets_mm_vmscan_lru_shrink_active {}; - -struct trace_event_data_offsets_mm_vmscan_node_reclaim_begin {}; - -struct trace_event_data_offsets_mm_vmscan_throttled {}; - -typedef void (*btf_trace_mm_vmscan_kswapd_sleep)(void *, int); - -typedef void (*btf_trace_mm_vmscan_kswapd_wake)(void *, int, int, int); - -typedef void (*btf_trace_mm_vmscan_wakeup_kswapd)(void *, int, int, int, gfp_t); - -typedef void (*btf_trace_mm_vmscan_direct_reclaim_begin)(void *, int, gfp_t); - -typedef void (*btf_trace_mm_vmscan_memcg_reclaim_begin)(void *, int, gfp_t); - -typedef void (*btf_trace_mm_vmscan_memcg_softlimit_reclaim_begin)(void *, int, gfp_t); - -typedef void (*btf_trace_mm_vmscan_direct_reclaim_end)(void *, long unsigned int); - -typedef void (*btf_trace_mm_vmscan_memcg_reclaim_end)(void *, long unsigned int); - -typedef void (*btf_trace_mm_vmscan_memcg_softlimit_reclaim_end)(void *, long unsigned int); - -typedef void (*btf_trace_mm_shrink_slab_start)(void *, struct shrinker *, struct shrink_control *, long int, long unsigned int, long long unsigned int, long unsigned int, int); - -typedef void (*btf_trace_mm_shrink_slab_end)(void *, struct shrinker *, int, int, long int, long int, long int); - -typedef void (*btf_trace_mm_vmscan_lru_isolate)(void *, int, int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, isolate_mode_t, int); - -typedef void (*btf_trace_mm_vmscan_write_folio)(void *, struct folio *); - -typedef void (*btf_trace_mm_vmscan_lru_shrink_inactive)(void *, int, long unsigned int, long unsigned int, struct reclaim_stat *, int, int); - -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_node_reclaim_begin)(void *, int, int, gfp_t); - -typedef void (*btf_trace_mm_vmscan_node_reclaim_end)(void *, long unsigned int); - -typedef void (*btf_trace_mm_vmscan_throttled)(void *, int, int, int, int); - -struct scan_control { - long unsigned int nr_to_reclaim; - nodemask_t *nodemask; - struct mem_cgroup *target_mem_cgroup; - long unsigned int anon_cost; - long unsigned int file_cost; - unsigned int may_deactivate: 2; - unsigned int force_deactivate: 1; - unsigned int skipped_deactivate: 1; - unsigned int may_writepage: 1; - unsigned int may_unmap: 1; - unsigned int may_swap: 1; - unsigned int memcg_low_reclaim: 1; - unsigned int memcg_low_skipped: 1; - unsigned int hibernation_mode: 1; - unsigned int compaction_ready: 1; - unsigned int cache_trim_mode: 1; - unsigned int file_is_tiny: 1; - unsigned int no_demotion: 1; - s8 order; - s8 priority; - s8 reclaim_idx; - gfp_t gfp_mask; - long unsigned int nr_scanned; - long unsigned int nr_reclaimed; - struct { - unsigned int dirty; - unsigned int unqueued_dirty; - unsigned int congested; - unsigned int writeback; - unsigned int immediate; - unsigned int file_taken; - unsigned int taken; - } nr; - struct reclaim_state reclaim_state; -}; - -typedef enum { - PAGE_KEEP = 0, - PAGE_ACTIVATE = 1, - PAGE_SUCCESS = 2, - PAGE_CLEAN = 3, -} pageout_t; - -enum page_references { - PAGEREF_RECLAIM = 0, - PAGEREF_RECLAIM_CLEAN = 1, - PAGEREF_KEEP = 2, - PAGEREF_ACTIVATE = 3, -}; - -enum scan_balance { - SCAN_EQUAL = 0, - SCAN_FRACT = 1, - SCAN_ANON = 2, - SCAN_FILE = 3, -}; - -struct xattr; - -typedef int (*initxattrs)(struct inode *, const struct xattr *, void *); - -struct xattr { - const char *name; - void *value; - size_t value_len; -}; - -struct constant_table { - const char *name; - int value; -}; - -enum { - MPOL_DEFAULT = 0, - MPOL_PREFERRED = 1, - MPOL_BIND = 2, - MPOL_INTERLEAVE = 3, - MPOL_LOCAL = 4, - MPOL_PREFERRED_MANY = 5, - MPOL_MAX = 6, -}; - -struct shared_policy { - struct rb_root root; - rwlock_t lock; -}; - -struct simple_xattrs { - struct list_head head; - spinlock_t lock; -}; - -struct simple_xattr { - struct list_head list; - char *name; - size_t size; - char value[0]; -}; - -struct shmem_inode_info { - spinlock_t lock; - unsigned int seals; - 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; - struct simple_xattrs xattrs; - atomic_t stop_eviction; - struct timespec64 i_crtime; - struct inode vfs_inode; -}; - -struct shmem_sb_info { - long unsigned int max_blocks; - struct percpu_counter used_blocks; - long unsigned int max_inodes; - long unsigned int free_inodes; - raw_spinlock_t stat_lock; - umode_t mode; - unsigned char huge; - kuid_t uid; - kgid_t gid; - bool full_inums; - ino_t next_ino; - ino_t *ino_batch; - struct mempolicy *mpol; - spinlock_t shrinklist_lock; - struct list_head shrinklist; - long unsigned int shrinklist_len; -}; - -enum sgp_type { - SGP_READ = 0, - SGP_NOALLOC = 1, - SGP_CACHE = 2, - SGP_WRITE = 3, - SGP_FALLOC = 4, -}; - -enum fid_type { - FILEID_ROOT = 0, - FILEID_INO32_GEN = 1, - FILEID_INO32_GEN_PARENT = 2, - FILEID_BTRFS_WITHOUT_PARENT = 77, - FILEID_BTRFS_WITH_PARENT = 78, - FILEID_BTRFS_WITH_PARENT_ROOT = 79, - FILEID_UDF_WITHOUT_PARENT = 81, - FILEID_UDF_WITH_PARENT = 82, - FILEID_NILFS_WITHOUT_PARENT = 97, - FILEID_NILFS_WITH_PARENT = 98, - FILEID_FAT_WITHOUT_PARENT = 113, - FILEID_FAT_WITH_PARENT = 114, - FILEID_LUSTRE = 151, - FILEID_KERNFS = 254, - FILEID_INVALID = 255, -}; - -struct fid { - union { - struct { - u32 ino; - u32 gen; - u32 parent_ino; - u32 parent_gen; - } i32; - struct { - u32 block; - u16 partref; - u16 parent_partref; - u32 generation; - u32 parent_block; - u32 parent_generation; - } udf; - __u32 raw[0]; - }; -}; - -struct shmem_falloc { - wait_queue_head_t *waitq; - long unsigned int start; - long unsigned int next; - long unsigned int nr_falloced; - long unsigned int nr_unswapped; -}; - -struct shmem_options { - long long unsigned int blocks; - long long unsigned int inodes; - struct mempolicy *mpol; - kuid_t uid; - kgid_t gid; - umode_t mode; - bool full_inums; - int huge; - int seen; -}; - -enum shmem_param { - Opt_gid___2 = 0, - Opt_huge = 1, - Opt_mode = 2, - Opt_mpol = 3, - Opt_nr_blocks = 4, - Opt_nr_inodes = 5, - Opt_size = 6, - Opt_uid___2 = 7, - Opt_inode32 = 8, - Opt_inode64 = 9, -}; - -enum writeback_stat_item { - NR_DIRTY_THRESHOLD = 0, - NR_DIRTY_BG_THRESHOLD = 1, - NR_VM_WRITEBACK_STAT_ITEMS = 2, -}; - -struct contig_page_info { - long unsigned int free_pages; - long unsigned int free_blocks_total; - long unsigned int free_blocks_suitable; -}; - -typedef s8 pcp_op_T_____7; - -enum mminit_level { - MMINIT_WARNING = 0, - MMINIT_VERIFY = 1, - MMINIT_TRACE = 2, -}; - -struct pcpu_group_info { - int nr_units; - long unsigned int base_offset; - unsigned int *cpu_map; -}; - -struct pcpu_alloc_info { - size_t static_size; - size_t reserved_size; - size_t dyn_size; - size_t unit_size; - size_t atom_size; - size_t alloc_size; - size_t __ai_size; - int nr_groups; - struct pcpu_group_info groups[0]; -}; - -typedef int pcpu_fc_cpu_to_node_fn_t(int); - -typedef int pcpu_fc_cpu_distance_fn_t(unsigned int, unsigned int); - -struct trace_event_raw_percpu_alloc_percpu { - struct trace_entry ent; - bool reserved; - bool is_atomic; - size_t size; - size_t align; - void *base_addr; - int off; - void *ptr; - char __data[0]; -}; - -struct trace_event_raw_percpu_free_percpu { - struct trace_entry ent; - void *base_addr; - int off; - void *ptr; - char __data[0]; -}; - -struct trace_event_raw_percpu_alloc_percpu_fail { - struct trace_entry ent; - bool reserved; - bool is_atomic; - size_t size; - size_t align; - char __data[0]; -}; - -struct trace_event_raw_percpu_create_chunk { - struct trace_entry ent; - void *base_addr; - char __data[0]; -}; - -struct trace_event_raw_percpu_destroy_chunk { - struct trace_entry ent; - void *base_addr; - char __data[0]; -}; - -struct trace_event_data_offsets_percpu_alloc_percpu {}; - -struct trace_event_data_offsets_percpu_free_percpu {}; - -struct trace_event_data_offsets_percpu_alloc_percpu_fail {}; - -struct trace_event_data_offsets_percpu_create_chunk {}; - -struct trace_event_data_offsets_percpu_destroy_chunk {}; - -typedef void (*btf_trace_percpu_alloc_percpu)(void *, bool, bool, size_t, size_t, void *, int, void *); - -typedef void (*btf_trace_percpu_free_percpu)(void *, void *, int, void *); - -typedef void (*btf_trace_percpu_alloc_percpu_fail)(void *, bool, bool, size_t, size_t); - -typedef void (*btf_trace_percpu_create_chunk)(void *, void *); - -typedef void (*btf_trace_percpu_destroy_chunk)(void *, void *); - -struct pcpu_block_md { - int scan_hint; - int scan_hint_start; - int contig_hint; - int contig_hint_start; - int left_free; - int right_free; - int first_free; - int nr_bits; -}; - -struct pcpu_chunk { - struct list_head list; - int free_bytes; - struct pcpu_block_md chunk_md; - void *base_addr; - long unsigned int *alloc_map; - long unsigned int *bound_map; - struct pcpu_block_md *md_blocks; - void *data; - bool immutable; - bool isolated; - int start_offset; - int end_offset; - struct obj_cgroup **obj_cgroups; - int nr_pages; - int nr_populated; - int nr_empty_pop_pages; - long unsigned int populated[0]; -}; - -struct trace_event_raw_kmem_alloc { - struct trace_entry ent; - long unsigned int call_site; - const void *ptr; - size_t bytes_req; - size_t bytes_alloc; - gfp_t gfp_flags; - char __data[0]; -}; - -struct trace_event_raw_kmem_alloc_node { - struct trace_entry ent; - long unsigned int call_site; - const void *ptr; - size_t bytes_req; - size_t bytes_alloc; - gfp_t gfp_flags; - int node; - char __data[0]; -}; - -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; - unsigned int order; - char __data[0]; -}; - -struct trace_event_raw_mm_page_free_batched { - struct trace_entry ent; - long unsigned int pfn; - char __data[0]; -}; - -struct trace_event_raw_mm_page_alloc { - struct trace_entry ent; - long unsigned int pfn; - unsigned int order; - gfp_t gfp_flags; - int migratetype; - char __data[0]; -}; - -struct trace_event_raw_mm_page { - struct trace_entry ent; - long unsigned int pfn; - unsigned int order; - int migratetype; - char __data[0]; -}; - -struct trace_event_raw_mm_page_pcpu_drain { - struct trace_entry ent; - long unsigned int pfn; - unsigned int order; - int migratetype; - char __data[0]; -}; - -struct trace_event_raw_mm_page_alloc_extfrag { - struct trace_entry ent; - long unsigned int pfn; - int alloc_order; - int fallback_order; - int alloc_migratetype; - int fallback_migratetype; - int change_ownership; - char __data[0]; -}; - -struct trace_event_raw_rss_stat { - struct trace_entry ent; - unsigned int mm_id; - unsigned int curr; - int member; - long int size; - char __data[0]; -}; - -struct trace_event_data_offsets_kmem_alloc {}; - -struct trace_event_data_offsets_kmem_alloc_node {}; - -struct trace_event_data_offsets_kfree {}; - -struct trace_event_data_offsets_kmem_cache_free { - u32 name; -}; - -struct trace_event_data_offsets_mm_page_free {}; - -struct trace_event_data_offsets_mm_page_free_batched {}; - -struct trace_event_data_offsets_mm_page_alloc {}; - -struct trace_event_data_offsets_mm_page {}; - -struct trace_event_data_offsets_mm_page_pcpu_drain {}; - -struct trace_event_data_offsets_mm_page_alloc_extfrag {}; - -struct trace_event_data_offsets_rss_stat {}; - -typedef void (*btf_trace_kmalloc)(void *, long unsigned int, const void *, size_t, size_t, gfp_t); - -typedef void (*btf_trace_kmem_cache_alloc)(void *, long unsigned int, const void *, size_t, size_t, gfp_t); - -typedef void (*btf_trace_kmalloc_node)(void *, long unsigned int, const void *, size_t, size_t, gfp_t, int); - -typedef void (*btf_trace_kmem_cache_alloc_node)(void *, long unsigned int, const void *, size_t, size_t, gfp_t, int); - -typedef void (*btf_trace_kfree)(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); - -typedef void (*btf_trace_mm_page_free_batched)(void *, struct page *); - -typedef void (*btf_trace_mm_page_alloc)(void *, struct page *, unsigned int, gfp_t, int); - -typedef void (*btf_trace_mm_page_alloc_zone_locked)(void *, struct page *, unsigned int, int); - -typedef void (*btf_trace_mm_page_pcpu_drain)(void *, struct page *, unsigned int, int); - -typedef void (*btf_trace_mm_page_alloc_extfrag)(void *, struct page *, int, int, int, int); - -typedef void (*btf_trace_rss_stat)(void *, struct mm_struct *, int, 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; - long unsigned int active_slabs; - long unsigned int num_slabs; - long unsigned int shared_avail; - unsigned int limit; - unsigned int batchcount; - unsigned int shared; - unsigned int objects_per_slab; - unsigned int cache_order; -}; - -struct kmem_obj_info { - void *kp_ptr; - struct slab *kp_slab; - 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, - PB_migrate_skip = 3, - NR_PAGEBLOCK_BITS = 4, -}; - -struct node { - struct device dev; - struct list_head access_list; - struct work_struct node_work; -}; - -struct alloc_context { - struct zonelist *zonelist; - nodemask_t *nodemask; - struct zoneref *preferred_zoneref; - int migratetype; - enum zone_type highest_zoneidx; - bool spread_dirty_pages; -}; - -struct trace_event_raw_mm_compaction_isolate_template { - struct trace_entry ent; - long unsigned int start_pfn; - long unsigned int end_pfn; - long unsigned int nr_scanned; - long unsigned int nr_taken; - char __data[0]; -}; - -struct trace_event_raw_mm_compaction_migratepages { - struct trace_entry ent; - long unsigned int nr_migrated; - long unsigned int nr_failed; - char __data[0]; -}; - -struct trace_event_raw_mm_compaction_begin { - struct trace_entry ent; - long unsigned int zone_start; - long unsigned int migrate_pfn; - long unsigned int free_pfn; - long unsigned int zone_end; - bool sync; - char __data[0]; -}; - -struct trace_event_raw_mm_compaction_end { - struct trace_entry ent; - long unsigned int zone_start; - long unsigned int migrate_pfn; - long unsigned int free_pfn; - long unsigned int zone_end; - bool sync; - int status; - char __data[0]; -}; - -struct trace_event_raw_mm_compaction_try_to_compact_pages { - struct trace_entry ent; - int order; - gfp_t gfp_mask; - int prio; - char __data[0]; -}; - -struct trace_event_raw_mm_compaction_suitable_template { - struct trace_entry ent; - int nid; - enum zone_type idx; - int order; - int ret; - char __data[0]; -}; - -struct trace_event_raw_mm_compaction_defer_template { - struct trace_entry ent; - int nid; - enum zone_type idx; - int order; - unsigned int considered; - unsigned int defer_shift; - int order_failed; - char __data[0]; -}; - -struct trace_event_raw_mm_compaction_kcompactd_sleep { - struct trace_entry ent; - int nid; - char __data[0]; -}; - -struct trace_event_raw_kcompactd_wake_template { - struct trace_entry ent; - int nid; - int order; - enum zone_type highest_zoneidx; - char __data[0]; -}; - -struct trace_event_data_offsets_mm_compaction_isolate_template {}; - -struct trace_event_data_offsets_mm_compaction_migratepages {}; - -struct trace_event_data_offsets_mm_compaction_begin {}; - -struct trace_event_data_offsets_mm_compaction_end {}; - -struct trace_event_data_offsets_mm_compaction_try_to_compact_pages {}; - -struct trace_event_data_offsets_mm_compaction_suitable_template {}; - -struct trace_event_data_offsets_mm_compaction_defer_template {}; - -struct trace_event_data_offsets_mm_compaction_kcompactd_sleep {}; - -struct trace_event_data_offsets_kcompactd_wake_template {}; - -typedef void (*btf_trace_mm_compaction_isolate_migratepages)(void *, long unsigned int, long unsigned int, long unsigned int, long unsigned int); - -typedef void (*btf_trace_mm_compaction_isolate_freepages)(void *, long unsigned int, long unsigned int, long unsigned int, long unsigned int); - -typedef void (*btf_trace_mm_compaction_migratepages)(void *, struct compact_control *, unsigned int); - -typedef void (*btf_trace_mm_compaction_begin)(void *, struct compact_control *, long unsigned int, long unsigned int, bool); - -typedef void (*btf_trace_mm_compaction_end)(void *, struct compact_control *, long unsigned int, long unsigned int, bool, int); - -typedef void (*btf_trace_mm_compaction_try_to_compact_pages)(void *, int, gfp_t, int); - -typedef void (*btf_trace_mm_compaction_finished)(void *, struct zone *, int, int); - -typedef void (*btf_trace_mm_compaction_suitable)(void *, struct zone *, int, int); - -typedef void (*btf_trace_mm_compaction_deferred)(void *, struct zone *, int); - -typedef void (*btf_trace_mm_compaction_defer_compaction)(void *, struct zone *, int); - -typedef void (*btf_trace_mm_compaction_defer_reset)(void *, struct zone *, int); - -typedef void (*btf_trace_mm_compaction_kcompactd_sleep)(void *, int); - -typedef void (*btf_trace_mm_compaction_wakeup_kcompactd)(void *, int, int, enum zone_type); - -typedef void (*btf_trace_mm_compaction_kcompactd_wake)(void *, int, int, enum zone_type); - -typedef enum { - ISOLATE_ABORT = 0, - ISOLATE_NONE = 1, - ISOLATE_SUCCESS = 2, -} isolate_migrate_t; - -struct anon_vma_chain { - struct vm_area_struct *vma; - struct anon_vma *anon_vma; - struct list_head same_vma; - struct rb_node rb; - long unsigned int rb_subtree_last; -}; - -struct rb_augment_callbacks { - void (*propagate)(struct rb_node *, struct rb_node *); - void (*copy)(struct rb_node *, struct rb_node *); - void (*rotate)(struct rb_node *, struct rb_node *); -}; - -enum lru_status { - LRU_REMOVED = 0, - LRU_REMOVED_RETRY = 1, - LRU_ROTATE = 2, - LRU_SKIP = 3, - LRU_RETRY = 4, -}; - -struct list_lru_memcg { - struct callback_head rcu; - struct list_lru_one node[0]; -}; - -typedef enum lru_status (*list_lru_walk_cb)(struct list_head *, struct list_lru_one *, spinlock_t *, void *); - -struct list_lru_memcg_table { - struct list_lru_memcg *mlru; - struct mem_cgroup *memcg; -}; - -typedef struct { - long unsigned int pd; -} hugepd_t; - -struct follow_page_context { - struct dev_pagemap *pgmap; - unsigned int page_mask; -}; - -struct trace_event_raw_mmap_lock { - struct trace_entry ent; - struct mm_struct *mm; - u32 __data_loc_memcg_path; - bool write; - char __data[0]; -}; - -struct trace_event_raw_mmap_lock_acquire_returned { - struct trace_entry ent; - struct mm_struct *mm; - u32 __data_loc_memcg_path; - bool write; - bool success; - char __data[0]; -}; - -struct trace_event_data_offsets_mmap_lock { - u32 memcg_path; -}; - -struct trace_event_data_offsets_mmap_lock_acquire_returned { - u32 memcg_path; -}; - -typedef void (*btf_trace_mmap_lock_start_locking)(void *, struct mm_struct *, const char *, bool); - -typedef void (*btf_trace_mmap_lock_released)(void *, struct mm_struct *, const char *, bool); - -typedef void (*btf_trace_mmap_lock_acquire_returned)(void *, struct mm_struct *, const char *, bool, bool); - -struct memcg_path { - local_lock_t lock; - char *buf; - local_t buf_idx; -}; - -typedef struct { - u64 val; -} pfn_t; - -typedef unsigned int pgtbl_mod_mask; - -typedef int (*pte_fn_t)(pte_t *, long unsigned int, void *); - -enum { - SWP_USED = 1, - SWP_WRITEOK = 2, - SWP_DISCARDABLE = 4, - SWP_DISCARDING = 8, - SWP_SOLIDSTATE = 16, - SWP_CONTINUED = 32, - SWP_BLKDEV = 64, - SWP_ACTIVATED = 128, - SWP_FS_OPS = 256, - SWP_AREA_DISCARD = 512, - SWP_PAGE_DISCARD = 1024, - SWP_STABLE_WRITES = 2048, - SWP_SYNCHRONOUS_IO = 4096, - SWP_SCANNING = 16384, -}; - -struct zap_details { - struct folio *single_folio; - bool even_cows; -}; - -struct copy_subpage_arg { - struct page *dst; - struct page *src; - struct vm_area_struct *vma; -}; - -struct mlock_pvec { - local_lock_t lock; - struct pagevec vec; -}; - -enum { - HUGETLB_SHMFS_INODE = 1, - HUGETLB_ANONHUGE_INODE = 2, -}; - -struct trace_event_raw_vm_unmapped_area { - struct trace_entry ent; - long unsigned int addr; - long unsigned int total_vm; - long unsigned int flags; - long unsigned int length; - long unsigned int low_limit; - long unsigned int high_limit; - long unsigned int align_mask; - long unsigned int align_offset; - char __data[0]; -}; - -struct trace_event_data_offsets_vm_unmapped_area {}; - -typedef void (*btf_trace_vm_unmapped_area)(void *, long unsigned int, struct vm_unmapped_area_info *); - -struct mmap_arg_struct { - long unsigned int addr; - long unsigned int len; - long unsigned int prot; - long unsigned int flags; - long unsigned int fd; - long unsigned int offset; -}; - -enum pgt_entry { - NORMAL_PMD = 0, - HPAGE_PMD = 1, - NORMAL_PUD = 2, - HPAGE_PUD = 3, -}; - -enum tlb_flush_reason { - TLB_FLUSH_ON_TASK_SWITCH = 0, - TLB_REMOTE_SHOOTDOWN = 1, - TLB_LOCAL_SHOOTDOWN = 2, - TLB_LOCAL_MM_SHOOTDOWN = 3, - TLB_REMOTE_SEND_IPI = 4, - NR_TLB_FLUSH_REASONS = 5, -}; - -struct rmap_walk_control { - void *arg; - bool (*rmap_one)(struct folio *, struct vm_area_struct *, long unsigned int, void *); - int (*done)(struct folio *); - struct anon_vma * (*anon_lock)(struct folio *); - bool (*invalid_vma)(struct vm_area_struct *, void *); -}; - -struct trace_event_raw_tlb_flush { - struct trace_entry ent; - int reason; - long unsigned int pages; - char __data[0]; -}; - -struct trace_event_data_offsets_tlb_flush {}; - -typedef void (*btf_trace_tlb_flush)(void *, int, long unsigned int); - -struct trace_event_raw_mm_migrate_pages { - struct trace_entry ent; - long unsigned int succeeded; - long unsigned int failed; - long unsigned int thp_succeeded; - long unsigned int thp_failed; - long unsigned int thp_split; - enum migrate_mode mode; - int reason; - char __data[0]; -}; - -struct trace_event_raw_mm_migrate_pages_start { - struct trace_entry ent; - enum migrate_mode mode; - int reason; - char __data[0]; -}; - -struct trace_event_raw_migration_pte { - struct trace_entry ent; - long unsigned int addr; - long unsigned int pte; - int order; - char __data[0]; -}; - -struct trace_event_data_offsets_mm_migrate_pages {}; - -struct trace_event_data_offsets_mm_migrate_pages_start {}; - -struct trace_event_data_offsets_migration_pte {}; - -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); - -typedef void (*btf_trace_set_migration_pte)(void *, long unsigned int, long unsigned int, int); - -typedef void (*btf_trace_remove_migration_pte)(void *, long unsigned int, long unsigned int, int); - -struct folio_referenced_arg { - int mapcount; - int referenced; - long unsigned int vm_flags; - struct mem_cgroup *memcg; -}; - -struct vmap_area { - long unsigned int va_start; - long unsigned int va_end; - struct rb_node rb_node; - struct list_head list; - union { - long unsigned int subtree_max_size; - struct vm_struct *vm; - }; -}; - -typedef unsigned int kasan_vmalloc_flags_t; - -struct vfree_deferred { - struct llist_head list; - struct work_struct wq; -}; - -enum fit_type { - NOTHING_FIT = 0, - FL_FIT_TYPE = 1, - LE_FIT_TYPE = 2, - RE_FIT_TYPE = 3, - NE_FIT_TYPE = 4, -}; - -struct vmap_block_queue { - spinlock_t lock; - struct list_head free; -}; - -struct vmap_block { - spinlock_t lock; - struct vmap_area *va; - long unsigned int free; - long unsigned int dirty; - long unsigned int dirty_min; - long unsigned int dirty_max; - struct list_head free_list; - struct callback_head callback_head; - struct list_head purge; -}; - -struct va_format { - const char *fmt; - va_list *va; -}; - -struct page_frag_cache { - void *va; - __u16 offset; - __u16 size; - unsigned int pagecnt_bias; - bool pfmemalloc; -}; - -enum meminit_context { - MEMINIT_EARLY = 0, - MEMINIT_HOTPLUG = 1, -}; - -typedef int fpi_t; - -struct pagesets { - local_lock_t lock; -}; - -struct pcpu_drain { - struct zone *zone; - struct work_struct work; -}; - -struct mminit_pfnnid_cache { - long unsigned int last_start; - long unsigned int last_end; - int last_nid; -}; - -typedef u8 uint8_t; - -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 zone *zone; - 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; -}; - -struct madvise_walk_private { - struct mmu_gather *tlb; - bool pageout; -}; - -enum { - IOPRIO_CLASS_NONE = 0, - IOPRIO_CLASS_RT = 1, - IOPRIO_CLASS_BE = 2, - IOPRIO_CLASS_IDLE = 3, -}; - -enum { - BIO_NO_PAGE_REF = 0, - BIO_CLONED = 1, - BIO_BOUNCED = 2, - BIO_WORKINGSET = 3, - BIO_QUIET = 4, - BIO_CHAIN = 5, - BIO_REFFED = 6, - BIO_THROTTLED = 7, - BIO_TRACE_COMPLETION = 8, - BIO_CGROUP_ACCT = 9, - 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 { - short unsigned int win; - short unsigned int offset; - short unsigned int nr_pte; - pte_t *ptes; -}; - -struct swap_slots_cache { - bool lock_initialized; - struct mutex alloc_lock; - swp_entry_t *slots; - int nr; - int cur; - spinlock_t free_lock; - swp_entry_t *slots_ret; - int n_ret; -}; - -enum { - PERCPU_REF_INIT_ATOMIC = 1, - PERCPU_REF_INIT_DEAD = 2, - PERCPU_REF_ALLOW_REINIT = 4, -}; - -union swap_header { - struct { - char reserved[4086]; - char magic[10]; - } magic; - struct { - char bootbits[1024]; - __u32 version; - __u32 last_page; - __u32 nr_badpages; - unsigned char sws_uuid[16]; - unsigned char sws_volume[16]; - __u32 padding[117]; - __u32 badpages[1]; - } info; -}; - -struct swap_extent { - struct rb_node rb_node; - long unsigned int start_page; - long unsigned int nr_pages; - sector_t start_block; -}; - -struct frontswap_ops { - void (*init)(unsigned int); - int (*store)(unsigned int, long unsigned int, struct page *); - int (*load)(unsigned int, long unsigned int, struct page *); - void (*invalidate_page)(unsigned int, long unsigned int); - void (*invalidate_area)(unsigned int); -}; - -struct crypto_async_request; - -typedef void (*crypto_completion_t)(struct crypto_async_request *, int); - -struct crypto_async_request { - struct list_head list; - crypto_completion_t complete; - void *data; - struct crypto_tfm *tfm; - u32 flags; -}; - -struct crypto_wait { - struct completion completion; - int err; -}; - -struct zpool; - -struct zpool_ops { - int (*evict)(struct zpool *, long unsigned int); -}; - -enum zpool_mapmode { - ZPOOL_MM_RW = 0, - ZPOOL_MM_RO = 1, - ZPOOL_MM_WO = 2, - ZPOOL_MM_DEFAULT = 0, -}; - -struct acomp_req { - struct crypto_async_request base; - struct scatterlist *src; - struct scatterlist *dst; - unsigned int slen; - unsigned int dlen; - u32 flags; - void *__ctx[0]; -}; - -struct crypto_acomp { - int (*compress)(struct acomp_req *); - int (*decompress)(struct acomp_req *); - void (*dst_free)(struct scatterlist *); - unsigned int reqsize; - struct crypto_tfm base; -}; - -struct crypto_acomp_ctx { - struct crypto_acomp *acomp; - struct acomp_req *req; - struct crypto_wait wait; - u8 *dstmem; - struct mutex *mutex; -}; - -struct zswap_pool { - struct zpool *zpool; - struct crypto_acomp_ctx *acomp_ctx; - struct kref kref; - struct list_head list; - struct work_struct release_work; - struct work_struct shrink_work; - struct hlist_node node; - char tfm_name[128]; -}; - -struct zswap_entry { - struct rb_node rbnode; - long unsigned int offset; - int refcount; - unsigned int length; - struct zswap_pool *pool; - union { - long unsigned int handle; - long unsigned int value; - }; -}; - -struct zswap_header { - swp_entry_t swpentry; -}; - -struct zswap_tree { - struct rb_root rbroot; - spinlock_t lock; -}; - -enum zswap_get_swap_ret { - ZSWAP_SWAPCACHE_NEW = 0, - ZSWAP_SWAPCACHE_EXIST = 1, - ZSWAP_SWAPCACHE_FAIL = 2, -}; - -struct dma_pool { - struct list_head page_list; - spinlock_t lock; - size_t size; - struct device *dev; - size_t allocation; - size_t boundary; - char name[32]; - struct list_head pools; -}; - -struct dma_page { - struct list_head page_list; - void *vaddr; - dma_addr_t dma; - unsigned int in_use; - unsigned int offset; -}; - -struct nodemask_scratch { - nodemask_t mask1; - nodemask_t mask2; -}; - -struct sp_node { - struct rb_node nd; - long unsigned int start; - long unsigned int end; - struct mempolicy *policy; -}; - -struct mempolicy_operations { - int (*create)(struct mempolicy *, const nodemask_t *); - void (*rebind)(struct mempolicy *, const nodemask_t *); -}; - -struct queue_pages { - struct list_head *pagelist; - long unsigned int flags; - nodemask_t *nmask; - long unsigned int start; - long unsigned int end; - struct vm_area_struct *first; -}; - -enum string_size_units { - STRING_UNITS_10 = 0, - STRING_UNITS_2 = 1, -}; - -typedef void (*node_registration_func_t)(struct node *); - -enum mcopy_atomic_mode { - MCOPY_ATOMIC_NORMAL = 0, - MCOPY_ATOMIC_ZEROPAGE = 1, - MCOPY_ATOMIC_CONTINUE = 2, -}; - -enum { - SUBPAGE_INDEX_SUBPOOL = 1, - __NR_USED_SUBPAGE = 2, -}; - -struct resv_map { - struct kref refs; - spinlock_t lock; - struct list_head regions; - long int adds_in_progress; - struct list_head region_cache; - long int region_cache_count; -}; - -struct file_region { - struct list_head link; - long int from; - long int to; -}; - -struct huge_bootmem_page { - struct list_head list; - struct hstate *hstate; -}; - -enum vma_resv_mode { - VMA_NEEDS_RESV = 0, - VMA_COMMIT_RESV = 1, - VMA_END_RESV = 2, - VMA_ADD_RESV = 3, - VMA_DEL_RESV = 4, -}; - -struct node_hstate { - struct kobject *hugepages_kobj; - struct kobject *hstate_kobjs[2]; -}; - -struct hugetlb_cgroup; - -struct mmu_notifier_subscriptions { - struct hlist_head list; - bool has_itree; - spinlock_t lock; - long unsigned int invalidate_seq; - long unsigned int active_invalidate_ranges; - struct rb_root_cached itree; - wait_queue_head_t wq; - struct hlist_head deferred_list; -}; - -struct interval_tree_node { - struct rb_node rb; - long unsigned int start; - long unsigned int last; - long unsigned int __subtree_last; -}; - -struct mmu_notifier; - -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_interval_notifier; - -struct mmu_interval_notifier_ops { - bool (*invalidate)(struct mmu_interval_notifier *, const struct mmu_notifier_range *, long unsigned int); -}; - -struct mmu_interval_notifier { - struct interval_tree_node interval_tree; - const struct mmu_interval_notifier_ops *ops; - struct mm_struct *mm; - struct hlist_node deferred_item; - long unsigned int invalidate_seq; -}; - -struct rmap_item; - -struct mm_slot { - struct hlist_node link; - struct list_head mm_list; - struct rmap_item *rmap_list; - struct mm_struct *mm; -}; - -struct stable_node; - -struct rmap_item { - struct rmap_item *rmap_list; - union { - struct anon_vma *anon_vma; - int nid; - }; - struct mm_struct *mm; - long unsigned int address; - unsigned int oldchecksum; - union { - struct rb_node node; - struct { - struct stable_node *head; - struct hlist_node hlist; - }; - }; -}; - -struct ksm_scan { - struct mm_slot *mm_slot; - long unsigned int address; - struct rmap_item **rmap_list; - long unsigned int seqnr; -}; - -struct stable_node { - union { - struct rb_node node; - struct { - struct list_head *head; - struct { - struct hlist_node hlist_dup; - struct list_head list; - }; - }; - }; - struct hlist_head hlist; - union { - long unsigned int kpfn; - long unsigned int chain_prune_time; - }; - int rmap_hlist_len; - int nid; -}; - -enum get_ksm_page_flags { - GET_KSM_PAGE_NOLOCK = 0, - GET_KSM_PAGE_LOCK = 1, - GET_KSM_PAGE_TRYLOCK = 2, -}; - -struct kcsan_scoped_access {}; - -typedef long unsigned int cycles_t; - -enum kfence_object_state { - KFENCE_OBJECT_UNUSED = 0, - KFENCE_OBJECT_ALLOCATED = 1, - KFENCE_OBJECT_FREED = 2, -}; - -struct kfence_track { - pid_t pid; - int cpu; - u64 ts_nsec; - int num_stack_entries; - long unsigned int stack_entries[64]; -}; - -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; -}; - -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, -}; - -enum kfence_counter_id { - KFENCE_COUNTER_ALLOCATED = 0, - KFENCE_COUNTER_ALLOCS = 1, - KFENCE_COUNTER_FREES = 2, - KFENCE_COUNTER_ZOMBIES = 3, - KFENCE_COUNTER_BUGS = 4, - KFENCE_COUNTER_SKIP_INCOMPAT = 5, - KFENCE_COUNTER_SKIP_CAPACITY = 6, - KFENCE_COUNTER_SKIP_COVERED = 7, - KFENCE_COUNTER_COUNT = 8, -}; - -enum stat_item { - ALLOC_FASTPATH = 0, - ALLOC_SLOWPATH = 1, - FREE_FASTPATH = 2, - FREE_SLOWPATH = 3, - FREE_FROZEN = 4, - FREE_ADD_PARTIAL = 5, - FREE_REMOVE_PARTIAL = 6, - ALLOC_FROM_PARTIAL = 7, - ALLOC_SLAB = 8, - ALLOC_REFILL = 9, - ALLOC_NODE_MISMATCH = 10, - FREE_SLAB = 11, - CPUSLAB_FLUSH = 12, - DEACTIVATE_FULL = 13, - DEACTIVATE_EMPTY = 14, - DEACTIVATE_TO_HEAD = 15, - DEACTIVATE_TO_TAIL = 16, - DEACTIVATE_REMOTE_FREES = 17, - DEACTIVATE_BYPASS = 18, - ORDER_FALLBACK = 19, - CMPXCHG_DOUBLE_CPU_FAIL = 20, - CMPXCHG_DOUBLE_FAIL = 21, - CPU_PARTIAL_ALLOC = 22, - CPU_PARTIAL_FREE = 23, - CPU_PARTIAL_NODE = 24, - CPU_PARTIAL_DRAIN = 25, - NR_SLUB_STAT_ITEMS = 26, -}; - -struct kunit_resource; - -typedef void (*kunit_resource_free_t)(struct kunit_resource *); - -struct kunit_resource { - void *data; - const char *name; - kunit_resource_free_t free; - struct kref refcount; - struct list_head node; -}; - -typedef bool (*kunit_resource_match_t)(struct kunit *, struct kunit_resource *, void *); - -struct track { - long unsigned int addr; - long unsigned int addrs[16]; - int cpu; - int pid; - long unsigned int when; -}; - -enum track_item { - TRACK_ALLOC = 0, - TRACK_FREE = 1, -}; - -struct slub_flush_work { - struct work_struct work; - struct kmem_cache *s; - bool skip; -}; - -struct detached_freelist { - struct slab *slab; - void *tail; - void *freelist; - int cnt; - struct kmem_cache *s; -}; - -struct location { - long unsigned int count; - long unsigned int addr; - long long int sum_time; - long int min_time; - long int max_time; - long int min_pid; - long int max_pid; - long unsigned int cpus[8]; - nodemask_t nodes; -}; - -struct loc_track { - long unsigned int max; - long unsigned int count; - struct location *loc; - loff_t idx; -}; - -enum slab_stat_type { - SL_ALL = 0, - SL_PARTIAL = 1, - SL_CPU = 2, - SL_OBJECTS = 3, - SL_TOTAL = 4, -}; - -struct slab_attribute { - struct attribute attr; - ssize_t (*show)(struct kmem_cache *, char *); - ssize_t (*store)(struct kmem_cache *, const char *, size_t); -}; - -struct saved_alias { - struct kmem_cache *s; - const char *name; - struct saved_alias *next; -}; - -enum slab_modes { - M_NONE = 0, - M_PARTIAL = 1, - M_FULL = 2, - M_FREE = 3, - M_FULL_NOLIST = 4, -}; - -struct buffer_head; - -typedef void bh_end_io_t(struct buffer_head *, int); - -struct buffer_head { - long unsigned int b_state; - struct buffer_head *b_this_page; - struct page *b_page; - sector_t b_blocknr; - size_t b_size; - char *b_data; - struct block_device *b_bdev; - bh_end_io_t *b_end_io; - void *b_private; - struct list_head b_assoc_buffers; - struct address_space *b_assoc_map; - atomic_t b_count; - spinlock_t b_uptodate_lock; -}; - -enum bh_state_bits { - BH_Uptodate = 0, - BH_Dirty = 1, - BH_Lock = 2, - BH_Req = 3, - BH_Mapped = 4, - BH_New = 5, - BH_Async_Read = 6, - BH_Async_Write = 7, - BH_Delay = 8, - BH_Boundary = 9, - BH_Write_EIO = 10, - BH_Unwritten = 11, - BH_Quiet = 12, - BH_Meta = 13, - BH_Prio = 14, - BH_Defer_Completion = 15, - BH_PrivateStart = 16, -}; - -struct demotion_nodes { - short unsigned int nr; - short int nodes[1]; -}; - -typedef long int __kernel_ptrdiff_t; - -typedef __kernel_ptrdiff_t ptrdiff_t; - -struct mem_cgroup_tree_per_node { - struct rb_root rb_root; - struct rb_node *rb_rightmost; - spinlock_t lock; -}; - -struct mem_cgroup_tree { - struct mem_cgroup_tree_per_node *rb_tree_per_node[2]; -}; - -struct mem_cgroup_eventfd_list { - struct list_head list; - struct eventfd_ctx *eventfd; -}; - -struct mem_cgroup_event { - struct mem_cgroup *memcg; - struct eventfd_ctx *eventfd; - struct list_head list; - int (*register_event)(struct mem_cgroup *, struct eventfd_ctx *, const char *); - void (*unregister_event)(struct mem_cgroup *, struct eventfd_ctx *); - poll_table pt; - wait_queue_head_t *wqh; - wait_queue_entry_t wait; - struct work_struct remove; -}; - -struct move_charge_struct { - spinlock_t lock; - struct mm_struct *mm; - struct mem_cgroup *from; - struct mem_cgroup *to; - long unsigned int flags; - long unsigned int precharge; - long unsigned int moved_charge; - long unsigned int moved_swap; - struct task_struct *moving_task; - wait_queue_head_t waitq; -}; - -enum res_type { - _MEM = 0, - _MEMSWAP = 1, - _OOM_TYPE = 2, - _KMEM = 3, - _TCP = 4, -}; - -struct memory_stat { - const char *name; - unsigned int idx; -}; - -struct oom_wait_info { - struct mem_cgroup *memcg; - wait_queue_entry_t wait; -}; - -struct memcg_stock_pcp { - local_lock_t stock_lock; - struct mem_cgroup *cached; - unsigned int nr_pages; - struct obj_cgroup *cached_objcg; - struct pglist_data *cached_pgdat; - unsigned int nr_bytes; - int nr_slab_reclaimable_b; - int nr_slab_unreclaimable_b; - struct work_struct work; - long unsigned int flags; -}; - -enum { - RES_USAGE = 0, - RES_LIMIT = 1, - RES_MAX_USAGE = 2, - RES_FAILCNT = 3, - RES_SOFT_LIMIT = 4, -}; - -union mc_target { - struct page *page; - swp_entry_t ent; -}; - -enum mc_target_type { - MC_TARGET_NONE = 0, - MC_TARGET_PAGE = 1, - MC_TARGET_SWAP = 2, - MC_TARGET_DEVICE = 3, -}; - -struct uncharge_gather { - struct mem_cgroup *memcg; - long unsigned int nr_memory; - long unsigned int pgpgout; - long unsigned int nr_kmem; - int nid; -}; - -struct numa_stat { - const char *name; - unsigned int lru_mask; -}; - -enum vmpressure_levels { - VMPRESSURE_LOW = 0, - VMPRESSURE_MEDIUM = 1, - VMPRESSURE_CRITICAL = 2, - VMPRESSURE_NUM_LEVELS = 3, -}; - -enum vmpressure_modes { - VMPRESSURE_NO_PASSTHROUGH = 0, - VMPRESSURE_HIERARCHY = 1, - VMPRESSURE_LOCAL = 2, - VMPRESSURE_NUM_MODES = 3, -}; - -struct vmpressure_event { - struct eventfd_ctx *efd; - enum vmpressure_levels level; - enum vmpressure_modes mode; - struct list_head node; -}; - -struct swap_cgroup_ctrl { - struct page **map; - long unsigned int length; - spinlock_t lock; -}; - -struct swap_cgroup { - short unsigned int id; -}; - -typedef u32 depot_stack_handle_t; - -struct page_ext_operations { - size_t offset; - size_t size; - bool (*need)(); - void (*init)(); -}; - -enum page_ext_flags { - PAGE_EXT_OWNER = 0, - PAGE_EXT_OWNER_ALLOCATED = 1, -}; - -struct page_owner { - short unsigned int order; - short int last_migrate_reason; - gfp_t gfp_mask; - depot_stack_handle_t handle; - depot_stack_handle_t free_handle; - u64 ts_nsec; - u64 free_ts_nsec; - char comm[16]; - pid_t pid; - pid_t tgid; -}; - -struct trace_event_raw_test_pages_isolated { - struct trace_entry ent; - long unsigned int start_pfn; - long unsigned int end_pfn; - long unsigned int fin_pfn; - char __data[0]; -}; - -struct trace_event_data_offsets_test_pages_isolated {}; - -typedef void (*btf_trace_test_pages_isolated)(void *, long unsigned int, long unsigned int, long unsigned int); - -struct zpool_driver; - -struct zpool { - struct zpool_driver *driver; - void *pool; - const struct zpool_ops *ops; - bool evictable; - bool can_sleep_mapped; -}; - -struct zpool_driver { - char *type; - struct module *owner; - atomic_t refcount; - struct list_head list; - void * (*create)(const char *, gfp_t, const struct zpool_ops *, struct zpool *); - void (*destroy)(void *); - bool malloc_support_movable; - 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 *); -}; - -typedef void (*exitcall_t)(); - -struct zbud_pool; - -struct zbud_ops { - int (*evict)(struct zbud_pool *, long unsigned int); -}; - -struct zbud_pool { - spinlock_t lock; - union { - struct list_head buddied; - struct list_head unbuddied[63]; - }; - struct list_head lru; - u64 pages_nr; - const struct zbud_ops *ops; - struct zpool *zpool; - const struct zpool_ops *zpool_ops; -}; - -struct zbud_header { - struct list_head buddy; - struct list_head lru; - unsigned int first_chunks; - unsigned int last_chunks; - bool under_reclaim; -}; - -enum buddy { - FIRST = 0, - LAST = 1, -}; - -enum zs_mapmode { - ZS_MM_RW = 0, - ZS_MM_RO = 1, - ZS_MM_WO = 2, -}; - -struct zs_pool_stats { - atomic_long_t pages_compacted; -}; - -enum fullness_group { - ZS_EMPTY = 0, - ZS_ALMOST_EMPTY = 1, - ZS_ALMOST_FULL = 2, - ZS_FULL = 3, - NR_ZS_FULLNESS = 4, -}; - -enum class_stat_type { - CLASS_EMPTY = 0, - CLASS_ALMOST_EMPTY = 1, - CLASS_ALMOST_FULL = 2, - CLASS_FULL = 3, - OBJ_ALLOCATED = 4, - OBJ_USED = 5, - NR_ZS_STAT_TYPE = 6, -}; - -struct zs_size_stat { - long unsigned int objs[6]; -}; - -struct size_class { - spinlock_t lock; - struct list_head fullness_list[4]; - int size; - int objs_per_zspage; - int pages_per_zspage; - unsigned int index; - struct zs_size_stat stats; -}; - -struct link_free { - union { - long unsigned int next; - long unsigned int handle; - }; -}; - -struct zs_pool { - const char *name; - struct size_class *size_class[255]; - struct kmem_cache *handle_cachep; - struct kmem_cache *zspage_cachep; - atomic_long_t pages_allocated; - struct zs_pool_stats stats; - struct shrinker shrinker; - struct inode *inode; - struct work_struct free_work; - rwlock_t migrate_lock; -}; - -struct zspage { - struct { - unsigned int huge: 1; - unsigned int fullness: 2; - unsigned int class: 9; - unsigned int isolated: 3; - unsigned int magic: 8; - }; - unsigned int inuse; - unsigned int freeobj; - struct page *first_page; - struct list_head list; - rwlock_t lock; -}; - -struct mapping_area { - local_lock_t lock; - char *vm_buf; - char *vm_addr; - enum zs_mapmode vm_mm; -}; - -struct zs_compact_control { - struct page *s_page; - struct page *d_page; - int obj_idx; -}; - -struct z3fold_pool; - -struct z3fold_ops { - int (*evict)(struct z3fold_pool *, long unsigned int); -}; - -struct z3fold_pool { - const char *name; - spinlock_t lock; - spinlock_t stale_lock; - struct list_head *unbuddied; - struct list_head lru; - struct list_head stale; - atomic64_t pages_nr; - struct kmem_cache *c_handle; - const struct z3fold_ops *ops; - struct zpool *zpool; - const struct zpool_ops *zpool_ops; - struct workqueue_struct *compact_wq; - struct workqueue_struct *release_wq; - struct work_struct work; - struct inode *inode; -}; - -enum buddy___2 { - HEADLESS = 0, - FIRST___2 = 1, - MIDDLE = 2, - LAST___2 = 3, - BUDDIES_MAX = 3, -}; - -struct z3fold_buddy_slots { - long unsigned int slot[4]; - long unsigned int pool; - rwlock_t lock; -}; - -struct z3fold_header { - struct list_head buddy; - spinlock_t page_lock; - struct kref refcount; - struct work_struct work; - struct z3fold_buddy_slots *slots; - struct z3fold_pool *pool; - short int cpu; - short unsigned int first_chunks; - short unsigned int middle_chunks; - short unsigned int last_chunks; - short unsigned int start_middle; - short unsigned int first_num: 2; - short unsigned int mapped_count: 2; - short unsigned int foreign_handles: 2; -}; - -enum z3fold_page_flags { - PAGE_HEADLESS = 0, - MIDDLE_CHUNK_MAPPED = 1, - NEEDS_COMPACTING = 2, - PAGE_STALE = 3, - PAGE_CLAIMED = 4, -}; - -enum z3fold_handle_flags { - HANDLES_NOFREE = 0, -}; - -struct trace_event_raw_cma_alloc_class { - struct trace_entry ent; - u32 __data_loc_name; - long unsigned int pfn; - const struct page *page; - 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; - long unsigned int count; - char __data[0]; -}; - -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); - -typedef void (*btf_trace_cma_alloc_start)(void *, const char *, long 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_alloc_busy_retry)(void *, const char *, long unsigned int, const struct page *, long unsigned int, unsigned int); - -struct cma; - -struct cma_kobject { - struct kobject kobj; - struct cma *cma; -}; - -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; - bool reserve_pages_on_error; -}; - -struct balloon_dev_info { - long unsigned int isolated_pages; - spinlock_t pages_lock; - struct list_head pages; - int (*migratepage)(struct balloon_dev_info *, struct page *, struct page *, enum migrate_mode); - struct inode *inode; -}; - -struct damon_addr_range { - long unsigned int start; - long unsigned int end; -}; - -struct damon_region { - struct damon_addr_range ar; - long unsigned int sampling_addr; - unsigned int nr_accesses; - struct list_head list; - unsigned int age; - unsigned int last_nr_accesses; -}; - -struct damon_target { - struct pid *pid; - unsigned int nr_regions; - struct list_head regions_list; - struct list_head list; -}; - -enum damos_action { - DAMOS_WILLNEED = 0, - DAMOS_COLD = 1, - DAMOS_PAGEOUT = 2, - DAMOS_HUGEPAGE = 3, - DAMOS_NOHUGEPAGE = 4, - DAMOS_STAT = 5, - NR_DAMOS_ACTIONS = 6, -}; - -struct damos_quota { - long unsigned int ms; - long unsigned int sz; - long unsigned int reset_interval; - unsigned int weight_sz; - unsigned int weight_nr_accesses; - unsigned int weight_age; - long unsigned int total_charged_sz; - long unsigned int total_charged_ns; - long unsigned int esz; - long unsigned int charged_sz; - long unsigned int charged_from; - struct damon_target *charge_target_from; - long unsigned int charge_addr_from; - long unsigned int histogram[100]; - unsigned int min_score; -}; - -enum damos_wmark_metric { - DAMOS_WMARK_NONE = 0, - DAMOS_WMARK_FREE_MEM_RATE = 1, - NR_DAMOS_WMARK_METRICS = 2, -}; - -struct damos_watermarks { - enum damos_wmark_metric metric; - long unsigned int interval; - long unsigned int high; - long unsigned int mid; - long unsigned int low; - bool activated; -}; - -struct damos_stat { - long unsigned int nr_tried; - long unsigned int sz_tried; - long unsigned int nr_applied; - long unsigned int sz_applied; - long unsigned int qt_exceeds; -}; - -struct damos { - long unsigned int min_sz_region; - long unsigned int max_sz_region; - unsigned int min_nr_accesses; - unsigned int max_nr_accesses; - unsigned int min_age_region; - unsigned int max_age_region; - enum damos_action action; - struct damos_quota quota; - struct damos_watermarks wmarks; - struct damos_stat stat; - struct list_head list; -}; - -enum damon_ops_id { - DAMON_OPS_VADDR = 0, - DAMON_OPS_PADDR = 1, - NR_DAMON_OPS = 2, -}; - -struct damon_ctx; - -struct damon_operations { - enum damon_ops_id id; - void (*init)(struct damon_ctx *); - void (*update)(struct damon_ctx *); - void (*prepare_access_checks)(struct damon_ctx *); - unsigned int (*check_accesses)(struct damon_ctx *); - void (*reset_aggregated)(struct damon_ctx *); - int (*get_scheme_score)(struct damon_ctx *, struct damon_target *, struct damon_region *, struct damos *); - long unsigned int (*apply_scheme)(struct damon_ctx *, struct damon_target *, struct damon_region *, struct damos *); - bool (*target_valid)(void *); - void (*cleanup)(struct damon_ctx *); -}; - -struct damon_callback { - void *private; - int (*before_start)(struct damon_ctx *); - int (*after_sampling)(struct damon_ctx *); - int (*after_aggregation)(struct damon_ctx *); - void (*before_terminate)(struct damon_ctx *); -}; - -struct damon_ctx { - long unsigned int sample_interval; - long unsigned int aggr_interval; - long unsigned int ops_update_interval; - struct timespec64 last_aggregation; - struct timespec64 last_ops_update; - struct task_struct *kdamond; - struct mutex kdamond_lock; - struct damon_operations ops; - struct damon_callback callback; - long unsigned int min_nr_regions; - long unsigned int max_nr_regions; - struct list_head adaptive_targets; - struct list_head schemes; -}; - -struct trace_event_raw_damon_aggregated { - struct trace_entry ent; - long unsigned int target_id; - unsigned int nr_regions; - long unsigned int start; - long unsigned int end; - unsigned int nr_accesses; - unsigned int age; - char __data[0]; -}; - -struct trace_event_data_offsets_damon_aggregated {}; - -typedef void (*btf_trace_damon_aggregated)(void *, struct damon_target *, unsigned int, struct damon_region *, unsigned int); - -struct damon_young_walk_private { - long unsigned int *page_sz; - bool young; -}; - -struct damon_pa_access_chk_result { - long unsigned int page_sz; - bool accessed; -}; - -struct damon_sysfs_ul_range { - struct kobject kobj; - long unsigned int min; - long unsigned int max; -}; - -struct damon_sysfs_stats { - struct kobject kobj; - long unsigned int nr_tried; - long unsigned int sz_tried; - long unsigned int nr_applied; - long unsigned int sz_applied; - long unsigned int qt_exceeds; -}; - -struct damon_sysfs_watermarks { - struct kobject kobj; - enum damos_wmark_metric metric; - long unsigned int interval_us; - long unsigned int high; - long unsigned int mid; - long unsigned int low; -}; - -struct damon_sysfs_weights { - struct kobject kobj; - unsigned int sz; - unsigned int nr_accesses; - unsigned int age; -}; - -struct damon_sysfs_quotas { - struct kobject kobj; - struct damon_sysfs_weights *weights; - long unsigned int ms; - long unsigned int sz; - long unsigned int reset_interval_ms; -}; - -struct damon_sysfs_access_pattern { - struct kobject kobj; - struct damon_sysfs_ul_range *sz; - struct damon_sysfs_ul_range *nr_accesses; - struct damon_sysfs_ul_range *age; -}; - -struct damon_sysfs_scheme { - struct kobject kobj; - enum damos_action action; - struct damon_sysfs_access_pattern *access_pattern; - struct damon_sysfs_quotas *quotas; - struct damon_sysfs_watermarks *watermarks; - struct damon_sysfs_stats *stats; -}; - -struct damon_sysfs_schemes { - struct kobject kobj; - struct damon_sysfs_scheme **schemes_arr; - int nr; -}; - -struct damon_sysfs_region { - struct kobject kobj; - long unsigned int start; - long unsigned int end; -}; - -struct damon_sysfs_regions { - struct kobject kobj; - struct damon_sysfs_region **regions_arr; - int nr; -}; - -struct damon_sysfs_target { - struct kobject kobj; - struct damon_sysfs_regions *regions; - int pid; -}; - -struct damon_sysfs_targets { - struct kobject kobj; - struct damon_sysfs_target **targets_arr; - int nr; -}; - -struct damon_sysfs_intervals { - struct kobject kobj; - long unsigned int sample_us; - long unsigned int aggr_us; - long unsigned int update_us; -}; - -struct damon_sysfs_attrs { - struct kobject kobj; - struct damon_sysfs_intervals *intervals; - struct damon_sysfs_ul_range *nr_regions_range; -}; - -struct damon_sysfs_context { - struct kobject kobj; - enum damon_ops_id ops_id; - struct damon_sysfs_attrs *attrs; - struct damon_sysfs_targets *targets; - struct damon_sysfs_schemes *schemes; -}; - -struct damon_sysfs_contexts { - struct kobject kobj; - struct damon_sysfs_context **contexts_arr; - int nr; -}; - -struct damon_sysfs_kdamond { - struct kobject kobj; - struct damon_sysfs_contexts *contexts; - struct damon_ctx *damon_ctx; -}; - -struct damon_sysfs_kdamonds { - struct kobject kobj; - struct damon_sysfs_kdamond **kdamonds_arr; - int nr; -}; - -struct damon_sysfs_ui_dir { - struct kobject kobj; - struct damon_sysfs_kdamonds *kdamonds; -}; - -struct damon_reclaim_ram_walk_arg { - long unsigned int start; - long unsigned int end; -}; - -enum { - BAD_STACK = 4294967295, - NOT_STACK = 0, - GOOD_FRAME = 1, - GOOD_STACK = 2, -}; - -enum hmm_pfn_flags { - HMM_PFN_VALID = 0, - HMM_PFN_WRITE = 0, - HMM_PFN_ERROR = 0, - HMM_PFN_ORDER_SHIFT = 56, - HMM_PFN_REQ_FAULT = 0, - HMM_PFN_REQ_WRITE = 0, - HMM_PFN_FLAGS = 0, -}; - -struct hmm_range { - struct mmu_interval_notifier *notifier; - long unsigned int notifier_seq; - long unsigned int start; - long unsigned int end; - long unsigned int *hmm_pfns; - long unsigned int default_flags; - long unsigned int pfn_flags_mask; - void *dev_private_owner; -}; - -struct hmm_vma_walk { - struct hmm_range *range; - long unsigned int last; -}; - -enum { - HMM_NEED_FAULT = 1, - HMM_NEED_WRITE_FAULT = 2, - HMM_NEED_ALL_BITS = 3, -}; - -struct hugetlbfs_inode_info { - struct shared_policy policy; - struct inode vfs_inode; - unsigned int seals; -}; - -struct page_reporting_dev_info { - int (*report)(struct page_reporting_dev_info *, struct scatterlist *, unsigned int); - struct delayed_work work; - atomic_t state; - unsigned int order; -}; - -enum { - PAGE_REPORTING_IDLE = 0, - PAGE_REPORTING_REQUESTED = 1, - PAGE_REPORTING_ACTIVE = 2, -}; - -typedef s32 compat_off_t; - -struct open_flags { - int open_flag; - umode_t mode; - int acc_mode; - int intent; - int lookup_flags; -}; - -struct files_stat_struct { - long unsigned int nr_files; - long unsigned int nr_free_files; - long unsigned int max_files; -}; - -struct fscrypt_policy_v1 { - __u8 version; - __u8 contents_encryption_mode; - __u8 filenames_encryption_mode; - __u8 flags; - __u8 master_key_descriptor[8]; -}; - -struct fscrypt_policy_v2 { - __u8 version; - __u8 contents_encryption_mode; - __u8 filenames_encryption_mode; - __u8 flags; - __u8 __reserved[4]; - __u8 master_key_identifier[16]; -}; - -union fscrypt_policy { - u8 version; - struct fscrypt_policy_v1 v1; - struct fscrypt_policy_v2 v2; -}; - -enum vfs_get_super_keying { - vfs_get_single_super = 0, - vfs_get_single_reconf_super = 1, - vfs_get_keyed_super = 2, - vfs_get_independent_super = 3, -}; - -typedef __kernel_long_t __kernel_off_t; - -typedef __kernel_off_t off_t; - -typedef __kernel_rwf_t rwf_t; - -typedef s64 compat_loff_t; - -typedef struct kobject *kobj_probe_t(dev_t, int *, void *); - -struct kobj_map; - -struct char_device_struct { - struct char_device_struct *next; - unsigned int major; - unsigned int baseminor; - int minorct; - char name[64]; - struct cdev *cdev; -}; - -struct stat { - long unsigned int st_dev; - long unsigned int st_ino; - long unsigned int st_nlink; - unsigned int st_mode; - unsigned int st_uid; - unsigned int st_gid; - unsigned int __pad1; - long unsigned int st_rdev; - long unsigned int st_size; - long unsigned int st_atime; - long unsigned int st_atime_nsec; - long unsigned int st_mtime; - long unsigned int st_mtime_nsec; - long unsigned int st_ctime; - long unsigned int st_ctime_nsec; - long unsigned int st_blksize; - long int st_blocks; - long unsigned int __unused[3]; -}; - -struct statx_timestamp { - __s64 tv_sec; - __u32 tv_nsec; - __s32 __reserved; -}; - -struct statx { - __u32 stx_mask; - __u32 stx_blksize; - __u64 stx_attributes; - __u32 stx_nlink; - __u32 stx_uid; - __u32 stx_gid; - __u16 stx_mode; - __u16 __spare0[1]; - __u64 stx_ino; - __u64 stx_size; - __u64 stx_blocks; - __u64 stx_attributes_mask; - struct statx_timestamp stx_atime; - struct statx_timestamp stx_btime; - struct statx_timestamp stx_ctime; - struct statx_timestamp stx_mtime; - __u32 stx_rdev_major; - __u32 stx_rdev_minor; - __u32 stx_dev_major; - __u32 stx_dev_minor; - __u64 stx_mnt_id; - __u64 __spare2; - __u64 __spare3[12]; -}; - -typedef u16 compat_mode_t; - -typedef u32 compat_ino_t; - -typedef u16 __compat_uid_t; - -typedef u16 __compat_gid_t; - -typedef u16 compat_dev_t; - -typedef u16 compat_nlink_t; - -struct compat_stat { - compat_dev_t st_dev; - u16 __pad1; - compat_ino_t st_ino; - compat_mode_t st_mode; - compat_nlink_t st_nlink; - __compat_uid_t st_uid; - __compat_gid_t st_gid; - compat_dev_t st_rdev; - u16 __pad2; - u32 st_size; - u32 st_blksize; - u32 st_blocks; - u32 st_atime; - u32 st_atime_nsec; - u32 st_mtime; - u32 st_mtime_nsec; - u32 st_ctime; - u32 st_ctime_nsec; - u32 __unused4; - u32 __unused5; -}; - -struct mount; - -struct mnt_namespace { - struct ns_common ns; - struct mount *root; - struct list_head list; - spinlock_t ns_lock; - struct user_namespace *user_ns; - struct ucounts *ucounts; - u64 seq; - wait_queue_head_t poll; - u64 event; - unsigned int mounts; - unsigned int pending_mounts; -}; - -struct mnt_pcp; - -struct mountpoint; - -struct mount { - struct hlist_node mnt_hash; - struct mount *mnt_parent; - struct dentry *mnt_mountpoint; - struct vfsmount mnt; - union { - struct callback_head mnt_rcu; - struct llist_node mnt_llist; - }; - struct mnt_pcp *mnt_pcp; - struct list_head mnt_mounts; - struct list_head mnt_child; - struct list_head mnt_instance; - const char *mnt_devname; - struct list_head mnt_list; - struct list_head mnt_expire; - struct list_head mnt_share; - struct list_head mnt_slave_list; - struct list_head mnt_slave; - struct mount *mnt_master; - struct mnt_namespace *mnt_ns; - struct mountpoint *mnt_mp; - union { - struct hlist_node mnt_mp_list; - struct hlist_node mnt_umount; - }; - struct list_head mnt_umounting; - struct fsnotify_mark_connector *mnt_fsnotify_marks; - __u32 mnt_fsnotify_mask; - int mnt_id; - int mnt_group_id; - int mnt_expiry_mark; - struct hlist_head mnt_pins; - struct hlist_head mnt_stuck_children; -}; - -struct mnt_pcp { - int mnt_count; - int mnt_writers; -}; - -struct mountpoint { - struct hlist_node m_hash; - struct dentry *m_dentry; - struct hlist_head m_list; - int m_count; -}; - -typedef short unsigned int ushort; - -struct user_arg_ptr { - bool is_compat; - union { - const char * const *native; - const compat_uptr_t *compat; - } ptr; -}; - -enum inode_i_mutex_lock_class { - I_MUTEX_NORMAL = 0, - I_MUTEX_PARENT = 1, - I_MUTEX_CHILD = 2, - I_MUTEX_XATTR = 3, - I_MUTEX_NONDIR2 = 4, - I_MUTEX_PARENT2 = 5, -}; - -struct name_snapshot { - struct qstr name; - unsigned char inline_name[32]; -}; - -struct saved { - struct path link; - struct delayed_call done; - const char *name; - unsigned int seq; -}; - -struct nameidata { - struct path path; - struct qstr last; - struct path root; - struct inode *inode; - unsigned int flags; - unsigned int state; - unsigned int seq; - unsigned int m_seq; - unsigned int r_seq; - int last_type; - unsigned int depth; - int total_link_count; - struct saved *stack; - struct saved internal[2]; - struct filename *name; - struct nameidata *saved; - unsigned int root_seq; - int dfd; - kuid_t dir_uid; - 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, - LAST_DOT = 2, - LAST_DOTDOT = 3, -}; - -enum { - WALK_TRAILING = 1, - WALK_MORE = 2, - WALK_NOFOLLOW = 4, -}; - -struct file_clone_range { - __s64 src_fd; - __u64 src_offset; - __u64 src_length; - __u64 dest_offset; -}; - -struct file_dedupe_range_info { - __s64 dest_fd; - __u64 dest_offset; - __u64 bytes_deduped; - __s32 status; - __u32 reserved; -}; - -struct file_dedupe_range { - __u64 src_offset; - __u64 src_length; - __u16 dest_count; - __u16 reserved1; - __u32 reserved2; - struct file_dedupe_range_info info[0]; -}; - -struct fsxattr { - __u32 fsx_xflags; - __u32 fsx_extsize; - __u32 fsx_nextents; - __u32 fsx_projid; - __u32 fsx_cowextsize; - unsigned char fsx_pad[8]; -}; - -struct fiemap_extent; - -struct fiemap_extent_info { - unsigned int fi_flags; - unsigned int fi_extents_mapped; - unsigned int fi_extents_max; - 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; - __s64 l_start; - __s64 l_len; - __s32 l_sysid; - __u32 l_pid; - __s32 l_pad[4]; -}; - -struct fiemap_extent { - __u64 fe_logical; - __u64 fe_physical; - __u64 fe_length; - __u64 fe_reserved64[2]; - __u32 fe_flags; - __u32 fe_reserved[3]; -}; - -struct fiemap { - __u64 fm_start; - __u64 fm_length; - __u32 fm_flags; - __u32 fm_mapped_extents; - __u32 fm_extent_count; - __u32 fm_reserved; - struct fiemap_extent fm_extents[0]; -}; - -struct linux_dirent64 { - u64 d_ino; - s64 d_off; - short unsigned int d_reclen; - unsigned char d_type; - char d_name[0]; -}; - -struct old_linux_dirent { - long unsigned int d_ino; - long unsigned int d_offset; - short unsigned int d_namlen; - char d_name[1]; -}; - -struct readdir_callback { - struct dir_context ctx; - struct old_linux_dirent *dirent; - int result; -}; - -struct linux_dirent { - long unsigned int d_ino; - long unsigned int d_off; - short unsigned int d_reclen; - char d_name[1]; -}; - -struct getdents_callback { - struct dir_context ctx; - struct linux_dirent *current_dir; - int prev_reclen; - int count; - int error; -}; - -struct getdents_callback64 { - struct dir_context ctx; - struct linux_dirent64 *current_dir; - int prev_reclen; - int count; - int error; -}; - -struct compat_old_linux_dirent { - compat_ulong_t d_ino; - compat_ulong_t d_offset; - short unsigned int d_namlen; - char d_name[1]; -}; - -struct compat_readdir_callback { - struct dir_context ctx; - struct compat_old_linux_dirent *dirent; - int result; -}; - -struct compat_linux_dirent { - compat_ulong_t d_ino; - compat_ulong_t d_off; - short unsigned int d_reclen; - char d_name[1]; -}; - -struct compat_getdents_callback { - struct dir_context ctx; - struct compat_linux_dirent *current_dir; - int prev_reclen; - int count; - int error; -}; - -struct f_owner_ex { - int type; - __kernel_pid_t pid; -}; - -struct flock { - short int l_type; - short int l_whence; - __kernel_off_t l_start; - __kernel_off_t l_len; - __kernel_pid_t l_pid; -}; - -enum rw_hint { - WRITE_LIFE_NOT_SET = 0, - WRITE_LIFE_NONE = 1, - WRITE_LIFE_SHORT = 2, - WRITE_LIFE_MEDIUM = 3, - WRITE_LIFE_LONG = 4, - WRITE_LIFE_EXTREME = 5, -}; - -struct compat_flock { - short int l_type; - short int l_whence; - compat_off_t l_start; - compat_off_t l_len; - compat_pid_t l_pid; -}; - -struct compat_flock64 { - short int l_type; - short int l_whence; - compat_loff_t l_start; - compat_loff_t l_len; - compat_pid_t l_pid; -}; - -typedef struct { - long unsigned int fds_bits[16]; -} __kernel_fd_set; - -typedef __kernel_fd_set fd_set; - -struct poll_table_entry { - struct file *filp; - __poll_t key; - wait_queue_entry_t wait; - wait_queue_head_t *wait_address; -}; - -struct poll_table_page; - -struct poll_wqueues { - poll_table pt; - struct poll_table_page *table; - struct task_struct *polling_task; - int triggered; - int error; - int inline_index; - struct poll_table_entry inline_entries[9]; -}; - -struct poll_table_page { - struct poll_table_page *next; - struct poll_table_entry *entry; - struct poll_table_entry entries[0]; -}; - -enum poll_time_type { - PT_TIMEVAL = 0, - PT_OLD_TIMEVAL = 1, - PT_TIMESPEC = 2, - PT_OLD_TIMESPEC = 3, -}; - -typedef struct { - long unsigned int *in; - long unsigned int *out; - long unsigned int *ex; - long unsigned int *res_in; - long unsigned int *res_out; - long unsigned int *res_ex; -} fd_set_bits; - -struct sigset_argpack { - sigset_t *p; - size_t size; -}; - -struct poll_list { - struct poll_list *next; - int len; - struct pollfd entries[0]; -}; - -struct compat_sel_arg_struct { - compat_ulong_t n; - compat_uptr_t inp; - compat_uptr_t outp; - compat_uptr_t exp; - compat_uptr_t tvp; -}; - -struct compat_sigset_argpack { - compat_uptr_t p; - compat_size_t size; -}; - -enum dentry_d_lock_class { - DENTRY_D_LOCK_NORMAL = 0, - DENTRY_D_LOCK_NESTED = 1, -}; - -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 external_name { - union { - atomic_t count; - struct callback_head head; - } u; - unsigned char name[0]; -}; - -enum d_walk_ret { - D_WALK_CONTINUE = 0, - D_WALK_QUIT = 1, - D_WALK_NORETRY = 2, - D_WALK_SKIP = 3, -}; - -struct check_mount { - struct vfsmount *mnt; - unsigned int mounted; -}; - -struct select_data { - struct dentry *start; - union { - long int found; - struct dentry *victim; - }; - struct list_head dispose; -}; - -typedef long int pcp_op_T_____8; - -struct inodes_stat_t { - long int nr_inodes; - long int nr_unused; - long int dummy[5]; -}; - -enum file_time_flags { - S_ATIME = 1, - S_MTIME = 2, - S_CTIME = 4, - 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; - int (*show)(struct seq_file *, struct vfsmount *); - 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 utf8data; - -struct utf8data_table; - -struct unicode_map { - unsigned int version; - const struct utf8data *ntab[2]; - const struct utf8data_table *tables; -}; - -struct simple_transaction_argresp { - ssize_t size; - char data[0]; -}; - -enum utf8_normalization { - UTF8_NFDI = 0, - UTF8_NFDICF = 1, - UTF8_NMAX = 2, -}; - -struct utf8data { - unsigned int maxage; - unsigned int offset; -}; - -struct utf8data_table { - const unsigned int *utf8agetab; - int utf8agetab_size; - const struct utf8data *utf8nfdicfdata; - int utf8nfdicfdata_size; - const struct utf8data *utf8nfdidata; - int utf8nfdidata_size; - const unsigned char *utf8data; -}; - -struct simple_attr { - int (*get)(void *, u64 *); - int (*set)(void *, u64); - char get_buf[24]; - char set_buf[24]; - void *data; - const char *fmt; - struct mutex mutex; -}; - -struct wb_writeback_work { - long int nr_pages; - struct super_block *sb; - enum writeback_sync_modes sync_mode; - unsigned int tagged_writepages: 1; - unsigned int for_kupdate: 1; - unsigned int range_cyclic: 1; - unsigned int for_background: 1; - unsigned int for_sync: 1; - unsigned int auto_free: 1; - enum wb_reason reason; - struct list_head list; - struct wb_completion *done; -}; - -struct trace_event_raw_writeback_folio_template { - struct trace_entry ent; - char name[32]; - ino_t ino; - long unsigned int index; - char __data[0]; -}; - -struct trace_event_raw_writeback_dirty_inode_template { - struct trace_entry ent; - char name[32]; - ino_t ino; - long unsigned int state; - long unsigned int flags; - char __data[0]; -}; - -struct trace_event_raw_inode_foreign_history { - struct trace_entry ent; - char name[32]; - ino_t ino; - ino_t cgroup_ino; - unsigned int history; - char __data[0]; -}; - -struct trace_event_raw_inode_switch_wbs { - struct trace_entry ent; - char name[32]; - ino_t ino; - ino_t old_cgroup_ino; - ino_t new_cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_track_foreign_dirty { - struct trace_entry ent; - char name[32]; - u64 bdi_id; - ino_t ino; - unsigned int memcg_id; - ino_t cgroup_ino; - ino_t page_cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_flush_foreign { - struct trace_entry ent; - char name[32]; - ino_t cgroup_ino; - unsigned int frn_bdi_id; - unsigned int frn_memcg_id; - char __data[0]; -}; - -struct trace_event_raw_writeback_write_inode_template { - struct trace_entry ent; - char name[32]; - ino_t ino; - int sync_mode; - ino_t cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_writeback_work_class { - struct trace_entry ent; - char name[32]; - long int nr_pages; - dev_t sb_dev; - int sync_mode; - int for_kupdate; - int range_cyclic; - int for_background; - int reason; - ino_t cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_writeback_pages_written { - struct trace_entry ent; - long int pages; - char __data[0]; -}; - -struct trace_event_raw_writeback_class { - struct trace_entry ent; - char name[32]; - ino_t cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_writeback_bdi_register { - struct trace_entry ent; - char name[32]; - char __data[0]; -}; - -struct trace_event_raw_wbc_class { - struct trace_entry ent; - char name[32]; - long int nr_to_write; - long int pages_skipped; - int sync_mode; - int for_kupdate; - int for_background; - int for_reclaim; - int range_cyclic; - long int range_start; - long int range_end; - ino_t cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_writeback_queue_io { - struct trace_entry ent; - char name[32]; - long unsigned int older; - long int age; - int moved; - int reason; - ino_t cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_global_dirty_state { - struct trace_entry ent; - long unsigned int nr_dirty; - long unsigned int nr_writeback; - long unsigned int background_thresh; - long unsigned int dirty_thresh; - long unsigned int dirty_limit; - long unsigned int nr_dirtied; - long unsigned int nr_written; - char __data[0]; -}; - -struct trace_event_raw_bdi_dirty_ratelimit { - struct trace_entry ent; - char bdi[32]; - long unsigned int write_bw; - long unsigned int avg_write_bw; - long unsigned int dirty_rate; - long unsigned int dirty_ratelimit; - long unsigned int task_ratelimit; - long unsigned int balanced_dirty_ratelimit; - ino_t cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_balance_dirty_pages { - struct trace_entry ent; - char bdi[32]; - long unsigned int limit; - long unsigned int setpoint; - long unsigned int dirty; - long unsigned int bdi_setpoint; - long unsigned int bdi_dirty; - long unsigned int dirty_ratelimit; - long unsigned int task_ratelimit; - unsigned int dirtied; - unsigned int dirtied_pause; - long unsigned int paused; - long int pause; - long unsigned int period; - long int think; - ino_t cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_writeback_sb_inodes_requeue { - struct trace_entry ent; - char name[32]; - ino_t ino; - long unsigned int state; - long unsigned int dirtied_when; - ino_t cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_writeback_single_inode_template { - struct trace_entry ent; - char name[32]; - ino_t ino; - long unsigned int state; - long unsigned int dirtied_when; - long unsigned int writeback_index; - long int nr_to_write; - long unsigned int wrote; - ino_t cgroup_ino; - char __data[0]; -}; - -struct trace_event_raw_writeback_inode_template { - struct trace_entry ent; - dev_t dev; - ino_t ino; - long unsigned int state; - __u16 mode; - long unsigned int dirtied_when; - char __data[0]; -}; - -struct trace_event_data_offsets_writeback_folio_template {}; - -struct trace_event_data_offsets_writeback_dirty_inode_template {}; - -struct trace_event_data_offsets_inode_foreign_history {}; - -struct trace_event_data_offsets_inode_switch_wbs {}; - -struct trace_event_data_offsets_track_foreign_dirty {}; - -struct trace_event_data_offsets_flush_foreign {}; - -struct trace_event_data_offsets_writeback_write_inode_template {}; - -struct trace_event_data_offsets_writeback_work_class {}; - -struct trace_event_data_offsets_writeback_pages_written {}; - -struct trace_event_data_offsets_writeback_class {}; - -struct trace_event_data_offsets_writeback_bdi_register {}; - -struct trace_event_data_offsets_wbc_class {}; - -struct trace_event_data_offsets_writeback_queue_io {}; - -struct trace_event_data_offsets_global_dirty_state {}; - -struct trace_event_data_offsets_bdi_dirty_ratelimit {}; - -struct trace_event_data_offsets_balance_dirty_pages {}; - -struct trace_event_data_offsets_writeback_sb_inodes_requeue {}; - -struct trace_event_data_offsets_writeback_single_inode_template {}; - -struct trace_event_data_offsets_writeback_inode_template {}; - -typedef void (*btf_trace_writeback_dirty_folio)(void *, struct folio *, struct address_space *); - -typedef void (*btf_trace_folio_wait_writeback)(void *, struct folio *, struct address_space *); - -typedef void (*btf_trace_writeback_mark_inode_dirty)(void *, struct inode *, int); - -typedef void (*btf_trace_writeback_dirty_inode_start)(void *, struct inode *, int); - -typedef void (*btf_trace_writeback_dirty_inode)(void *, struct inode *, int); - -typedef void (*btf_trace_inode_foreign_history)(void *, struct inode *, struct writeback_control *, unsigned int); - -typedef void (*btf_trace_inode_switch_wbs)(void *, struct inode *, struct bdi_writeback *, struct bdi_writeback *); - -typedef void (*btf_trace_track_foreign_dirty)(void *, struct folio *, struct bdi_writeback *); - -typedef void (*btf_trace_flush_foreign)(void *, struct bdi_writeback *, unsigned int, unsigned int); - -typedef void (*btf_trace_writeback_write_inode_start)(void *, struct inode *, struct writeback_control *); - -typedef void (*btf_trace_writeback_write_inode)(void *, struct inode *, struct writeback_control *); - -typedef void (*btf_trace_writeback_queue)(void *, struct bdi_writeback *, struct wb_writeback_work *); - -typedef void (*btf_trace_writeback_exec)(void *, struct bdi_writeback *, struct wb_writeback_work *); - -typedef void (*btf_trace_writeback_start)(void *, struct bdi_writeback *, struct wb_writeback_work *); - -typedef void (*btf_trace_writeback_written)(void *, struct bdi_writeback *, struct wb_writeback_work *); - -typedef void (*btf_trace_writeback_wait)(void *, struct bdi_writeback *, struct wb_writeback_work *); - -typedef void (*btf_trace_writeback_pages_written)(void *, long int); - -typedef void (*btf_trace_writeback_wake_background)(void *, struct bdi_writeback *); - -typedef void (*btf_trace_writeback_bdi_register)(void *, struct backing_dev_info *); - -typedef void (*btf_trace_wbc_writepage)(void *, struct writeback_control *, struct backing_dev_info *); - -typedef void (*btf_trace_writeback_queue_io)(void *, struct bdi_writeback *, struct wb_writeback_work *, long unsigned int, int); - -typedef void (*btf_trace_global_dirty_state)(void *, long unsigned int, long unsigned int); - -typedef void (*btf_trace_bdi_dirty_ratelimit)(void *, struct bdi_writeback *, long unsigned int, long unsigned int); - -typedef void (*btf_trace_balance_dirty_pages)(void *, struct bdi_writeback *, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long int, long unsigned int); - -typedef void (*btf_trace_writeback_sb_inodes_requeue)(void *, struct inode *); - -typedef void (*btf_trace_writeback_single_inode_start)(void *, struct inode *, struct writeback_control *, long unsigned int); - -typedef void (*btf_trace_writeback_single_inode)(void *, struct inode *, struct writeback_control *, long unsigned int); - -typedef void (*btf_trace_writeback_lazytime)(void *, struct inode *); - -typedef void (*btf_trace_writeback_lazytime_iput)(void *, struct inode *); - -typedef void (*btf_trace_writeback_dirty_inode_enqueue)(void *, struct inode *); - -typedef void (*btf_trace_sb_mark_inode_writeback)(void *, struct inode *); - -typedef void (*btf_trace_sb_clear_inode_writeback)(void *, struct inode *); - -struct inode_switch_wbs_context { - struct rcu_work work; - struct bdi_writeback *new_wb; - struct inode *inodes[0]; -}; - -struct splice_desc { - size_t total_len; - unsigned int len; - unsigned int flags; - union { - void *userptr; - struct file *file; - void *data; - } u; - loff_t pos; - loff_t *opos; - size_t num_spliced; - bool need_wakeup; -}; - -typedef int splice_actor(struct pipe_inode_info *, struct pipe_buffer *, struct splice_desc *); - -typedef int splice_direct_actor(struct pipe_inode_info *, struct splice_desc *); - -struct prepend_buffer { - char *buf; - int len; -}; - -typedef __kernel_long_t __kernel_old_time_t; - -struct old_utimbuf32 { - old_time32_t actime; - old_time32_t modtime; -}; - -struct utimbuf { - __kernel_old_time_t actime; - __kernel_old_time_t modtime; -}; - -typedef int __kernel_daddr_t; - -struct ustat { - __kernel_daddr_t f_tfree; - unsigned int f_tinode; - char f_fname[6]; - char f_fpack[6]; -}; - -typedef s32 compat_daddr_t; - -typedef __kernel_fsid_t compat_fsid_t; - -struct compat_statfs { - u32 f_type; - u32 f_bsize; - u32 f_blocks; - u32 f_bfree; - u32 f_bavail; - u32 f_files; - u32 f_ffree; - compat_fsid_t f_fsid; - u32 f_namelen; - u32 f_frsize; - u32 f_flags; - u32 f_spare[4]; -}; - -struct compat_statfs64 { - u32 f_type; - u32 f_bsize; - u64 f_blocks; - u64 f_bfree; - u64 f_bavail; - u64 f_files; - u64 f_ffree; - compat_fsid_t f_fsid; - u32 f_namelen; - u32 f_frsize; - u32 f_flags; - u32 f_spare[4]; -}; - -struct compat_ustat { - compat_daddr_t f_tfree; - compat_ino_t f_tinode; - char f_fname[6]; - char f_fpack[6]; -}; - -struct statfs { - unsigned int f_type; - unsigned int f_bsize; - long unsigned int f_blocks; - long unsigned int f_bfree; - long unsigned int f_bavail; - long unsigned int f_files; - long unsigned int f_ffree; - __kernel_fsid_t f_fsid; - unsigned int f_namelen; - unsigned int f_frsize; - unsigned int f_flags; - unsigned int f_spare[4]; -}; - -struct statfs64 { - unsigned int f_type; - unsigned int f_bsize; - long long unsigned int f_blocks; - long long unsigned int f_bfree; - long long unsigned int f_bavail; - long long unsigned int f_files; - long long unsigned int f_ffree; - __kernel_fsid_t f_fsid; - unsigned int f_namelen; - unsigned int f_frsize; - unsigned int f_flags; - unsigned int f_spare[4]; -}; - -struct ns_get_path_task_args { - const struct proc_ns_operations *ns_ops; - struct task_struct *task; -}; - -enum legacy_fs_param { - LEGACY_FS_UNSET_PARAMS = 0, - LEGACY_FS_MONOLITHIC_PARAMS = 1, - LEGACY_FS_INDIVIDUAL_PARAMS = 2, -}; - -struct legacy_fs_context { - char *legacy_data; - size_t data_size; - enum legacy_fs_param param_type; -}; - -enum fsconfig_command { - FSCONFIG_SET_FLAG = 0, - FSCONFIG_SET_STRING = 1, - FSCONFIG_SET_BINARY = 2, - FSCONFIG_SET_PATH = 3, - FSCONFIG_SET_PATH_EMPTY = 4, - FSCONFIG_SET_FD = 5, - FSCONFIG_CMD_CREATE = 6, - FSCONFIG_CMD_RECONFIGURE = 7, -}; - -typedef int get_block_t(struct inode *, sector_t, struct buffer_head *, int); - -typedef int dio_iodone_t(struct kiocb *, loff_t, ssize_t, void *); - -typedef void dio_submit_t(struct bio *, struct inode *, loff_t); - -enum { - DIO_LOCKING = 1, - DIO_SKIP_HOLES = 2, -}; - -struct dio_submit { - struct bio *bio; - unsigned int blkbits; - unsigned int blkfactor; - unsigned int start_zero_done; - int pages_in_io; - sector_t block_in_file; - unsigned int blocks_available; - int reap_counter; - sector_t final_block_in_request; - int boundary; - get_block_t *get_block; - dio_submit_t *submit_io; - loff_t logical_offset_in_bio; - sector_t final_block_in_bio; - sector_t next_block_for_io; - struct page *cur_page; - unsigned int cur_page_offset; - unsigned int cur_page_len; - sector_t cur_page_block; - loff_t cur_page_fs_offset; - struct iov_iter *iter; - unsigned int head; - unsigned int tail; - size_t from; - size_t to; -}; - -struct dio { - int flags; - int op; - int op_flags; - struct gendisk *bio_disk; - struct inode *inode; - loff_t i_size; - dio_iodone_t *end_io; - void *private; - spinlock_t bio_lock; - int page_errors; - int is_async; - bool defer_completion; - bool should_dirty; - int io_error; - long unsigned int refcount; - struct bio *bio_list; - struct task_struct *waiter; - struct kiocb *iocb; - ssize_t result; - union { - struct page *pages[64]; - struct work_struct complete_work; - }; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 bvec_iter_all { - struct bio_vec bv; - int idx; - unsigned int done; -}; - -struct mpage_readpage_args { - struct bio *bio; - struct page *page; - unsigned int nr_pages; - bool is_readahead; - sector_t last_block_in_bio; - struct buffer_head map_bh; - long unsigned int first_logical_block; - get_block_t *get_block; -}; - -struct mpage_data { - struct bio *bio; - sector_t last_block_in_bio; - get_block_t *get_block; - unsigned int use_writepage; -}; - -typedef u32 nlink_t; - -typedef int (*proc_write_t)(struct file *, char *, size_t); - -struct proc_dir_entry { - atomic_t in_use; - refcount_t refcnt; - struct list_head pde_openers; - spinlock_t pde_unload_lock; - struct completion *pde_unload_completion; - const struct inode_operations *proc_iops; - union { - const struct proc_ops *proc_ops; - const struct file_operations *proc_dir_ops; - }; - const struct dentry_operations *proc_dops; - union { - const struct seq_operations *seq_ops; - int (*single_show)(struct seq_file *, void *); - }; - proc_write_t write; - void *data; - unsigned int state_size; - unsigned int low_ino; - nlink_t nlink; - kuid_t uid; - kgid_t gid; - loff_t size; - struct proc_dir_entry *parent; - struct rb_root subdir; - struct rb_node subdir_node; - char *name; - umode_t mode; - u8 flags; - u8 namelen; - char inline_name[0]; -}; - -union proc_op { - int (*proc_get_link)(struct dentry *, struct path *); - int (*proc_show)(struct seq_file *, struct pid_namespace *, struct pid *, struct task_struct *); - const char *lsm; -}; - -struct proc_inode { - struct pid *pid; - unsigned int fd; - union proc_op op; - struct proc_dir_entry *pde; - struct ctl_table_header *sysctl; - struct ctl_table *sysctl_entry; - struct hlist_node sibling_inodes; - const struct proc_ns_operations *ns_ops; - struct inode vfs_inode; -}; - -struct proc_fs_opts { - int flag; - const char *str; -}; - -struct fs_error_report { - int error; - struct inode *inode; - struct super_block *sb; -}; - -typedef __u32 blk_mq_req_flags_t; - -struct dax_device; - -struct iomap_page_ops; - -struct iomap { - u64 addr; - loff_t offset; - u64 length; - u16 type; - u16 flags; - struct block_device *bdev; - struct dax_device *dax_dev; - void *inline_data; - void *private; - const struct iomap_page_ops *page_ops; -}; - -struct iomap_page_ops { - int (*page_prepare)(struct inode *, loff_t, unsigned int); - void (*page_done)(struct inode *, loff_t, unsigned int, struct page *); -}; - -enum hctx_type { - HCTX_TYPE_DEFAULT = 0, - HCTX_TYPE_READ = 1, - HCTX_TYPE_POLL = 2, - HCTX_MAX_TYPES = 3, -}; - -struct decrypt_bh_ctx { - struct work_struct work; - struct buffer_head *bh; + struct rhash_lock_head *buckets[0]; }; -struct bh_lru { - struct buffer_head *bhs[16]; +struct rnd_state { + __u32 s1; + __u32 s2; + __u32 s3; + __u32 s4; }; -struct bh_accounting { - int nr; - int ratelimit; +enum xdp_action { + XDP_ABORTED = 0, + XDP_DROP = 1, + XDP_PASS = 2, + XDP_TX = 3, + XDP_REDIRECT = 4, }; -struct file_handle { - __u32 handle_bytes; - int handle_type; - unsigned char f_handle[0]; +enum bpf_jit_poke_reason { + BPF_POKE_REASON_TAIL_CALL = 0, }; -struct inotify_inode_mark { - struct fsnotify_mark fsn_mark; - int wd; +enum bpf_text_poke_type { + BPF_MOD_CALL = 0, + BPF_MOD_JUMP = 1, }; -struct inotify_event_info { - struct fsnotify_event fse; - u32 mask; - int wd; - u32 sync_cookie; - int name_len; - char name[0]; +enum xdp_mem_type { + MEM_TYPE_PAGE_SHARED = 0, + MEM_TYPE_PAGE_ORDER0 = 1, + MEM_TYPE_PAGE_POOL = 2, + MEM_TYPE_XSK_BUFF_POOL = 3, + MEM_TYPE_MAX = 4, }; -struct dnotify_struct { - struct dnotify_struct *dn_next; - __u32 dn_mask; - int dn_fd; - struct file *dn_filp; - fl_owner_t dn_owner; +struct xdp_cpumap_stats { + unsigned int redirect; + unsigned int pass; + unsigned int drop; }; -struct dnotify_mark { - struct fsnotify_mark fsn_mark; - struct dnotify_struct *dn; +struct bpf_prog_dummy { + struct bpf_prog prog; }; -enum { - FAN_EVENT_INIT = 0, - FAN_EVENT_REPORTED = 1, - FAN_EVENT_ANSWERED = 2, - FAN_EVENT_CANCELED = 3, -}; +typedef u64 (*btf_bpf_user_rnd_u32)(); -struct fanotify_fh { - u8 type; - u8 len; - u8 flags; - u8 pad; - unsigned char buf[0]; -}; +typedef u64 (*btf_bpf_get_raw_cpu_id)(); -struct fanotify_info { - u8 dir_fh_totlen; - u8 dir2_fh_totlen; - u8 file_fh_totlen; - u8 name_len; - u8 name2_len; - u8 pad[3]; - unsigned char buf[0]; +struct _bpf_dtab_netdev { + struct net_device *dev; }; -enum fanotify_event_type { - FANOTIFY_EVENT_TYPE_FID = 0, - FANOTIFY_EVENT_TYPE_FID_NAME = 1, - FANOTIFY_EVENT_TYPE_PATH = 2, - FANOTIFY_EVENT_TYPE_PATH_PERM = 3, - FANOTIFY_EVENT_TYPE_OVERFLOW = 4, - FANOTIFY_EVENT_TYPE_FS_ERROR = 5, - __FANOTIFY_EVENT_TYPE_NUM = 6, -}; +struct rhash_lock_head {}; -struct fanotify_event { - struct fsnotify_event fse; - struct hlist_node merge_list; - u32 mask; - struct { - unsigned int type: 3; - unsigned int hash: 29; - }; - struct pid *pid; -}; +struct zero_copy_allocator; -struct fanotify_fid_event { - struct fanotify_event fae; - __kernel_fsid_t fsid; - struct { - struct fanotify_fh object_fh; - unsigned char _inline_fh_buf[12]; +struct xdp_mem_allocator { + struct xdp_mem_info mem; + union { + void *allocator; + struct page_pool *page_pool; + struct zero_copy_allocator *zc_alloc; }; + struct rhash_head node; + struct callback_head rcu; }; -struct fanotify_name_event { - struct fanotify_event fae; - __kernel_fsid_t fsid; - struct fanotify_info info; +struct trace_event_raw_xdp_exception { + struct trace_entry ent; + int prog_id; + u32 act; + int ifindex; + char __data[0]; }; -struct fanotify_error_event { - struct fanotify_event fae; - s32 error; - u32 err_count; - __kernel_fsid_t fsid; - struct { - struct fanotify_fh object_fh; - unsigned char _inline_fh_buf[128]; - }; +struct trace_event_raw_xdp_bulk_tx { + struct trace_entry ent; + int ifindex; + u32 act; + int drops; + int sent; + int err; + char __data[0]; }; -struct fanotify_path_event { - struct fanotify_event fae; - struct path path; +struct trace_event_raw_xdp_redirect_template { + struct trace_entry ent; + int prog_id; + u32 act; + int ifindex; + int err; + int to_ifindex; + u32 map_id; + int map_index; + char __data[0]; }; -struct fanotify_perm_event { - struct fanotify_event fae; - struct path path; - short unsigned int response; - short unsigned int state; - int fd; +struct trace_event_raw_xdp_cpumap_kthread { + struct trace_entry ent; + int map_id; + u32 act; + int cpu; + unsigned int drops; + unsigned int processed; + int sched; + unsigned int xdp_pass; + unsigned int xdp_drop; + unsigned int xdp_redirect; + char __data[0]; }; -struct inotify_event { - __s32 wd; - __u32 mask; - __u32 cookie; - __u32 len; - char name[0]; +struct trace_event_raw_xdp_cpumap_enqueue { + struct trace_entry ent; + int map_id; + u32 act; + int cpu; + unsigned int drops; + unsigned int processed; + int to_cpu; + char __data[0]; }; -struct fanotify_event_metadata { - __u32 event_len; - __u8 vers; - __u8 reserved; - __u16 metadata_len; - __u64 mask; - __s32 fd; - __s32 pid; +struct trace_event_raw_xdp_devmap_xmit { + struct trace_entry ent; + int from_ifindex; + u32 act; + int to_ifindex; + int drops; + int sent; + int err; + char __data[0]; }; -struct fanotify_event_info_header { - __u8 info_type; - __u8 pad; - __u16 len; +struct trace_event_raw_mem_disconnect { + struct trace_entry ent; + const struct xdp_mem_allocator *xa; + u32 mem_id; + u32 mem_type; + const void *allocator; + char __data[0]; }; -struct fanotify_event_info_fid { - struct fanotify_event_info_header hdr; - __kernel_fsid_t fsid; - unsigned char handle[0]; +struct trace_event_raw_mem_connect { + struct trace_entry ent; + const struct xdp_mem_allocator *xa; + u32 mem_id; + u32 mem_type; + const void *allocator; + const struct xdp_rxq_info *rxq; + int ifindex; + char __data[0]; }; -struct fanotify_event_info_pidfd { - struct fanotify_event_info_header hdr; - __s32 pidfd; +struct trace_event_raw_mem_return_failed { + struct trace_entry ent; + const struct page *page; + u32 mem_id; + u32 mem_type; + char __data[0]; }; -struct fanotify_event_info_error { - struct fanotify_event_info_header hdr; - __s32 error; - __u32 error_count; -}; +struct trace_event_data_offsets_xdp_exception {}; -struct fanotify_response { - __s32 fd; - __u32 response; -}; +struct trace_event_data_offsets_xdp_bulk_tx {}; -struct epoll_event { - __poll_t events; - __u64 data; -}; +struct trace_event_data_offsets_xdp_redirect_template {}; -struct wake_irq; +struct trace_event_data_offsets_xdp_cpumap_kthread {}; -struct wakeup_source { - const char *name; - int id; - struct list_head entry; - spinlock_t lock; - struct wake_irq *wakeirq; - struct timer_list timer; - long unsigned int timer_expires; - ktime_t total_time; - ktime_t max_time; - ktime_t last_time; - ktime_t start_prevent_time; - ktime_t prevent_sleep_time; - long unsigned int event_count; - long unsigned int active_count; - long unsigned int relax_count; - long unsigned int expire_count; - long unsigned int wakeup_count; - struct device *dev; - bool active: 1; - bool autosleep_enabled: 1; -}; +struct trace_event_data_offsets_xdp_cpumap_enqueue {}; -struct epoll_filefd { - struct file *file; - int fd; -} __attribute__((packed)); +struct trace_event_data_offsets_xdp_devmap_xmit {}; -struct epitem; +struct trace_event_data_offsets_mem_disconnect {}; -struct eppoll_entry { - struct eppoll_entry *next; - struct epitem *base; - wait_queue_entry_t wait; - wait_queue_head_t *whead; -}; +struct trace_event_data_offsets_mem_connect {}; -struct eventpoll; +struct trace_event_data_offsets_mem_return_failed {}; -struct epitem { - union { - struct rb_node rbn; - struct callback_head rcu; - }; - struct list_head rdllink; - struct epitem *next; - struct epoll_filefd ffd; - struct eppoll_entry *pwqlist; - struct eventpoll *ep; - struct hlist_node fllink; - struct wakeup_source *ws; - struct epoll_event event; -}; +typedef void (*btf_trace_xdp_exception)(void *, const struct net_device *, const struct bpf_prog *, u32); -struct eventpoll { - struct mutex mtx; - wait_queue_head_t wq; - wait_queue_head_t poll_wait; - struct list_head rdllist; - rwlock_t lock; - struct rb_root_cached rbr; - struct epitem *ovflist; - struct wakeup_source *ws; - struct user_struct *user; - struct file *file; - u64 gen; - struct hlist_head refs; - unsigned int napi_id; +typedef void (*btf_trace_xdp_bulk_tx)(void *, const struct net_device *, int, int, int); + +typedef void (*btf_trace_xdp_redirect)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32); + +typedef void (*btf_trace_xdp_redirect_err)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32); + +typedef void (*btf_trace_xdp_redirect_map)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32); + +typedef void (*btf_trace_xdp_redirect_map_err)(void *, const struct net_device *, const struct bpf_prog *, const void *, int, enum bpf_map_type, u32, u32); + +typedef void (*btf_trace_xdp_cpumap_kthread)(void *, int, unsigned int, unsigned int, int, struct xdp_cpumap_stats *); + +typedef void (*btf_trace_xdp_cpumap_enqueue)(void *, int, unsigned int, unsigned int, int); + +typedef void (*btf_trace_xdp_devmap_xmit)(void *, const struct net_device *, const struct net_device *, int, int, int); + +typedef void (*btf_trace_mem_disconnect)(void *, const struct xdp_mem_allocator *); + +typedef void (*btf_trace_mem_connect)(void *, const struct xdp_mem_allocator *, const struct xdp_rxq_info *); + +typedef void (*btf_trace_mem_return_failed)(void *, const struct xdp_mem_info *, const struct page *); + +enum bpf_cmd { + BPF_MAP_CREATE = 0, + BPF_MAP_LOOKUP_ELEM = 1, + BPF_MAP_UPDATE_ELEM = 2, + BPF_MAP_DELETE_ELEM = 3, + BPF_MAP_GET_NEXT_KEY = 4, + BPF_PROG_LOAD = 5, + BPF_OBJ_PIN = 6, + BPF_OBJ_GET = 7, + BPF_PROG_ATTACH = 8, + BPF_PROG_DETACH = 9, + BPF_PROG_TEST_RUN = 10, + BPF_PROG_RUN = 10, + BPF_PROG_GET_NEXT_ID = 11, + BPF_MAP_GET_NEXT_ID = 12, + BPF_PROG_GET_FD_BY_ID = 13, + BPF_MAP_GET_FD_BY_ID = 14, + BPF_OBJ_GET_INFO_BY_FD = 15, + BPF_PROG_QUERY = 16, + BPF_RAW_TRACEPOINT_OPEN = 17, + BPF_BTF_LOAD = 18, + BPF_BTF_GET_FD_BY_ID = 19, + BPF_TASK_FD_QUERY = 20, + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 21, + BPF_MAP_FREEZE = 22, + BPF_BTF_GET_NEXT_ID = 23, + BPF_MAP_LOOKUP_BATCH = 24, + BPF_MAP_LOOKUP_AND_DELETE_BATCH = 25, + BPF_MAP_UPDATE_BATCH = 26, + BPF_MAP_DELETE_BATCH = 27, + BPF_LINK_CREATE = 28, + BPF_LINK_UPDATE = 29, + BPF_LINK_GET_FD_BY_ID = 30, + BPF_LINK_GET_NEXT_ID = 31, + BPF_ENABLE_STATS = 32, + BPF_ITER_CREATE = 33, + BPF_LINK_DETACH = 34, + BPF_PROG_BIND_MAP = 35, }; -struct ep_pqueue { - poll_table pt; - struct epitem *epi; +enum { + BPF_ANY = 0, + BPF_NOEXIST = 1, + BPF_EXIST = 2, + BPF_F_LOCK = 4, }; -struct epitems_head { - struct hlist_head epitems; - struct epitems_head *next; +enum { + BPF_F_NO_PREALLOC = 1, + BPF_F_NO_COMMON_LRU = 2, + BPF_F_NUMA_NODE = 4, + BPF_F_RDONLY = 8, + BPF_F_WRONLY = 16, + BPF_F_STACK_BUILD_ID = 32, + BPF_F_ZERO_SEED = 64, + BPF_F_RDONLY_PROG = 128, + BPF_F_WRONLY_PROG = 256, + BPF_F_CLONE = 512, + BPF_F_MMAPABLE = 1024, + BPF_F_PRESERVE_ELEMS = 2048, + BPF_F_INNER_MAP = 4096, }; -struct timerfd_ctx { - union { - struct hrtimer tmr; - struct alarm alarm; - } t; - ktime_t tintv; - ktime_t moffs; - wait_queue_head_t wqh; - u64 ticks; - int clockid; - short unsigned int expired; - short unsigned int settime_flags; - struct callback_head rcu; - struct list_head clist; - spinlock_t cancel_lock; - bool might_cancel; +enum bpf_stats_type { + BPF_STATS_RUN_TIME = 0, }; -struct signalfd_siginfo { - __u32 ssi_signo; - __s32 ssi_errno; - __s32 ssi_code; - __u32 ssi_pid; - __u32 ssi_uid; - __s32 ssi_fd; - __u32 ssi_tid; - __u32 ssi_band; - __u32 ssi_overrun; - __u32 ssi_trapno; - __s32 ssi_status; - __s32 ssi_int; - __u64 ssi_ptr; - __u64 ssi_utime; - __u64 ssi_stime; - __u64 ssi_addr; - __u16 ssi_addr_lsb; - __u16 __pad2; - __s32 ssi_syscall; - __u64 ssi_call_addr; - __u32 ssi_arch; - __u8 __pad[28]; +struct bpf_prog_info { + __u32 type; + __u32 id; + __u8 tag[8]; + __u32 jited_prog_len; + __u32 xlated_prog_len; + __u64 jited_prog_insns; + __u64 xlated_prog_insns; + __u64 load_time; + __u32 created_by_uid; + __u32 nr_map_ids; + __u64 map_ids; + char name[16]; + __u32 ifindex; + __u32 gpl_compatible: 1; + __u64 netns_dev; + __u64 netns_ino; + __u32 nr_jited_ksyms; + __u32 nr_jited_func_lens; + __u64 jited_ksyms; + __u64 jited_func_lens; + __u32 btf_id; + __u32 func_info_rec_size; + __u64 func_info; + __u32 nr_func_info; + __u32 nr_line_info; + __u64 line_info; + __u64 jited_line_info; + __u32 nr_jited_line_info; + __u32 line_info_rec_size; + __u32 jited_line_info_rec_size; + __u32 nr_prog_tags; + __u64 prog_tags; + __u64 run_time_ns; + __u64 run_cnt; + __u64 recursion_misses; }; -struct signalfd_ctx { - sigset_t sigmask; +struct bpf_map_info { + __u32 type; + __u32 id; + __u32 key_size; + __u32 value_size; + __u32 max_entries; + __u32 map_flags; + char name[16]; + __u32 ifindex; + __u32 btf_vmlinux_value_type_id; + __u64 netns_dev; + __u64 netns_ino; + __u32 btf_id; + __u32 btf_key_type_id; + __u32 btf_value_type_id; }; -struct eventfd_ctx { - struct kref kref; - wait_queue_head_t wqh; - __u64 count; - unsigned int flags; - int id; +struct bpf_btf_info { + __u64 btf; + __u32 btf_size; + __u32 id; + __u64 name; + __u32 name_len; + __u32 kernel_btf; }; -struct kioctx; +typedef sockptr_t bpfptr_t; -struct kioctx_table { - struct callback_head rcu; - unsigned int nr; - struct kioctx *table[0]; +struct bpf_verifier_log { + u32 level; + char kbuf[1024]; + char *ubuf; + u32 len_used; + u32 len_total; }; -typedef __kernel_ulong_t aio_context_t; - -enum { - IOCB_CMD_PREAD = 0, - IOCB_CMD_PWRITE = 1, - IOCB_CMD_FSYNC = 2, - IOCB_CMD_FDSYNC = 3, - IOCB_CMD_POLL = 5, - IOCB_CMD_NOOP = 6, - IOCB_CMD_PREADV = 7, - IOCB_CMD_PWRITEV = 8, +struct bpf_subprog_info { + u32 start; + u32 linfo_idx; + u16 stack_depth; + bool has_tail_call; + bool tail_call_reachable; + bool has_ld_abs; + bool is_async_cb; }; -struct io_event { - __u64 data; - __u64 obj; - __s64 res; - __s64 res2; +struct bpf_id_pair { + u32 old; + u32 cur; }; -struct iocb { - __u64 aio_data; - __kernel_rwf_t aio_rw_flags; - __u32 aio_key; - __u16 aio_lio_opcode; - __s16 aio_reqprio; - __u32 aio_fildes; - __u64 aio_buf; - __u64 aio_nbytes; - __s64 aio_offset; - __u64 aio_reserved2; - __u32 aio_flags; - __u32 aio_resfd; -}; +struct bpf_verifier_stack_elem; -typedef u32 compat_aio_context_t; +struct bpf_verifier_state; -typedef int kiocb_cancel_fn(struct kiocb *); +struct bpf_verifier_state_list; -struct aio_ring { - unsigned int id; - unsigned int nr; - unsigned int head; - unsigned int tail; - unsigned int magic; - unsigned int compat_features; - unsigned int incompat_features; - unsigned int header_length; - struct io_event io_events[0]; +struct bpf_insn_aux_data; + +struct bpf_verifier_env { + u32 insn_idx; + u32 prev_insn_idx; + struct bpf_prog *prog; + const struct bpf_verifier_ops *ops; + struct bpf_verifier_stack_elem *head; + int stack_size; + bool strict_alignment; + bool test_state_freq; + struct bpf_verifier_state *cur_state; + struct bpf_verifier_state_list **explored_states; + struct bpf_verifier_state_list *free_list; + struct bpf_map *used_maps[64]; + struct btf_mod_pair used_btfs[64]; + u32 used_map_cnt; + u32 used_btf_cnt; + u32 id_gen; + bool explore_alu_limits; + bool allow_ptr_leaks; + bool allow_uninit_stack; + bool allow_ptr_to_map_access; + bool bpf_capable; + bool bypass_spec_v1; + bool bypass_spec_v4; + bool seen_direct_write; + struct bpf_insn_aux_data *insn_aux_data; + const struct bpf_line_info *prev_linfo; + struct bpf_verifier_log log; + struct bpf_subprog_info subprog_info[257]; + struct bpf_id_pair idmap_scratch[75]; + struct { + int *insn_state; + int *insn_stack; + int cur_stack; + } cfg; + u32 pass_cnt; + u32 subprog_cnt; + u32 prev_insn_processed; + u32 insn_processed; + u32 prev_jmps_processed; + u32 jmps_processed; + u64 verification_time; + u32 max_states_per_insn; + u32 total_states; + u32 peak_states; + u32 longest_mark_read_walk; + bpfptr_t fd_array; + char type_str_buf[64]; }; -struct kioctx_cpu; +struct tnum { + u64 value; + u64 mask; +}; -struct ctx_rq_wait; +enum bpf_reg_liveness { + REG_LIVE_NONE = 0, + REG_LIVE_READ32 = 1, + REG_LIVE_READ64 = 2, + REG_LIVE_READ = 3, + REG_LIVE_WRITTEN = 4, + REG_LIVE_DONE = 8, +}; -struct kioctx { - struct percpu_ref users; - atomic_t dead; - struct percpu_ref reqs; - long unsigned int user_id; - struct kioctx_cpu *cpu; - unsigned int req_batch; - unsigned int max_reqs; - unsigned int nr_events; - long unsigned int mmap_base; - long unsigned int mmap_size; - struct page **ring_pages; - long int nr_pages; - struct rcu_work free_rwork; - struct ctx_rq_wait *rq_wait; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct { - atomic_t reqs_available; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - 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 { - spinlock_t ctx_lock; - struct list_head active_reqs; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 { - struct mutex ring_lock; - wait_queue_head_t wait; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 { - unsigned int tail; - unsigned int completed_events; - spinlock_t completion_lock; - 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; - long: 64; - long: 64; - long: 64; - 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 bpf_reg_state { + enum bpf_reg_type type; + s32 off; + union { + int range; + struct { + struct bpf_map *map_ptr; + u32 map_uid; + }; + struct { + struct btf *btf; + u32 btf_id; + }; + u32 mem_size; + struct { + long unsigned int raw1; + long unsigned int raw2; + } raw; + u32 subprogno; }; - struct page *internal_pages[8]; - struct file *aio_ring_file; - unsigned int id; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; + u32 id; + u32 ref_obj_id; + struct tnum var_off; + s64 smin_value; + s64 smax_value; + u64 umin_value; + u64 umax_value; + s32 s32_min_value; + s32 s32_max_value; + u32 u32_min_value; + u32 u32_max_value; + struct bpf_reg_state *parent; + u32 frameno; + s32 subreg_def; + enum bpf_reg_liveness live; + bool precise; }; -struct kioctx_cpu { - unsigned int reqs_available; -}; +struct bpf_reference_state; -struct ctx_rq_wait { - struct completion comp; - atomic_t count; +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 fsync_iocb { - struct file *file; - struct work_struct work; - bool datasync; - struct cred *creds; +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 poll_iocb { +struct bpf_link_primer { + struct bpf_link *link; struct file *file; - struct wait_queue_head *head; - __poll_t events; - bool cancelled; - bool work_scheduled; - bool work_need_resched; - struct wait_queue_entry wait; - struct work_struct work; + int fd; + u32 id; }; -struct aio_kiocb { - union { - struct file *ki_filp; - struct kiocb rw; - struct fsync_iocb fsync; - struct poll_iocb poll; - }; - struct kioctx *ki_ctx; - kiocb_cancel_fn *ki_cancel; - struct io_event ki_res; - struct list_head ki_list; - refcount_t ki_refcnt; - struct eventfd_ctx *ki_eventfd; +struct bpf_stack_state { + struct bpf_reg_state spilled_ptr; + u8 slot_type[8]; }; -struct aio_poll_table { - struct poll_table_struct pt; - struct aio_kiocb *iocb; - bool queued; - int error; +struct bpf_reference_state { + int id; + int insn_idx; + int callback_ref; }; -struct __aio_sigset { - const sigset_t *sigmask; - size_t sigsetsize; +struct bpf_idx_pair { + u32 prev_idx; + u32 idx; }; -struct __compat_aio_sigset { - compat_uptr_t sigmask; - compat_size_t sigsetsize; +struct bpf_verifier_state { + struct bpf_func_state *frame[8]; + struct bpf_verifier_state *parent; + u32 branches; + u32 insn_idx; + u32 curframe; + u32 active_spin_lock; + bool speculative; + u32 first_insn_idx; + u32 last_insn_idx; + struct bpf_idx_pair *jmp_history; + u32 jmp_history_cnt; }; -struct userfaultfd_ctx { - wait_queue_head_t fault_pending_wqh; - wait_queue_head_t fault_wqh; - wait_queue_head_t fd_wqh; - wait_queue_head_t event_wqh; - seqcount_spinlock_t refile_seq; - refcount_t refcount; - unsigned int flags; - unsigned int features; - bool released; - atomic_t mmap_changing; - struct mm_struct *mm; +struct bpf_verifier_state_list { + struct bpf_verifier_state state; + struct bpf_verifier_state_list *next; + int miss_cnt; + int hit_cnt; }; -struct uffd_msg { - __u8 event; - __u8 reserved1; - __u16 reserved2; - __u32 reserved3; +struct bpf_insn_aux_data { union { + enum bpf_reg_type ptr_type; + long unsigned int map_ptr_state; + s32 call_imm; + u32 alu_limit; struct { - __u64 flags; - __u64 address; - union { - __u32 ptid; - } feat; - } pagefault; - struct { - __u32 ufd; - } fork; - struct { - __u64 from; - __u64 to; - __u64 len; - } remap; - struct { - __u64 start; - __u64 end; - } remove; + u32 map_index; + u32 map_off; + }; struct { - __u64 reserved1; - __u64 reserved2; - __u64 reserved3; - } reserved; - } arg; + enum bpf_reg_type reg_type; + union { + struct { + struct btf *btf; + u32 btf_id; + }; + u32 mem_size; + }; + } btf_var; + }; + u64 map_key_state; + int ctx_field_size; + u32 seen; + bool sanitize_stack_spill; + bool zext_dst; + u8 alu_state; + unsigned int orig_idx; + bool prune_point; }; -struct uffdio_api { - __u64 api; - __u64 features; - __u64 ioctls; +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, }; -struct uffdio_range { - __u64 start; - __u64 len; +enum bpf_audit { + BPF_AUDIT_LOAD = 0, + BPF_AUDIT_UNLOAD = 1, + BPF_AUDIT_MAX = 2, }; -struct uffdio_register { - struct uffdio_range range; - __u64 mode; - __u64 ioctls; +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 uffdio_copy { - __u64 dst; - __u64 src; - __u64 len; - __u64 mode; - __s64 copy; +struct bpf_raw_tp_link { + struct bpf_link link; + struct bpf_raw_event_map *btp; }; -struct uffdio_zeropage { - struct uffdio_range range; - __u64 mode; - __s64 zeropage; +struct bpf_perf_link { + struct bpf_link link; + struct file *perf_file; }; -struct uffdio_writeprotect { - struct uffdio_range range; - __u64 mode; -}; +typedef u64 (*btf_bpf_sys_bpf)(int, void *, u32); -struct uffdio_continue { - struct uffdio_range range; - __u64 mode; - __s64 mapped; +typedef u64 (*btf_bpf_sys_close)(u32); + +struct btf_member { + __u32 name_off; + __u32 type; + __u32 offset; }; -struct userfaultfd_fork_ctx { - struct userfaultfd_ctx *orig; - struct userfaultfd_ctx *new; - struct list_head list; +struct btf_param { + __u32 name_off; + __u32 type; }; -struct userfaultfd_unmap_ctx { - struct userfaultfd_ctx *ctx; - long unsigned int start; - long unsigned int end; - struct list_head list; +enum btf_func_linkage { + BTF_FUNC_STATIC = 0, + BTF_FUNC_GLOBAL = 1, + BTF_FUNC_EXTERN = 2, }; -struct userfaultfd_wait_queue { - struct uffd_msg msg; - wait_queue_entry_t wq; - struct userfaultfd_ctx *ctx; - bool waken; +struct btf_var_secinfo { + __u32 type; + __u32 offset; + __u32 size; }; -struct userfaultfd_wake_range { - long unsigned int start; - long unsigned int len; +enum sk_action { + SK_DROP = 0, + SK_PASS = 1, }; -enum { - IO_WQ_BOUND = 0, - IO_WQ_UNBOUND = 1, +struct bpf_kfunc_desc { + struct btf_func_model func_model; + u32 func_id; + s32 imm; }; -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 bpf_kfunc_desc_tab { + struct bpf_kfunc_desc descs[256]; + u32 nr_descs; }; -enum io_wq_cancel { - IO_WQ_CANCEL_OK = 0, - IO_WQ_CANCEL_RUNNING = 1, - IO_WQ_CANCEL_NOTFOUND = 2, +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 io_wq_work_node { - struct io_wq_work_node *next; +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 io_wq_work_list { - struct io_wq_work_node *first; - struct io_wq_work_node *last; +struct bpf_verifier_stack_elem { + struct bpf_verifier_state st; + int insn_idx; + int prev_insn_idx; + struct bpf_verifier_stack_elem *next; + u32 log_pos; }; -struct io_wq_work { - struct io_wq_work_node list; - unsigned int flags; +enum { + BTF_SOCK_TYPE_INET = 0, + BTF_SOCK_TYPE_INET_CONN = 1, + BTF_SOCK_TYPE_INET_REQ = 2, + BTF_SOCK_TYPE_INET_TW = 3, + BTF_SOCK_TYPE_REQ = 4, + BTF_SOCK_TYPE_SOCK = 5, + BTF_SOCK_TYPE_SOCK_COMMON = 6, + BTF_SOCK_TYPE_TCP = 7, + BTF_SOCK_TYPE_TCP_REQ = 8, + BTF_SOCK_TYPE_TCP_TW = 9, + BTF_SOCK_TYPE_TCP6 = 10, + BTF_SOCK_TYPE_UDP = 11, + BTF_SOCK_TYPE_UDP6 = 12, + BTF_SOCK_TYPE_UNIX = 13, + MAX_BTF_SOCK_TYPE = 14, }; -typedef struct io_wq_work *free_work_fn(struct io_wq_work *); +typedef void (*bpf_insn_print_t)(void *, const char *, ...); -typedef void io_wq_work_fn(struct io_wq_work *); +typedef const char * (*bpf_insn_revmap_call_t)(void *, const struct bpf_insn *); -struct io_wq_hash { - refcount_t refs; - long unsigned int map; - struct wait_queue_head wait; +typedef const char * (*bpf_insn_print_imm_t)(void *, const struct bpf_insn *, __u64); + +struct bpf_insn_cbs { + bpf_insn_print_t cb_print; + bpf_insn_revmap_call_t cb_call; + bpf_insn_print_imm_t cb_imm; + void *private_data; }; -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 bpf_call_arg_meta { + struct bpf_map *map_ptr; + bool raw_mode; + bool pkt_access; + int regno; + int access_size; + 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; }; -typedef bool work_cancel_fn(struct io_wq_work *, void *); +enum reg_arg_type { + SRC_OP = 0, + DST_OP = 1, + DST_OP_NO_MARK = 2, +}; -enum { - IO_WORKER_F_UP = 1, - IO_WORKER_F_RUNNING = 2, - IO_WORKER_F_FREE = 4, - IO_WORKER_F_BOUND = 8, +enum stack_access_src { + ACCESS_DIRECT = 1, + ACCESS_HELPER = 2, }; -enum { - IO_WQ_BIT_EXIT = 0, +struct bpf_reg_types { + const enum bpf_reg_type types[10]; + u32 *btf_id; }; enum { - IO_ACCT_STALLED_BIT = 0, + AT_PKT_END = 4294967295, + BEYOND_PKT_END = 4294967294, }; -struct io_wqe; +typedef int (*set_callee_state_fn)(struct bpf_verifier_env *, struct bpf_func_state *, struct bpf_func_state *, int); -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; - struct io_wq_work *next_work; - raw_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; - }; +enum { + REASON_BOUNDS = 4294967295, + REASON_TYPE = 4294967294, + REASON_PATHS = 4294967293, + REASON_LIMIT = 4294967292, + REASON_STACK = 4294967291, }; -struct io_wqe_acct { - unsigned int nr_workers; - unsigned int max_workers; - int index; - atomic_t nr_running; - raw_spinlock_t lock; - struct io_wq_work_list work_list; - long unsigned int flags; +struct bpf_sanitize_info { + struct bpf_insn_aux_data aux; + bool mask_to_left; }; -struct io_wq; - -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; +enum { + DISCOVERED = 16, + EXPLORED = 32, + FALLTHROUGH = 1, + BRANCH = 2, }; enum { - IO_WQ_ACCT_BOUND = 0, - IO_WQ_ACCT_UNBOUND = 1, - IO_WQ_ACCT_NR = 2, + DONE_EXPLORING = 0, + KEEP_EXPLORING = 1, }; -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]; +struct tree_descr { + const char *name; + const struct file_operations *ops; + int mode; }; -struct io_cb_cancel_data { - work_cancel_fn *fn; - void *data; - int nr_running; - int nr_pending; - bool cancel_all; +struct bpf_preload_info { + char link_name[16]; + int link_id; }; -struct online_data { - unsigned int cpu; - bool online; +struct bpf_preload_ops { + struct umd_info info; + int (*preload)(struct bpf_preload_info *); + int (*finish)(); + struct module *owner; }; -typedef long unsigned int dax_entry_t; - -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 *); +enum bpf_type { + BPF_TYPE_UNSPEC = 0, + BPF_TYPE_PROG = 1, + BPF_TYPE_MAP = 2, + BPF_TYPE_LINK = 3, }; -struct iomap_iter { - struct inode *inode; - loff_t pos; - u64 len; - s64 processed; - unsigned int flags; - struct iomap iomap; - struct iomap srcmap; +struct map_iter { + void *key; + bool done; }; -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]; +enum { + OPT_MODE = 0, }; -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 bpf_mount_opts { + umode_t mode; }; -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 bpf_spin_lock { + __u32 val; }; -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 bpf_pidns_info { + __u32 pid; + __u32 tgid; }; -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 bpf_cg_run_ctx { + struct bpf_run_ctx run_ctx; + const struct bpf_prog_array_item *prog_item; }; -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]; -}; +typedef u64 (*btf_bpf_map_lookup_elem)(struct bpf_map *, void *); -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]; -}; +typedef u64 (*btf_bpf_map_update_elem)(struct bpf_map *, void *, void *, u64); -struct trace_event_data_offsets_dax_pmd_fault_class {}; +typedef u64 (*btf_bpf_map_delete_elem)(struct bpf_map *, void *); -struct trace_event_data_offsets_dax_pmd_load_hole_class {}; +typedef u64 (*btf_bpf_map_push_elem)(struct bpf_map *, void *, u64); -struct trace_event_data_offsets_dax_pmd_insert_mapping_class {}; +typedef u64 (*btf_bpf_map_pop_elem)(struct bpf_map *, void *); -struct trace_event_data_offsets_dax_pte_fault_class {}; +typedef u64 (*btf_bpf_map_peek_elem)(struct bpf_map *, void *); -struct trace_event_data_offsets_dax_insert_mapping {}; +typedef u64 (*btf_bpf_get_smp_processor_id)(); -struct trace_event_data_offsets_dax_writeback_range_class {}; +typedef u64 (*btf_bpf_get_numa_node_id)(); -struct trace_event_data_offsets_dax_writeback_one {}; +typedef u64 (*btf_bpf_ktime_get_ns)(); -typedef void (*btf_trace_dax_pmd_fault)(void *, struct inode *, struct vm_fault *, long unsigned int, int); +typedef u64 (*btf_bpf_ktime_get_boot_ns)(); -typedef void (*btf_trace_dax_pmd_fault_done)(void *, struct inode *, struct vm_fault *, long unsigned int, int); +typedef u64 (*btf_bpf_ktime_get_coarse_ns)(); -typedef void (*btf_trace_dax_pmd_load_hole)(void *, struct inode *, struct vm_fault *, struct page *, void *); +typedef u64 (*btf_bpf_get_current_pid_tgid)(); -typedef void (*btf_trace_dax_pmd_load_hole_fallback)(void *, struct inode *, struct vm_fault *, struct page *, void *); +typedef u64 (*btf_bpf_get_current_uid_gid)(); -typedef void (*btf_trace_dax_pmd_insert_mapping)(void *, struct inode *, struct vm_fault *, long int, pfn_t, void *); +typedef u64 (*btf_bpf_get_current_comm)(char *, u32); -typedef void (*btf_trace_dax_pte_fault)(void *, struct inode *, struct vm_fault *, int); +typedef u64 (*btf_bpf_spin_lock)(struct bpf_spin_lock *); -typedef void (*btf_trace_dax_pte_fault_done)(void *, struct inode *, struct vm_fault *, int); +typedef u64 (*btf_bpf_spin_unlock)(struct bpf_spin_lock *); -typedef void (*btf_trace_dax_load_hole)(void *, struct inode *, struct vm_fault *, int); +typedef u64 (*btf_bpf_jiffies64)(); -typedef void (*btf_trace_dax_insert_pfn_mkwrite_no_entry)(void *, struct inode *, struct vm_fault *, int); +typedef u64 (*btf_bpf_get_current_cgroup_id)(); -typedef void (*btf_trace_dax_insert_pfn_mkwrite)(void *, struct inode *, struct vm_fault *, int); +typedef u64 (*btf_bpf_get_current_ancestor_cgroup_id)(int); -typedef void (*btf_trace_dax_insert_mapping)(void *, struct inode *, struct vm_fault *, void *); +typedef u64 (*btf_bpf_get_local_storage)(struct bpf_map *, u64); -typedef void (*btf_trace_dax_writeback_range)(void *, struct inode *, long unsigned int, long unsigned int); +typedef u64 (*btf_bpf_strtol)(const char *, size_t, u64, long int *); -typedef void (*btf_trace_dax_writeback_range_done)(void *, struct inode *, long unsigned int, long unsigned int); +typedef u64 (*btf_bpf_strtoul)(const char *, size_t, u64, long unsigned int *); + +typedef u64 (*btf_bpf_get_ns_current_pid_tgid)(u64, u64, struct bpf_pidns_info *, u32); + +typedef u64 (*btf_bpf_event_output_data)(void *, struct bpf_map *, u64, void *, u64); + +typedef u64 (*btf_bpf_copy_from_user)(void *, u32, const void *); + +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; + } map; +}; + +typedef int (*bpf_iter_attach_target_t)(struct bpf_prog *, union bpf_iter_link_info *, struct bpf_iter_aux_info *); + +typedef void (*bpf_iter_detach_target_t)(struct bpf_iter_aux_info *); + +typedef void (*bpf_iter_show_fdinfo_t)(const struct bpf_iter_aux_info *, struct seq_file *); + +typedef int (*bpf_iter_fill_link_info_t)(const struct bpf_iter_aux_info *, struct bpf_link_info *); + +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, +}; + +struct bpf_iter_reg { + const char *target; + bpf_iter_attach_target_t attach_target; + bpf_iter_detach_target_t detach_target; + bpf_iter_show_fdinfo_t show_fdinfo; + bpf_iter_fill_link_info_t fill_link_info; + bpf_iter_get_func_proto_t get_func_proto; + u32 ctx_arg_info_size; + u32 feature; + struct bpf_ctx_arg_aux ctx_arg_info[2]; + const struct bpf_iter_seq_info *seq_info; +}; + +struct bpf_iter_meta { + union { + struct seq_file *seq; + }; + u64 session_id; + u64 seq_num; +}; + +struct bpf_iter_target_info { + struct list_head list; + const struct bpf_iter_reg *reg_info; + u32 btf_id; +}; + +struct bpf_iter_link { + struct bpf_link link; + struct bpf_iter_aux_info aux; + struct bpf_iter_target_info *tinfo; +}; + +struct bpf_iter_priv_data { + struct bpf_iter_target_info *tinfo; + const struct bpf_iter_seq_info *seq_info; + struct bpf_prog *prog; + u64 session_id; + u64 seq_num; + bool done_stop; + long: 0; + u8 target_private[0]; +}; -typedef void (*btf_trace_dax_writeback_one)(void *, struct inode *, long unsigned int, long unsigned int); +typedef u64 (*btf_bpf_for_each_map_elem)(struct bpf_map *, void *, void *, u64); -struct exceptional_entry_key { - struct xarray *xa; - long unsigned int entry_start; +struct bpf_iter_seq_map_info { + u32 map_id; }; -struct wait_exceptional_entry_queue { - wait_queue_entry_t wait; - struct exceptional_entry_key key; +struct bpf_iter__bpf_map { + union { + struct bpf_iter_meta *meta; + }; + union { + struct bpf_map *map; + }; }; -enum dax_wake_mode { - WAKE_ALL = 0, - WAKE_NEXT = 1, +struct bpf_iter_seq_task_common { + struct pid_namespace *ns; }; -struct xa_limit { - u32 max; - u32 min; +struct bpf_iter_seq_task_info { + struct bpf_iter_seq_task_common common; + u32 tid; }; -struct io_wq; - -struct io_ring_ctx; +struct bpf_iter__task { + union { + struct bpf_iter_meta *meta; + }; + union { + struct task_struct *task; + }; +}; -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 io_wq_work_list prior_task_list; - struct callback_head task_work; - struct file **registered_rings; - bool task_running; +struct bpf_iter_seq_task_file_info { + struct bpf_iter_seq_task_common common; + struct task_struct *task; + u32 tid; + u32 fd; }; -struct iov_iter_state { - size_t iov_offset; - size_t count; - long unsigned int nr_segs; +struct bpf_iter__task_file { + union { + struct bpf_iter_meta *meta; + }; + union { + struct task_struct *task; + }; + u32 fd; + union { + struct file *file; + }; }; -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 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; }; -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 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 scm_fp_list { - short int count; - short int max; - struct user_struct *user; - struct file *fp[253]; +struct bpf_iter__task_vma { + union { + struct bpf_iter_meta *meta; + }; + union { + struct task_struct *task; + }; + union { + struct vm_area_struct *vma; + }; }; -struct unix_skb_parms { - struct pid *pid; - kuid_t uid; - kgid_t gid; - struct scm_fp_list *fp; - u32 secid; - u32 consumed; +struct bpf_iter_seq_prog_info { + u32 prog_id; }; -struct io_uring_sqe { - __u8 opcode; - __u8 flags; - __u16 ioprio; - __s32 fd; +struct bpf_iter__bpf_prog { union { - __u64 off; - __u64 addr2; + struct bpf_iter_meta *meta; }; union { - __u64 addr; - __u64 splice_off_in; + struct bpf_prog *prog; }; - __u32 len; +}; + +struct bpf_iter__bpf_map_elem { 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; + struct bpf_iter_meta *meta; }; - __u64 user_data; union { - __u16 buf_index; - __u16 buf_group; + struct bpf_map *map; }; - __u16 personality; union { - __s32 splice_fd_in; - __u32 file_index; + void *key; + }; + union { + void *value; }; - __u64 __pad2[2]; }; -enum { - IOSQE_FIXED_FILE_BIT = 0, - IOSQE_IO_DRAIN_BIT = 1, - IOSQE_IO_LINK_BIT = 2, - IOSQE_IO_HARDLINK_BIT = 3, - IOSQE_ASYNC_BIT = 4, - IOSQE_BUFFER_SELECT_BIT = 5, - IOSQE_CQE_SKIP_SUCCESS_BIT = 6, -}; +struct pcpu_freelist_node; -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_MSG_RING = 40, - IORING_OP_LAST = 41, +struct pcpu_freelist_head { + struct pcpu_freelist_node *first; + raw_spinlock_t lock; }; -struct io_uring_cqe { - __u64 user_data; - __s32 res; - __u32 flags; +struct pcpu_freelist_node { + struct pcpu_freelist_node *next; }; -enum { - IORING_CQE_BUFFER_SHIFT = 16, +struct pcpu_freelist { + struct pcpu_freelist_head *freelist; + struct pcpu_freelist_head extralist; }; -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 bpf_lru_node { + struct list_head list; + u16 cpu; + u8 type; + u8 ref; }; -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 bpf_lru_list { + struct list_head lists[3]; + unsigned int counts[2]; + struct list_head *next_inactive_rotation; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + raw_spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 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 bpf_lru_locallist { + struct list_head lists[2]; + u16 next_steal; + raw_spinlock_t lock; }; -enum { - IORING_REGISTER_BUFFERS = 0, - IORING_UNREGISTER_BUFFERS = 1, - IORING_REGISTER_FILES = 2, - IORING_UNREGISTER_FILES = 3, - IORING_REGISTER_EVENTFD = 4, - IORING_UNREGISTER_EVENTFD = 5, - IORING_REGISTER_FILES_UPDATE = 6, - IORING_REGISTER_EVENTFD_ASYNC = 7, - IORING_REGISTER_PROBE = 8, - IORING_REGISTER_PERSONALITY = 9, - IORING_UNREGISTER_PERSONALITY = 10, - IORING_REGISTER_RESTRICTIONS = 11, - IORING_REGISTER_ENABLE_RINGS = 12, - IORING_REGISTER_FILES2 = 13, - IORING_REGISTER_FILES_UPDATE2 = 14, - IORING_REGISTER_BUFFERS2 = 15, - IORING_REGISTER_BUFFERS_UPDATE = 16, - IORING_REGISTER_IOWQ_AFF = 17, - IORING_UNREGISTER_IOWQ_AFF = 18, - IORING_REGISTER_IOWQ_MAX_WORKERS = 19, - IORING_REGISTER_RING_FDS = 20, - IORING_UNREGISTER_RING_FDS = 21, - IORING_REGISTER_LAST = 22, +struct bpf_common_lru { + struct bpf_lru_list lru_list; + struct bpf_lru_locallist *local_list; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 io_uring_rsrc_register { - __u32 nr; - __u32 resv; - __u64 resv2; - __u64 data; - __u64 tags; -}; +typedef bool (*del_from_htab_func)(void *, struct bpf_lru_node *); -struct io_uring_rsrc_update { - __u32 offset; - __u32 resv; - __u64 data; +struct bpf_lru { + union { + struct bpf_common_lru common_lru; + struct bpf_lru_list *percpu_lru; + }; + del_from_htab_func del_from_htab; + void *del_arg; + unsigned int hash_offset; + unsigned int nr_scans; + bool percpu; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 io_uring_rsrc_update2 { - __u32 offset; - __u32 resv; - __u64 data; - __u64 tags; - __u32 nr; - __u32 resv2; +struct bucket { + struct hlist_nulls_head head; + union { + raw_spinlock_t raw_lock; + spinlock_t lock; + }; }; -struct io_uring_probe_op { - __u8 op; - __u8 resv; - __u16 flags; - __u32 resv2; -}; +struct htab_elem; -struct io_uring_probe { - __u8 last_op; - __u8 ops_len; - __u16 resv; - __u32 resv2[3]; - struct io_uring_probe_op ops[0]; +struct bpf_htab { + struct bpf_map map; + struct bucket *buckets; + void *elems; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 pcpu_freelist freelist; + struct bpf_lru lru; + }; + struct htab_elem **extra_elems; + atomic_t count; + u32 n_buckets; + u32 elem_size; + u32 hashrnd; + struct lock_class_key lockdep_key; + int *map_locked[8]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 io_uring_restriction { - __u16 opcode; +struct htab_elem { union { - __u8 register_op; - __u8 sqe_op; - __u8 sqe_flags; + struct hlist_nulls_node hash_node; + struct { + void *padding; + union { + struct bpf_htab *htab; + struct pcpu_freelist_node fnode; + struct htab_elem *batch_flink; + }; + }; }; - __u8 resv; - __u32 resv2[3]; -}; - -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 io_uring_getevents_arg { - __u64 sigmask; - __u32 sigmask_sz; - __u32 pad; - __u64 ts; -}; - -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]; + union { + struct callback_head rcu; + struct bpf_lru_node lru_node; + }; + u32 hash; + long: 0; + char key[0]; }; -struct trace_event_raw_io_uring_register { - struct trace_entry ent; - void *ctx; - unsigned int opcode; - unsigned int nr_files; - unsigned int nr_bufs; - long int ret; - char __data[0]; +struct bpf_iter_seq_hash_map_info { + struct bpf_map *map; + struct bpf_htab *htab; + void *percpu_value_buf; + u32 bucket_id; + u32 skip_elems; }; -struct trace_event_raw_io_uring_file_get { - struct trace_entry ent; - void *ctx; - void *req; - u64 user_data; - int fd; - char __data[0]; +struct bpf_iter_seq_array_map_info { + struct bpf_map *map; + void *percpu_value_buf; + u32 index; }; -struct trace_event_raw_io_uring_queue_async_work { - struct trace_entry ent; - void *ctx; - void *req; - u64 user_data; - u8 opcode; - unsigned int flags; - struct io_wq_work *work; - int rw; - char __data[0]; +struct prog_poke_elem { + struct list_head list; + struct bpf_prog_aux *aux; }; -struct trace_event_raw_io_uring_defer { - struct trace_entry ent; - void *ctx; - void *req; - long long unsigned int data; - u8 opcode; - char __data[0]; +enum bpf_lru_list_type { + BPF_LRU_LIST_T_ACTIVE = 0, + BPF_LRU_LIST_T_INACTIVE = 1, + BPF_LRU_LIST_T_FREE = 2, + BPF_LRU_LOCAL_LIST_T_FREE = 3, + BPF_LRU_LOCAL_LIST_T_PENDING = 4, }; -struct trace_event_raw_io_uring_link { - struct trace_entry ent; - void *ctx; - void *req; - void *target_req; - char __data[0]; +struct bpf_lpm_trie_key { + __u32 prefixlen; + __u8 data[0]; }; -struct trace_event_raw_io_uring_cqring_wait { - struct trace_entry ent; - void *ctx; - int min_events; - char __data[0]; +struct lpm_trie_node { + struct callback_head rcu; + struct lpm_trie_node *child[2]; + u32 prefixlen; + u32 flags; + u8 data[0]; }; -struct trace_event_raw_io_uring_fail_link { - struct trace_entry ent; - void *ctx; - void *req; - long long unsigned int user_data; - u8 opcode; - void *link; - char __data[0]; +struct lpm_trie { + struct bpf_map map; + struct lpm_trie_node *root; + size_t n_entries; + size_t max_prefixlen; + size_t data_size; + spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 trace_event_raw_io_uring_complete { - struct trace_entry ent; - void *ctx; - void *req; - u64 user_data; - int res; - unsigned int cflags; - char __data[0]; +struct bpf_cgroup_storage_map { + struct bpf_map map; + spinlock_t lock; + struct rb_root root; + struct list_head list; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 trace_event_raw_io_uring_submit_sqe { - struct trace_entry ent; - void *ctx; - void *req; - long long unsigned int user_data; - u8 opcode; - u32 flags; - bool force_nonblock; - bool sq_thread; - char __data[0]; +struct bpf_queue_stack { + struct bpf_map map; + raw_spinlock_t lock; + u32 head; + u32 tail; + u32 size; + char elements[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 trace_event_raw_io_uring_poll_arm { - struct trace_entry ent; - void *ctx; - void *req; - long long unsigned int user_data; - u8 opcode; - int mask; - int events; - char __data[0]; +enum { + BPF_RB_NO_WAKEUP = 1, + BPF_RB_FORCE_WAKEUP = 2, }; -struct trace_event_raw_io_uring_task_add { - struct trace_entry ent; - void *ctx; - void *req; - long long unsigned int user_data; - u8 opcode; - int mask; - char __data[0]; +enum { + BPF_RB_AVAIL_DATA = 0, + BPF_RB_RING_SIZE = 1, + BPF_RB_CONS_POS = 2, + BPF_RB_PROD_POS = 3, }; -struct trace_event_raw_io_uring_req_failed { - struct trace_entry ent; - void *ctx; - void *req; - long long unsigned int user_data; - u8 opcode; - u8 flags; - u8 ioprio; - u64 off; - u64 addr; - u32 len; - u32 op_flags; - u16 buf_index; - u16 personality; - u32 file_index; - u64 pad1; - u64 pad2; - int error; - char __data[0]; +enum { + BPF_RINGBUF_BUSY_BIT = 2147483648, + BPF_RINGBUF_DISCARD_BIT = 1073741824, + BPF_RINGBUF_HDR_SZ = 8, }; -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 trace_event_data_offsets_io_uring_fail_link {}; - -struct trace_event_data_offsets_io_uring_complete {}; - -struct trace_event_data_offsets_io_uring_submit_sqe {}; - -struct trace_event_data_offsets_io_uring_poll_arm {}; - -struct trace_event_data_offsets_io_uring_task_add {}; - -struct trace_event_data_offsets_io_uring_req_failed {}; - -typedef void (*btf_trace_io_uring_create)(void *, int, void *, u32, u32, u32); - -typedef void (*btf_trace_io_uring_register)(void *, void *, unsigned int, unsigned int, unsigned int, long int); - -typedef void (*btf_trace_io_uring_file_get)(void *, void *, void *, long long unsigned int, int); - -typedef void (*btf_trace_io_uring_queue_async_work)(void *, void *, void *, long long unsigned int, u8, unsigned int, struct io_wq_work *, int); - -typedef void (*btf_trace_io_uring_defer)(void *, void *, void *, long long unsigned int, u8); - -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 *, long long unsigned int, u8, void *); - -typedef void (*btf_trace_io_uring_complete)(void *, void *, void *, u64, int, unsigned int); - -typedef void (*btf_trace_io_uring_submit_sqe)(void *, void *, void *, long long unsigned int, u8, u32, bool, bool); - -typedef void (*btf_trace_io_uring_poll_arm)(void *, void *, void *, u64, u8, int, int); - -typedef void (*btf_trace_io_uring_task_add)(void *, void *, void *, long long unsigned int, u8, int); - -typedef void (*btf_trace_io_uring_req_failed)(void *, const struct io_uring_sqe *, void *, void *, int); - -struct io_uring { - u32 head; - long: 32; +struct bpf_ringbuf { + wait_queue_head_t waitq; + struct irq_work work; + u64 mask; + struct page **pages; + int nr_pages; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + spinlock_t spinlock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long unsigned int consumer_pos; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long unsigned int producer_pos; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -43146,8 +36493,6 @@ struct io_uring { long: 64; long: 64; long: 64; - u32 tail; - long: 32; long: 64; long: 64; long: 64; @@ -43179,19 +36524,6 @@ 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; @@ -43220,197 +36552,6 @@ struct io_rings { long: 64; long: 64; long: 64; - struct io_uring_cqe cqes[0]; -}; - -enum io_uring_cmd_flags { - IO_URING_F_COMPLETE_DEFER = 1, - IO_URING_F_UNLOCKED = 2, - IO_URING_F_NONBLOCK = 2147483648, -}; - -struct io_mapped_ubuf { - u64 ubuf; - u64 ubuf_end; - unsigned int nr_bvecs; - long unsigned int acct_pages; - struct bio_vec bvec[0]; -}; - -struct io_overflow_cqe { - struct io_uring_cqe cqe; - struct list_head list; -}; - -struct io_fixed_file { - long unsigned int file_ptr; -}; - -struct io_rsrc_put { - struct list_head list; - u64 tag; - union { - void *rsrc; - struct file *file; - struct io_mapped_ubuf *buf; - }; -}; - -struct io_file_table { - struct io_fixed_file *files; -}; - -struct io_rsrc_data; - -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; -}; - -typedef void rsrc_put_fn(struct io_ring_ctx *, struct io_rsrc_put *); - -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 io_kiocb; - -struct io_submit_link { - struct io_kiocb *head; - struct io_kiocb *last; -}; - -struct io_submit_state { - struct io_wq_work_node free_list; - struct io_wq_work_list compl_reqs; - struct io_submit_link link; - bool plug_started; - bool need_plug; - bool flush_cqes; - short unsigned int submit_nr; - struct blk_plug plug; -}; - -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 io_sq_data; - -struct io_ev_fd; - -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 restricted: 1; - unsigned int off_timeout_used: 1; - unsigned int drain_active: 1; - unsigned int drain_disabled: 1; - unsigned int has_evfd: 1; - long: 25; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 { - 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; - int rsrc_cached_refs; - 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 list_head *io_buffers; - struct list_head io_buffers_cache; - struct list_head apoll_cache; - struct xarray personalities; - u32 pers_next; - unsigned int sq_thread_idle; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 io_wq_work_list 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; @@ -43432,100 +36573,33 @@ struct io_ring_ctx { long: 64; long: 64; long: 64; - struct { - unsigned int cached_cq_tail; - unsigned int cq_entries; - struct io_ev_fd *io_ev_fd; - struct wait_queue_head cq_wait; - unsigned int cq_extra; - atomic_t cq_timeouts; - unsigned int cq_last_tm_flush; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - }; - struct { - spinlock_t completion_lock; - spinlock_t timeout_lock; - struct io_wq_work_list iopoll_list; - struct hlist_head *cancel_hash; - unsigned int cancel_hash_bits; - bool poll_multi_queue; - struct list_head io_buffers_comp; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 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 list_head io_buffers_pages; - }; - 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; + char data[0]; +}; + +struct bpf_ringbuf_map { + struct bpf_map map; + struct bpf_ringbuf *rb; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; long: 64; long: 64; long: 64; @@ -43540,12426 +36614,11642 @@ struct io_ring_ctx { long: 64; }; -struct io_buffer_list { - struct list_head list; - struct list_head buf_list; - __u16 bgid; -}; - -struct io_buffer { - struct list_head list; - __u64 addr; - __u32 len; - __u16 bid; - __u16 bgid; -}; - -enum { - IO_SQ_THREAD_SHOULD_STOP = 0, - IO_SQ_THREAD_SHOULD_PARK = 1, -}; - -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 io_rw { - struct kiocb kiocb; - u64 addr; - u32 len; - u32 flags; -}; - -struct io_poll_iocb { - struct file *file; - struct wait_queue_head *head; - __poll_t events; - struct wait_queue_entry wait; -}; - -struct io_poll_update { - struct file *file; - u64 old_user_data; - u64 new_user_data; - __poll_t events; - bool update_events; - bool update_user_data; -}; - -struct io_accept { - struct file *file; - struct sockaddr *addr; - int *addr_len; - int flags; - u32 file_slot; - long unsigned int nofile; -}; - -struct io_sync { - struct file *file; - loff_t len; - loff_t off; - int flags; - int mode; -}; - -struct io_cancel { - struct file *file; - u64 addr; -}; - -struct io_timeout { - struct file *file; - u32 off; - u32 target_seq; - struct list_head list; - struct io_kiocb *head; - struct io_kiocb *prev; -}; - -struct io_timeout_rem { - struct file *file; - u64 addr; - struct timespec64 ts; - u32 flags; - bool ltimeout; -}; - -struct io_connect { - struct file *file; - struct sockaddr *addr; - int addr_len; -}; - -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_open { - struct file *file; - int dfd; - u32 file_slot; - struct filename *filename; - struct open_how how; - long unsigned int nofile; -}; - -struct io_close { - struct file *file; - int fd; - u32 file_slot; -}; - -struct io_rsrc_update { - struct file *file; - u64 arg; - u32 nr_args; - u32 offset; -}; - -struct io_fadvise { - struct file *file; - u64 offset; - u32 len; - u32 advice; -}; - -struct io_madvise { - struct file *file; - u64 addr; +struct bpf_ringbuf_hdr { u32 len; - u32 advice; -}; - -struct io_epoll { - struct file *file; - int epfd; - int op; - int fd; - struct epoll_event event; -}; - -struct io_splice { - struct file *file_out; - loff_t off_out; - loff_t off_in; - u64 len; - int splice_fd_in; - unsigned int flags; -}; - -struct io_provide_buf { - struct file *file; - __u64 addr; - __u32 len; - __u32 bgid; - __u16 nbufs; - __u16 bid; -}; - -struct io_statx { - struct file *file; - int dfd; - unsigned int mask; - unsigned int flags; - struct filename *filename; - struct statx *buffer; -}; - -struct io_shutdown { - struct file *file; - int how; -}; - -struct io_rename { - struct file *file; - int old_dfd; - int new_dfd; - struct filename *oldpath; - struct filename *newpath; - int flags; -}; - -struct io_unlink { - struct file *file; - int dfd; - int flags; - struct filename *filename; -}; - -struct io_mkdir { - struct file *file; - int dfd; - umode_t mode; - struct filename *filename; -}; - -struct io_symlink { - struct file *file; - int new_dfd; - struct filename *oldpath; - struct filename *newpath; -}; - -struct io_hardlink { - struct file *file; - int old_dfd; - int new_dfd; - struct filename *oldpath; - struct filename *newpath; - int flags; + u32 pg_off; }; -struct io_msg { - struct file *file; - u64 user_data; - u32 len; -}; +typedef u64 (*btf_bpf_ringbuf_reserve)(struct bpf_map *, u64, u64); -typedef void (*io_req_tw_func_t)(struct io_kiocb *, bool *); +typedef u64 (*btf_bpf_ringbuf_submit)(void *, u64); -struct io_task_work { - union { - struct io_wq_work_node node; - struct llist_node fallback_node; - }; - io_req_tw_func_t func; -}; +typedef u64 (*btf_bpf_ringbuf_discard)(void *, u64); -struct async_poll; +typedef u64 (*btf_bpf_ringbuf_output)(struct bpf_map *, void *, u64, u64); -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_msg msg; - }; - u8 opcode; - u8 iopoll_completed; - u16 buf_index; - unsigned int flags; - u64 user_data; - u32 result; - union { - u32 cflags; - int fd; - }; - struct io_ring_ctx *ctx; - struct task_struct *task; - struct percpu_ref *fixed_rsrc_refs; - struct io_mapped_ubuf *imu; - union { - struct io_wq_work_node comp_list; - __poll_t apoll_events; - }; - atomic_t refs; - atomic_t poll_refs; - struct io_task_work io_task_work; - struct hlist_node hash_node; - struct async_poll *apoll; - void *async_data; - struct io_buffer *kbuf; - struct io_kiocb *link; - const struct cred *creds; - struct io_wq_work work; -}; +typedef u64 (*btf_bpf_ringbuf_query)(struct bpf_map *, u64); -struct io_ev_fd { - struct eventfd_ctx *cq_ev_fd; - unsigned int eventfd_async: 1; +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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 bpf_local_storage_data sdata; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 io_timeout_data { - struct io_kiocb *req; - struct hrtimer timer; - struct timespec64 ts; - enum hrtimer_mode mode; - u32 flags; -}; - -struct io_async_connect { - struct __kernel_sockaddr_storage address; -}; - -struct io_async_msghdr { - struct iovec fast_iov[8]; - struct iovec *free_iov; - struct sockaddr *uaddr; - struct msghdr msg; - struct __kernel_sockaddr_storage addr; -}; - -struct io_rw_state { - struct iov_iter iter; - struct iov_iter_state iter_state; - struct iovec fast_iov[8]; -}; - -struct io_async_rw { - struct io_rw_state s; - const struct iovec *free_iovec; - size_t bytes_done; - struct wait_page_queue wpq; -}; - -enum { - REQ_F_FIXED_FILE_BIT = 0, - REQ_F_IO_DRAIN_BIT = 1, - REQ_F_LINK_BIT = 2, - REQ_F_HARDLINK_BIT = 3, - REQ_F_FORCE_ASYNC_BIT = 4, - REQ_F_BUFFER_SELECT_BIT = 5, - REQ_F_CQE_SKIP_BIT = 6, - REQ_F_FAIL_BIT = 8, - REQ_F_INFLIGHT_BIT = 9, - REQ_F_CUR_POS_BIT = 10, - REQ_F_NOWAIT_BIT = 11, - REQ_F_LINK_TIMEOUT_BIT = 12, - REQ_F_NEED_CLEANUP_BIT = 13, - REQ_F_POLLED_BIT = 14, - REQ_F_BUFFER_SELECTED_BIT = 15, - REQ_F_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_ASYNC_DATA_BIT = 21, - REQ_F_SKIP_LINK_CQES_BIT = 22, - REQ_F_SINGLE_POLL_BIT = 23, - REQ_F_DOUBLE_POLL_BIT = 24, - REQ_F_PARTIAL_IO_BIT = 25, - REQ_F_SUPPORT_NOWAIT_BIT = 26, - REQ_F_ISREG_BIT = 27, - __REQ_F_LAST_BIT = 28, -}; - -enum { - REQ_F_FIXED_FILE = 1, - REQ_F_IO_DRAIN = 2, - REQ_F_LINK = 4, - REQ_F_HARDLINK = 8, - REQ_F_FORCE_ASYNC = 16, - REQ_F_BUFFER_SELECT = 32, - REQ_F_CQE_SKIP = 64, - REQ_F_FAIL = 256, - REQ_F_INFLIGHT = 512, - REQ_F_CUR_POS = 1024, - REQ_F_NOWAIT = 2048, - REQ_F_LINK_TIMEOUT = 4096, - REQ_F_NEED_CLEANUP = 8192, - REQ_F_POLLED = 16384, - REQ_F_BUFFER_SELECTED = 32768, - REQ_F_COMPLETE_INLINE = 65536, - REQ_F_REISSUE = 131072, - REQ_F_SUPPORT_NOWAIT = 67108864, - REQ_F_ISREG = 134217728, - REQ_F_CREDS = 262144, - REQ_F_REFCOUNT = 524288, - REQ_F_ARM_LTIMEOUT = 1048576, - REQ_F_ASYNC_DATA = 2097152, - REQ_F_SKIP_LINK_CQES = 4194304, - REQ_F_SINGLE_POLL = 8388608, - REQ_F_DOUBLE_POLL = 16777216, - REQ_F_PARTIAL_IO = 33554432, -}; - -struct async_poll { - struct io_poll_iocb poll; - struct io_poll_iocb *double_poll; -}; - -enum { - IORING_RSRC_FILE = 0, - IORING_RSRC_BUFFER = 1, -}; - -struct io_tctx_node { - struct list_head ctx_node; - struct task_struct *task; - struct io_ring_ctx *ctx; -}; - -struct io_defer_entry { - struct list_head list; - struct io_kiocb *req; - u32 seq; -}; - -struct io_op_def { - unsigned int needs_file: 1; - unsigned int plug: 1; - unsigned int hash_reg_file: 1; - unsigned int unbound_nonreg_file: 1; - unsigned int pollin: 1; - unsigned int pollout: 1; - unsigned int poll_exclusive: 1; - unsigned int buffer_select: 1; - unsigned int needs_async_setup: 1; - unsigned int not_supported: 1; - unsigned int audit_skip: 1; - short unsigned int async_size; -}; - -struct io_poll_table { - struct poll_table_struct pt; - struct io_kiocb *req; - int nr_entries; - int error; -}; - -enum { - IO_APOLL_OK = 0, - IO_APOLL_ABORTED = 1, - IO_APOLL_READY = 2, -}; - -struct io_cancel_data { - struct io_ring_ctx *ctx; - u64 user_data; -}; - -struct io_wait_queue { - struct wait_queue_entry wq; - struct io_ring_ctx *ctx; - unsigned int cq_tail; - unsigned int nr_timeouts; -}; - -struct io_tctx_exit { - struct callback_head task_work; - struct completion completion; - struct io_ring_ctx *ctx; +struct bpf_local_storage_cache { + spinlock_t idx_lock; + u64 idx_usage_counts[16]; }; -struct io_task_cancel { - struct task_struct *task; - bool all; +enum { + BPF_LOCAL_STORAGE_GET_F_CREATE = 1, + BPF_SK_STORAGE_GET_F_CREATE = 1, }; -struct creds; - -struct crypto_skcipher; +typedef u64 (*btf_bpf_task_storage_get)(struct bpf_map *, struct task_struct *, void *, u64); -struct fscrypt_blk_crypto_key; +typedef u64 (*btf_bpf_task_storage_delete)(struct bpf_map *, struct task_struct *); -struct fscrypt_prepared_key { - struct crypto_skcipher *tfm; - struct fscrypt_blk_crypto_key *blk_key; +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 fscrypt_mode; - -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 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 bpf_storage_blob { + struct bpf_local_storage *storage; }; -struct skcipher_request { - unsigned int cryptlen; - u8 *iv; - struct scatterlist *src; - struct scatterlist *dst; - struct crypto_async_request base; - void *__ctx[0]; -}; +typedef u64 (*btf_bpf_inode_storage_get)(struct bpf_map *, struct inode *, void *, u64); -struct crypto_skcipher { - unsigned int reqsize; - struct crypto_tfm base; -}; +typedef u64 (*btf_bpf_inode_storage_delete)(struct bpf_map *, struct inode *); -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 bpf_tramp_progs { + struct bpf_prog *progs[38]; + int nr_progs; }; -typedef enum { - FS_DECRYPT = 0, - FS_ENCRYPT = 1, -} fscrypt_direction_t; - -union fscrypt_iv { - struct { - __le64 lblk_num; - u8 nonce[16]; - }; - u8 raw[32]; - __le64 dun[4]; +struct btf_enum { + __u32 name_off; + __s32 val; }; -struct fscrypt_str { - unsigned char *name; - u32 len; +struct btf_array { + __u32 type; + __u32 index_type; + __u32 nelems; }; -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; +enum { + BTF_VAR_STATIC = 0, + BTF_VAR_GLOBAL_ALLOCATED = 1, + BTF_VAR_GLOBAL_EXTERN = 2, }; -struct fscrypt_nokey_name { - u32 dirhash[2]; - u8 bytes[149]; - u8 sha256[32]; +struct btf_var { + __u32 linkage; }; -struct fscrypt_key_specifier { - __u32 type; - __u32 __reserved; +struct bpf_flow_keys { + __u16 nhoff; + __u16 thoff; + __u16 addr_proto; + __u8 is_frag; + __u8 is_first_frag; + __u8 is_encap; + __u8 ip_proto; + __be16 n_proto; + __be16 sport; + __be16 dport; union { - __u8 __reserved[32]; - __u8 descriptor[8]; - __u8 identifier[16]; - } u; + struct { + __be32 ipv4_src; + __be32 ipv4_dst; + }; + struct { + __u32 ipv6_src[4]; + __u32 ipv6_dst[4]; + }; + }; + __u32 flags; + __be32 flow_label; }; -struct fscrypt_symlink_data { - __le16 len; - char encrypted_path[1]; -} __attribute__((packed)); +struct bpf_sock { + __u32 bound_dev_if; + __u32 family; + __u32 type; + __u32 protocol; + __u32 mark; + __u32 priority; + __u32 src_ip4; + __u32 src_ip6[4]; + __u32 src_port; + __be16 dst_port; + __u32 dst_ip4; + __u32 dst_ip6[4]; + __u32 state; + __s32 rx_queue_mapping; +}; -struct fscrypt_hkdf { - struct crypto_shash *hmac_tfm; +struct __sk_buff { + __u32 len; + __u32 pkt_type; + __u32 mark; + __u32 queue_mapping; + __u32 protocol; + __u32 vlan_present; + __u32 vlan_tci; + __u32 vlan_proto; + __u32 priority; + __u32 ingress_ifindex; + __u32 ifindex; + __u32 tc_index; + __u32 cb[5]; + __u32 hash; + __u32 tc_classid; + __u32 data; + __u32 data_end; + __u32 napi_id; + __u32 family; + __u32 remote_ip4; + __u32 local_ip4; + __u32 remote_ip6[4]; + __u32 local_ip6[4]; + __u32 remote_port; + __u32 local_port; + __u32 data_meta; + union { + struct bpf_flow_keys *flow_keys; + }; + __u64 tstamp; + __u32 wire_len; + __u32 gso_segs; + union { + struct bpf_sock *sk; + }; + __u32 gso_size; }; -struct fscrypt_master_key_secret { - struct fscrypt_hkdf hkdf; - u32 size; - u8 raw[64]; +struct xdp_md { + __u32 data; + __u32 data_end; + __u32 data_meta; + __u32 ingress_ifindex; + __u32 rx_queue_index; + __u32 egress_ifindex; }; -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 sk_msg_md { + union { + void *data; + }; + union { + void *data_end; + }; + __u32 family; + __u32 remote_ip4; + __u32 local_ip4; + __u32 remote_ip6[4]; + __u32 local_ip6[4]; + __u32 remote_port; + __u32 local_port; + __u32 size; + union { + struct bpf_sock *sk; + }; }; -enum key_state { - KEY_IS_UNINSTANTIATED = 0, - KEY_IS_POSITIVE = 1, +struct sk_reuseport_md { + union { + void *data; + }; + union { + void *data_end; + }; + __u32 len; + __u32 eth_protocol; + __u32 ip_protocol; + __u32 bind_inany; + __u32 hash; + union { + struct bpf_sock *sk; + }; + union { + struct bpf_sock *migrating_sk; + }; }; -struct fscrypt_provisioning_key_payload { +struct bpf_sock_addr { + __u32 user_family; + __u32 user_ip4; + __u32 user_ip6[4]; + __u32 user_port; + __u32 family; __u32 type; - __u32 __reserved; - __u8 raw[0]; + __u32 protocol; + __u32 msg_src_ip4; + __u32 msg_src_ip6[4]; + union { + struct bpf_sock *sk; + }; }; -struct fscrypt_add_key_arg { - struct fscrypt_key_specifier key_spec; - __u32 raw_size; - __u32 key_id; - __u32 __reserved[8]; - __u8 raw[0]; +struct bpf_sock_ops { + __u32 op; + union { + __u32 args[4]; + __u32 reply; + __u32 replylong[4]; + }; + __u32 family; + __u32 remote_ip4; + __u32 local_ip4; + __u32 remote_ip6[4]; + __u32 local_ip6[4]; + __u32 remote_port; + __u32 local_port; + __u32 is_fullsock; + __u32 snd_cwnd; + __u32 srtt_us; + __u32 bpf_sock_ops_cb_flags; + __u32 state; + __u32 rtt_min; + __u32 snd_ssthresh; + __u32 rcv_nxt; + __u32 snd_nxt; + __u32 snd_una; + __u32 mss_cache; + __u32 ecn_flags; + __u32 rate_delivered; + __u32 rate_interval_us; + __u32 packets_out; + __u32 retrans_out; + __u32 total_retrans; + __u32 segs_in; + __u32 data_segs_in; + __u32 segs_out; + __u32 data_segs_out; + __u32 lost_out; + __u32 sacked_out; + __u32 sk_txhash; + __u64 bytes_received; + __u64 bytes_acked; + union { + struct bpf_sock *sk; + }; + union { + void *skb_data; + }; + union { + void *skb_data_end; + }; + __u32 skb_len; + __u32 skb_tcp_flags; }; -struct fscrypt_remove_key_arg { - struct fscrypt_key_specifier key_spec; - __u32 removal_status_flags; - __u32 __reserved[5]; +struct bpf_cgroup_dev_ctx { + __u32 access_type; + __u32 major; + __u32 minor; }; -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 bpf_sysctl { + __u32 write; + __u32 file_pos; }; -struct skcipher_alg { - int (*setkey)(struct crypto_skcipher *, const u8 *, unsigned int); - int (*encrypt)(struct skcipher_request *); - int (*decrypt)(struct skcipher_request *); - int (*init)(struct crypto_skcipher *); - void (*exit)(struct crypto_skcipher *); - unsigned int min_keysize; - unsigned int max_keysize; - unsigned int ivsize; - unsigned int chunksize; - unsigned int walksize; - struct crypto_alg base; +struct bpf_sockopt { + union { + struct bpf_sock *sk; + }; + union { + void *optval; + }; + union { + void *optval_end; + }; + __s32 level; + __s32 optname; + __s32 optlen; + __s32 retval; }; -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 bpf_sk_lookup { + union { + union { + struct bpf_sock *sk; + }; + __u64 cookie; + }; + __u32 family; + __u32 protocol; + __u32 remote_ip4; + __u32 remote_ip6[4]; + __be16 remote_port; + __u32 local_ip4; + __u32 local_ip6[4]; + __u32 local_port; }; -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 sk_reuseport_kern { + struct sk_buff *skb; + struct sock *sk; + struct sock *selected_sk; + struct sock *migrating_sk; + void *data_end; + u32 hash; + u32 reuseport_id; + bool bind_inany; }; -union fscrypt_context { - u8 version; - struct fscrypt_context_v1 v1; - struct fscrypt_context_v2 v2; +struct bpf_flow_dissector { + struct bpf_flow_keys *flow_keys; + const struct sk_buff *skb; + const void *data; + const void *data_end; }; -struct crypto_template; - -struct crypto_spawn; - -struct crypto_instance { - struct crypto_alg alg; - struct crypto_template *tmpl; +struct inet_listen_hashbucket { + spinlock_t lock; + unsigned int count; union { - struct hlist_node list; - struct crypto_spawn *spawns; + struct hlist_head head; + struct hlist_nulls_head nulls_head; }; - void *__ctx[0]; }; -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 inet_ehash_bucket; -struct rtattr; +struct inet_bind_hashbucket; -struct crypto_template { - struct list_head list; - struct hlist_head instances; - struct module *module; - int (*create)(struct crypto_template *, struct rtattr **); - char name[128]; +struct inet_hashinfo { + struct inet_ehash_bucket *ehash; + spinlock_t *ehash_locks; + unsigned int ehash_mask; + unsigned int ehash_locks_mask; + struct kmem_cache *bind_bucket_cachep; + struct inet_bind_hashbucket *bhash; + unsigned int bhash_size; + unsigned int lhash2_mask; + struct inet_listen_hashbucket *lhash2; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 inet_listen_hashbucket listening_hash[32]; +}; + +struct ip_ra_chain { + struct ip_ra_chain *next; + struct sock *sk; + union { + void (*destructor)(struct sock *); + struct sock *saved_sk; + }; + struct callback_head rcu; }; -struct user_key_payload { +struct fib_table { + struct hlist_node tb_hlist; + u32 tb_id; + int tb_num_default; struct callback_head rcu; - short unsigned int datalen; - long: 48; - char data[0]; + long unsigned int *tb_data; + long unsigned int __data[0]; }; -struct fscrypt_key { - __u32 mode; - __u8 raw[64]; - __u32 size; +struct inet_peer_base { + struct rb_root rb_root; + seqlock_t lock; + int total; }; -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 tcp_fastopen_context { + siphash_key_t key[2]; + int num; + struct callback_head rcu; }; -struct fscrypt_get_policy_ex_arg { - __u64 policy_size; - union { - __u8 version; - struct fscrypt_policy_v1 v1; - struct fscrypt_policy_v2 v2; - } policy; +struct bpf_sock_addr_kern { + struct sock *sk; + struct sockaddr *uaddr; + u64 tmp_reg; + void *t_ctx; }; -struct fscrypt_dummy_policy { - const union fscrypt_policy *policy; +struct bpf_sock_ops_kern { + struct sock *sk; + union { + u32 args[4]; + u32 reply; + u32 replylong[4]; + }; + struct sk_buff *syn_skb; + struct sk_buff *skb; + void *skb_data_end; + u8 op; + u8 is_fullsock; + u8 remaining_opt_len; + u64 temp; }; -struct fscrypt_blk_crypto_key { - struct blk_crypto_key base; - int num_devs; - struct request_queue *devs[0]; +struct bpf_sysctl_kern { + struct ctl_table_header *head; + struct ctl_table *table; + void *cur_val; + size_t cur_len; + void *new_val; + size_t new_len; + int new_updated; + int write; + loff_t *ppos; + u64 tmp_reg; }; -struct 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 bpf_sockopt_kern { + struct sock *sk; + u8 *optval; + u8 *optval_end; + s32 level; + s32 optname; + s32 optlen; + s32 retval; }; -struct fsverity_info { - struct merkle_tree_params tree_params; - u8 root_hash[64]; - u8 file_digest[64]; - const struct inode *inode; +struct bpf_sk_lookup_kern { + u16 family; + u16 protocol; + __be16 sport; + u16 dport; + struct { + __be32 saddr; + __be32 daddr; + } v4; + struct { + const struct in6_addr *saddr; + const struct in6_addr *daddr; + } v6; + struct sock *selected_sk; + bool no_reuseport; }; -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 lwtunnel_state { + __u16 type; + __u16 flags; + __u16 headroom; + atomic_t refcnt; + int (*orig_output)(struct net *, struct sock *, struct sk_buff *); + int (*orig_input)(struct sk_buff *); + struct callback_head rcu; + __u8 data[0]; }; -struct 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 sock_reuseport { + struct callback_head rcu; + u16 max_socks; + u16 num_socks; + u16 num_closed_socks; + u16 incoming_cpu; + unsigned int synq_overflow_ts; + unsigned int reuseport_id; + unsigned int bind_inany: 1; + unsigned int has_conns: 1; + struct bpf_prog *prog; + struct sock *socks[0]; }; -struct crypto_ahash; +struct sk_psock_progs { + struct bpf_prog *msg_parser; + struct bpf_prog *stream_parser; + struct bpf_prog *stream_verdict; + struct bpf_prog *skb_verdict; +}; -struct fsverity_hash_alg { - struct crypto_ahash *tfm; - const char *name; - unsigned int digest_size; - unsigned int block_size; - mempool_t req_pool; +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 ahash_request; +struct strparser; -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; - struct crypto_tfm base; +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 ahash_request { - struct crypto_async_request base; - unsigned int nbytes; - struct scatterlist *src; - u8 *result; - void *priv; - void *__ctx[0]; +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 hash_alg_common { - unsigned int digestsize; - unsigned int statesize; - struct crypto_alg base; +struct sk_psock_work_state { + struct sk_buff *skb; + u32 len; + u32 off; }; -struct fsverity_digest { - __u16 digest_algorithm; - __u16 digest_size; - __u8 digest[0]; -}; +struct sk_msg; -struct fsverity_read_metadata_arg { - __u64 metadata_type; - __u64 offset; - __u64 length; - __u64 buf_ptr; - __u64 __reserved; +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 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 inet_ehash_bucket { + struct hlist_nulls_head chain; }; -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 inet_bind_hashbucket { + spinlock_t lock; + struct hlist_head chain; }; -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 ack_sample { + u32 pkts_acked; + s32 rtt_us; + u32 in_flight; }; -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 rate_sample { + u64 prior_mstamp; + u32 prior_delivered; + s32 delivered; + long int interval_us; + u32 snd_interval_us; + u32 rcv_interval_us; + long int rtt_us; + int losses; + u32 acked_sacked; + u32 prior_in_flight; + u32 last_end_seq; + bool is_app_limited; + bool is_retrans; + bool is_ack_delayed; }; -struct 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 sk_msg_sg { + u32 start; + u32 curr; + u32 end; + u32 size; + u32 copybreak; + long unsigned int copy; + struct scatterlist data[19]; }; -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 sk_msg { + struct sk_msg_sg sg; + void *data; + void *data_end; + u32 apply_bytes; + u32 cork_bytes; + u32 flags; + struct sk_buff *skb; + struct sock *sk_redir; + struct sock *sk; + struct list_head list; }; -struct trace_event_data_offsets_locks_get_lock_context {}; - -struct trace_event_data_offsets_filelock_lock {}; - -struct trace_event_data_offsets_filelock_lease {}; - -struct trace_event_data_offsets_generic_add_lease {}; - -struct trace_event_data_offsets_leases_conflict {}; - -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); +enum verifier_phase { + CHECK_META = 0, + CHECK_TYPE = 1, +}; -typedef void (*btf_trace_locks_remove_posix)(void *, struct inode *, struct file_lock *, int); +struct resolve_vertex { + const struct btf_type *t; + u32 type_id; + u16 next_member; +}; -typedef void (*btf_trace_flock_lock_inode)(void *, struct inode *, struct file_lock *, int); +enum visit_state { + NOT_VISITED = 0, + VISITED = 1, + RESOLVED = 2, +}; -typedef void (*btf_trace_break_lease_noblock)(void *, struct inode *, struct file_lock *); +enum resolve_mode { + RESOLVE_TBD = 0, + RESOLVE_PTR = 1, + RESOLVE_STRUCT_OR_ARRAY = 2, +}; -typedef void (*btf_trace_break_lease_block)(void *, struct inode *, struct file_lock *); +struct btf_sec_info { + u32 off; + u32 len; +}; -typedef void (*btf_trace_break_lease_unblock)(void *, struct inode *, struct file_lock *); +struct btf_verifier_env { + struct btf *btf; + u8 *visit_states; + struct resolve_vertex stack[32]; + struct bpf_verifier_log log; + u32 log_type_id; + u32 top_stack; + enum verifier_phase phase; + enum resolve_mode resolve_mode; +}; -typedef void (*btf_trace_generic_delete_lease)(void *, struct inode *, struct file_lock *); +struct btf_show { + u64 flags; + void *target; + void (*showfn)(struct btf_show *, const char *, struct __va_list_tag *); + const struct btf *btf; + struct { + u8 depth; + u8 depth_to_show; + u8 depth_check; + u8 array_member: 1; + u8 array_terminated: 1; + u16 array_encoding; + u32 type_id; + int status; + const struct btf_type *type; + const struct btf_member *member; + char name[80]; + } state; + struct { + u32 size; + void *head; + void *data; + u8 safe[32]; + } obj; +}; -typedef void (*btf_trace_time_out_leases)(void *, struct inode *, struct file_lock *); +struct btf_kind_operations { + s32 (*check_meta)(struct btf_verifier_env *, const struct btf_type *, u32); + int (*resolve)(struct btf_verifier_env *, const struct resolve_vertex *); + int (*check_member)(struct btf_verifier_env *, const struct btf_type *, const struct btf_member *, const struct btf_type *); + int (*check_kflag_member)(struct btf_verifier_env *, const struct btf_type *, const struct btf_member *, const struct btf_type *); + void (*log_details)(struct btf_verifier_env *, const struct btf_type *); + void (*show)(const struct btf *, const struct btf_type *, u32, void *, u8, struct btf_show *); +}; -typedef void (*btf_trace_generic_add_lease)(void *, struct inode *, struct file_lock *); +struct bpf_ctx_convert { + struct __sk_buff BPF_PROG_TYPE_SOCKET_FILTER_prog; + struct sk_buff BPF_PROG_TYPE_SOCKET_FILTER_kern; + struct __sk_buff BPF_PROG_TYPE_SCHED_CLS_prog; + struct sk_buff BPF_PROG_TYPE_SCHED_CLS_kern; + struct __sk_buff BPF_PROG_TYPE_SCHED_ACT_prog; + struct sk_buff BPF_PROG_TYPE_SCHED_ACT_kern; + struct xdp_md BPF_PROG_TYPE_XDP_prog; + struct xdp_buff BPF_PROG_TYPE_XDP_kern; + struct __sk_buff BPF_PROG_TYPE_CGROUP_SKB_prog; + struct sk_buff BPF_PROG_TYPE_CGROUP_SKB_kern; + struct bpf_sock BPF_PROG_TYPE_CGROUP_SOCK_prog; + struct sock BPF_PROG_TYPE_CGROUP_SOCK_kern; + struct bpf_sock_addr BPF_PROG_TYPE_CGROUP_SOCK_ADDR_prog; + struct bpf_sock_addr_kern BPF_PROG_TYPE_CGROUP_SOCK_ADDR_kern; + struct __sk_buff BPF_PROG_TYPE_LWT_IN_prog; + struct sk_buff BPF_PROG_TYPE_LWT_IN_kern; + struct __sk_buff BPF_PROG_TYPE_LWT_OUT_prog; + struct sk_buff BPF_PROG_TYPE_LWT_OUT_kern; + struct __sk_buff BPF_PROG_TYPE_LWT_XMIT_prog; + struct sk_buff BPF_PROG_TYPE_LWT_XMIT_kern; + struct __sk_buff BPF_PROG_TYPE_LWT_SEG6LOCAL_prog; + struct sk_buff BPF_PROG_TYPE_LWT_SEG6LOCAL_kern; + struct bpf_sock_ops BPF_PROG_TYPE_SOCK_OPS_prog; + struct bpf_sock_ops_kern BPF_PROG_TYPE_SOCK_OPS_kern; + struct __sk_buff BPF_PROG_TYPE_SK_SKB_prog; + struct sk_buff BPF_PROG_TYPE_SK_SKB_kern; + struct sk_msg_md BPF_PROG_TYPE_SK_MSG_prog; + struct sk_msg BPF_PROG_TYPE_SK_MSG_kern; + struct __sk_buff BPF_PROG_TYPE_FLOW_DISSECTOR_prog; + struct bpf_flow_dissector BPF_PROG_TYPE_FLOW_DISSECTOR_kern; + bpf_user_pt_regs_t BPF_PROG_TYPE_KPROBE_prog; + struct pt_regs BPF_PROG_TYPE_KPROBE_kern; + __u64 BPF_PROG_TYPE_TRACEPOINT_prog; + u64 BPF_PROG_TYPE_TRACEPOINT_kern; + struct bpf_perf_event_data BPF_PROG_TYPE_PERF_EVENT_prog; + struct bpf_perf_event_data_kern BPF_PROG_TYPE_PERF_EVENT_kern; + struct bpf_raw_tracepoint_args BPF_PROG_TYPE_RAW_TRACEPOINT_prog; + u64 BPF_PROG_TYPE_RAW_TRACEPOINT_kern; + struct bpf_raw_tracepoint_args BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE_prog; + u64 BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE_kern; + void *BPF_PROG_TYPE_TRACING_prog; + void *BPF_PROG_TYPE_TRACING_kern; + struct bpf_cgroup_dev_ctx BPF_PROG_TYPE_CGROUP_DEVICE_prog; + struct bpf_cgroup_dev_ctx BPF_PROG_TYPE_CGROUP_DEVICE_kern; + struct bpf_sysctl BPF_PROG_TYPE_CGROUP_SYSCTL_prog; + struct bpf_sysctl_kern BPF_PROG_TYPE_CGROUP_SYSCTL_kern; + struct bpf_sockopt BPF_PROG_TYPE_CGROUP_SOCKOPT_prog; + struct bpf_sockopt_kern BPF_PROG_TYPE_CGROUP_SOCKOPT_kern; + struct sk_reuseport_md BPF_PROG_TYPE_SK_REUSEPORT_prog; + struct sk_reuseport_kern BPF_PROG_TYPE_SK_REUSEPORT_kern; + struct bpf_sk_lookup BPF_PROG_TYPE_SK_LOOKUP_prog; + struct bpf_sk_lookup_kern BPF_PROG_TYPE_SK_LOOKUP_kern; + void *BPF_PROG_TYPE_STRUCT_OPS_prog; + void *BPF_PROG_TYPE_STRUCT_OPS_kern; + void *BPF_PROG_TYPE_EXT_prog; + void *BPF_PROG_TYPE_EXT_kern; + void *BPF_PROG_TYPE_LSM_prog; + void *BPF_PROG_TYPE_LSM_kern; + void *BPF_PROG_TYPE_SYSCALL_prog; + void *BPF_PROG_TYPE_SYSCALL_kern; +}; -typedef void (*btf_trace_leases_conflict)(void *, bool, struct file_lock *, struct file_lock *); +enum { + __ctx_convertBPF_PROG_TYPE_SOCKET_FILTER = 0, + __ctx_convertBPF_PROG_TYPE_SCHED_CLS = 1, + __ctx_convertBPF_PROG_TYPE_SCHED_ACT = 2, + __ctx_convertBPF_PROG_TYPE_XDP = 3, + __ctx_convertBPF_PROG_TYPE_CGROUP_SKB = 4, + __ctx_convertBPF_PROG_TYPE_CGROUP_SOCK = 5, + __ctx_convertBPF_PROG_TYPE_CGROUP_SOCK_ADDR = 6, + __ctx_convertBPF_PROG_TYPE_LWT_IN = 7, + __ctx_convertBPF_PROG_TYPE_LWT_OUT = 8, + __ctx_convertBPF_PROG_TYPE_LWT_XMIT = 9, + __ctx_convertBPF_PROG_TYPE_LWT_SEG6LOCAL = 10, + __ctx_convertBPF_PROG_TYPE_SOCK_OPS = 11, + __ctx_convertBPF_PROG_TYPE_SK_SKB = 12, + __ctx_convertBPF_PROG_TYPE_SK_MSG = 13, + __ctx_convertBPF_PROG_TYPE_FLOW_DISSECTOR = 14, + __ctx_convertBPF_PROG_TYPE_KPROBE = 15, + __ctx_convertBPF_PROG_TYPE_TRACEPOINT = 16, + __ctx_convertBPF_PROG_TYPE_PERF_EVENT = 17, + __ctx_convertBPF_PROG_TYPE_RAW_TRACEPOINT = 18, + __ctx_convertBPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE = 19, + __ctx_convertBPF_PROG_TYPE_TRACING = 20, + __ctx_convertBPF_PROG_TYPE_CGROUP_DEVICE = 21, + __ctx_convertBPF_PROG_TYPE_CGROUP_SYSCTL = 22, + __ctx_convertBPF_PROG_TYPE_CGROUP_SOCKOPT = 23, + __ctx_convertBPF_PROG_TYPE_SK_REUSEPORT = 24, + __ctx_convertBPF_PROG_TYPE_SK_LOOKUP = 25, + __ctx_convertBPF_PROG_TYPE_STRUCT_OPS = 26, + __ctx_convertBPF_PROG_TYPE_EXT = 27, + __ctx_convertBPF_PROG_TYPE_LSM = 28, + __ctx_convertBPF_PROG_TYPE_SYSCALL = 29, + __ctx_convert_unused = 30, +}; -struct file_lock_list_struct { - spinlock_t lock; - struct hlist_head hlist; +enum bpf_struct_walk_result { + WALK_SCALAR = 0, + WALK_PTR = 1, + WALK_STRUCT = 2, }; -struct locks_iterator { - int li_cpu; - loff_t li_pos; +struct btf_show_snprintf { + struct btf_show show; + int len_left; + int len; }; -struct arch_elf_state { - int rc; +enum { + BTF_MODULE_F_LIVE = 1, }; -struct memelfnote { - const char *name; - int type; - unsigned int datasz; - void *data; +struct btf_module { + struct list_head list; + struct module *module; + struct btf *btf; + struct bin_attribute *sysfs_attr; + 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]; +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 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 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; }; -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; +enum { + BPF_F_BROADCAST = 8, + BPF_F_EXCLUDE_INGRESS = 16, }; -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 bpf_devmap_val { + __u32 ifindex; + union { + int fd; + __u32 id; + } bpf_prog; }; -struct posix_acl_xattr_entry { - __le16 e_tag; - __le16 e_perm; - __le32 e_id; +enum net_device_flags { + IFF_UP = 1, + IFF_BROADCAST = 2, + IFF_DEBUG = 4, + IFF_LOOPBACK = 8, + IFF_POINTOPOINT = 16, + IFF_NOTRAILERS = 32, + IFF_RUNNING = 64, + IFF_NOARP = 128, + IFF_PROMISC = 256, + IFF_ALLMULTI = 512, + IFF_MASTER = 1024, + IFF_SLAVE = 2048, + IFF_MULTICAST = 4096, + IFF_PORTSEL = 8192, + IFF_AUTOMEDIA = 16384, + IFF_DYNAMIC = 32768, + IFF_LOWER_UP = 65536, + IFF_DORMANT = 131072, + IFF_ECHO = 262144, }; -struct posix_acl_xattr_header { - __le32 a_version; +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 rpc_timer { - struct list_head list; - long unsigned int expires; - struct delayed_work dwork; +struct xdp_dev_bulk_queue { + struct xdp_frame *q[16]; + struct list_head flush_node; + struct net_device *dev; + struct net_device *dev_rx; + struct bpf_prog *xdp_prog; + unsigned int count; }; -struct 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 netdev_cmd { + NETDEV_UP = 1, + NETDEV_DOWN = 2, + NETDEV_REBOOT = 3, + NETDEV_CHANGE = 4, + NETDEV_REGISTER = 5, + NETDEV_UNREGISTER = 6, + NETDEV_CHANGEMTU = 7, + NETDEV_CHANGEADDR = 8, + NETDEV_PRE_CHANGEADDR = 9, + NETDEV_GOING_DOWN = 10, + NETDEV_CHANGENAME = 11, + NETDEV_FEAT_CHANGE = 12, + NETDEV_BONDING_FAILOVER = 13, + NETDEV_PRE_UP = 14, + NETDEV_PRE_TYPE_CHANGE = 15, + NETDEV_POST_TYPE_CHANGE = 16, + NETDEV_POST_INIT = 17, + NETDEV_RELEASE = 18, + NETDEV_NOTIFY_PEERS = 19, + NETDEV_JOIN = 20, + NETDEV_CHANGEUPPER = 21, + NETDEV_RESEND_IGMP = 22, + NETDEV_PRECHANGEMTU = 23, + NETDEV_CHANGEINFODATA = 24, + NETDEV_BONDING_INFO = 25, + NETDEV_PRECHANGEUPPER = 26, + NETDEV_CHANGELOWERSTATE = 27, + NETDEV_UDP_TUNNEL_PUSH_INFO = 28, + NETDEV_UDP_TUNNEL_DROP_INFO = 29, + NETDEV_CHANGE_TX_QUEUE_LEN = 30, + NETDEV_CVLAN_FILTER_PUSH_INFO = 31, + NETDEV_CVLAN_FILTER_DROP_INFO = 32, + NETDEV_SVLAN_FILTER_PUSH_INFO = 33, + NETDEV_SVLAN_FILTER_DROP_INFO = 34, }; -struct nfs_seqid_counter { - ktime_t create_time; - int owner_id; - int flags; - u32 counter; - spinlock_t lock; - struct list_head list; - struct rpc_wait_queue wait; +struct netdev_notifier_info { + struct net_device *dev; + struct netlink_ext_ack *extack; }; -struct nfs4_stateid_struct { +struct bpf_nh_params { + u32 nh_family; union { - char data[16]; - struct { - __be32 seqid; - char other[12]; - }; + u32 ipv4_nh; + struct in6_addr ipv6_nh; }; - 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; - -struct nfs4_state; - -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 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 xdr_netobj { - unsigned int len; - u8 *data; -}; +struct bpf_dtab; -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 bpf_dtab_netdev { + struct net_device *dev; + struct hlist_node index_hlist; + struct bpf_dtab *dtab; + struct bpf_prog *xdp_prog; + struct callback_head rcu; + unsigned int idx; + struct bpf_devmap_val val; }; -struct rpc_rqst; - -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 bpf_dtab { + struct bpf_map map; + struct bpf_dtab_netdev **netdev_map; + struct list_head list; + struct hlist_head *dev_index_head; + spinlock_t index_lock; + unsigned int items; + u32 n_buckets; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 rpc_xprt; - -struct rpc_task; - -struct rpc_cred; - -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 *); +struct bpf_cpumap_val { + __u32 qsize; 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; -}; - -typedef void (*kxdreproc_t)(struct rpc_rqst *, struct xdr_stream *, const void *); - -typedef int (*kxdrdproc_t)(struct rpc_rqst *, struct xdr_stream *, void *); - -struct rpc_procinfo; - -struct rpc_message { - const struct rpc_procinfo *rpc_proc; - void *rpc_argp; - void *rpc_resp; - const struct cred *rpc_cred; + int fd; + __u32 id; + } bpf_prog; }; -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 bpf_cpu_map_entry; -struct rpc_wait { - struct list_head list; - struct list_head links; - struct list_head timer_list; +struct xdp_bulk_queue { + void *q[8]; + struct list_head flush_node; + struct bpf_cpu_map_entry *obj; + unsigned int count; }; -struct rpc_call_ops; - -struct rpc_clnt; +struct bpf_cpu_map; -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 bpf_cpu_map_entry { + u32 cpu; + int map_id; + struct xdp_bulk_queue *bulkq; + struct bpf_cpu_map *cmap; + struct ptr_ring *queue; + struct task_struct *kthread; + struct bpf_cpumap_val value; + struct bpf_prog *prog; + atomic_t refcnt; + struct callback_head rcu; + struct work_struct kthread_stop_wq; }; -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_cpu_map { + struct bpf_map map; + struct bpf_cpu_map_entry **cpu_map; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 rpc_iostats; - -struct rpc_pipe_dir_head { - struct list_head pdh_entries; - struct dentry *pdh_dentry; +struct rhlist_head { + struct rhash_head rhead; + struct rhlist_head *next; }; -struct rpc_rtt { - long unsigned int timeo; - long unsigned int srtt[5]; - long unsigned int sdrtt[5]; - int ntimeouts[5]; +struct bpf_prog_offload_ops { + int (*insn_hook)(struct bpf_verifier_env *, int, int); + int (*finalize)(struct bpf_verifier_env *); + int (*replace_insn)(struct bpf_verifier_env *, u32, struct bpf_insn *); + int (*remove_insns)(struct bpf_verifier_env *, u32, u32); + int (*prepare)(struct bpf_prog *); + int (*translate)(struct bpf_prog *); + void (*destroy)(struct bpf_prog *); }; -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_offload_dev { + const struct bpf_prog_offload_ops *ops; + struct list_head netdevs; + void *priv; }; -struct rpc_sysfs_client; - -struct rpc_xprt_switch; +typedef struct ns_common *ns_get_path_helper_t(void *); -struct rpc_xprt_iter_ops; +struct bpf_offload_netdev { + struct rhash_head l; + struct net_device *netdev; + struct bpf_offload_dev *offdev; + struct list_head progs; + struct list_head maps; + struct list_head offdev_netdevs; +}; -struct rpc_xprt_iter { - struct rpc_xprt_switch *xpi_xpswitch; - struct rpc_xprt *xpi_cursor; - const struct rpc_xprt_iter_ops *xpi_ops; +struct ns_get_path_bpf_prog_args { + struct bpf_prog *prog; + struct bpf_prog_info *info; }; -struct rpc_auth; +struct ns_get_path_bpf_map_args { + struct bpf_offloaded_map *offmap; + struct bpf_map_info *info; +}; -struct rpc_stat; +struct bpf_netns_link { + struct bpf_link link; + enum bpf_attach_type type; + enum netns_bpf_attach_type netns_type; + struct net *net; + struct list_head node; +}; -struct rpc_program; +enum bpf_stack_build_id_status { + BPF_STACK_BUILD_ID_EMPTY = 0, + BPF_STACK_BUILD_ID_VALID = 1, + BPF_STACK_BUILD_ID_IP = 2, +}; -struct rpc_clnt { - refcount_t cl_count; - unsigned int cl_clid; - struct list_head cl_clients; - struct list_head cl_tasks; - atomic_t cl_pid; - 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; +struct bpf_stack_build_id { + __s32 status; + unsigned char build_id[20]; union { - struct rpc_xprt_iter cl_xpi; - struct work_struct cl_work; + __u64 offset; + __u64 ip; }; - const struct cred *cl_cred; - unsigned int cl_max_connect; }; -struct svc_xprt; - -struct rpc_sysfs_xprt; - -struct rpc_xprt_ops; - -struct svc_serv; - -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; - 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; - netns_tracker ns_tracker; - 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; +enum { + BPF_F_SKIP_FIELD_MASK = 255, + BPF_F_USER_STACK = 256, + BPF_F_FAST_STACK_CMP = 512, + BPF_F_REUSE_STACKID = 1024, + BPF_F_USER_BUILD_ID = 2048, }; -struct rpc_credops; +enum perf_callchain_context { + PERF_CONTEXT_HV = 4294967264, + PERF_CONTEXT_KERNEL = 4294967168, + PERF_CONTEXT_USER = 4294966784, + PERF_CONTEXT_GUEST = 4294965248, + PERF_CONTEXT_GUEST_KERNEL = 4294965120, + PERF_CONTEXT_GUEST_USER = 4294964736, + PERF_CONTEXT_MAX = 4294963201, +}; -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 stack_map_bucket { + struct pcpu_freelist_node fnode; + u32 hash; + u32 nr; + u64 data[0]; }; -typedef u32 rpc_authflavor_t; +struct bpf_stack_map { + struct bpf_map map; + void *elems; + struct pcpu_freelist freelist; + u32 n_buckets; + struct stack_map_bucket *buckets[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 auth_cred { - const struct cred *cred; - const char *principal; +struct stack_map_irq_work { + struct irq_work irq_work; + struct mm_struct *mm; }; -struct rpc_cred_cache; +typedef u64 (*btf_bpf_get_stackid)(struct pt_regs *, struct bpf_map *, u64); -struct rpc_authops; +typedef u64 (*btf_bpf_get_stackid_pe)(struct bpf_perf_event_data_kern *, struct bpf_map *, u64); -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; -}; +typedef u64 (*btf_bpf_get_stack)(struct pt_regs *, void *, u32, u64); -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 *); -}; +typedef u64 (*btf_bpf_get_task_stack)(struct task_struct *, void *, u32, u64); -struct rpc_auth_create_args; +typedef u64 (*btf_bpf_get_stack_pe)(struct bpf_perf_event_data_kern *, void *, u32, u64); -struct rpcsec_gss_info; +enum { + BPF_F_SYSCTL_BASE_NAME = 1, +}; -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 bpf_prog_list { + struct list_head node; + struct bpf_prog *prog; + struct bpf_cgroup_link *link; + struct bpf_cgroup_storage *storage[2]; }; -struct rpc_auth_create_args { - rpc_authflavor_t pseudoflavor; - const char *target_name; +struct qdisc_skb_cb { + struct { + unsigned int pkt_len; + u16 slave_dev_queue_mapping; + u16 tc_classid; + }; + unsigned char data[20]; }; -struct rpcsec_gss_oid { - unsigned int len; - u8 data[32]; +struct bpf_skb_data_end { + struct qdisc_skb_cb qdisc_cb; + void *data_meta; + void *data_end; }; -struct rpcsec_gss_info { - struct rpcsec_gss_oid oid; - u32 qop; - u32 service; +struct bpf_sockopt_buf { + u8 data[32]; }; -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 (*get_srcaddr)(struct rpc_xprt *, char *, size_t); - short unsigned int (*get_srcport)(struct rpc_xprt *); - int (*buf_alloc)(struct rpc_task *); - void (*buf_free)(struct rpc_task *); - int (*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); +enum { + TCPF_ESTABLISHED = 2, + TCPF_SYN_SENT = 4, + TCPF_SYN_RECV = 8, + TCPF_FIN_WAIT1 = 16, + TCPF_FIN_WAIT2 = 32, + TCPF_TIME_WAIT = 64, + TCPF_CLOSE = 128, + TCPF_CLOSE_WAIT = 256, + TCPF_LAST_ACK = 512, + TCPF_LISTEN = 1024, + TCPF_CLOSING = 2048, + TCPF_NEW_SYN_RECV = 4096, }; -struct svc_program; +typedef u64 (*btf_bpf_sysctl_get_name)(struct bpf_sysctl_kern *, char *, size_t, u64); -struct svc_stat; +typedef u64 (*btf_bpf_sysctl_get_current_value)(struct bpf_sysctl_kern *, char *, size_t); -struct svc_pool; +typedef u64 (*btf_bpf_sysctl_get_new_value)(struct bpf_sysctl_kern *, char *, size_t); -struct svc_serv { - struct svc_program *sv_program; - struct svc_stat *sv_stats; - spinlock_t sv_lock; - struct kref sv_refcnt; - 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; - int (*sv_threadfn)(void *); - struct list_head sv_cb_list; - spinlock_t sv_cb_lock; - wait_queue_head_t sv_cb_waitq; - bool sv_bc_enabled; -}; +typedef u64 (*btf_bpf_sysctl_set_new_value)(struct bpf_sysctl_kern *, const char *, size_t); -struct xprt_create; +typedef u64 (*btf_bpf_get_netns_cookie_sockopt)(struct bpf_sockopt_kern *); -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]; +enum sock_type { + SOCK_STREAM = 1, + SOCK_DGRAM = 2, + SOCK_RAW = 3, + SOCK_RDM = 4, + SOCK_SEQPACKET = 5, + SOCK_DCCP = 6, + SOCK_PACKET = 10, }; -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; +enum { + IPPROTO_IP = 0, + IPPROTO_ICMP = 1, + IPPROTO_IGMP = 2, + IPPROTO_IPIP = 4, + IPPROTO_TCP = 6, + IPPROTO_EGP = 8, + IPPROTO_PUP = 12, + IPPROTO_UDP = 17, + IPPROTO_IDP = 22, + IPPROTO_TP = 29, + IPPROTO_DCCP = 33, + IPPROTO_IPV6 = 41, + IPPROTO_RSVP = 46, + IPPROTO_GRE = 47, + IPPROTO_ESP = 50, + IPPROTO_AH = 51, + IPPROTO_MTP = 92, + IPPROTO_BEETPH = 94, + IPPROTO_ENCAP = 98, + IPPROTO_PIM = 103, + IPPROTO_COMP = 108, + IPPROTO_SCTP = 132, + IPPROTO_UDPLITE = 136, + IPPROTO_MPLS = 137, + IPPROTO_ETHERNET = 143, + IPPROTO_RAW = 255, + IPPROTO_MPTCP = 262, + IPPROTO_MAX = 263, }; -struct rpc_sysfs_xprt_switch; +enum sock_flags { + SOCK_DEAD = 0, + SOCK_DONE = 1, + SOCK_URGINLINE = 2, + SOCK_KEEPOPEN = 3, + SOCK_LINGER = 4, + SOCK_DESTROY = 5, + SOCK_BROADCAST = 6, + SOCK_TIMESTAMP = 7, + SOCK_ZAPPED = 8, + SOCK_USE_WRITE_QUEUE = 9, + SOCK_DBG = 10, + SOCK_RCVTSTAMP = 11, + SOCK_RCVTSTAMPNS = 12, + SOCK_LOCALROUTE = 13, + SOCK_MEMALLOC = 14, + SOCK_TIMESTAMPING_RX_SOFTWARE = 15, + SOCK_FASYNC = 16, + SOCK_RXQ_OVFL = 17, + SOCK_ZEROCOPY = 18, + SOCK_WIFI_STATUS = 19, + SOCK_NOFCS = 20, + SOCK_FILTER_LOCKED = 21, + SOCK_SELECT_ERR_QUEUE = 22, + SOCK_RCU_FREE = 23, + SOCK_TXTIME = 24, + SOCK_XDP = 25, + SOCK_TSTAMP_NEW = 26, +}; -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; +struct reuseport_array { + struct bpf_map map; + struct sock *ptrs[0]; }; -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; +enum bpf_struct_ops_state { + BPF_STRUCT_OPS_STATE_INIT = 0, + BPF_STRUCT_OPS_STATE_INUSE = 1, + BPF_STRUCT_OPS_STATE_TOBEFREE = 2, }; -struct rpc_version; +struct bpf_struct_ops_value { + refcount_t refcnt; + enum bpf_struct_ops_state state; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + char data[0]; +}; -struct 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 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; + long: 64; + long: 64; + long: 64; + long: 64; + 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 bpf_struct_ops_value kvalue; }; -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; +struct bpf_struct_ops_tcp_congestion_ops { + refcount_t refcnt; + enum bpf_struct_ops_state state; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 tcp_congestion_ops data; }; -struct svc_version; +struct sembuf { + short unsigned int sem_num; + short int sem_op; + short int sem_flg; +}; -struct svc_rqst; +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 svc_process_info; +struct __key_reference_with_attributes; -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 struct __key_reference_with_attributes *key_ref_t; -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 xfrm_sec_ctx { + __u8 ctx_doi; + __u8 ctx_alg; + __u16 ctx_len; + __u32 ctx_sid; + char ctx_str[0]; }; -struct rpc_version { - u32 number; - unsigned int nrprocs; - const struct rpc_procinfo *procs; - unsigned int *counts; +struct xfrm_user_sec_ctx { + __u16 len; + __u16 exttype; + __u8 ctx_alg; + __u8 ctx_doi; + __u16 ctx_len; }; -struct nfs_fh { - short unsigned int size; - unsigned char data[128]; +enum { + BPF_F_BPRM_SECUREEXEC = 1, }; -enum nfs3_stable_how { - NFS_UNSTABLE = 0, - NFS_DATA_SYNC = 1, - NFS_FILE_SYNC = 2, - NFS_INVALID_STABLE_HOW = 4294967295, +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 nfs4_label { - uint32_t lfs; - uint32_t pi; - u32 len; - char *label; -}; +typedef u64 (*btf_bpf_bprm_opts_set)(struct linux_binprm *, u64); -typedef struct { - char data[8]; -} nfs4_verifier; +typedef u64 (*btf_bpf_ima_inode_hash)(struct inode *, void *, u32); -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, +enum perf_branch_sample_type { + PERF_SAMPLE_BRANCH_USER = 1, + PERF_SAMPLE_BRANCH_KERNEL = 2, + PERF_SAMPLE_BRANCH_HV = 4, + PERF_SAMPLE_BRANCH_ANY = 8, + PERF_SAMPLE_BRANCH_ANY_CALL = 16, + PERF_SAMPLE_BRANCH_ANY_RETURN = 32, + PERF_SAMPLE_BRANCH_IND_CALL = 64, + PERF_SAMPLE_BRANCH_ABORT_TX = 128, + PERF_SAMPLE_BRANCH_IN_TX = 256, + PERF_SAMPLE_BRANCH_NO_TX = 512, + PERF_SAMPLE_BRANCH_COND = 1024, + PERF_SAMPLE_BRANCH_CALL_STACK = 2048, + PERF_SAMPLE_BRANCH_IND_JUMP = 4096, + PERF_SAMPLE_BRANCH_CALL = 8192, + PERF_SAMPLE_BRANCH_NO_FLAGS = 16384, + PERF_SAMPLE_BRANCH_NO_CYCLES = 32768, + PERF_SAMPLE_BRANCH_TYPE_SAVE = 65536, + PERF_SAMPLE_BRANCH_HW_INDEX = 131072, + PERF_SAMPLE_BRANCH_MAX = 262144, }; -struct gss_api_mech; - -struct gss_ctx { - struct gss_api_mech *mech_type; - void *internal_ctx_id; - unsigned int slack; - unsigned int align; +enum perf_event_read_format { + PERF_FORMAT_TOTAL_TIME_ENABLED = 1, + PERF_FORMAT_TOTAL_TIME_RUNNING = 2, + PERF_FORMAT_ID = 4, + PERF_FORMAT_GROUP = 8, + PERF_FORMAT_MAX = 16, }; -struct gss_api_ops; - -struct pf_desc; - -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; +enum perf_event_ioc_flags { + PERF_IOC_FLAG_GROUP = 1, }; -struct auth_domain; +struct perf_event_mmap_page { + __u32 version; + __u32 compat_version; + __u32 lock; + __u32 index; + __s64 offset; + __u64 time_enabled; + __u64 time_running; + union { + __u64 capabilities; + struct { + __u64 cap_bit0: 1; + __u64 cap_bit0_is_deprecated: 1; + __u64 cap_user_rdpmc: 1; + __u64 cap_user_time: 1; + __u64 cap_user_time_zero: 1; + __u64 cap_user_time_short: 1; + __u64 cap_____res: 58; + }; + }; + __u16 pmc_width; + __u16 time_shift; + __u32 time_mult; + __u64 time_offset; + __u64 time_zero; + __u32 size; + __u32 __reserved_1; + __u64 time_cycles; + __u64 time_mask; + __u8 __reserved[928]; + __u64 data_head; + __u64 data_tail; + __u64 data_offset; + __u64 data_size; + __u64 aux_head; + __u64 aux_tail; + __u64 aux_offset; + __u64 aux_size; +}; -struct pf_desc { - u32 pseudoflavor; - u32 qop; - u32 service; - char *name; - char *auth_domain_name; - struct auth_domain *domain; - bool datatouch; +struct perf_ns_link_info { + __u64 dev; + __u64 ino; }; -struct auth_ops; +enum { + NET_NS_INDEX = 0, + UTS_NS_INDEX = 1, + IPC_NS_INDEX = 2, + PID_NS_INDEX = 3, + USER_NS_INDEX = 4, + MNT_NS_INDEX = 5, + CGROUP_NS_INDEX = 6, + NR_NAMESPACES = 7, +}; -struct auth_domain { - struct kref ref; - struct hlist_node hash; - char *name; - struct auth_ops *flavour; - struct callback_head callback_head; +enum perf_event_type { + PERF_RECORD_MMAP = 1, + PERF_RECORD_LOST = 2, + PERF_RECORD_COMM = 3, + PERF_RECORD_EXIT = 4, + PERF_RECORD_THROTTLE = 5, + PERF_RECORD_UNTHROTTLE = 6, + PERF_RECORD_FORK = 7, + PERF_RECORD_READ = 8, + PERF_RECORD_SAMPLE = 9, + PERF_RECORD_MMAP2 = 10, + PERF_RECORD_AUX = 11, + PERF_RECORD_ITRACE_START = 12, + PERF_RECORD_LOST_SAMPLES = 13, + PERF_RECORD_SWITCH = 14, + PERF_RECORD_SWITCH_CPU_WIDE = 15, + PERF_RECORD_NAMESPACES = 16, + PERF_RECORD_KSYMBOL = 17, + PERF_RECORD_BPF_EVENT = 18, + PERF_RECORD_CGROUP = 19, + PERF_RECORD_TEXT_POKE = 20, + PERF_RECORD_MAX = 21, }; -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 perf_guest_info_callbacks { + int (*is_in_guest)(); + int (*is_user_mode)(); + long unsigned int (*get_guest_ip)(); + void (*handle_intel_pt_intr)(); }; -struct nfs4_string { - unsigned int len; - char *data; +enum perf_addr_filter_action_t { + PERF_ADDR_FILTER_ACTION_STOP = 0, + PERF_ADDR_FILTER_ACTION_START = 1, + PERF_ADDR_FILTER_ACTION_FILTER = 2, }; -struct nfs_fsid { - uint64_t major; - uint64_t minor; +struct perf_addr_filter { + struct list_head entry; + struct path path; + long unsigned int offset; + long unsigned int size; + enum perf_addr_filter_action_t action; }; -struct nfs4_threshold { - __u32 bm; - __u32 l_type; - __u64 rd_sz; - __u64 wr_sz; - __u64 rd_io_sz; - __u64 wr_io_sz; +struct swevent_hlist { + struct hlist_head heads[256]; + struct callback_head callback_head; }; -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 pmu_event_list { + raw_spinlock_t lock; + struct list_head list; }; -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 perf_buffer { + refcount_t refcount; + struct callback_head callback_head; + int nr_pages; + int overwrite; + int paused; + atomic_t poll; + local_t head; + unsigned int nest; + local_t events; + local_t wakeup; + local_t lost; + long int watermark; + long int aux_watermark; + spinlock_t event_lock; + struct list_head event_list; + atomic_t mmap_count; + long unsigned int mmap_locked; + struct user_struct *mmap_user; + long int aux_head; + unsigned int aux_nest; + long int aux_wakeup; + long unsigned int aux_pgoff; + int aux_nr_pages; + int aux_overwrite; + atomic_t aux_mmap_count; + long unsigned int aux_mmap_locked; + void (*free_aux)(void *); + refcount_t aux_refcount; + int aux_in_sampling; + void **aux_pages; + void *aux_priv; + struct perf_event_mmap_page *user_page; + void *data_pages[0]; }; -struct nfs_fsstat { - struct nfs_fattr *fattr; - __u64 tbytes; - __u64 fbytes; - __u64 abytes; - __u64 tfiles; - __u64 ffiles; - __u64 afiles; +struct match_token { + int token; + const char *pattern; }; -struct nfs_pathconf { - struct nfs_fattr *fattr; - __u32 max_link; - __u32 max_namelen; +enum { + MAX_OPT_ARGS = 3, }; -struct nfs4_change_info { - u32 atomic; - u64 before; - u64 after; +struct min_heap { + void *data; + int nr; + int size; }; -struct nfs4_slot; - -struct nfs4_sequence_args { - struct nfs4_slot *sa_slot; - u8 sa_cache_this: 1; - u8 sa_privileged: 1; +struct min_heap_callbacks { + int elem_size; + bool (*less)(const void *, const void *); + void (*swp)(void *, void *); }; -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; +typedef int (*remote_function_f)(void *); + +struct remote_function_call { + struct task_struct *p; + remote_function_f func; + void *info; + int ret; }; -struct nfs_open_context; +typedef void (*event_f)(struct perf_event *, struct perf_cpu_context *, struct perf_event_context *, void *); -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 event_function_struct { + struct perf_event *event; + event_f func; + void *data; }; -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; +enum event_type_t { + EVENT_FLEXIBLE = 1, + EVENT_PINNED = 2, + EVENT_TIME = 4, + EVENT_CPU = 8, + EVENT_ALL = 3, }; -struct nlm_host; +struct __group_key { + int cpu; + struct cgroup *cgroup; +}; -struct nfs_iostats; +struct stop_event_data { + struct perf_event *event; + unsigned int restart; +}; -struct nfs_auth_info { - unsigned int flavor_len; - rpc_authflavor_t flavors[12]; +struct perf_read_data { + struct perf_event *event; + bool group; + int ret; }; -struct fscache_volume; +struct perf_read_event { + struct perf_event_header header; + u32 pid; + u32 tid; +}; -struct pnfs_layoutdriver_type; +typedef void perf_iterate_f(struct perf_event *, void *); -struct nfs_client; +struct remote_output { + struct perf_buffer *rb; + int err; +}; -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 write_congested; - 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 fscache_volume *fscache; - char *fscache_uniq; - 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 perf_task_event { + struct task_struct *task; + struct perf_event_context *task_ctx; + struct { + struct perf_event_header header; + u32 pid; + u32 ppid; + u32 tid; + u32 ptid; + u64 time; + } event_id; }; -struct nfs_subversion; +struct perf_comm_event { + struct task_struct *task; + char *comm; + int comm_size; + struct { + struct perf_event_header header; + u32 pid; + u32 tid; + } event_id; +}; -struct idmap; +struct perf_namespaces_event { + struct task_struct *task; + struct { + struct perf_event_header header; + u32 pid; + u32 tid; + u64 nr_namespaces; + struct perf_ns_link_info link_info[7]; + } event_id; +}; -struct nfs4_slot_table; +struct perf_cgroup_event { + char *path; + int path_size; + struct { + struct perf_event_header header; + u64 id; + char path[0]; + } event_id; +}; -struct nfs4_session; +struct perf_mmap_event { + struct vm_area_struct *vma; + const char *file_name; + int file_size; + int maj; + int min; + u64 ino; + u64 ino_generation; + u32 prot; + u32 flags; + u8 build_id[20]; + u32 build_id_size; + struct { + struct perf_event_header header; + u32 pid; + u32 tid; + u64 start; + u64 len; + u64 pgoff; + } event_id; +}; -struct nfs_rpc_ops; +struct perf_switch_event { + struct task_struct *task; + struct task_struct *next_prev; + struct { + struct perf_event_header header; + u32 next_prev_pid; + u32 next_prev_tid; + } event_id; +}; -struct nfs4_minor_version_ops; +struct perf_ksymbol_event { + const char *name; + int name_len; + struct { + struct perf_event_header header; + u64 addr; + u32 len; + u16 ksym_type; + u16 flags; + } event_id; +}; -struct nfs41_server_owner; +struct perf_bpf_event { + struct bpf_prog *prog; + struct { + struct perf_event_header header; + u16 type; + u16 flags; + u32 id; + u8 tag[8]; + } event_id; +}; -struct nfs41_server_scope; +struct perf_text_poke_event { + const void *old_bytes; + const void *new_bytes; + size_t pad; + u16 old_len; + u16 new_len; + struct { + struct perf_event_header header; + u64 addr; + } event_id; +}; -struct nfs41_impl_id; +struct swevent_htable { + struct swevent_hlist *swevent_hlist; + struct mutex hlist_mutex; + int hlist_refcount; + int recursion[4]; +}; -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 net *cl_net; - struct list_head pending_cb_stateids; +enum perf_probe_config { + PERF_PROBE_CONFIG_IS_RETPROBE = 1, + PERF_UPROBE_REF_CTR_OFFSET_BITS = 32, + PERF_UPROBE_REF_CTR_OFFSET_SHIFT = 32, }; -struct pnfs_layout_segment; +enum { + IF_ACT_NONE = 4294967295, + IF_ACT_FILTER = 0, + IF_ACT_START = 1, + IF_ACT_STOP = 2, + IF_SRC_FILE = 3, + IF_SRC_KERNEL = 4, + IF_SRC_FILEADDR = 5, + IF_SRC_KERNELADDR = 6, +}; -struct nfs_seqid { - struct nfs_seqid_counter *sequence; - struct list_head list; - struct rpc_task *task; +enum { + IF_STATE_ACTION = 0, + IF_STATE_SOURCE = 1, + IF_STATE_END = 2, }; -struct nfs_write_verifier { - char data[8]; +struct perf_aux_event { + struct perf_event_header header; + u32 pid; + u32 tid; }; -struct nfs_writeverf { - struct nfs_write_verifier verifier; - enum nfs3_stable_how committed; +struct perf_aux_event___2 { + struct perf_event_header header; + u64 offset; + u64 size; + u64 flags; }; -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 callchain_cpus_entries { + struct callback_head callback_head; + struct perf_callchain_entry *cpu_entries[0]; }; -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 uprobe { + struct rb_node rb_node; + refcount_t ref; + struct rw_semaphore register_rwsem; + struct rw_semaphore consumer_rwsem; + struct list_head pending_list; + struct uprobe_consumer *consumers; + struct inode *inode; + loff_t offset; + loff_t ref_ctr_offset; + long unsigned int flags; + struct arch_uprobe arch; }; -struct nfs_commitargs { - struct nfs4_sequence_args seq_args; - struct nfs_fh *fh; - __u64 offset; - __u32 count; - const u32 *bitmask; +struct xol_area { + wait_queue_head_t wq; + atomic_t slot_count; + long unsigned int *bitmap; + struct vm_special_mapping xol_mapping; + struct page *pages[2]; + long unsigned int vaddr; }; -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 compact_control; + +struct capture_control { + struct compact_control *cc; + struct page *page; }; -struct nfs_removeargs { - struct nfs4_sequence_args seq_args; - const struct nfs_fh *fh; - struct qstr name; +typedef int filler_t(void *, struct page *); + +struct page_vma_mapped_walk { + struct page *page; + struct vm_area_struct *vma; + long unsigned int address; + pmd_t *pmd; + pte_t *pte; + spinlock_t *ptl; + unsigned int flags; }; -struct nfs_removeres { - struct nfs4_sequence_res seq_res; - struct nfs_server *server; - struct nfs_fattr *dir_attr; - struct nfs4_change_info cinfo; +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 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 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 compact_control { + struct list_head freepages; + struct list_head migratepages; + unsigned int nr_freepages; + unsigned int nr_migratepages; + long unsigned int free_pfn; + long unsigned int migrate_pfn; + long unsigned int fast_start_pfn; + struct zone *zone; + long unsigned int total_migrate_scanned; + long unsigned int total_free_scanned; + short unsigned int fast_search_fail; + short int search_order; + const gfp_t gfp_mask; + int order; + int migratetype; + const unsigned int alloc_flags; + const int highest_zoneidx; + enum migrate_mode mode; + bool ignore_skip_hint; + bool no_set_skip_hint; + bool ignore_block_suitable; + bool direct_compaction; + bool proactive_compaction; + bool whole_zone; + bool contended; + bool rescan; + bool alloc_contig; }; -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 delayed_uprobe { + struct list_head list; + struct uprobe *uprobe; + struct mm_struct *mm; }; -struct nfs_entry { - __u64 ino; - __u64 cookie; - const char *name; - unsigned int len; - int eof; - struct nfs_fh *fh; - struct nfs_fattr *fattr; - unsigned char d_type; - struct nfs_server *server; +struct __uprobe_key { + struct inode *inode; + loff_t offset; }; -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 map_info { + struct map_info *next; + struct mm_struct *mm; + long unsigned int vaddr; }; -struct nfs_readdir_res { - __be32 *verf; -}; +struct parallel_data; -struct nfs4_pathname { - unsigned int ncomponents; - struct nfs4_string components[512]; +struct padata_priv { + struct list_head list; + struct parallel_data *pd; + int cb_cpu; + unsigned int seq_nr; + int info; + void (*parallel)(struct padata_priv *); + void (*serial)(struct padata_priv *); }; -struct nfs4_fs_location { - unsigned int nservers; - struct nfs4_string servers[10]; - struct nfs4_pathname rootpath; +struct padata_cpumask { + cpumask_var_t pcpu; + cpumask_var_t cbcpu; }; -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 padata_shell; -struct nfstime4 { - u64 seconds; - u32 nseconds; -}; +struct padata_list; -struct pnfs_commit_ops; +struct padata_serial_queue; -struct pnfs_ds_commit_info { - struct list_head commits; - unsigned int nwritten; - unsigned int ncommitting; - const struct pnfs_commit_ops *ops; +struct parallel_data { + struct padata_shell *ps; + struct padata_list *reorder_list; + struct padata_serial_queue *squeue; + refcount_t refcnt; + unsigned int seq_nr; + unsigned int processed; + int cpu; + struct padata_cpumask cpumask; + struct work_struct reorder_work; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 nfs41_server_owner { - uint64_t minor_id; - uint32_t major_id_sz; - char major_id[1024]; +struct padata_list { + struct list_head list; + spinlock_t lock; }; -struct nfs41_server_scope { - uint32_t server_scope_sz; - char server_scope[1024]; +struct padata_serial_queue { + struct padata_list serial; + struct work_struct work; + struct parallel_data *pd; }; -struct nfs41_impl_id { - char domain[1025]; - char name[1025]; - struct nfstime4 date; -}; +struct padata_instance; -struct nfs_page_array { - struct page **pagevec; - unsigned int npages; - struct page *page_array[8]; +struct padata_shell { + struct padata_instance *pinst; + struct parallel_data *pd; + struct parallel_data *opd; + struct list_head list; }; -struct nfs_page; - -struct nfs_rw_ops; - -struct nfs_io_completion; - -struct nfs_direct_req; +struct padata_instance { + struct hlist_node cpu_online_node; + struct hlist_node cpu_dead_node; + struct workqueue_struct *parallel_wq; + struct workqueue_struct *serial_wq; + struct list_head pslist; + struct padata_cpumask cpumask; + struct kobject kobj; + struct mutex lock; + u8 flags; +}; -struct nfs_pgio_completion_ops; +struct padata_mt_job { + void (*thread_fn)(long unsigned int, long unsigned int, void *); + void *fn_arg; + long unsigned int start; + long unsigned int size; + long unsigned int align; + long unsigned int min_chunk; + int max_threads; +}; -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 padata_work { + struct work_struct pw_work; + struct list_head pw_list; + void *pw_data; }; -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 padata_mt_job_state { + spinlock_t lock; + struct completion completion; + struct padata_mt_job *job; + int nworks; + int nworks_fini; + long unsigned int chunk_size; }; -struct nfs_mds_commit_info { - atomic_t rpcs_out; - atomic_long_t ncommit; - struct list_head list; +struct padata_sysfs_entry { + struct attribute attr; + ssize_t (*show)(struct padata_instance *, struct attribute *, char *); + ssize_t (*store)(struct padata_instance *, struct attribute *, const char *, size_t); }; -struct nfs_commit_data; +struct static_key_mod { + struct static_key_mod *next; + struct jump_entry *entries; + struct module *mod; +}; -struct nfs_commit_info; +struct static_key_deferred { + struct static_key key; + long unsigned int timeout; + struct delayed_work work; +}; -struct nfs_commit_completion_ops { - void (*completion)(struct nfs_commit_data *); - void (*resched_write)(struct nfs_commit_info *, struct nfs_page *); +enum rseq_cpu_id_state { + RSEQ_CPU_ID_UNINITIALIZED = 4294967295, + RSEQ_CPU_ID_REGISTRATION_FAILED = 4294967294, }; -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; +enum rseq_flags { + RSEQ_FLAG_UNREGISTER = 1, }; -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; +enum rseq_cs_flags { + RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = 1, + RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = 2, + RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = 4, }; -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 rseq_cs { + __u32 version; + __u32 flags; + __u64 start_ip; + __u64 post_commit_offset; + __u64 abort_ip; }; -struct nfs_renamedata { - struct nfs_renameargs args; - struct nfs_renameres res; - struct rpc_task task; - 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; +struct trace_event_raw_rseq_update { + struct trace_entry ent; + s32 cpu_id; + char __data[0]; }; -struct nlmclnt_operations; +struct trace_event_raw_rseq_ip_fixup { + struct trace_entry ent; + long unsigned int regs_ip; + long unsigned int start_ip; + long unsigned int post_commit_offset; + long unsigned int abort_ip; + char __data[0]; +}; -struct nfs_client_initdata; +struct trace_event_data_offsets_rseq_update {}; -struct nfs_access_entry; +struct trace_event_data_offsets_rseq_ip_fixup {}; -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 inode *); - int (*setattr)(struct dentry *, struct nfs_fattr *, struct iattr *); - int (*lookup)(struct inode *, struct dentry *, struct nfs_fh *, struct nfs_fattr *); - int (*lookupp)(struct inode *, struct nfs_fh *, struct nfs_fattr *); - int (*access)(struct inode *, struct nfs_access_entry *, const struct cred *); - 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 *); -}; +typedef void (*btf_trace_rseq_update)(void *, struct task_struct *); -struct nfs_access_entry { - struct rb_node rb_node; - struct list_head lru; - kuid_t fsuid; - kgid_t fsgid; - struct group_info *group_info; - __u32 mask; - struct callback_head callback_head; -}; +typedef void (*btf_trace_rseq_ip_fixup)(void *, long unsigned int, long unsigned int, long unsigned int, long unsigned int); -struct nfs4_state_recovery_ops; +struct watch; -struct nfs4_state_maintenance_ops; +struct watch_list { + struct callback_head rcu; + struct hlist_head watchers; + void (*release_watch)(struct watch *); + spinlock_t lock; +}; -struct nfs4_mig_recovery_ops; +enum watch_notification_type { + WATCH_TYPE_META = 0, + WATCH_TYPE_KEY_NOTIFY = 1, + WATCH_TYPE__NR = 2, +}; -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; +enum watch_meta_notification_subtype { + WATCH_META_REMOVAL_NOTIFICATION = 0, + WATCH_META_LOSS_NOTIFICATION = 1, }; -struct nfs4_state_owner; +struct watch_notification { + __u32 type: 24; + __u32 subtype: 8; + __u32 info; +}; -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; - 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 watch_notification_type_filter { + __u32 type; + __u32 info_filter; + __u32 info_mask; + __u32 subtype_filter[8]; }; -struct cache_head { - struct hlist_node cache_list; - time64_t expiry_time; - time64_t last_refresh; - struct kref ref; - long unsigned int flags; +struct watch_notification_filter { + __u32 nr_filters; + __u32 __reserved; + struct watch_notification_type_filter filters[0]; }; -struct cache_deferred_req; +struct watch_notification_removal { + struct watch_notification watch; + __u64 id; +}; -struct cache_req { - struct cache_deferred_req * (*defer)(struct cache_req *); - int thread_wait; +struct watch_type_filter { + enum watch_notification_type type; + __u32 subtype_filter[1]; + __u32 info_filter; + __u32 info_mask; }; -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); +struct watch_filter { + union { + struct callback_head rcu; + long unsigned int type_filter[1]; + }; + u32 nr_filters; + struct watch_type_filter filters[0]; }; -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; +struct watch_queue { + struct callback_head rcu; + struct watch_filter *filter; + struct pipe_inode_info *pipe; + struct hlist_head watches; + struct page **notes; + long unsigned int *notes_bitmap; + struct kref usage; + spinlock_t lock; + unsigned int nr_notes; + unsigned int nr_pages; + bool defunct; }; -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 watch { + union { + struct callback_head rcu; + u32 info_id; + }; + struct watch_queue *queue; + struct hlist_node queue_node; + struct watch_list *watch_list; + struct hlist_node list_node; + const struct cred *cred; + void *private; + u64 id; + struct kref usage; }; -struct svc_cacherep; +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 svc_procedure; +struct x509_certificate; -struct svc_deferred_req; +struct pkcs7_signed_info; -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 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 svc_pool_stats { - atomic_long_t packets; - long unsigned int sockets_queued; - atomic_long_t threads_woken; - atomic_long_t threads_timedout; -}; +typedef void (*xa_update_node_t)(struct xa_node *); -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; - long: 64; - long: 64; - long: 64; - long: 64; - 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 xa_state { + struct xarray *xa; + long unsigned int xa_index; + unsigned char xa_shift; + unsigned char xa_sibs; + unsigned char xa_offset; + unsigned char xa_pad; + struct xa_node *xa_node; + struct xa_node *xa_alloc; + xa_update_node_t xa_update; }; -struct svc_procedure { - __be32 (*pc_func)(struct svc_rqst *); - bool (*pc_decode)(struct svc_rqst *, struct xdr_stream *); - bool (*pc_encode)(struct svc_rqst *, struct xdr_stream *); - 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; -}; +typedef int __kernel_rwf_t; -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]; +enum positive_aop_returns { + AOP_WRITEPAGE_ACTIVATE = 524288, + AOP_TRUNCATED_PAGE = 524289, }; -struct svc_process_info { - union { - int (*dispatch)(struct svc_rqst *, __be32 *); - struct { - unsigned int lovers; - unsigned int hivers; - } mismatch; - }; +struct vm_event_state { + long unsigned int event[96]; }; -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 *); +enum iter_type { + ITER_IOVEC = 0, + ITER_KVEC = 1, + ITER_BVEC = 2, + ITER_PIPE = 3, + ITER_XARRAY = 4, + ITER_DISCARD = 5, }; -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; +enum mapping_flags { + AS_EIO = 0, + AS_ENOSPC = 1, + AS_MM_ALL_LOCKS = 2, + AS_UNEVICTABLE = 3, + AS_EXITING = 4, + AS_NO_WRITEBACK_TAGS = 5, + AS_THP_SUPPORT = 6, }; -struct nfs4_ssc_client_ops { - struct file * (*sco_open)(struct vfsmount *, struct nfs_fh *, nfs4_stateid *); - void (*sco_close)(struct file *); +struct wait_page_key { + struct page *page; + int bit_nr; + int page_match; }; -struct nfs_ssc_client_ops { - void (*sco_sb_deactive)(struct super_block *); +struct pagevec { + unsigned char nr; + bool percpu_pvec_drained; + struct page *pages[15]; }; -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 fid { + union { + struct { + u32 ino; + u32 gen; + u32 parent_ino; + u32 parent_gen; + } i32; + struct { + u32 block; + u16 partref; + u16 parent_partref; + u32 generation; + u32 parent_block; + u32 parent_generation; + } udf; + __u32 raw[0]; + }; }; -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 trace_event_raw_mm_filemap_op_page_cache { + struct trace_entry ent; + long unsigned int pfn; + long unsigned int i_ino; + long unsigned int index; + dev_t s_dev; + char __data[0]; }; -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 trace_event_raw_filemap_set_wb_err { + struct trace_entry ent; + long unsigned int i_ino; + dev_t s_dev; + errseq_t errseq; + char __data[0]; }; -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 trace_event_raw_file_check_and_advance_wb_err { + struct trace_entry ent; + struct file *file; + long unsigned int i_ino; + dev_t s_dev; + errseq_t old; + errseq_t new; + char __data[0]; }; -typedef struct { - u32 mask; - u32 addr; -} psw_compat_t; +struct trace_event_data_offsets_mm_filemap_op_page_cache {}; -typedef struct { - psw_compat_t psw; - u32 gprs[16]; - u32 acrs[16]; - u32 orig_gpr2; - int: 32; -} s390_compat_regs; +struct trace_event_data_offsets_filemap_set_wb_err {}; -typedef s390_compat_regs compat_elf_gregset_t; +struct trace_event_data_offsets_file_check_and_advance_wb_err {}; -typedef __u32 Elf32_Addr; +typedef void (*btf_trace_mm_filemap_delete_from_page_cache)(void *, struct page *); -typedef __u16 Elf32_Half; +typedef void (*btf_trace_mm_filemap_add_to_page_cache)(void *, struct page *); -typedef __u32 Elf32_Off; +typedef void (*btf_trace_filemap_set_wb_err)(void *, struct address_space *, errseq_t); -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 void (*btf_trace_file_check_and_advance_wb_err)(void *, struct file *, errseq_t); -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; +enum behavior { + EXCLUSIVE = 0, + SHARED = 1, + DROP = 2, }; -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 reciprocal_value { + u32 m; + u8 sh1; + u8 sh2; }; -struct compat_elf_siginfo { - compat_int_t si_signo; - compat_int_t si_code; - compat_int_t si_errno; +struct kmem_cache_order_objects { + unsigned int x; }; -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 kmem_cache_cpu; -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 kmem_cache_node; -struct compat_elf_prstatus { - struct compat_elf_prstatus_common common; - compat_elf_gregset_t pr_reg; - compat_int_t pr_fpvalid; - int: 32; +struct kmem_cache { + struct kmem_cache_cpu *cpu_slab; + slab_flags_t flags; + long unsigned int min_partial; + unsigned int size; + unsigned int object_size; + struct reciprocal_value reciprocal_size; + unsigned int offset; + unsigned int cpu_partial; + struct kmem_cache_order_objects oo; + struct kmem_cache_order_objects max; + struct kmem_cache_order_objects min; + gfp_t allocflags; + int refcount; + void (*ctor)(void *); + unsigned int inuse; + unsigned int align; + unsigned int red_left_pad; + const char *name; + struct list_head list; + struct kobject kobj; + long unsigned int random; + unsigned int remote_node_defrag_ratio; + unsigned int *random_seq; + unsigned int useroffset; + unsigned int usersize; + struct kmem_cache_node *node[2]; }; -struct elf_thread_core_info___2 { - struct elf_thread_core_info___2 *next; - struct task_struct *task; - struct compat_elf_prstatus prstatus; - struct memelfnote notes[0]; -}; +typedef struct {} local_lock_t; -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 kmem_cache_cpu { + void **freelist; + long unsigned int tid; + struct page *page; + struct page *partial; + local_lock_t lock; }; -struct core_name { - char *corename; - int used; - int size; +struct kmem_cache_node { + spinlock_t list_lock; + long unsigned int nr_partial; + struct list_head partial; + atomic_long_t nr_slabs; + atomic_long_t total_objects; + struct list_head full; }; -struct folio_iter { - struct folio *folio; - size_t offset; - size_t length; - struct folio *_next; - size_t _seg_count; - int _i; +struct zap_details { + struct address_space *check_mapping; + long unsigned int first_index; + long unsigned int last_index; + struct page *single_page; }; -enum { - BIOSET_NEED_BVECS = 1, - BIOSET_NEED_RESCUER = 2, - BIOSET_PERCPU_CACHE = 4, +enum oom_constraint { + CONSTRAINT_NONE = 0, + CONSTRAINT_CPUSET = 1, + CONSTRAINT_MEMORY_POLICY = 2, + CONSTRAINT_MEMCG = 3, }; -struct iomap_ioend { - struct list_head io_list; - u16 io_type; - u16 io_flags; - u32 io_folios; - struct inode *io_inode; - size_t io_size; - loff_t io_offset; - sector_t io_sector; - struct bio *io_bio; - struct bio io_inline_bio; +struct oom_control { + struct zonelist *zonelist; + nodemask_t *nodemask; + struct mem_cgroup *memcg; + const gfp_t gfp_mask; + const int order; + long unsigned int totalpages; + struct task_struct *chosen; + long int chosen_points; + enum oom_constraint constraint; }; -struct iomap_writepage_ctx; - -struct iomap_writeback_ops { - int (*map_blocks)(struct iomap_writepage_ctx *, struct inode *, loff_t); - int (*prepare_ioend)(struct iomap_ioend *, int); - void (*discard_folio)(struct folio *, loff_t); +enum compact_priority { + COMPACT_PRIO_SYNC_FULL = 0, + MIN_COMPACT_PRIORITY = 0, + COMPACT_PRIO_SYNC_LIGHT = 1, + MIN_COMPACT_COSTLY_PRIORITY = 1, + DEF_COMPACT_PRIORITY = 1, + COMPACT_PRIO_ASYNC = 2, + INIT_COMPACT_PRIORITY = 2, }; -struct iomap_writepage_ctx { - struct iomap iomap; - struct iomap_ioend *ioend; - const struct iomap_writeback_ops *ops; +enum compact_result { + COMPACT_NOT_SUITABLE_ZONE = 0, + COMPACT_SKIPPED = 1, + COMPACT_DEFERRED = 2, + COMPACT_NO_SUITABLE_PAGE = 3, + COMPACT_CONTINUE = 4, + COMPACT_COMPLETE = 5, + COMPACT_PARTIAL_SKIPPED = 6, + COMPACT_CONTENDED = 7, + COMPACT_SUCCESS = 8, }; -typedef int (*list_cmp_func_t)(void *, const struct list_head *, const struct list_head *); - -struct iomap_page { - atomic_t read_bytes_pending; - atomic_t write_bytes_pending; - spinlock_t uptodate_lock; - long unsigned int uptodate[0]; +struct trace_event_raw_oom_score_adj_update { + struct trace_entry ent; + pid_t pid; + char comm[16]; + short int oom_score_adj; + char __data[0]; }; -struct iomap_readpage_ctx { - struct folio *cur_folio; - bool cur_folio_in_bio; - struct bio *bio; - struct readahead_control *rac; +struct trace_event_raw_reclaim_retry_zone { + struct trace_entry ent; + int node; + int zone_idx; + int order; + long unsigned int reclaimable; + long unsigned int available; + long unsigned int min_wmark; + int no_progress_loops; + bool wmark_check; + char __data[0]; }; -struct iomap_dio_ops { - int (*end_io)(struct kiocb *, ssize_t, int, unsigned int); - void (*submit_io)(const struct iomap_iter *, struct bio *, loff_t); +struct trace_event_raw_mark_victim { + struct trace_entry ent; + int pid; + char __data[0]; }; -struct iomap_dio { - struct kiocb *iocb; - const struct iomap_dio_ops *dops; - loff_t i_size; - loff_t size; - atomic_t ref; - unsigned int flags; - int error; - size_t done_before; - bool wait_for_completion; - union { - struct { - struct iov_iter *iter; - struct task_struct *waiter; - struct bio *poll_bio; - } submit; - struct { - struct work_struct work; - } aio; - }; +struct trace_event_raw_wake_reaper { + struct trace_entry ent; + int pid; + char __data[0]; }; -struct trace_event_raw_iomap_readpage_class { +struct trace_event_raw_start_task_reaping { struct trace_entry ent; - dev_t dev; - u64 ino; - int nr_pages; + int pid; char __data[0]; }; -struct trace_event_raw_iomap_range_class { +struct trace_event_raw_finish_task_reaping { struct trace_entry ent; - dev_t dev; - u64 ino; - loff_t size; - loff_t offset; - u64 length; + int pid; char __data[0]; }; -struct trace_event_raw_iomap_class { +struct trace_event_raw_skip_task_reaping { struct trace_entry ent; - dev_t dev; - u64 ino; - u64 addr; - loff_t offset; - u64 length; - u16 type; - u16 flags; - dev_t bdev; + int pid; char __data[0]; }; -struct trace_event_raw_iomap_iter { +struct trace_event_raw_compact_retry { struct trace_entry ent; - dev_t dev; - u64 ino; - loff_t pos; - u64 length; - unsigned int flags; - const void *ops; - long unsigned int caller; + int order; + int priority; + int result; + int retries; + int max_retries; + bool ret; char __data[0]; }; -struct trace_event_data_offsets_iomap_readpage_class {}; +struct trace_event_data_offsets_oom_score_adj_update {}; -struct trace_event_data_offsets_iomap_range_class {}; +struct trace_event_data_offsets_reclaim_retry_zone {}; -struct trace_event_data_offsets_iomap_class {}; +struct trace_event_data_offsets_mark_victim {}; -struct trace_event_data_offsets_iomap_iter {}; +struct trace_event_data_offsets_wake_reaper {}; -typedef void (*btf_trace_iomap_readpage)(void *, struct inode *, int); +struct trace_event_data_offsets_start_task_reaping {}; -typedef void (*btf_trace_iomap_readahead)(void *, struct inode *, int); +struct trace_event_data_offsets_finish_task_reaping {}; -typedef void (*btf_trace_iomap_writepage)(void *, struct inode *, loff_t, u64); +struct trace_event_data_offsets_skip_task_reaping {}; -typedef void (*btf_trace_iomap_releasepage)(void *, struct inode *, loff_t, u64); +struct trace_event_data_offsets_compact_retry {}; -typedef void (*btf_trace_iomap_invalidate_folio)(void *, struct inode *, loff_t, u64); +typedef void (*btf_trace_oom_score_adj_update)(void *, struct task_struct *); -typedef void (*btf_trace_iomap_dio_invalidate_fail)(void *, struct inode *, loff_t, u64); +typedef void (*btf_trace_reclaim_retry_zone)(void *, struct zoneref *, int, long unsigned int, long unsigned int, long unsigned int, int, bool); -typedef void (*btf_trace_iomap_iter_dstmap)(void *, struct inode *, struct iomap *); +typedef void (*btf_trace_mark_victim)(void *, int); -typedef void (*btf_trace_iomap_iter_srcmap)(void *, struct inode *, struct iomap *); +typedef void (*btf_trace_wake_reaper)(void *, int); -typedef void (*btf_trace_iomap_iter)(void *, struct iomap_iter *, const void *, long unsigned int); +typedef void (*btf_trace_start_task_reaping)(void *, int); -struct iomap_swapfile_info { - 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; -}; +typedef void (*btf_trace_finish_task_reaping)(void *, int); -enum { - QIF_BLIMITS_B = 0, - QIF_SPACE_B = 1, - QIF_ILIMITS_B = 2, - QIF_INODES_B = 3, - QIF_BTIME_B = 4, - QIF_ITIME_B = 5, -}; +typedef void (*btf_trace_skip_task_reaping)(void *, int); -typedef __kernel_uid32_t qid_t; +typedef void (*btf_trace_compact_retry)(void *, int, enum compact_priority, enum compact_result, int, int, bool); + +enum wb_congested_state { + WB_async_congested = 0, + WB_sync_congested = 1, +}; enum { - DQF_INFO_DIRTY_B = 17, + XA_CHECK_SCHED = 4096, }; -struct dqstats { - long unsigned int stat[8]; - struct percpu_counter counter[8]; +enum wb_state { + WB_registered = 0, + WB_writeback_running = 1, + WB_has_dirty_io = 2, + WB_start_all = 3, }; enum { - _DQUOT_USAGE_ENABLED = 0, - _DQUOT_LIMITS_ENABLED = 1, - _DQUOT_SUSPENDED = 2, - _DQUOT_STATE_FLAGS = 3, + BLK_RW_ASYNC = 0, + BLK_RW_SYNC = 1, }; -struct quota_module_name { - int qm_fmt_id; - char *qm_mod_name; +struct wb_lock_cookie { + bool locked; + long unsigned int flags; }; -struct dquot_warn { - struct super_block *w_sb; - struct kqid w_dq_id; - short int w_type; +typedef int (*writepage_t)(struct page *, struct writeback_control *, void *); + +enum page_memcg_data_flags { + MEMCG_DATA_OBJCGS = 1, + MEMCG_DATA_KMEM = 2, + __NR_MEMCG_DATA_FLAGS = 4, }; -struct qtree_fmt_operations { - void (*mem2disk_dqblk)(void *, struct dquot *); - void (*disk2mem_dqblk)(struct dquot *, void *); - int (*is_id)(void *, struct dquot *); -}; - -struct qtree_mem_dqinfo { - struct super_block *dqi_sb; - int dqi_type; - unsigned int dqi_blocks; - unsigned int dqi_free_blk; - unsigned int dqi_free_entry; - unsigned int dqi_blocksize_bits; - unsigned int dqi_entry_size; - unsigned int dqi_usable_bs; - unsigned int dqi_qtree_depth; - const struct qtree_fmt_operations *dqi_ops; -}; - -struct v2_disk_dqheader { - __le32 dqh_magic; - __le32 dqh_version; -}; - -struct v2r0_disk_dqblk { - __le32 dqb_id; - __le32 dqb_ihardlimit; - __le32 dqb_isoftlimit; - __le32 dqb_curinodes; - __le32 dqb_bhardlimit; - __le32 dqb_bsoftlimit; - __le64 dqb_curspace; - __le64 dqb_btime; - __le64 dqb_itime; -}; - -struct v2r1_disk_dqblk { - __le32 dqb_id; - __le32 dqb_pad; - __le64 dqb_ihardlimit; - __le64 dqb_isoftlimit; - __le64 dqb_curinodes; - __le64 dqb_bhardlimit; - __le64 dqb_bsoftlimit; - __le64 dqb_curspace; - __le64 dqb_btime; - __le64 dqb_itime; -}; - -struct v2_disk_dqinfo { - __le32 dqi_bgrace; - __le32 dqi_igrace; - __le32 dqi_flags; - __le32 dqi_blocks; - __le32 dqi_free_blk; - __le32 dqi_free_entry; -}; - -struct qt_disk_dqdbheader { - __le32 dqdh_next_free; - __le32 dqdh_prev_free; - __le16 dqdh_entries; - __le16 dqdh_pad1; - __le32 dqdh_pad2; +struct dirty_throttle_control { + struct wb_domain *dom; + struct dirty_throttle_control *gdtc; + struct bdi_writeback *wb; + struct fprop_local_percpu *wb_completions; + long unsigned int avail; + long unsigned int dirty; + long unsigned int thresh; + long unsigned int bg_thresh; + long unsigned int wb_dirty; + long unsigned int wb_thresh; + long unsigned int wb_bg_thresh; + long unsigned int pos_ratio; }; -struct fs_disk_quota { - __s8 d_version; - __s8 d_flags; - __u16 d_fieldmask; - __u32 d_id; - __u64 d_blk_hardlimit; - __u64 d_blk_softlimit; - __u64 d_ino_hardlimit; - __u64 d_ino_softlimit; - __u64 d_bcount; - __u64 d_icount; - __s32 d_itimer; - __s32 d_btimer; - __u16 d_iwarns; - __u16 d_bwarns; - __s8 d_itimer_hi; - __s8 d_btimer_hi; - __s8 d_rtbtimer_hi; - __s8 d_padding2; - __u64 d_rtb_hardlimit; - __u64 d_rtb_softlimit; - __u64 d_rtbcount; - __s32 d_rtbtimer; - __u16 d_rtbwarns; - __s16 d_padding3; - char d_padding4[8]; +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; + enum lru_list lru; + long unsigned int flags; + char __data[0]; }; -struct fs_qfilestat { - __u64 qfs_ino; - __u64 qfs_nblks; - __u32 qfs_nextents; +struct trace_event_raw_mm_lru_activate { + struct trace_entry ent; + struct page *page; + long unsigned int pfn; + char __data[0]; }; -typedef struct fs_qfilestat fs_qfilestat_t; +struct trace_event_data_offsets_mm_lru_insertion {}; -struct fs_quota_stat { - __s8 qs_version; - __u16 qs_flags; - __s8 qs_pad; - fs_qfilestat_t qs_uquota; - fs_qfilestat_t qs_gquota; - __u32 qs_incoredqs; - __s32 qs_btimelimit; - __s32 qs_itimelimit; - __s32 qs_rtbtimelimit; - __u16 qs_bwarnlimit; - __u16 qs_iwarnlimit; -}; +struct trace_event_data_offsets_mm_lru_activate {}; -struct fs_qfilestatv { - __u64 qfs_ino; - __u64 qfs_nblks; - __u32 qfs_nextents; - __u32 qfs_pad; +typedef void (*btf_trace_mm_lru_insertion)(void *, struct page *); + +typedef void (*btf_trace_mm_lru_activate)(void *, struct page *); + +struct lru_rotate { + local_lock_t lock; + struct pagevec pvec; }; -struct fs_quota_statv { - __s8 qs_version; - __u8 qs_pad1; - __u16 qs_flags; - __u32 qs_incoredqs; - struct fs_qfilestatv qs_uquota; - struct fs_qfilestatv qs_gquota; - struct fs_qfilestatv qs_pquota; - __s32 qs_btimelimit; - __s32 qs_itimelimit; - __s32 qs_rtbtimelimit; - __u16 qs_bwarnlimit; - __u16 qs_iwarnlimit; - __u16 qs_rtbwarnlimit; - __u16 qs_pad3; - __u32 qs_pad4; - __u64 qs_pad2[7]; +struct lru_pvecs { + local_lock_t lock; + struct pagevec lru_add; + struct pagevec lru_deactivate_file; + struct pagevec lru_deactivate; + struct pagevec lru_lazyfree; + struct pagevec activate_page; }; -struct if_dqblk { - __u64 dqb_bhardlimit; - __u64 dqb_bsoftlimit; - __u64 dqb_curspace; - __u64 dqb_ihardlimit; - __u64 dqb_isoftlimit; - __u64 dqb_curinodes; - __u64 dqb_btime; - __u64 dqb_itime; - __u32 dqb_valid; +enum lruvec_flags { + LRUVEC_CONGESTED = 0, }; -struct if_nextdqblk { - __u64 dqb_bhardlimit; - __u64 dqb_bsoftlimit; - __u64 dqb_curspace; - __u64 dqb_ihardlimit; - __u64 dqb_isoftlimit; - __u64 dqb_curinodes; - __u64 dqb_btime; - __u64 dqb_itime; - __u32 dqb_valid; - __u32 dqb_id; +enum pgdat_flags { + PGDAT_DIRTY = 0, + PGDAT_WRITEBACK = 1, + PGDAT_RECLAIM_LOCKED = 2, }; -struct if_dqinfo { - __u64 dqi_bgrace; - __u64 dqi_igrace; - __u32 dqi_flags; - __u32 dqi_valid; +enum zone_flags { + ZONE_BOOSTED_WATERMARK = 0, + ZONE_RECLAIM_ACTIVE = 1, }; -typedef u64 compat_u64; +struct reclaim_stat { + unsigned int nr_dirty; + unsigned int nr_unqueued_dirty; + unsigned int nr_congested; + unsigned int nr_writeback; + unsigned int nr_immediate; + unsigned int nr_pageout; + unsigned int nr_activate[2]; + unsigned int nr_ref_keep; + unsigned int nr_unmap_fail; + unsigned int nr_lazyfree_fail; +}; -struct compat_if_dqblk { - compat_u64 dqb_bhardlimit; - compat_u64 dqb_bsoftlimit; - compat_u64 dqb_curspace; - compat_u64 dqb_ihardlimit; - compat_u64 dqb_isoftlimit; - compat_u64 dqb_curinodes; - compat_u64 dqb_btime; - compat_u64 dqb_itime; - compat_uint_t dqb_valid; +struct mem_cgroup_reclaim_cookie { + pg_data_t *pgdat; + unsigned int generation; }; -struct proc_maps_private { - struct inode *inode; - struct task_struct *task; - struct mm_struct *mm; - struct vm_area_struct *tail_vma; - struct mempolicy *task_mempolicy; +enum ttu_flags { + TTU_SPLIT_HUGE_PMD = 4, + TTU_IGNORE_MLOCK = 8, + TTU_SYNC = 16, + TTU_IGNORE_HWPOISON = 32, + TTU_BATCH_FLUSH = 64, + TTU_RMAP_LOCKED = 128, }; -struct mem_size_stats { - long unsigned int resident; - long unsigned int shared_clean; - long unsigned int shared_dirty; - long unsigned int private_clean; - long unsigned int private_dirty; - long unsigned int referenced; - long unsigned int anonymous; - long unsigned int lazyfree; - long unsigned int anonymous_thp; - long unsigned int shmem_thp; - long unsigned int file_thp; - long unsigned int swap; - long unsigned int shared_hugetlb; - long unsigned int private_hugetlb; - u64 pss; - u64 pss_anon; - u64 pss_file; - u64 pss_shmem; - u64 pss_locked; - u64 swap_pss; +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; }; -enum clear_refs_types { - CLEAR_REFS_ALL = 1, - CLEAR_REFS_ANON = 2, - CLEAR_REFS_MAPPED = 3, - CLEAR_REFS_SOFT_DIRTY = 4, - CLEAR_REFS_MM_HIWATER_RSS = 5, - CLEAR_REFS_LAST = 6, +struct trace_event_raw_mm_vmscan_kswapd_sleep { + struct trace_entry ent; + int nid; + char __data[0]; }; -struct clear_refs_private { - enum clear_refs_types type; +struct trace_event_raw_mm_vmscan_kswapd_wake { + struct trace_entry ent; + int nid; + int zid; + int order; + char __data[0]; }; -typedef struct { - u64 pme; -} pagemap_entry_t; +struct trace_event_raw_mm_vmscan_wakeup_kswapd { + struct trace_entry ent; + int nid; + int zid; + int order; + gfp_t gfp_flags; + char __data[0]; +}; -struct pagemapread { - int pos; - int len; - pagemap_entry_t *buffer; - bool show_pfn; +struct trace_event_raw_mm_vmscan_direct_reclaim_begin_template { + struct trace_entry ent; + int order; + gfp_t gfp_flags; + char __data[0]; }; -struct numa_maps { - long unsigned int pages; - long unsigned int anon; - long unsigned int active; - long unsigned int writeback; - long unsigned int mapcount_max; - long unsigned int dirty; - long unsigned int swapcache; - long unsigned int node[2]; +struct trace_event_raw_mm_vmscan_direct_reclaim_end_template { + struct trace_entry ent; + long unsigned int nr_reclaimed; + char __data[0]; }; -struct numa_maps_private { - struct proc_maps_private proc_maps; - struct numa_maps md; +struct trace_event_raw_mm_shrink_slab_start { + struct trace_entry ent; + struct shrinker *shr; + void *shrink; + int nid; + long int nr_objects_to_shrink; + gfp_t gfp_flags; + long unsigned int cache_items; + long long unsigned int delta; + long unsigned int total_scan; + int priority; + char __data[0]; }; -enum { - QUOTA_NL_C_UNSPEC = 0, - QUOTA_NL_C_WARNING = 1, - __QUOTA_NL_C_MAX = 2, +struct trace_event_raw_mm_shrink_slab_end { + struct trace_entry ent; + struct shrinker *shr; + int nid; + void *shrink; + long int unused_scan; + long int new_scan; + int retval; + long int total_scan; + char __data[0]; }; -enum { - QUOTA_NL_A_UNSPEC = 0, - QUOTA_NL_A_QTYPE = 1, - QUOTA_NL_A_EXCESS_ID = 2, - QUOTA_NL_A_WARNING = 3, - QUOTA_NL_A_DEV_MAJOR = 4, - QUOTA_NL_A_DEV_MINOR = 5, - QUOTA_NL_A_CAUSED_ID = 6, - QUOTA_NL_A_PAD = 7, - __QUOTA_NL_A_MAX = 8, +struct trace_event_raw_mm_vmscan_lru_isolate { + struct trace_entry ent; + int highest_zoneidx; + int order; + long unsigned int nr_requested; + long unsigned int nr_scanned; + long unsigned int nr_skipped; + long unsigned int nr_taken; + unsigned int isolate_mode; + int lru; + char __data[0]; }; -struct proc_fs_context { - struct pid_namespace *pid_ns; - unsigned int mask; - enum proc_hidepid hidepid; - int gid; - enum proc_pidonly pidonly; +struct trace_event_raw_mm_vmscan_writepage { + struct trace_entry ent; + long unsigned int pfn; + int reclaim_flags; + char __data[0]; }; -enum proc_param { - Opt_gid___3 = 0, - Opt_hidepid = 1, - Opt_subset = 2, +struct trace_event_raw_mm_vmscan_lru_shrink_inactive { + struct trace_entry ent; + int nid; + long unsigned int nr_scanned; + long unsigned int nr_reclaimed; + long unsigned int nr_dirty; + long unsigned int nr_writeback; + long unsigned int nr_congested; + long unsigned int nr_immediate; + unsigned int nr_activate0; + unsigned int nr_activate1; + long unsigned int nr_ref_keep; + long unsigned int nr_unmap_fail; + int priority; + int reclaim_flags; + char __data[0]; }; -struct pde_opener { - struct list_head lh; - struct file *file; - bool closing; - struct completion *c; +struct trace_event_raw_mm_vmscan_lru_shrink_active { + struct trace_entry ent; + int nid; + long unsigned int nr_taken; + long unsigned int nr_active; + long unsigned int nr_deactivated; + long unsigned int nr_referenced; + int priority; + int reclaim_flags; + char __data[0]; }; -enum { - BIAS = 2147483648, +struct trace_event_raw_mm_vmscan_node_reclaim_begin { + struct trace_entry ent; + int nid; + int order; + gfp_t gfp_flags; + char __data[0]; }; -struct genradix_root; +struct trace_event_data_offsets_mm_vmscan_kswapd_sleep {}; -struct __genradix { - struct genradix_root *root; -}; +struct trace_event_data_offsets_mm_vmscan_kswapd_wake {}; -struct syscall_info { - __u64 sp; - struct seccomp_data data; -}; +struct trace_event_data_offsets_mm_vmscan_wakeup_kswapd {}; -enum resctrl_conf_type { - CDP_NONE = 0, - CDP_CODE = 1, - CDP_DATA = 2, -}; +struct trace_event_data_offsets_mm_vmscan_direct_reclaim_begin_template {}; -typedef struct dentry *instantiate_t(struct dentry *, struct task_struct *, const void *); +struct trace_event_data_offsets_mm_vmscan_direct_reclaim_end_template {}; -struct pid_entry { - const char *name; - unsigned int len; - umode_t mode; - const struct inode_operations *iop; - const struct file_operations *fop; - union proc_op op; -}; +struct trace_event_data_offsets_mm_shrink_slab_start {}; -struct limit_names { - const char *name; - const char *unit; -}; +struct trace_event_data_offsets_mm_shrink_slab_end {}; -struct map_files_info { - long unsigned int start; - long unsigned int end; - fmode_t mode; -}; +struct trace_event_data_offsets_mm_vmscan_lru_isolate {}; -struct timers_private { - struct pid *pid; - struct task_struct *task; - struct sighand_struct *sighand; - struct pid_namespace *ns; - long unsigned int flags; -}; +struct trace_event_data_offsets_mm_vmscan_writepage {}; -struct tgid_iter { - unsigned int tgid; - struct task_struct *task; -}; +struct trace_event_data_offsets_mm_vmscan_lru_shrink_inactive {}; -struct fd_data { - fmode_t mode; - unsigned int fd; -}; +struct trace_event_data_offsets_mm_vmscan_lru_shrink_active {}; -struct sysctl_alias { - const char *kernel_param; - const char *sysctl_param; -}; +struct trace_event_data_offsets_mm_vmscan_node_reclaim_begin {}; -enum kcore_type { - KCORE_TEXT = 0, - KCORE_VMALLOC = 1, - KCORE_RAM = 2, - KCORE_VMEMMAP = 3, - KCORE_USER = 4, -}; +typedef void (*btf_trace_mm_vmscan_kswapd_sleep)(void *, int); -struct kcore_list { - struct list_head list; - long unsigned int addr; - size_t size; - int type; -}; +typedef void (*btf_trace_mm_vmscan_kswapd_wake)(void *, int, int, int); -struct seq_net_private { - struct net *net; - netns_tracker ns_tracker; -}; +typedef void (*btf_trace_mm_vmscan_wakeup_kswapd)(void *, int, int, int, gfp_t); -struct bpf_iter_aux_info; +typedef void (*btf_trace_mm_vmscan_direct_reclaim_begin)(void *, int, gfp_t); -struct vmcore { - struct list_head list; - long long unsigned int paddr; - long long unsigned int size; - loff_t offset; -}; +typedef void (*btf_trace_mm_vmscan_memcg_reclaim_begin)(void *, int, gfp_t); -struct vmcoredd_node { - struct list_head list; - void *buf; - unsigned int size; -}; +typedef void (*btf_trace_mm_vmscan_memcg_softlimit_reclaim_begin)(void *, int, gfp_t); -typedef struct elf32_hdr Elf32_Ehdr; +typedef void (*btf_trace_mm_vmscan_direct_reclaim_end)(void *, long unsigned int); -typedef struct elf32_phdr Elf32_Phdr; +typedef void (*btf_trace_mm_vmscan_memcg_reclaim_end)(void *, long unsigned int); -typedef struct elf32_note Elf32_Nhdr; +typedef void (*btf_trace_mm_vmscan_memcg_softlimit_reclaim_end)(void *, long unsigned int); -struct vmcoredd_header { - __u32 n_namesz; - __u32 n_descsz; - __u32 n_type; - __u8 name[8]; - __u8 dump_name[44]; -}; +typedef void (*btf_trace_mm_shrink_slab_start)(void *, struct shrinker *, struct shrink_control *, long int, long unsigned int, long long unsigned int, long unsigned int, int); -struct vmcore_cb { - bool (*pfn_is_ram)(struct vmcore_cb *, long unsigned int); - struct list_head next; -}; +typedef void (*btf_trace_mm_shrink_slab_end)(void *, struct shrinker *, int, int, long int, long int, long int); -struct vmcoredd_data { - char dump_name[44]; - unsigned int size; - int (*vmcoredd_callback)(struct vmcoredd_data *, void *); -}; +typedef void (*btf_trace_mm_vmscan_lru_isolate)(void *, int, int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, isolate_mode_t, int); -struct kernfs_root { - struct kernfs_node *kn; - unsigned int flags; - struct idr ino_idr; - u32 last_id_lowbits; - u32 id_highbits; - struct kernfs_syscall_ops *syscall_ops; - struct list_head supers; - wait_queue_head_t deactivate_waitq; - struct rw_semaphore kernfs_rwsem; -}; +typedef void (*btf_trace_mm_vmscan_writepage)(void *, struct page *); -struct kernfs_iattrs { - kuid_t ia_uid; - kgid_t ia_gid; - struct timespec64 ia_atime; - struct timespec64 ia_mtime; - struct timespec64 ia_ctime; - struct simple_xattrs xattrs; - atomic_t nr_user_xattrs; - atomic_t user_xattr_size; -}; +typedef void (*btf_trace_mm_vmscan_lru_shrink_inactive)(void *, int, long unsigned int, long unsigned int, struct reclaim_stat *, int, int); -struct kernfs_super_info { - struct super_block *sb; - struct kernfs_root *root; - const void *ns; - struct list_head node; -}; +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); -enum kernfs_node_flag { - KERNFS_ACTIVATED = 16, - KERNFS_NS = 32, - KERNFS_HAS_SEQ_SHOW = 64, - KERNFS_HAS_MMAP = 128, - KERNFS_LOCKDEP = 256, - KERNFS_SUICIDAL = 1024, - KERNFS_SUICIDED = 2048, - KERNFS_EMPTY_DIR = 4096, - KERNFS_HAS_RELEASE = 8192, -}; +typedef void (*btf_trace_mm_vmscan_node_reclaim_begin)(void *, int, int, gfp_t); -struct kernfs_open_node { - atomic_t refcnt; - atomic_t event; - wait_queue_head_t poll; - struct list_head files; -}; +typedef void (*btf_trace_mm_vmscan_node_reclaim_end)(void *, long unsigned int); -struct config_group; +struct scan_control { + long unsigned int nr_to_reclaim; + nodemask_t *nodemask; + struct mem_cgroup *target_mem_cgroup; + long unsigned int anon_cost; + long unsigned int file_cost; + unsigned int may_deactivate: 2; + unsigned int force_deactivate: 1; + unsigned int skipped_deactivate: 1; + unsigned int may_writepage: 1; + unsigned int may_unmap: 1; + unsigned int may_swap: 1; + unsigned int memcg_low_reclaim: 1; + unsigned int memcg_low_skipped: 1; + unsigned int hibernation_mode: 1; + unsigned int compaction_ready: 1; + unsigned int cache_trim_mode: 1; + unsigned int file_is_tiny: 1; + unsigned int no_demotion: 1; + s8 order; + s8 priority; + s8 reclaim_idx; + gfp_t gfp_mask; + long unsigned int nr_scanned; + long unsigned int nr_reclaimed; + struct { + unsigned int dirty; + unsigned int unqueued_dirty; + unsigned int congested; + unsigned int writeback; + unsigned int immediate; + unsigned int file_taken; + unsigned int taken; + } nr; + struct reclaim_state reclaim_state; +}; -struct config_item_type; +typedef enum { + PAGE_KEEP = 0, + PAGE_ACTIVATE = 1, + PAGE_SUCCESS = 2, + PAGE_CLEAN = 3, +} pageout_t; -struct config_item { - char *ci_name; - char ci_namebuf[20]; - struct kref ci_kref; - struct list_head ci_entry; - struct config_item *ci_parent; - struct config_group *ci_group; - const struct config_item_type *ci_type; - struct dentry *ci_dentry; +enum page_references { + PAGEREF_RECLAIM = 0, + PAGEREF_RECLAIM_CLEAN = 1, + PAGEREF_KEEP = 2, + PAGEREF_ACTIVATE = 3, }; -struct configfs_subsystem; +enum scan_balance { + SCAN_EQUAL = 0, + SCAN_FRACT = 1, + SCAN_ANON = 2, + SCAN_FILE = 3, +}; -struct config_group { - struct config_item cg_item; - struct list_head cg_children; - struct configfs_subsystem *cg_subsys; - struct list_head default_groups; - struct list_head group_entry; +enum transparent_hugepage_flag { + TRANSPARENT_HUGEPAGE_NEVER_DAX = 0, + TRANSPARENT_HUGEPAGE_FLAG = 1, + TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG = 2, + TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG = 3, + TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG = 4, + TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG = 5, + TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG = 6, + TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG = 7, + TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG = 8, }; -struct configfs_item_operations; +struct xattr; -struct configfs_group_operations; +typedef int (*initxattrs)(struct inode *, const struct xattr *, void *); -struct configfs_attribute; +struct xattr { + const char *name; + void *value; + size_t value_len; +}; -struct configfs_bin_attribute; +struct constant_table { + const char *name; + int value; +}; -struct config_item_type { - struct module *ct_owner; - struct configfs_item_operations *ct_item_ops; - struct configfs_group_operations *ct_group_ops; - struct configfs_attribute **ct_attrs; - struct configfs_bin_attribute **ct_bin_attrs; +enum { + MPOL_DEFAULT = 0, + MPOL_PREFERRED = 1, + MPOL_BIND = 2, + MPOL_INTERLEAVE = 3, + MPOL_LOCAL = 4, + MPOL_PREFERRED_MANY = 5, + MPOL_MAX = 6, }; -struct configfs_item_operations { - void (*release)(struct config_item *); - int (*allow_link)(struct config_item *, struct config_item *); - void (*drop_link)(struct config_item *, struct config_item *); +struct shared_policy { + struct rb_root root; + rwlock_t lock; }; -struct configfs_group_operations { - struct config_item * (*make_item)(struct config_group *, const char *); - struct config_group * (*make_group)(struct config_group *, const char *); - int (*commit_item)(struct config_item *); - void (*disconnect_notify)(struct config_group *, struct config_item *); - void (*drop_item)(struct config_group *, struct config_item *); +struct simple_xattrs { + struct list_head head; + spinlock_t lock; }; -struct configfs_attribute { - const char *ca_name; - struct module *ca_owner; - umode_t ca_mode; - ssize_t (*show)(struct config_item *, char *); - ssize_t (*store)(struct config_item *, const char *, size_t); +struct simple_xattr { + struct list_head list; + char *name; + size_t size; + char value[0]; }; -struct configfs_bin_attribute { - struct configfs_attribute cb_attr; - void *cb_private; - size_t cb_max_size; - ssize_t (*read)(struct config_item *, void *, size_t); - ssize_t (*write)(struct config_item *, const void *, size_t); +struct shmem_inode_info { + spinlock_t lock; + unsigned int seals; + 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; + struct simple_xattrs xattrs; + atomic_t stop_eviction; + struct inode vfs_inode; }; -struct configfs_subsystem { - struct config_group su_group; - struct mutex su_mutex; +struct shmem_sb_info { + long unsigned int max_blocks; + struct percpu_counter used_blocks; + long unsigned int max_inodes; + long unsigned int free_inodes; + raw_spinlock_t stat_lock; + umode_t mode; + unsigned char huge; + kuid_t uid; + kgid_t gid; + bool full_inums; + ino_t next_ino; + ino_t *ino_batch; + struct mempolicy *mpol; + spinlock_t shrinklist_lock; + struct list_head shrinklist; + long unsigned int shrinklist_len; }; -struct configfs_fragment { - atomic_t frag_count; - struct rw_semaphore frag_sem; - bool frag_dead; +enum sgp_type { + SGP_READ = 0, + SGP_NOALLOC = 1, + SGP_CACHE = 2, + SGP_WRITE = 3, + SGP_FALLOC = 4, }; -struct configfs_dirent { - atomic_t s_count; - int s_dependent_count; - struct list_head s_sibling; - struct list_head s_children; - int s_links; - void *s_element; - int s_type; - umode_t s_mode; - struct dentry *s_dentry; - struct iattr *s_iattr; - struct configfs_fragment *s_frag; +enum fid_type { + FILEID_ROOT = 0, + FILEID_INO32_GEN = 1, + FILEID_INO32_GEN_PARENT = 2, + FILEID_BTRFS_WITHOUT_PARENT = 77, + FILEID_BTRFS_WITH_PARENT = 78, + FILEID_BTRFS_WITH_PARENT_ROOT = 79, + FILEID_UDF_WITHOUT_PARENT = 81, + FILEID_UDF_WITH_PARENT = 82, + FILEID_NILFS_WITHOUT_PARENT = 97, + FILEID_NILFS_WITH_PARENT = 98, + FILEID_FAT_WITHOUT_PARENT = 113, + FILEID_FAT_WITH_PARENT = 114, + FILEID_LUSTRE = 151, + FILEID_KERNFS = 254, + FILEID_INVALID = 255, }; -struct configfs_buffer { - size_t count; - loff_t pos; - char *page; - struct configfs_item_operations *ops; - struct mutex mutex; - int needs_read_fill; - bool read_in_progress; - bool write_in_progress; - char *bin_buffer; - int bin_buffer_size; - int cb_max_size; - struct config_item *item; - struct module *owner; - union { - struct configfs_attribute *attr; - struct configfs_bin_attribute *bin_attr; - }; +struct shmem_falloc { + wait_queue_head_t *waitq; + long unsigned int start; + long unsigned int next; + long unsigned int nr_falloced; + long unsigned int nr_unswapped; }; -struct pts_mount_opts { - int setuid; - int setgid; +struct shmem_options { + long long unsigned int blocks; + long long unsigned int inodes; + struct mempolicy *mpol; kuid_t uid; kgid_t gid; umode_t mode; - umode_t ptmxmode; - int reserve; - int max; -}; - -enum { - Opt_uid___3 = 0, - Opt_gid___4 = 1, - Opt_mode___2 = 2, - Opt_ptmxmode = 3, - Opt_newinstance = 4, - Opt_max = 5, - Opt_err = 6, + bool full_inums; + int huge; + int seen; }; -struct pts_fs_info { - struct ida allocated_ptys; - struct pts_mount_opts mount_opts; - struct super_block *sb; - struct dentry *ptmx_dentry; +enum shmem_param { + Opt_gid___2 = 0, + Opt_huge = 1, + Opt_mode = 2, + Opt_mpol = 3, + Opt_nr_blocks = 4, + Opt_nr_inodes = 5, + Opt_size = 6, + Opt_uid___2 = 7, + Opt_inode32 = 8, + Opt_inode64 = 9, }; -typedef unsigned int tid_t; - -struct transaction_chp_stats_s { - long unsigned int cs_chp_time; - __u32 cs_forced_to_close; - __u32 cs_written; - __u32 cs_dropped; +enum writeback_stat_item { + NR_DIRTY_THRESHOLD = 0, + NR_DIRTY_BG_THRESHOLD = 1, + NR_VM_WRITEBACK_STAT_ITEMS = 2, }; -struct journal_s; - -typedef struct journal_s journal_t; - -struct journal_head; - -struct transaction_s; - -typedef struct transaction_s transaction_t; - -struct transaction_s { - journal_t *t_journal; - tid_t t_tid; - enum { - T_RUNNING = 0, - T_LOCKED = 1, - T_SWITCH = 2, - T_FLUSH = 3, - T_COMMIT = 4, - T_COMMIT_DFLUSH = 5, - T_COMMIT_JFLUSH = 6, - T_COMMIT_CALLBACK = 7, - T_FINISHED = 8, - } t_state; - long unsigned int t_log_start; - int t_nr_buffers; - struct journal_head *t_reserved_list; - struct journal_head *t_buffers; - struct journal_head *t_forget; - struct journal_head *t_checkpoint_list; - struct journal_head *t_checkpoint_io_list; - struct journal_head *t_shadow_list; - struct list_head t_inode_list; - spinlock_t t_handle_lock; - long unsigned int t_max_wait; - long unsigned int t_start; - long unsigned int t_requested; - struct transaction_chp_stats_s t_chp_stats; - atomic_t t_updates; - atomic_t t_outstanding_credits; - atomic_t t_outstanding_revokes; - atomic_t t_handle_count; - transaction_t *t_cpnext; - transaction_t *t_cpprev; - long unsigned int t_expires; - ktime_t t_start_time; - unsigned int t_synchronous_commit: 1; - int t_need_data_flush; - struct list_head t_private_list; +struct contig_page_info { + long unsigned int free_pages; + long unsigned int free_blocks_total; + long unsigned int free_blocks_suitable; }; -struct jbd2_buffer_trigger_type; +typedef s8 pcp_op_T_____7; -struct journal_head { - struct buffer_head *b_bh; - spinlock_t b_state_lock; - int b_jcount; - unsigned int b_jlist; - unsigned int b_modified; - char *b_frozen_data; - char *b_committed_data; - transaction_t *b_transaction; - transaction_t *b_next_transaction; - struct journal_head *b_tnext; - struct journal_head *b_tprev; - transaction_t *b_cp_transaction; - struct journal_head *b_cpnext; - struct journal_head *b_cpprev; - struct jbd2_buffer_trigger_type *b_triggers; - struct jbd2_buffer_trigger_type *b_frozen_triggers; +struct pcpu_group_info { + int nr_units; + long unsigned int base_offset; + unsigned int *cpu_map; }; -struct jbd2_buffer_trigger_type { - void (*t_frozen)(struct jbd2_buffer_trigger_type *, struct buffer_head *, void *, size_t); - void (*t_abort)(struct jbd2_buffer_trigger_type *, struct buffer_head *); +struct pcpu_alloc_info { + size_t static_size; + size_t reserved_size; + size_t dyn_size; + size_t unit_size; + size_t atom_size; + size_t alloc_size; + size_t __ai_size; + int nr_groups; + struct pcpu_group_info groups[0]; }; -struct jbd2_journal_handle; +typedef void * (*pcpu_fc_alloc_fn_t)(unsigned int, size_t, size_t); -typedef struct jbd2_journal_handle handle_t; +typedef void (*pcpu_fc_free_fn_t)(void *, size_t); -struct jbd2_journal_handle { - union { - transaction_t *h_transaction; - journal_t *h_journal; - }; - handle_t *h_rsv_handle; - int h_total_credits; - int h_revoke_credits; - int h_revoke_credits_requested; - int h_ref; - int h_err; - unsigned int h_sync: 1; - unsigned int h_jdata: 1; - unsigned int h_reserved: 1; - unsigned int h_aborted: 1; - unsigned int h_type: 8; - unsigned int h_line_no: 16; - long unsigned int h_start_jiffies; - unsigned int h_requested_credits; - unsigned int saved_alloc_context; -}; +typedef int pcpu_fc_cpu_distance_fn_t(unsigned int, unsigned int); -struct transaction_run_stats_s { - long unsigned int rs_wait; - long unsigned int rs_request_delay; - long unsigned int rs_running; - long unsigned int rs_locked; - long unsigned int rs_flushing; - long unsigned int rs_logging; - __u32 rs_handle_count; - __u32 rs_blocks; - __u32 rs_blocks_logged; +struct trace_event_raw_percpu_alloc_percpu { + struct trace_entry ent; + bool reserved; + bool is_atomic; + size_t size; + size_t align; + void *base_addr; + int off; + void *ptr; + char __data[0]; }; -struct transaction_stats_s { - long unsigned int ts_tid; - long unsigned int ts_requested; - struct transaction_run_stats_s run; +struct trace_event_raw_percpu_free_percpu { + struct trace_entry ent; + void *base_addr; + int off; + void *ptr; + char __data[0]; }; -enum passtype { - PASS_SCAN = 0, - PASS_REVOKE = 1, - PASS_REPLAY = 2, +struct trace_event_raw_percpu_alloc_percpu_fail { + struct trace_entry ent; + bool reserved; + bool is_atomic; + size_t size; + size_t align; + char __data[0]; }; -struct journal_superblock_s; - -typedef struct journal_superblock_s journal_superblock_t; - -struct jbd2_revoke_table_s; - -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; - journal_superblock_t *j_superblock; - int j_format_version; - rwlock_t j_state_lock; - int j_barrier_count; - struct mutex j_barrier; - transaction_t *j_running_transaction; - transaction_t *j_committing_transaction; - transaction_t *j_checkpoint_transactions; - wait_queue_head_t j_wait_transaction_locked; - wait_queue_head_t j_wait_done_commit; - wait_queue_head_t j_wait_commit; - wait_queue_head_t j_wait_updates; - wait_queue_head_t j_wait_reserved; - wait_queue_head_t j_fc_wait; - struct mutex j_checkpoint_mutex; - struct buffer_head *j_chkpt_bhs[64]; - struct shrinker j_shrinker; - struct percpu_counter j_checkpoint_jh_count; - transaction_t *j_shrink_transaction; - long unsigned int j_head; - long unsigned int j_tail; - long unsigned int j_free; - long unsigned int j_first; - long unsigned int j_last; - long unsigned int j_fc_first; - long unsigned int j_fc_off; - long unsigned int j_fc_last; - struct block_device *j_dev; - int j_blocksize; - long long unsigned int j_blk_offset; - char j_devname[56]; - struct block_device *j_fs_dev; - unsigned int j_total_len; - atomic_t j_reserved_credits; - spinlock_t j_list_lock; - struct inode *j_inode; - tid_t j_tail_sequence; - tid_t j_transaction_sequence; - tid_t j_commit_sequence; - tid_t j_commit_request; - __u8 j_uuid[16]; - struct task_struct *j_task; - int j_max_transaction_buffers; - int j_revoke_records_per_block; - long unsigned int j_commit_interval; - struct timer_list j_commit_timer; - spinlock_t j_revoke_lock; - struct jbd2_revoke_table_s *j_revoke; - struct jbd2_revoke_table_s *j_revoke_table[2]; - struct buffer_head **j_wbuf; - struct buffer_head **j_fc_wbuf; - int j_wbufsize; - int j_fc_wbufsize; - pid_t j_last_sync_writer; - u64 j_average_commit_time; - u32 j_min_batch_time; - u32 j_max_batch_time; - void (*j_commit_callback)(journal_t *, transaction_t *); - int (*j_submit_inode_data_buffers)(struct jbd2_inode *); - int (*j_finish_inode_data_buffers)(struct jbd2_inode *); - spinlock_t j_history_lock; - struct proc_dir_entry *j_proc_entry; - struct transaction_stats_s j_stats; - unsigned int j_failed_commit; - void *j_private; - struct crypto_shash *j_chksum_driver; - __u32 j_csum_seed; - void (*j_fc_cleanup_callback)(struct journal_s *, int, tid_t); - int (*j_fc_replay_callback)(struct journal_s *, struct buffer_head *, enum passtype, int, tid_t); +struct trace_event_raw_percpu_create_chunk { + struct trace_entry ent; + void *base_addr; + char __data[0]; }; -struct journal_header_s { - __be32 h_magic; - __be32 h_blocktype; - __be32 h_sequence; +struct trace_event_raw_percpu_destroy_chunk { + struct trace_entry ent; + void *base_addr; + char __data[0]; }; -typedef struct journal_header_s journal_header_t; +struct trace_event_data_offsets_percpu_alloc_percpu {}; -struct journal_superblock_s { - journal_header_t s_header; - __be32 s_blocksize; - __be32 s_maxlen; - __be32 s_first; - __be32 s_sequence; - __be32 s_start; - __be32 s_errno; - __be32 s_feature_compat; - __be32 s_feature_incompat; - __be32 s_feature_ro_compat; - __u8 s_uuid[16]; - __be32 s_nr_users; - __be32 s_dynsuper; - __be32 s_max_transaction; - __be32 s_max_trans_data; - __u8 s_checksum_type; - __u8 s_padding2[3]; - __be32 s_num_fc_blks; - __u32 s_padding[41]; - __be32 s_checksum; - __u8 s_users[768]; -}; +struct trace_event_data_offsets_percpu_free_percpu {}; -enum jbd_state_bits { - BH_JBD = 16, - BH_JWrite = 17, - BH_Freed = 18, - BH_Revoked = 19, - BH_RevokeValid = 20, - BH_JBDDirty = 21, - BH_JournalHead = 22, - BH_Shadow = 23, - BH_Verified = 24, - BH_JBDPrivateStart = 25, -}; +struct trace_event_data_offsets_percpu_alloc_percpu_fail {}; -struct jbd2_inode { - transaction_t *i_transaction; - transaction_t *i_next_transaction; - struct list_head i_list; - struct inode *i_vfs_inode; - long unsigned int i_flags; - loff_t i_dirty_start; - loff_t i_dirty_end; -}; +struct trace_event_data_offsets_percpu_create_chunk {}; -struct bgl_lock { - spinlock_t lock; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - 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 trace_event_data_offsets_percpu_destroy_chunk {}; -struct blockgroup_lock { - struct bgl_lock locks[128]; -}; +typedef void (*btf_trace_percpu_alloc_percpu)(void *, bool, bool, size_t, size_t, void *, int, void *); -typedef int ext4_grpblk_t; +typedef void (*btf_trace_percpu_free_percpu)(void *, void *, int, void *); -typedef long long unsigned int ext4_fsblk_t; +typedef void (*btf_trace_percpu_alloc_percpu_fail)(void *, bool, bool, size_t, size_t); -typedef __u32 ext4_lblk_t; +typedef void (*btf_trace_percpu_create_chunk)(void *, void *); -typedef unsigned int ext4_group_t; +typedef void (*btf_trace_percpu_destroy_chunk)(void *, void *); -struct ext4_allocation_request { - struct inode *inode; - unsigned int len; - ext4_lblk_t logical; - ext4_lblk_t lleft; - ext4_lblk_t lright; - ext4_fsblk_t goal; - ext4_fsblk_t pleft; - ext4_fsblk_t pright; - unsigned int flags; +struct pcpu_block_md { + int scan_hint; + int scan_hint_start; + int contig_hint; + int contig_hint_start; + int left_free; + int right_free; + int first_free; + int nr_bits; }; -struct ext4_system_blocks { - struct rb_root root; - struct callback_head rcu; +struct pcpu_chunk { + struct list_head list; + int free_bytes; + struct pcpu_block_md chunk_md; + void *base_addr; + long unsigned int *alloc_map; + long unsigned int *bound_map; + struct pcpu_block_md *md_blocks; + void *data; + bool immutable; + bool isolated; + int start_offset; + int end_offset; + struct obj_cgroup **obj_cgroups; + int nr_pages; + int nr_populated; + int nr_empty_pop_pages; + long unsigned int populated[0]; }; -struct ext4_group_desc { - __le32 bg_block_bitmap_lo; - __le32 bg_inode_bitmap_lo; - __le32 bg_inode_table_lo; - __le16 bg_free_blocks_count_lo; - __le16 bg_free_inodes_count_lo; - __le16 bg_used_dirs_count_lo; - __le16 bg_flags; - __le32 bg_exclude_bitmap_lo; - __le16 bg_block_bitmap_csum_lo; - __le16 bg_inode_bitmap_csum_lo; - __le16 bg_itable_unused_lo; - __le16 bg_checksum; - __le32 bg_block_bitmap_hi; - __le32 bg_inode_bitmap_hi; - __le32 bg_inode_table_hi; - __le16 bg_free_blocks_count_hi; - __le16 bg_free_inodes_count_hi; - __le16 bg_used_dirs_count_hi; - __le16 bg_itable_unused_hi; - __le32 bg_exclude_bitmap_hi; - __le16 bg_block_bitmap_csum_hi; - __le16 bg_inode_bitmap_csum_hi; - __u32 bg_reserved; +struct trace_event_raw_kmem_alloc { + struct trace_entry ent; + long unsigned int call_site; + const void *ptr; + size_t bytes_req; + size_t bytes_alloc; + gfp_t gfp_flags; + char __data[0]; }; -struct flex_groups { - atomic64_t free_clusters; - atomic_t free_inodes; - atomic_t used_dirs; +struct trace_event_raw_kmem_alloc_node { + struct trace_entry ent; + long unsigned int call_site; + const void *ptr; + size_t bytes_req; + size_t bytes_alloc; + gfp_t gfp_flags; + int node; + char __data[0]; }; -struct extent_status { - struct rb_node rb_node; - ext4_lblk_t es_lblk; - ext4_lblk_t es_len; - ext4_fsblk_t es_pblk; +struct trace_event_raw_kfree { + struct trace_entry ent; + long unsigned int call_site; + const void *ptr; + char __data[0]; }; -struct ext4_es_tree { - struct rb_root root; - struct extent_status *cache_es; +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 ext4_es_stats { - long unsigned int es_stats_shrunk; - struct percpu_counter es_stats_cache_hits; - struct percpu_counter es_stats_cache_misses; - u64 es_stats_scan_time; - u64 es_stats_max_scan_time; - struct percpu_counter es_stats_all_cnt; - struct percpu_counter es_stats_shk_cnt; +struct trace_event_raw_mm_page_free { + struct trace_entry ent; + long unsigned int pfn; + unsigned int order; + char __data[0]; }; -struct ext4_pending_tree { - struct rb_root root; +struct trace_event_raw_mm_page_free_batched { + struct trace_entry ent; + long unsigned int pfn; + char __data[0]; }; -struct ext4_fc_stats { - unsigned int fc_ineligible_reason_count[9]; - 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 trace_event_raw_mm_page_alloc { + struct trace_entry ent; + long unsigned int pfn; + unsigned int order; + gfp_t gfp_flags; + int migratetype; + char __data[0]; }; -struct ext4_fc_alloc_region { - ext4_lblk_t lblk; - ext4_fsblk_t pblk; - int ino; - int len; +struct trace_event_raw_mm_page { + struct trace_entry ent; + long unsigned int pfn; + unsigned int order; + int migratetype; + char __data[0]; }; -struct ext4_fc_replay_state { - int fc_replay_num_tags; - int fc_replay_expected_off; - int fc_current_pass; - int fc_cur_tag; - int fc_crc; - struct ext4_fc_alloc_region *fc_regions; - int fc_regions_size; - int fc_regions_used; - int fc_regions_valid; - int *fc_modified_inodes; - int fc_modified_inodes_used; - int fc_modified_inodes_size; +struct trace_event_raw_mm_page_pcpu_drain { + struct trace_entry ent; + long unsigned int pfn; + unsigned int order; + int migratetype; + char __data[0]; }; -struct ext4_inode_info { - __le32 i_data[15]; - __u32 i_dtime; - ext4_fsblk_t i_file_acl; - ext4_group_t i_block_group; - ext4_lblk_t i_dir_start_lookup; - long unsigned int i_flags; - struct rw_semaphore xattr_sem; - union { - struct list_head i_orphan; - unsigned int i_orphan_idx; - }; - struct list_head i_fc_dilist; - struct list_head i_fc_list; - ext4_lblk_t i_fc_lblk_start; - ext4_lblk_t i_fc_lblk_len; - atomic_t i_fc_updates; - wait_queue_head_t i_fc_wait; - struct mutex i_fc_lock; - loff_t i_disksize; - struct rw_semaphore i_data_sem; - struct inode vfs_inode; - struct jbd2_inode *jinode; - spinlock_t i_raw_lock; - struct timespec64 i_crtime; - atomic_t i_prealloc_active; - struct list_head i_prealloc_list; - spinlock_t i_prealloc_lock; - struct ext4_es_tree i_es_tree; - rwlock_t i_es_lock; - struct list_head i_es_list; - unsigned int i_es_all_nr; - unsigned int i_es_shk_nr; - ext4_lblk_t i_es_shrink_lblk; - ext4_group_t i_last_alloc_group; - unsigned int i_reserved_data_blocks; - struct ext4_pending_tree i_pending_tree; - __u16 i_extra_isize; - u16 i_inline_off; - u16 i_inline_size; - qsize_t i_reserved_quota; - spinlock_t i_completed_io_lock; - struct list_head i_rsv_conversion_list; - struct work_struct i_rsv_conversion_work; - atomic_t i_unwritten; - spinlock_t i_block_reservation_lock; - tid_t i_sync_tid; - tid_t i_datasync_tid; - struct dquot *i_dquot[3]; - __u32 i_csum_seed; - kprojid_t i_projid; +struct trace_event_raw_mm_page_alloc_extfrag { + struct trace_entry ent; + long unsigned int pfn; + int alloc_order; + int fallback_order; + int alloc_migratetype; + int fallback_migratetype; + int change_ownership; + char __data[0]; }; -struct ext4_super_block { - __le32 s_inodes_count; - __le32 s_blocks_count_lo; - __le32 s_r_blocks_count_lo; - __le32 s_free_blocks_count_lo; - __le32 s_free_inodes_count; - __le32 s_first_data_block; - __le32 s_log_block_size; - __le32 s_log_cluster_size; - __le32 s_blocks_per_group; - __le32 s_clusters_per_group; - __le32 s_inodes_per_group; - __le32 s_mtime; - __le32 s_wtime; - __le16 s_mnt_count; - __le16 s_max_mnt_count; - __le16 s_magic; - __le16 s_state; - __le16 s_errors; - __le16 s_minor_rev_level; - __le32 s_lastcheck; - __le32 s_checkinterval; - __le32 s_creator_os; - __le32 s_rev_level; - __le16 s_def_resuid; - __le16 s_def_resgid; - __le32 s_first_ino; - __le16 s_inode_size; - __le16 s_block_group_nr; - __le32 s_feature_compat; - __le32 s_feature_incompat; - __le32 s_feature_ro_compat; - __u8 s_uuid[16]; - char s_volume_name[16]; - char s_last_mounted[64]; - __le32 s_algorithm_usage_bitmap; - __u8 s_prealloc_blocks; - __u8 s_prealloc_dir_blocks; - __le16 s_reserved_gdt_blocks; - __u8 s_journal_uuid[16]; - __le32 s_journal_inum; - __le32 s_journal_dev; - __le32 s_last_orphan; - __le32 s_hash_seed[4]; - __u8 s_def_hash_version; - __u8 s_jnl_backup_type; - __le16 s_desc_size; - __le32 s_default_mount_opts; - __le32 s_first_meta_bg; - __le32 s_mkfs_time; - __le32 s_jnl_blocks[17]; - __le32 s_blocks_count_hi; - __le32 s_r_blocks_count_hi; - __le32 s_free_blocks_count_hi; - __le16 s_min_extra_isize; - __le16 s_want_extra_isize; - __le32 s_flags; - __le16 s_raid_stride; - __le16 s_mmp_update_interval; - __le64 s_mmp_block; - __le32 s_raid_stripe_width; - __u8 s_log_groups_per_flex; - __u8 s_checksum_type; - __u8 s_encryption_level; - __u8 s_reserved_pad; - __le64 s_kbytes_written; - __le32 s_snapshot_inum; - __le32 s_snapshot_id; - __le64 s_snapshot_r_blocks_count; - __le32 s_snapshot_list; - __le32 s_error_count; - __le32 s_first_error_time; - __le32 s_first_error_ino; - __le64 s_first_error_block; - __u8 s_first_error_func[32]; - __le32 s_first_error_line; - __le32 s_last_error_time; - __le32 s_last_error_ino; - __le32 s_last_error_line; - __le64 s_last_error_block; - __u8 s_last_error_func[32]; - __u8 s_mount_opts[64]; - __le32 s_usr_quota_inum; - __le32 s_grp_quota_inum; - __le32 s_overhead_clusters; - __le32 s_backup_bgs[2]; - __u8 s_encrypt_algos[4]; - __u8 s_encrypt_pw_salt[16]; - __le32 s_lpf_ino; - __le32 s_prj_quota_inum; - __le32 s_checksum_seed; - __u8 s_wtime_hi; - __u8 s_mtime_hi; - __u8 s_mkfs_time_hi; - __u8 s_lastcheck_hi; - __u8 s_first_error_time_hi; - __u8 s_last_error_time_hi; - __u8 s_first_error_errcode; - __u8 s_last_error_errcode; - __le16 s_encoding; - __le16 s_encoding_flags; - __le32 s_orphan_file_inum; - __le32 s_reserved[94]; - __le32 s_checksum; +struct trace_event_raw_rss_stat { + struct trace_entry ent; + unsigned int mm_id; + unsigned int curr; + int member; + long int size; + char __data[0]; }; -struct ext4_journal_trigger { - struct jbd2_buffer_trigger_type tr_triggers; - struct super_block *sb; -}; +struct trace_event_data_offsets_kmem_alloc {}; -struct ext4_orphan_block { - atomic_t ob_free_entries; - struct buffer_head *ob_bh; -}; +struct trace_event_data_offsets_kmem_alloc_node {}; -struct ext4_orphan_info { - int of_blocks; - __u32 of_csum_seed; - struct ext4_orphan_block *of_binfo; +struct trace_event_data_offsets_kfree {}; + +struct trace_event_data_offsets_kmem_cache_free { + u32 name; }; -struct mb_cache; +struct trace_event_data_offsets_mm_page_free {}; -struct ext4_group_info; +struct trace_event_data_offsets_mm_page_free_batched {}; -struct ext4_locality_group; +struct trace_event_data_offsets_mm_page_alloc {}; -struct ext4_li_request; +struct trace_event_data_offsets_mm_page {}; -struct ext4_sb_info { - long unsigned int s_desc_size; - long unsigned int s_inodes_per_block; - long unsigned int s_blocks_per_group; - long unsigned int s_clusters_per_group; - long unsigned int s_inodes_per_group; - long unsigned int s_itb_per_group; - long unsigned int s_gdb_count; - long unsigned int s_desc_per_block; - ext4_group_t s_groups_count; - ext4_group_t s_blockfile_groups; - long unsigned int s_overhead; - unsigned int s_cluster_ratio; - unsigned int s_cluster_bits; - loff_t s_bitmap_maxbytes; - struct buffer_head *s_sbh; - struct ext4_super_block *s_es; - struct buffer_head **s_group_desc; - unsigned int s_mount_opt; - unsigned int s_mount_opt2; - long unsigned int s_mount_flags; - unsigned int s_def_mount_opt; - ext4_fsblk_t s_sb_block; - atomic64_t s_resv_clusters; - kuid_t s_resuid; - kgid_t s_resgid; - short unsigned int s_mount_state; - short unsigned int s_pad; - int s_addr_per_block_bits; - int s_desc_per_block_bits; - int s_inode_size; - int s_first_ino; - unsigned int s_inode_readahead_blks; - unsigned int s_inode_goal; - u32 s_hash_seed[4]; - int s_def_hash_version; - int s_hash_unsigned; - struct percpu_counter s_freeclusters_counter; - struct percpu_counter s_freeinodes_counter; - struct percpu_counter s_dirs_counter; - struct percpu_counter s_dirtyclusters_counter; - struct percpu_counter s_sra_exceeded_retry_limit; - struct blockgroup_lock *s_blockgroup_lock; - struct proc_dir_entry *s_proc; - struct kobject s_kobj; - struct completion s_kobj_unregister; - struct super_block *s_sb; - struct buffer_head *s_mmp_bh; - struct journal_s *s_journal; - 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; - struct block_device *s_journal_bdev; - char *s_qf_names[3]; - int s_jquota_fmt; - unsigned int s_want_extra_isize; - struct ext4_system_blocks *s_system_blks; - struct ext4_group_info ***s_group_info; - struct inode *s_buddy_cache; - spinlock_t s_md_lock; - short unsigned int *s_mb_offsets; - unsigned int *s_mb_maxs; - unsigned int s_group_info_size; - unsigned int s_mb_free_pending; - struct list_head s_freed_data_list; - struct list_head s_discard_list; - struct work_struct s_discard_work; - atomic_t s_retry_alloc_pending; - struct 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; - unsigned int s_mb_stats; - unsigned int s_mb_order2_reqs; - unsigned int s_mb_group_prealloc; - unsigned int s_mb_max_inode_prealloc; - unsigned int s_max_dir_size_kb; - long unsigned int s_mb_last_group; - long unsigned int s_mb_last_start; - unsigned int s_mb_prefetch; - unsigned int s_mb_prefetch_limit; - atomic_t s_bal_reqs; - atomic_t s_bal_success; - atomic_t s_bal_allocated; - atomic_t s_bal_ex_scanned; - atomic_t s_bal_groups_scanned; - atomic_t s_bal_goals; - atomic_t s_bal_breaks; - atomic_t s_bal_2orders; - 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; - atomic_t s_lock_busy; - struct ext4_locality_group *s_locality_groups; - long unsigned int s_sectors_written_start; - u64 s_kbytes_written; - unsigned int s_extent_max_zeroout_kb; - unsigned int s_log_groups_per_flex; - struct flex_groups **s_flex_groups; - ext4_group_t s_flex_groups_allocated; - struct workqueue_struct *rsv_conversion_wq; - struct timer_list s_err_report; - struct ext4_li_request *s_li_request; - unsigned int s_li_wait_mult; - struct task_struct *s_mmp_tsk; - long unsigned int s_last_trim_minblks; - struct crypto_shash *s_chksum_driver; - __u32 s_csum_seed; - struct shrinker s_es_shrinker; - struct list_head s_es_list; - long int s_es_nr_inode; - struct ext4_es_stats s_es_stats; - struct mb_cache *s_ea_block_cache; - struct mb_cache *s_ea_inode_cache; - long: 64; - long: 64; - spinlock_t s_es_lock; - struct ext4_journal_trigger s_journal_triggers[1]; - struct ratelimit_state s_err_ratelimit_state; - struct ratelimit_state s_warning_ratelimit_state; - struct ratelimit_state s_msg_ratelimit_state; - atomic_t s_warning_count; - atomic_t s_msg_count; - struct fscrypt_dummy_policy s_dummy_enc_policy; - struct percpu_rw_semaphore s_writepages_rwsem; - struct dax_device *s_daxdev; - u64 s_dax_part_off; - errseq_t s_bdev_wb_err; - spinlock_t s_bdev_wb_lock; - spinlock_t s_error_lock; - int s_add_error_count; - int s_first_error_code; - __u32 s_first_error_line; - __u32 s_first_error_ino; - __u64 s_first_error_block; - const char *s_first_error_func; - time64_t s_first_error_time; - int s_last_error_code; - __u32 s_last_error_line; - __u32 s_last_error_ino; - __u64 s_last_error_block; - const char *s_last_error_func; - time64_t s_last_error_time; - struct work_struct s_error_work; - atomic_t s_fc_subtid; - struct list_head s_fc_q[2]; - struct list_head s_fc_dentry_q[2]; - unsigned int s_fc_bytes; - spinlock_t s_fc_lock; - struct buffer_head *s_fc_bh; - struct ext4_fc_stats s_fc_stats; - tid_t s_fc_ineligible_tid; - struct ext4_fc_replay_state s_fc_replay_state; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +struct trace_event_data_offsets_mm_page_pcpu_drain {}; + +struct trace_event_data_offsets_mm_page_alloc_extfrag {}; + +struct trace_event_data_offsets_rss_stat {}; + +typedef void (*btf_trace_kmalloc)(void *, long unsigned int, const void *, size_t, size_t, gfp_t); + +typedef void (*btf_trace_kmem_cache_alloc)(void *, long unsigned int, const void *, size_t, size_t, gfp_t); + +typedef void (*btf_trace_kmalloc_node)(void *, long unsigned int, const void *, size_t, size_t, gfp_t, int); + +typedef void (*btf_trace_kmem_cache_alloc_node)(void *, long unsigned int, const void *, size_t, size_t, gfp_t, int); + +typedef void (*btf_trace_kfree)(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); + +typedef void (*btf_trace_mm_page_free_batched)(void *, struct page *); + +typedef void (*btf_trace_mm_page_alloc)(void *, struct page *, unsigned int, gfp_t, int); + +typedef void (*btf_trace_mm_page_alloc_zone_locked)(void *, struct page *, unsigned int, int); + +typedef void (*btf_trace_mm_page_pcpu_drain)(void *, struct page *, unsigned int, int); + +typedef void (*btf_trace_mm_page_alloc_extfrag)(void *, struct page *, int, int, int, int); + +typedef void (*btf_trace_rss_stat)(void *, struct mm_struct *, int, long int); + +enum slab_state { + DOWN = 0, + PARTIAL = 1, + PARTIAL_NODE = 2, + UP = 3, + FULL = 4, }; -struct ext4_group_info { - long unsigned int bb_state; - struct rb_root bb_free_root; - ext4_grpblk_t bb_first_free; - 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]; +struct kmalloc_info_struct { + const char *name[4]; + unsigned int size; +}; + +struct slabinfo { + long unsigned int active_objs; + long unsigned int num_objs; + long unsigned int active_slabs; + long unsigned int num_slabs; + long unsigned int shared_avail; + unsigned int limit; + unsigned int batchcount; + unsigned int shared; + unsigned int objects_per_slab; + 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, + PB_migrate_skip = 3, + NR_PAGEBLOCK_BITS = 4, }; -struct ext4_locality_group { - struct mutex lg_mutex; - struct list_head lg_prealloc_list[10]; - spinlock_t lg_prealloc_lock; +struct node___2 { + struct device dev; + struct list_head access_list; + struct work_struct node_work; }; -enum ext4_li_mode { - EXT4_LI_MODE_PREFETCH_BBITMAP = 0, - EXT4_LI_MODE_ITABLE = 1, +struct alloc_context { + struct zonelist *zonelist; + nodemask_t *nodemask; + struct zoneref *preferred_zoneref; + int migratetype; + enum zone_type highest_zoneidx; + bool spread_dirty_pages; }; -struct ext4_li_request { - struct super_block *lr_super; - enum ext4_li_mode lr_mode; - ext4_group_t lr_first_not_zeroed; - ext4_group_t lr_next_group; - struct list_head lr_request; - long unsigned int lr_next_sched; - long unsigned int lr_timeout; +struct trace_event_raw_mm_compaction_isolate_template { + struct trace_entry ent; + long unsigned int start_pfn; + long unsigned int end_pfn; + long unsigned int nr_scanned; + long unsigned int nr_taken; + char __data[0]; }; -struct ext4_map_blocks { - ext4_fsblk_t m_pblk; - ext4_lblk_t m_lblk; - unsigned int m_len; - unsigned int m_flags; +struct trace_event_raw_mm_compaction_migratepages { + struct trace_entry ent; + long unsigned int nr_migrated; + long unsigned int nr_failed; + char __data[0]; }; -typedef enum { - EXT4_IGET_NORMAL = 0, - EXT4_IGET_SPECIAL = 1, - EXT4_IGET_HANDLE = 2, -} ext4_iget_flags; +struct trace_event_raw_mm_compaction_begin { + struct trace_entry ent; + long unsigned int zone_start; + long unsigned int migrate_pfn; + long unsigned int free_pfn; + long unsigned int zone_end; + bool sync; + char __data[0]; +}; -struct ext4_system_zone { - struct rb_node node; - ext4_fsblk_t start_blk; - unsigned int count; - u32 ino; +struct trace_event_raw_mm_compaction_end { + struct trace_entry ent; + long unsigned int zone_start; + long unsigned int migrate_pfn; + long unsigned int free_pfn; + long unsigned int zone_end; + bool sync; + int status; + char __data[0]; }; -enum { - EXT4_INODE_SECRM = 0, - EXT4_INODE_UNRM = 1, - EXT4_INODE_COMPR = 2, - EXT4_INODE_SYNC = 3, - EXT4_INODE_IMMUTABLE = 4, - EXT4_INODE_APPEND = 5, - EXT4_INODE_NODUMP = 6, - EXT4_INODE_NOATIME = 7, - EXT4_INODE_DIRTY = 8, - EXT4_INODE_COMPRBLK = 9, - EXT4_INODE_NOCOMPR = 10, - EXT4_INODE_ENCRYPT = 11, - EXT4_INODE_INDEX = 12, - EXT4_INODE_IMAGIC = 13, - EXT4_INODE_JOURNAL_DATA = 14, - EXT4_INODE_NOTAIL = 15, - EXT4_INODE_DIRSYNC = 16, - EXT4_INODE_TOPDIR = 17, - EXT4_INODE_HUGE_FILE = 18, - EXT4_INODE_EXTENTS = 19, - EXT4_INODE_VERITY = 20, - EXT4_INODE_EA_INODE = 21, - EXT4_INODE_DAX = 25, - EXT4_INODE_INLINE_DATA = 28, - EXT4_INODE_PROJINHERIT = 29, - EXT4_INODE_CASEFOLD = 30, - EXT4_INODE_RESERVED = 31, +struct trace_event_raw_mm_compaction_try_to_compact_pages { + struct trace_entry ent; + int order; + gfp_t gfp_mask; + int prio; + char __data[0]; }; -enum { - EXT4_FC_REASON_XATTR = 0, - EXT4_FC_REASON_CROSS_RENAME = 1, - EXT4_FC_REASON_JOURNAL_FLAG_CHANGE = 2, - EXT4_FC_REASON_NOMEM = 3, - EXT4_FC_REASON_SWAP_BOOT = 4, - EXT4_FC_REASON_RESIZE = 5, - EXT4_FC_REASON_RENAME_DIR = 6, - EXT4_FC_REASON_FALLOC_RANGE = 7, - EXT4_FC_REASON_INODE_JOURNAL_DATA = 8, - EXT4_FC_REASON_MAX = 9, +struct trace_event_raw_mm_compaction_suitable_template { + struct trace_entry ent; + int nid; + enum zone_type idx; + int order; + int ret; + char __data[0]; }; -enum ext4_journal_trigger_type { - EXT4_JTR_ORPHAN_FILE = 0, - EXT4_JTR_NONE = 1, +struct trace_event_raw_mm_compaction_defer_template { + struct trace_entry ent; + int nid; + enum zone_type idx; + int order; + unsigned int considered; + unsigned int defer_shift; + int order_failed; + char __data[0]; }; -struct ext4_dir_entry_hash { - __le32 hash; - __le32 minor_hash; +struct trace_event_raw_mm_compaction_kcompactd_sleep { + struct trace_entry ent; + int nid; + char __data[0]; }; -struct ext4_dir_entry_2 { - __le32 inode; - __le16 rec_len; - __u8 name_len; - __u8 file_type; - char name[255]; +struct trace_event_raw_kcompactd_wake_template { + struct trace_entry ent; + int nid; + int order; + enum zone_type highest_zoneidx; + char __data[0]; }; -struct fname; +struct trace_event_data_offsets_mm_compaction_isolate_template {}; -struct dir_private_info { - struct rb_root root; - struct rb_node *curr_node; - struct fname *extra_fname; - loff_t last_pos; - __u32 curr_hash; - __u32 curr_minor_hash; - __u32 next_hash; -}; +struct trace_event_data_offsets_mm_compaction_migratepages {}; -struct fname { - __u32 hash; - __u32 minor_hash; - struct rb_node rb_hash; - struct fname *next; - __u32 inode; - __u8 name_len; - __u8 file_type; - char name[0]; -}; +struct trace_event_data_offsets_mm_compaction_begin {}; -enum SHIFT_DIRECTION { - SHIFT_LEFT = 0, - SHIFT_RIGHT = 1, -}; +struct trace_event_data_offsets_mm_compaction_end {}; -struct ext4_io_end_vec { - struct list_head list; - loff_t offset; - ssize_t size; -}; +struct trace_event_data_offsets_mm_compaction_try_to_compact_pages {}; -struct ext4_io_end { - struct list_head list; - handle_t *handle; - struct inode *inode; - struct bio *bio; - unsigned int flag; - refcount_t count; - struct list_head list_vec; -}; +struct trace_event_data_offsets_mm_compaction_suitable_template {}; -typedef struct ext4_io_end ext4_io_end_t; +struct trace_event_data_offsets_mm_compaction_defer_template {}; -enum { - ES_WRITTEN_B = 0, - ES_UNWRITTEN_B = 1, - ES_DELAYED_B = 2, - ES_HOLE_B = 3, - ES_REFERENCED_B = 4, - ES_FLAGS = 5, -}; +struct trace_event_data_offsets_mm_compaction_kcompactd_sleep {}; -enum { - EXT4_STATE_JDATA = 0, - EXT4_STATE_NEW = 1, - EXT4_STATE_XATTR = 2, - EXT4_STATE_NO_EXPAND = 3, - EXT4_STATE_DA_ALLOC_CLOSE = 4, - EXT4_STATE_EXT_MIGRATE = 5, - EXT4_STATE_NEWENTRY = 6, - EXT4_STATE_MAY_INLINE_DATA = 7, - EXT4_STATE_EXT_PRECACHED = 8, - EXT4_STATE_LUSTRE_EA_INODE = 9, - EXT4_STATE_VERITY_IN_PROGRESS = 10, - EXT4_STATE_FC_COMMITTING = 11, - EXT4_STATE_ORPHAN_FILE = 12, -}; +struct trace_event_data_offsets_kcompactd_wake_template {}; -struct ext4_iloc { - struct buffer_head *bh; - long unsigned int offset; - ext4_group_t block_group; -}; +typedef void (*btf_trace_mm_compaction_isolate_migratepages)(void *, long unsigned int, long unsigned int, long unsigned int, long unsigned int); -struct ext4_extent_tail { - __le32 et_checksum; -}; +typedef void (*btf_trace_mm_compaction_isolate_freepages)(void *, long unsigned int, long unsigned int, long unsigned int, long unsigned int); -struct ext4_extent { - __le32 ee_block; - __le16 ee_len; - __le16 ee_start_hi; - __le32 ee_start_lo; -}; +typedef void (*btf_trace_mm_compaction_migratepages)(void *, long unsigned int, int, struct list_head *); -struct ext4_extent_idx { - __le32 ei_block; - __le32 ei_leaf_lo; - __le16 ei_leaf_hi; - __u16 ei_unused; -}; +typedef void (*btf_trace_mm_compaction_begin)(void *, long unsigned int, long unsigned int, long unsigned int, long unsigned int, bool); -struct ext4_extent_header { - __le16 eh_magic; - __le16 eh_entries; - __le16 eh_max; - __le16 eh_depth; - __le32 eh_generation; -}; +typedef void (*btf_trace_mm_compaction_end)(void *, long unsigned int, long unsigned int, long unsigned int, long unsigned int, bool, int); -struct ext4_ext_path { - ext4_fsblk_t p_block; - __u16 p_depth; - __u16 p_maxdepth; - struct ext4_extent *p_ext; - struct ext4_extent_idx *p_idx; - struct ext4_extent_header *p_hdr; - struct buffer_head *p_bh; -}; +typedef void (*btf_trace_mm_compaction_try_to_compact_pages)(void *, int, gfp_t, int); -struct partial_cluster { - ext4_fsblk_t pclu; - ext4_lblk_t lblk; - enum { - initial = 0, - tofree = 1, - nofree = 2, - } state; -}; +typedef void (*btf_trace_mm_compaction_finished)(void *, struct zone *, int, int); -enum { - EXT4_MF_MNTDIR_SAMPLED = 0, - EXT4_MF_FS_ABORTED = 1, - EXT4_MF_FC_INELIGIBLE = 2, -}; +typedef void (*btf_trace_mm_compaction_suitable)(void *, struct zone *, int, int); -struct pending_reservation { - struct rb_node rb_node; - ext4_lblk_t lclu; +typedef void (*btf_trace_mm_compaction_deferred)(void *, struct zone *, int); + +typedef void (*btf_trace_mm_compaction_defer_compaction)(void *, struct zone *, int); + +typedef void (*btf_trace_mm_compaction_defer_reset)(void *, struct zone *, int); + +typedef void (*btf_trace_mm_compaction_kcompactd_sleep)(void *, int); + +typedef void (*btf_trace_mm_compaction_wakeup_kcompactd)(void *, int, int, enum zone_type); + +typedef void (*btf_trace_mm_compaction_kcompactd_wake)(void *, int, int, enum zone_type); + +typedef enum { + ISOLATE_ABORT = 0, + ISOLATE_NONE = 1, + ISOLATE_SUCCESS = 2, +} isolate_migrate_t; + +struct anon_vma_chain { + struct vm_area_struct *vma; + struct anon_vma *anon_vma; + struct list_head same_vma; + struct rb_node rb; + long unsigned int rb_subtree_last; }; -struct rsvd_count { - int ndelonly; - bool first_do_lblk_found; - ext4_lblk_t first_do_lblk; - ext4_lblk_t last_do_lblk; - struct extent_status *left_es; - bool partial; - ext4_lblk_t lclu; +struct rb_augment_callbacks { + void (*propagate)(struct rb_node *, struct rb_node *); + void (*copy)(struct rb_node *, struct rb_node *); + void (*rotate)(struct rb_node *, struct rb_node *); }; -struct fsmap { - __u32 fmr_device; - __u32 fmr_flags; - __u64 fmr_physical; - __u64 fmr_owner; - __u64 fmr_offset; - __u64 fmr_length; - __u64 fmr_reserved[3]; +enum lru_status { + LRU_REMOVED = 0, + LRU_REMOVED_RETRY = 1, + LRU_ROTATE = 2, + LRU_SKIP = 3, + LRU_RETRY = 4, }; -struct ext4_fsmap { - struct list_head fmr_list; - dev_t fmr_device; - uint32_t fmr_flags; - uint64_t fmr_physical; - uint64_t fmr_owner; - uint64_t fmr_length; +typedef enum lru_status (*list_lru_walk_cb)(struct list_head *, struct list_lru_one *, spinlock_t *, void *); + +typedef struct { + long unsigned int pd; +} hugepd_t; + +struct follow_page_context { + struct dev_pagemap *pgmap; + unsigned int page_mask; }; -struct ext4_fsmap_head { - uint32_t fmh_iflags; - uint32_t fmh_oflags; - unsigned int fmh_count; - unsigned int fmh_entries; - struct ext4_fsmap fmh_keys[2]; +struct trace_event_raw_mmap_lock_start_locking { + struct trace_entry ent; + struct mm_struct *mm; + u32 __data_loc_memcg_path; + bool write; + char __data[0]; }; -typedef int (*ext4_fsmap_format_t)(struct ext4_fsmap *, void *); +struct trace_event_raw_mmap_lock_acquire_returned { + struct trace_entry ent; + struct mm_struct *mm; + u32 __data_loc_memcg_path; + bool write; + bool success; + char __data[0]; +}; -typedef int (*ext4_mballoc_query_range_fn)(struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t, void *); +struct trace_event_raw_mmap_lock_released { + struct trace_entry ent; + struct mm_struct *mm; + u32 __data_loc_memcg_path; + bool write; + char __data[0]; +}; -struct ext4_getfsmap_info { - struct ext4_fsmap_head *gfi_head; - ext4_fsmap_format_t gfi_formatter; - void *gfi_format_arg; - ext4_fsblk_t gfi_next_fsblk; - u32 gfi_dev; - ext4_group_t gfi_agno; - struct ext4_fsmap gfi_low; - struct ext4_fsmap gfi_high; - struct ext4_fsmap gfi_lastfree; - struct list_head gfi_meta_list; - bool gfi_last; +struct trace_event_data_offsets_mmap_lock_start_locking { + u32 memcg_path; }; -struct ext4_getfsmap_dev { - int (*gfd_fn)(struct super_block *, struct ext4_fsmap *, struct ext4_getfsmap_info *); - u32 gfd_dev; +struct trace_event_data_offsets_mmap_lock_acquire_returned { + u32 memcg_path; }; -struct dx_hash_info { - u32 hash; - u32 minor_hash; - int hash_version; - u32 *seed; +struct trace_event_data_offsets_mmap_lock_released { + u32 memcg_path; }; -typedef struct { - __le32 *p; - __le32 key; - struct buffer_head *bh; -} Indirect; +typedef void (*btf_trace_mmap_lock_start_locking)(void *, struct mm_struct *, const char *, bool); -typedef unsigned int __kernel_mode_t; +typedef void (*btf_trace_mmap_lock_acquire_returned)(void *, struct mm_struct *, const char *, bool, bool); -typedef __kernel_mode_t mode_t; +typedef void (*btf_trace_mmap_lock_released)(void *, struct mm_struct *, const char *, bool); -struct ext4_inode { - __le16 i_mode; - __le16 i_uid; - __le32 i_size_lo; - __le32 i_atime; - __le32 i_ctime; - __le32 i_mtime; - __le32 i_dtime; - __le16 i_gid; - __le16 i_links_count; - __le32 i_blocks_lo; - __le32 i_flags; - union { - struct { - __le32 l_i_version; - } linux1; - struct { - __u32 h_i_translator; - } hurd1; - struct { - __u32 m_i_reserved1; - } masix1; - } osd1; - __le32 i_block[15]; - __le32 i_generation; - __le32 i_file_acl_lo; - __le32 i_size_high; - __le32 i_obso_faddr; - union { - struct { - __le16 l_i_blocks_high; - __le16 l_i_file_acl_high; - __le16 l_i_uid_high; - __le16 l_i_gid_high; - __le16 l_i_checksum_lo; - __le16 l_i_reserved; - } linux2; - struct { - __le16 h_i_reserved1; - __u16 h_i_mode_high; - __u16 h_i_uid_high; - __u16 h_i_gid_high; - __u32 h_i_author; - } hurd2; - struct { - __le16 h_i_reserved1; - __le16 m_i_file_acl_high; - __u32 m_i_reserved2[2]; - } masix2; - } osd2; - __le16 i_extra_isize; - __le16 i_checksum_hi; - __le32 i_ctime_extra; - __le32 i_mtime_extra; - __le32 i_atime_extra; - __le32 i_crtime; - __le32 i_crtime_extra; - __le32 i_version_hi; - __le32 i_projid; +struct memcg_path { + local_lock_t lock; + char *buf; + local_t buf_idx; }; -struct orlov_stats { - __u64 free_clusters; - __u32 free_inodes; - __u32 used_dirs; -}; +typedef struct { + u64 val; +} pfn_t; -struct ext4_filename { - const struct qstr *usr_fname; - struct fscrypt_str disk_name; - struct dx_hash_info hinfo; - struct fscrypt_str crypto_buf; - struct fscrypt_str cf_name; -}; +typedef unsigned int pgtbl_mod_mask; -struct ext4_xattr_ibody_header { - __le32 h_magic; -}; +typedef int (*pte_fn_t)(pte_t *, long unsigned int, void *); -struct ext4_xattr_entry { - __u8 e_name_len; - __u8 e_name_index; - __le16 e_value_offs; - __le32 e_value_inum; - __le32 e_value_size; - __le32 e_hash; - char e_name[0]; +enum { + SWP_USED = 1, + SWP_WRITEOK = 2, + SWP_DISCARDABLE = 4, + SWP_DISCARDING = 8, + SWP_SOLIDSTATE = 16, + SWP_CONTINUED = 32, + SWP_BLKDEV = 64, + SWP_ACTIVATED = 128, + SWP_FS_OPS = 256, + SWP_AREA_DISCARD = 512, + SWP_PAGE_DISCARD = 1024, + SWP_STABLE_WRITES = 2048, + SWP_SYNCHRONOUS_IO = 4096, + SWP_SCANNING = 16384, }; -struct ext4_xattr_info { - const char *name; - const void *value; - size_t value_len; - int name_index; - int in_inode; +struct copy_subpage_arg { + struct page *dst; + struct page *src; + struct vm_area_struct *vma; }; -struct ext4_xattr_search { - struct ext4_xattr_entry *first; - void *base; - void *end; - struct ext4_xattr_entry *here; - int not_found; +enum { + HUGETLB_SHMFS_INODE = 1, + HUGETLB_ANONHUGE_INODE = 2, }; -struct ext4_xattr_ibody_find { - struct ext4_xattr_search s; - struct ext4_iloc iloc; +struct trace_event_raw_vm_unmapped_area { + struct trace_entry ent; + long unsigned int addr; + long unsigned int total_vm; + long unsigned int flags; + long unsigned int length; + long unsigned int low_limit; + long unsigned int high_limit; + long unsigned int align_mask; + long unsigned int align_offset; + char __data[0]; }; -typedef short unsigned int __kernel_uid16_t; - -typedef short unsigned int __kernel_gid16_t; - -typedef __kernel_uid16_t uid16_t; +struct trace_event_data_offsets_vm_unmapped_area {}; -typedef __kernel_gid16_t gid16_t; +typedef void (*btf_trace_vm_unmapped_area)(void *, long unsigned int, struct vm_unmapped_area_info *); -struct ext4_io_submit { - struct writeback_control *io_wbc; - struct bio *io_bio; - ext4_io_end_t *io_end; - sector_t io_next_block; +struct mmap_arg_struct { + long unsigned int addr; + long unsigned int len; + long unsigned int prot; + long unsigned int flags; + long unsigned int fd; + long unsigned int offset; }; -struct ext4_xattr_inode_array { - unsigned int count; - struct inode *inodes[0]; +enum pgt_entry { + NORMAL_PMD = 0, + HPAGE_PMD = 1, + NORMAL_PUD = 2, + HPAGE_PUD = 3, }; -struct mpage_da_data { - struct inode *inode; - struct writeback_control *wbc; - long unsigned int first_page; - long unsigned int next_page; - long unsigned int last_page; - struct ext4_map_blocks map; - struct ext4_io_submit io_submit; - unsigned int do_map: 1; - unsigned int scanned_until_end: 1; +struct rmap_walk_control { + void *arg; + bool (*rmap_one)(struct page *, struct vm_area_struct *, long unsigned int, void *); + int (*done)(struct page *); + struct anon_vma * (*anon_lock)(struct page *); + bool (*invalid_vma)(struct vm_area_struct *, void *); }; -struct fstrim_range { - __u64 start; - __u64 len; - __u64 minlen; +struct page_referenced_arg { + int mapcount; + int referenced; + long unsigned int vm_flags; + struct mem_cgroup *memcg; }; -struct ext4_new_group_input { - __u32 group; - __u64 block_bitmap; - __u64 inode_bitmap; - __u64 inode_table; - __u32 blocks_count; - __u16 reserved_blocks; - __u16 unused; +struct vmap_area { + long unsigned int va_start; + long unsigned int va_end; + struct rb_node rb_node; + struct list_head list; + union { + long unsigned int subtree_max_size; + struct vm_struct *vm; + }; }; -struct compat_ext4_new_group_input { - u32 group; - compat_u64 block_bitmap; - compat_u64 inode_bitmap; - compat_u64 inode_table; - u32 blocks_count; - u16 reserved_blocks; - u16 unused; +struct vfree_deferred { + struct llist_head list; + struct work_struct wq; }; -struct ext4_new_group_data { - __u32 group; - __u64 block_bitmap; - __u64 inode_bitmap; - __u64 inode_table; - __u32 blocks_count; - __u16 reserved_blocks; - __u16 mdata_blocks; - __u32 free_clusters_count; +enum fit_type { + NOTHING_FIT = 0, + FL_FIT_TYPE = 1, + LE_FIT_TYPE = 2, + RE_FIT_TYPE = 3, + NE_FIT_TYPE = 4, }; -struct move_extent { - __u32 reserved; - __u32 donor_fd; - __u64 orig_start; - __u64 donor_start; - __u64 len; - __u64 moved_len; +struct vmap_block_queue { + spinlock_t lock; + struct list_head free; }; -struct fsmap_head { - __u32 fmh_iflags; - __u32 fmh_oflags; - __u32 fmh_count; - __u32 fmh_entries; - __u64 fmh_reserved[6]; - struct fsmap fmh_keys[2]; - struct fsmap fmh_recs[0]; +struct vmap_block { + spinlock_t lock; + struct vmap_area *va; + long unsigned int free; + long unsigned int dirty; + long unsigned int dirty_min; + long unsigned int dirty_max; + struct list_head free_list; + struct callback_head callback_head; + struct list_head purge; }; -typedef void ext4_update_sb_callback(struct ext4_super_block *, const void *); - -struct getfsmap_info { - struct super_block *gi_sb; - struct fsmap_head *gi_data; - unsigned int gi_idx; - __u32 gi_last_flags; +struct va_format { + const char *fmt; + va_list *va; }; -struct migrate_struct { - ext4_lblk_t first_block; - ext4_lblk_t last_block; - ext4_lblk_t curr_block; - ext4_fsblk_t first_pblock; - ext4_fsblk_t last_pblock; +struct page_frag_cache { + void *va; + __u16 offset; + __u16 size; + unsigned int pagecnt_bias; + bool pfmemalloc; }; -enum blk_default_limits { - BLK_MAX_SEGMENTS = 128, - BLK_SAFE_MAX_SECTORS = 255, - BLK_DEF_MAX_SECTORS = 2560, - BLK_MAX_SEGMENT_SIZE = 65536, - BLK_SEG_BOUNDARY_MASK = 4294967295, +enum mminit_level { + MMINIT_WARNING = 0, + MMINIT_VERIFY = 1, + MMINIT_TRACE = 2, }; -struct ext4_free_data { - struct list_head efd_list; - struct rb_node efd_node; - ext4_group_t efd_group; - ext4_grpblk_t efd_start_cluster; - ext4_grpblk_t efd_count; - tid_t efd_tid; -}; +typedef int fpi_t; -struct ext4_prealloc_space { - struct list_head pa_inode_list; - struct list_head pa_group_list; - union { - struct list_head pa_tmp_list; - struct callback_head pa_rcu; - } u; - spinlock_t pa_lock; - atomic_t pa_count; - unsigned int pa_deleted; - ext4_fsblk_t pa_pstart; - ext4_lblk_t pa_lstart; - ext4_grpblk_t pa_len; - ext4_grpblk_t pa_free; - short unsigned int pa_type; - spinlock_t *pa_obj_lock; - struct inode *pa_inode; +struct pagesets { + local_lock_t lock; }; -enum { - MB_INODE_PA = 0, - MB_GROUP_PA = 1, +struct pcpu_drain { + struct zone *zone; + struct work_struct work; }; -struct ext4_free_extent { - ext4_lblk_t fe_logical; - ext4_grpblk_t fe_start; - ext4_group_t fe_group; - ext4_grpblk_t fe_len; +struct mminit_pfnnid_cache { + long unsigned int last_start; + long unsigned int last_end; + int last_nid; }; -struct ext4_allocation_context { - struct inode *ac_inode; - struct super_block *ac_sb; - struct ext4_free_extent ac_o_ex; - struct ext4_free_extent ac_g_ex; - struct ext4_free_extent ac_b_ex; - struct ext4_free_extent ac_f_ex; - ext4_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; - __u8 ac_status; - __u8 ac_criteria; - __u8 ac_2order; - __u8 ac_op; - struct page *ac_bitmap_page; - struct page *ac_buddy_page; - struct ext4_prealloc_space *ac_pa; - struct ext4_locality_group *ac_lg; +enum { + MMOP_OFFLINE = 0, + MMOP_ONLINE = 1, + MMOP_ONLINE_KERNEL = 2, + MMOP_ONLINE_MOVABLE = 3, }; -struct ext4_buddy { - struct page *bd_buddy_page; - void *bd_buddy; - struct page *bd_bitmap_page; - void *bd_bitmap; - struct ext4_group_info *bd_info; - struct super_block *bd_sb; - __u16 bd_blkbits; - ext4_group_t bd_group; -}; +typedef int mhp_t; -struct sg { - struct ext4_group_info info; - ext4_grpblk_t counters[18]; -}; +typedef void (*online_page_callback_t)(struct page *, unsigned int); -struct mmp_struct { - __le32 mmp_magic; - __le32 mmp_seq; - __le64 mmp_time; - char mmp_nodename[64]; - char mmp_bdevname[32]; - __le16 mmp_check_interval; - __le16 mmp_pad1; - __le32 mmp_pad2[226]; - __le32 mmp_checksum; +struct 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 ext4_dir_entry { - __le32 inode; - __le16 rec_len; - __le16 name_len; - char name[255]; +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; }; -struct ext4_dir_entry_tail { - __le32 det_reserved_zero1; - __le16 det_rec_len; - __u8 det_reserved_zero2; - __u8 det_reserved_ft; - __le32 det_checksum; -}; +typedef int (*walk_memory_blocks_func_t)(struct memory_block *, void *); -typedef enum { - EITHER = 0, - INDEX = 1, - DIRENT = 2, - DIRENT_HTREE = 3, -} dirblock_type_t; +typedef int (*walk_memory_groups_func_t)(struct memory_group *, void *); -struct fake_dirent { - __le32 inode; - __le16 rec_len; - u8 name_len; - u8 file_type; +enum hugetlb_page_flags { + HPG_restore_reserve = 0, + HPG_migratable = 1, + HPG_temporary = 2, + HPG_freed = 3, + HPG_vmemmap_optimized = 4, + __NR_HPAGEFLAGS = 5, }; -struct dx_countlimit { - __le16 limit; - __le16 count; +enum { + ONLINE_POLICY_CONTIG_ZONES = 0, + ONLINE_POLICY_AUTO_MOVABLE = 1, }; -struct dx_entry { - __le32 hash; - __le32 block; +struct auto_movable_stats { + long unsigned int kernel_early_pages; + long unsigned int movable_pages; }; -struct dx_root_info { - __le32 reserved_zero; - u8 hash_version; - u8 info_length; - u8 indirect_levels; - u8 unused_flags; +struct auto_movable_group_stats { + long unsigned int movable_pages; + long unsigned int req_kernel_early_pages; }; -struct dx_root { - struct fake_dirent dot; - char dot_name[4]; - struct fake_dirent dotdot; - char dotdot_name[4]; - struct dx_root_info info; - struct dx_entry entries[0]; +struct madvise_walk_private { + struct mmu_gather *tlb; + bool pageout; }; -struct dx_node { - struct fake_dirent fake; - struct dx_entry entries[0]; +enum { + BIO_NO_PAGE_REF = 0, + BIO_CLONED = 1, + BIO_BOUNCED = 2, + BIO_WORKINGSET = 3, + BIO_QUIET = 4, + BIO_CHAIN = 5, + BIO_REFFED = 6, + BIO_THROTTLED = 7, + BIO_TRACE_COMPLETION = 8, + BIO_CGROUP_ACCT = 9, + 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 dx_frame { - struct buffer_head *bh; - struct dx_entry *entries; - struct dx_entry *at; +struct vma_swap_readahead { + short unsigned int win; + short unsigned int offset; + short unsigned int nr_pte; + pte_t *ptes; }; -struct dx_map_entry { - u32 hash; - u16 offs; - u16 size; +enum { + PERCPU_REF_INIT_ATOMIC = 1, + PERCPU_REF_INIT_DEAD = 2, + PERCPU_REF_ALLOW_REINIT = 4, }; -struct dx_tail { - u32 dt_reserved; - __le32 dt_checksum; +union swap_header { + struct { + char reserved[4086]; + char magic[10]; + } magic; + struct { + char bootbits[1024]; + __u32 version; + __u32 last_page; + __u32 nr_badpages; + unsigned char sws_uuid[16]; + unsigned char sws_volume[16]; + __u32 padding[117]; + __u32 badpages[1]; + } info; }; -struct ext4_renament { - struct inode *dir; - struct dentry *dentry; - struct inode *inode; - bool is_dir; - int dir_nlink_delta; - struct buffer_head *bh; - struct ext4_dir_entry_2 *de; - int inlined; - struct buffer_head *dir_bh; - struct ext4_dir_entry_2 *parent_de; - int dir_inlined; +struct swap_extent { + struct rb_node rb_node; + long unsigned int start_page; + long unsigned int nr_pages; + sector_t start_block; }; -enum bio_post_read_step { - STEP_INITIAL = 0, - STEP_DECRYPT = 1, - STEP_VERITY = 2, - STEP_MAX = 3, +struct swap_slots_cache { + bool lock_initialized; + struct mutex alloc_lock; + swp_entry_t *slots; + int nr; + int cur; + spinlock_t free_lock; + swp_entry_t *slots_ret; + int n_ret; }; -struct bio_post_read_ctx { - struct bio *bio; - struct work_struct work; - unsigned int cur_step; - unsigned int enabled_steps; +struct frontswap_ops { + void (*init)(unsigned int); + int (*store)(unsigned int, long unsigned int, struct page *); + int (*load)(unsigned int, long unsigned int, struct page *); + void (*invalidate_page)(unsigned int, long unsigned int); + void (*invalidate_area)(unsigned int); + struct frontswap_ops *next; }; -enum { - BLOCK_BITMAP = 0, - INODE_BITMAP = 1, - INODE_TABLE = 2, - GROUP_TABLE_COUNT = 3, -}; +struct crypto_async_request; -struct ext4_rcu_ptr { - struct callback_head rcu; - void *ptr; -}; +typedef void (*crypto_completion_t)(struct crypto_async_request *, int); -struct ext4_new_flex_group_data { - struct ext4_new_group_data *groups; - __u16 *bg_flags; - ext4_group_t count; +struct crypto_tfm; + +struct crypto_async_request { + struct list_head list; + crypto_completion_t complete; + void *data; + struct crypto_tfm *tfm; + u32 flags; }; -struct disk_stats { - u64 nsecs[4]; - long unsigned int sectors[4]; - long unsigned int ios[4]; - long unsigned int merges[4]; - long unsigned int io_ticks; - local_t in_flight[2]; +struct crypto_alg; + +struct crypto_tfm { + u32 crt_flags; + int node; + void (*exit)(struct crypto_tfm *); + struct crypto_alg *__crt_alg; + void *__crt_ctx[0]; }; -enum stat_group { - STAT_READ = 0, - STAT_WRITE = 1, - STAT_DISCARD = 2, - STAT_FLUSH = 3, - NR_STAT_GROUPS = 4, +struct cipher_alg { + unsigned int cia_min_keysize; + unsigned int cia_max_keysize; + int (*cia_setkey)(struct crypto_tfm *, const u8 *, unsigned int); + void (*cia_encrypt)(struct crypto_tfm *, u8 *, const u8 *); + void (*cia_decrypt)(struct crypto_tfm *, u8 *, const u8 *); }; -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 compress_alg { + int (*coa_compress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *); + int (*coa_decompress)(struct crypto_tfm *, const u8 *, unsigned int, u8 *, unsigned int *); }; -enum { - ptr_explicit = 0, - ptr_ext4_sb_info_offset = 1, - ptr_ext4_super_block_offset = 2, +struct crypto_istat_aead { + atomic64_t encrypt_cnt; + atomic64_t encrypt_tlen; + atomic64_t decrypt_cnt; + atomic64_t decrypt_tlen; + atomic64_t err_cnt; }; -struct 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 crypto_istat_akcipher { + atomic64_t encrypt_cnt; + atomic64_t encrypt_tlen; + atomic64_t decrypt_cnt; + atomic64_t decrypt_tlen; + atomic64_t verify_cnt; + atomic64_t sign_cnt; + atomic64_t err_cnt; }; -enum { - I_DATA_SEM_NORMAL = 0, - I_DATA_SEM_OTHER = 1, - I_DATA_SEM_QUOTA = 2, +struct crypto_istat_cipher { + atomic64_t encrypt_cnt; + atomic64_t encrypt_tlen; + atomic64_t decrypt_cnt; + atomic64_t decrypt_tlen; + atomic64_t err_cnt; }; -struct ext4_lazy_init { - long unsigned int li_state; - struct list_head li_request_list; - struct mutex li_list_mtx; +struct crypto_istat_compress { + atomic64_t compress_cnt; + atomic64_t compress_tlen; + atomic64_t decompress_cnt; + atomic64_t decompress_tlen; + atomic64_t err_cnt; }; -struct ext4_journal_cb_entry { - struct list_head jce_list; - void (*jce_func)(struct super_block *, struct ext4_journal_cb_entry *, int); +struct crypto_istat_hash { + atomic64_t hash_cnt; + atomic64_t hash_tlen; + atomic64_t err_cnt; }; -struct trace_event_raw_ext4_other_inode_update_time { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ino_t orig_ino; - uid_t uid; - gid_t gid; - __u16 mode; - char __data[0]; +struct crypto_istat_kpp { + atomic64_t setsecret_cnt; + atomic64_t generate_public_key_cnt; + atomic64_t compute_shared_secret_cnt; + atomic64_t err_cnt; }; -struct trace_event_raw_ext4_free_inode { - struct trace_entry ent; - dev_t dev; - ino_t ino; - uid_t uid; - gid_t gid; - __u64 blocks; - __u16 mode; - char __data[0]; +struct crypto_istat_rng { + atomic64_t generate_cnt; + atomic64_t generate_tlen; + atomic64_t seed_cnt; + atomic64_t err_cnt; }; -struct trace_event_raw_ext4_request_inode { - struct trace_entry ent; - dev_t dev; - ino_t dir; - __u16 mode; - char __data[0]; +struct crypto_type; + +struct crypto_alg { + struct list_head cra_list; + struct list_head cra_users; + u32 cra_flags; + unsigned int cra_blocksize; + unsigned int cra_ctxsize; + unsigned int cra_alignmask; + int cra_priority; + refcount_t cra_refcnt; + char cra_name[128]; + char cra_driver_name[128]; + const struct crypto_type *cra_type; + union { + struct cipher_alg cipher; + struct compress_alg compress; + } cra_u; + int (*cra_init)(struct crypto_tfm *); + void (*cra_exit)(struct crypto_tfm *); + void (*cra_destroy)(struct crypto_alg *); + struct module *cra_module; + union { + struct crypto_istat_aead aead; + struct crypto_istat_akcipher akcipher; + struct crypto_istat_cipher cipher; + struct crypto_istat_compress compress; + struct crypto_istat_hash hash; + struct crypto_istat_rng rng; + struct crypto_istat_kpp kpp; + } stats; }; -struct trace_event_raw_ext4_allocate_inode { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ino_t dir; - __u16 mode; - char __data[0]; +struct crypto_instance; + +struct crypto_type { + unsigned int (*ctxsize)(struct crypto_alg *, u32, u32); + unsigned int (*extsize)(struct crypto_alg *); + int (*init)(struct crypto_tfm *, u32, u32); + int (*init_tfm)(struct crypto_tfm *); + void (*show)(struct seq_file *, struct crypto_alg *); + int (*report)(struct sk_buff *, struct crypto_alg *); + void (*free)(struct crypto_instance *); + unsigned int type; + unsigned int maskclear; + unsigned int maskset; + unsigned int tfmsize; }; -struct trace_event_raw_ext4_evict_inode { - struct trace_entry ent; - dev_t dev; - ino_t ino; - int nlink; - char __data[0]; +struct crypto_wait { + struct completion completion; + int err; }; -struct trace_event_raw_ext4_drop_inode { - struct trace_entry ent; - dev_t dev; - ino_t ino; - int drop; - char __data[0]; +struct zpool; + +struct zpool_ops { + int (*evict)(struct zpool *, long unsigned int); }; -struct trace_event_raw_ext4_nfs_commit_metadata { - struct trace_entry ent; - dev_t dev; - ino_t ino; - char __data[0]; +enum zpool_mapmode { + ZPOOL_MM_RW = 0, + ZPOOL_MM_RO = 1, + ZPOOL_MM_WO = 2, + ZPOOL_MM_DEFAULT = 0, }; -struct trace_event_raw_ext4_mark_inode_dirty { - struct trace_entry ent; - dev_t dev; - ino_t ino; - long unsigned int ip; - char __data[0]; +struct acomp_req { + struct crypto_async_request base; + struct scatterlist *src; + struct scatterlist *dst; + unsigned int slen; + unsigned int dlen; + u32 flags; + void *__ctx[0]; }; -struct trace_event_raw_ext4_begin_ordered_truncate { - struct trace_entry ent; - dev_t dev; - ino_t ino; - loff_t new_size; - char __data[0]; +struct crypto_acomp { + int (*compress)(struct acomp_req *); + int (*decompress)(struct acomp_req *); + void (*dst_free)(struct scatterlist *); + unsigned int reqsize; + struct crypto_tfm base; }; -struct trace_event_raw_ext4__write_begin { - struct trace_entry ent; - dev_t dev; - ino_t ino; - loff_t pos; - unsigned int len; - unsigned int flags; - char __data[0]; +struct crypto_acomp_ctx { + struct crypto_acomp *acomp; + struct acomp_req *req; + struct crypto_wait wait; + u8 *dstmem; + struct mutex *mutex; }; -struct trace_event_raw_ext4__write_end { - struct trace_entry ent; - dev_t dev; - ino_t ino; - loff_t pos; - unsigned int len; - unsigned int copied; - char __data[0]; +struct zswap_pool { + struct zpool *zpool; + struct crypto_acomp_ctx *acomp_ctx; + struct kref kref; + struct list_head list; + struct work_struct release_work; + struct work_struct shrink_work; + struct hlist_node node; + char tfm_name[128]; }; -struct trace_event_raw_ext4_writepages { - struct trace_entry ent; - dev_t dev; - ino_t ino; - long int nr_to_write; - long int pages_skipped; - loff_t range_start; - loff_t range_end; - long unsigned int writeback_index; - int sync_mode; - char for_kupdate; - char range_cyclic; - char __data[0]; +struct zswap_entry { + struct rb_node rbnode; + long unsigned int offset; + int refcount; + unsigned int length; + struct zswap_pool *pool; + union { + long unsigned int handle; + long unsigned int value; + }; }; -struct trace_event_raw_ext4_da_write_pages { - struct trace_entry ent; - dev_t dev; - ino_t ino; - long unsigned int first_page; - long int nr_to_write; - int sync_mode; - char __data[0]; +struct zswap_header { + swp_entry_t swpentry; }; -struct trace_event_raw_ext4_da_write_pages_extent { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u64 lblk; - __u32 len; - __u32 flags; - char __data[0]; +struct zswap_tree { + struct rb_root rbroot; + spinlock_t lock; }; -struct trace_event_raw_ext4_writepages_result { - struct trace_entry ent; - dev_t dev; - ino_t ino; - int ret; - int pages_written; - long int pages_skipped; - long unsigned int writeback_index; - int sync_mode; - char __data[0]; +enum zswap_get_swap_ret { + ZSWAP_SWAPCACHE_NEW = 0, + ZSWAP_SWAPCACHE_EXIST = 1, + ZSWAP_SWAPCACHE_FAIL = 2, }; -struct trace_event_raw_ext4__page_op { - struct trace_entry ent; - dev_t dev; - ino_t ino; - long unsigned int index; - char __data[0]; +struct dma_pool { + struct list_head page_list; + spinlock_t lock; + size_t size; + struct device *dev; + size_t allocation; + size_t boundary; + char name[32]; + struct list_head pools; }; -struct trace_event_raw_ext4_invalidate_folio_op { - struct trace_entry ent; - dev_t dev; - ino_t ino; - long unsigned int index; - size_t offset; - size_t length; - char __data[0]; +struct dma_page { + struct list_head page_list; + void *vaddr; + dma_addr_t dma; + unsigned int in_use; + unsigned int offset; }; -struct trace_event_raw_ext4_discard_blocks { - struct trace_entry ent; - dev_t dev; - __u64 blk; - __u64 count; - char __data[0]; +enum string_size_units { + STRING_UNITS_10 = 0, + STRING_UNITS_2 = 1, }; -struct trace_event_raw_ext4__mb_new_pa { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u64 pa_pstart; - __u64 pa_lstart; - __u32 pa_len; - char __data[0]; +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, }; -struct trace_event_raw_ext4_mb_release_inode_pa { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u64 block; - __u32 count; - char __data[0]; +enum { + SUBPAGE_INDEX_SUBPOOL = 1, + SUBPAGE_INDEX_CGROUP = 2, + SUBPAGE_INDEX_CGROUP_RSVD = 3, + __MAX_CGROUP_SUBPAGE_INDEX = 3, + __NR_USED_SUBPAGE = 4, }; -struct trace_event_raw_ext4_mb_release_group_pa { - struct trace_entry ent; - dev_t dev; - __u64 pa_pstart; - __u32 pa_len; - char __data[0]; +struct resv_map { + struct kref refs; + spinlock_t lock; + struct list_head regions; + long int adds_in_progress; + struct list_head region_cache; + long int region_cache_count; + struct page_counter *reservation_counter; + long unsigned int pages_per_hpage; + struct cgroup_subsys_state *css; }; -struct trace_event_raw_ext4_discard_preallocations { - struct trace_entry ent; - dev_t dev; - ino_t ino; - unsigned int len; - unsigned int needed; - char __data[0]; +struct file_region { + struct list_head link; + long int from; + long int to; + struct page_counter *reservation_counter; + struct cgroup_subsys_state *css; }; -struct trace_event_raw_ext4_mb_discard_preallocations { - struct trace_entry ent; - dev_t dev; - int needed; - char __data[0]; +struct huge_bootmem_page { + struct list_head list; + struct hstate *hstate; }; -struct trace_event_raw_ext4_request_blocks { - struct trace_entry ent; - dev_t dev; - ino_t ino; - unsigned int len; - __u32 logical; - __u32 lleft; - __u32 lright; - __u64 goal; - __u64 pleft; - __u64 pright; - unsigned int flags; - char __data[0]; +enum hugetlb_memory_event { + HUGETLB_MAX = 0, + HUGETLB_NR_MEMORY_EVENTS = 1, }; -struct trace_event_raw_ext4_allocate_blocks { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u64 block; - unsigned int len; - __u32 logical; - __u32 lleft; - __u32 lright; - __u64 goal; - __u64 pleft; - __u64 pright; - unsigned int flags; - char __data[0]; +struct hugetlb_cgroup { + struct cgroup_subsys_state css; + struct page_counter hugepage[2]; + struct page_counter rsvd_hugepage[2]; + atomic_long_t events[2]; + atomic_long_t events_local[2]; + struct cgroup_file events_file[2]; + struct cgroup_file events_local_file[2]; }; -struct trace_event_raw_ext4_free_blocks { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u64 block; - long unsigned int count; - int flags; - __u16 mode; - char __data[0]; +enum vma_resv_mode { + VMA_NEEDS_RESV = 0, + VMA_COMMIT_RESV = 1, + VMA_END_RESV = 2, + VMA_ADD_RESV = 3, + VMA_DEL_RESV = 4, }; -struct trace_event_raw_ext4_sync_file_enter { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ino_t parent; - int datasync; - char __data[0]; +struct node_hstate { + struct kobject *hugepages_kobj; + struct kobject *hstate_kobjs[2]; }; -struct trace_event_raw_ext4_sync_file_exit { - struct trace_entry ent; - dev_t dev; - ino_t ino; - int ret; - char __data[0]; +struct nodemask_scratch { + nodemask_t mask1; + nodemask_t mask2; }; -struct trace_event_raw_ext4_sync_fs { - struct trace_entry ent; - dev_t dev; - int wait; - char __data[0]; +struct sp_node { + struct rb_node nd; + long unsigned int start; + long unsigned int end; + struct mempolicy *policy; }; -struct trace_event_raw_ext4_alloc_da_blocks { - struct trace_entry ent; - dev_t dev; - ino_t ino; - unsigned int data_blocks; - char __data[0]; +struct mempolicy_operations { + int (*create)(struct mempolicy *, const nodemask_t *); + void (*rebind)(struct mempolicy *, const nodemask_t *); }; -struct trace_event_raw_ext4_mballoc_alloc { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u32 orig_logical; - int orig_start; - __u32 orig_group; - int orig_len; - __u32 goal_logical; - int goal_start; - __u32 goal_group; - int goal_len; - __u32 result_logical; - int result_start; - __u32 result_group; - int result_len; - __u16 found; - __u16 groups; - __u16 buddy; - __u16 flags; - __u16 tail; - __u8 cr; - char __data[0]; +struct queue_pages { + struct list_head *pagelist; + long unsigned int flags; + nodemask_t *nmask; + long unsigned int start; + long unsigned int end; + struct vm_area_struct *first; }; -struct trace_event_raw_ext4_mballoc_prealloc { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u32 orig_logical; - int orig_start; - __u32 orig_group; - int orig_len; - __u32 result_logical; - int result_start; - __u32 result_group; - int result_len; - char __data[0]; +struct 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 trace_event_raw_ext4__mballoc { - struct trace_entry ent; - dev_t dev; - ino_t ino; - int result_start; - __u32 result_group; - int result_len; - char __data[0]; +struct mmu_notifier_subscriptions { + struct hlist_head list; + bool has_itree; + spinlock_t lock; + long unsigned int invalidate_seq; + long unsigned int active_invalidate_ranges; + struct rb_root_cached itree; + wait_queue_head_t wq; + struct hlist_head deferred_list; }; -struct trace_event_raw_ext4_forget { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u64 block; - int is_metadata; - __u16 mode; - char __data[0]; +struct interval_tree_node { + struct rb_node rb; + long unsigned int start; + long unsigned int last; + long unsigned int __subtree_last; }; -struct trace_event_raw_ext4_da_update_reserve_space { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u64 i_blocks; - int used_blocks; - int reserved_data_blocks; - int quota_claim; - __u16 mode; - char __data[0]; +struct mmu_notifier; + +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 trace_event_raw_ext4_da_reserve_space { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u64 i_blocks; - int reserved_data_blocks; - __u16 mode; - char __data[0]; +struct mmu_notifier { + struct hlist_node hlist; + const struct mmu_notifier_ops *ops; + struct mm_struct *mm; + struct callback_head rcu; + unsigned int users; }; -struct trace_event_raw_ext4_da_release_space { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u64 i_blocks; - int freed_blocks; - int reserved_data_blocks; - __u16 mode; - char __data[0]; +struct mmu_interval_notifier; + +struct mmu_interval_notifier_ops { + bool (*invalidate)(struct mmu_interval_notifier *, const struct mmu_notifier_range *, long unsigned int); }; -struct trace_event_raw_ext4__bitmap_load { - struct trace_entry ent; - dev_t dev; - __u32 group; - char __data[0]; +struct mmu_interval_notifier { + struct interval_tree_node interval_tree; + const struct mmu_interval_notifier_ops *ops; + struct mm_struct *mm; + struct hlist_node deferred_item; + long unsigned int invalidate_seq; }; -struct trace_event_raw_ext4_read_block_bitmap_load { - struct trace_entry ent; - dev_t dev; - __u32 group; - bool prefetch; - char __data[0]; +struct rmap_item; + +struct mm_slot { + struct hlist_node link; + struct list_head mm_list; + struct rmap_item *rmap_list; + struct mm_struct *mm; }; -struct trace_event_raw_ext4__fallocate_mode { - struct trace_entry ent; - dev_t dev; - ino_t ino; - loff_t offset; - loff_t len; - int mode; - char __data[0]; +struct stable_node; + +struct rmap_item { + struct rmap_item *rmap_list; + union { + struct anon_vma *anon_vma; + int nid; + }; + struct mm_struct *mm; + long unsigned int address; + unsigned int oldchecksum; + union { + struct rb_node node; + struct { + struct stable_node *head; + struct hlist_node hlist; + }; + }; }; -struct trace_event_raw_ext4_fallocate_exit { - struct trace_entry ent; - dev_t dev; - ino_t ino; - loff_t pos; - unsigned int blocks; - int ret; - char __data[0]; +struct ksm_scan { + struct mm_slot *mm_slot; + long unsigned int address; + struct rmap_item **rmap_list; + long unsigned int seqnr; }; -struct trace_event_raw_ext4_unlink_enter { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ino_t parent; - loff_t size; - char __data[0]; +struct stable_node { + union { + struct rb_node node; + struct { + struct list_head *head; + struct { + struct hlist_node hlist_dup; + struct list_head list; + }; + }; + }; + struct hlist_head hlist; + union { + long unsigned int kpfn; + long unsigned int chain_prune_time; + }; + int rmap_hlist_len; + int nid; }; -struct trace_event_raw_ext4_unlink_exit { - struct trace_entry ent; - dev_t dev; - ino_t ino; - int ret; - char __data[0]; +enum get_ksm_page_flags { + GET_KSM_PAGE_NOLOCK = 0, + GET_KSM_PAGE_LOCK = 1, + GET_KSM_PAGE_TRYLOCK = 2, }; -struct trace_event_raw_ext4__truncate { - struct trace_entry ent; - dev_t dev; - ino_t ino; - __u64 blocks; - char __data[0]; +typedef long unsigned int cycles_t; + +enum stat_item { + ALLOC_FASTPATH = 0, + ALLOC_SLOWPATH = 1, + FREE_FASTPATH = 2, + FREE_SLOWPATH = 3, + FREE_FROZEN = 4, + FREE_ADD_PARTIAL = 5, + FREE_REMOVE_PARTIAL = 6, + ALLOC_FROM_PARTIAL = 7, + ALLOC_SLAB = 8, + ALLOC_REFILL = 9, + ALLOC_NODE_MISMATCH = 10, + FREE_SLAB = 11, + CPUSLAB_FLUSH = 12, + DEACTIVATE_FULL = 13, + DEACTIVATE_EMPTY = 14, + DEACTIVATE_TO_HEAD = 15, + DEACTIVATE_TO_TAIL = 16, + DEACTIVATE_REMOTE_FREES = 17, + DEACTIVATE_BYPASS = 18, + ORDER_FALLBACK = 19, + CMPXCHG_DOUBLE_CPU_FAIL = 20, + CMPXCHG_DOUBLE_FAIL = 21, + CPU_PARTIAL_ALLOC = 22, + CPU_PARTIAL_FREE = 23, + CPU_PARTIAL_NODE = 24, + CPU_PARTIAL_DRAIN = 25, + NR_SLUB_STAT_ITEMS = 26, }; -struct trace_event_raw_ext4_ext_convert_to_initialized_enter { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t m_lblk; - unsigned int m_len; - ext4_lblk_t u_lblk; - unsigned int u_len; - ext4_fsblk_t u_pblk; - char __data[0]; +struct track { + long unsigned int addr; + long unsigned int addrs[16]; + int cpu; + int pid; + long unsigned int when; }; -struct trace_event_raw_ext4_ext_convert_to_initialized_fastpath { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t m_lblk; - unsigned int m_len; - ext4_lblk_t u_lblk; - unsigned int u_len; - ext4_fsblk_t u_pblk; - ext4_lblk_t i_lblk; - unsigned int i_len; - ext4_fsblk_t i_pblk; - char __data[0]; +enum track_item { + TRACK_ALLOC = 0, + TRACK_FREE = 1, }; -struct trace_event_raw_ext4__map_blocks_enter { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t lblk; - unsigned int len; - unsigned int flags; - char __data[0]; +struct slub_flush_work { + struct work_struct work; + struct kmem_cache *s; + bool skip; }; -struct trace_event_raw_ext4__map_blocks_exit { - struct trace_entry ent; - dev_t dev; - ino_t ino; - unsigned int flags; - ext4_fsblk_t pblk; - ext4_lblk_t lblk; - unsigned int len; - unsigned int mflags; - int ret; - char __data[0]; +struct detached_freelist { + struct page *page; + void *tail; + void *freelist; + int cnt; + struct kmem_cache *s; }; -struct trace_event_raw_ext4_ext_load_extent { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_fsblk_t pblk; - ext4_lblk_t lblk; - char __data[0]; +struct location { + long unsigned int count; + long unsigned int addr; + long long int sum_time; + long int min_time; + long int max_time; + long int min_pid; + long int max_pid; + long unsigned int cpus[8]; + nodemask_t nodes; }; -struct trace_event_raw_ext4_load_inode { - struct trace_entry ent; - dev_t dev; - ino_t ino; - char __data[0]; +struct loc_track { + long unsigned int max; + long unsigned int count; + struct location *loc; + loff_t idx; }; -struct trace_event_raw_ext4_journal_start { - struct trace_entry ent; - dev_t dev; - long unsigned int ip; - int blocks; - int rsv_blocks; - int revoke_creds; - char __data[0]; +enum slab_stat_type { + SL_ALL = 0, + SL_PARTIAL = 1, + SL_CPU = 2, + SL_OBJECTS = 3, + SL_TOTAL = 4, }; -struct trace_event_raw_ext4_journal_start_reserved { - struct trace_entry ent; - dev_t dev; - long unsigned int ip; - int blocks; - char __data[0]; +struct slab_attribute { + struct attribute attr; + ssize_t (*show)(struct kmem_cache *, char *); + ssize_t (*store)(struct kmem_cache *, const char *, size_t); }; -struct trace_event_raw_ext4__trim { - struct trace_entry ent; - int dev_major; - int dev_minor; - __u32 group; - int start; - int len; - char __data[0]; +struct saved_alias { + struct kmem_cache *s; + const char *name; + struct saved_alias *next; }; -struct trace_event_raw_ext4_ext_handle_unwritten_extents { - struct trace_entry ent; - dev_t dev; - ino_t ino; - int flags; - ext4_lblk_t lblk; - ext4_fsblk_t pblk; - unsigned int len; - unsigned int allocated; - ext4_fsblk_t newblk; - char __data[0]; +enum slab_modes { + M_NONE = 0, + M_PARTIAL = 1, + M_FULL = 2, + M_FREE = 3, }; -struct trace_event_raw_ext4_get_implied_cluster_alloc_exit { - struct trace_entry ent; - dev_t dev; - unsigned int flags; - ext4_lblk_t lblk; - ext4_fsblk_t pblk; - unsigned int len; - int ret; - char __data[0]; +struct kcsan_scoped_access {}; + +enum kfence_object_state { + KFENCE_OBJECT_UNUSED = 0, + KFENCE_OBJECT_ALLOCATED = 1, + KFENCE_OBJECT_FREED = 2, }; -struct trace_event_raw_ext4_ext_show_extent { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_fsblk_t pblk; - ext4_lblk_t lblk; - short unsigned int len; - char __data[0]; +struct kfence_track { + pid_t pid; + int cpu; + u64 ts_nsec; + int num_stack_entries; + long unsigned int stack_entries[64]; }; -struct trace_event_raw_ext4_remove_blocks { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t from; - ext4_lblk_t to; - ext4_fsblk_t ee_pblk; - ext4_lblk_t ee_lblk; - short unsigned int ee_len; - ext4_fsblk_t pc_pclu; - ext4_lblk_t pc_lblk; - int pc_state; - char __data[0]; +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; }; -struct trace_event_raw_ext4_ext_rm_leaf { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t start; - ext4_lblk_t ee_lblk; - ext4_fsblk_t ee_pblk; - short int ee_len; - ext4_fsblk_t pc_pclu; - ext4_lblk_t pc_lblk; - int pc_state; - char __data[0]; +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 trace_event_raw_ext4_ext_rm_idx { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_fsblk_t pblk; - char __data[0]; +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, }; -struct trace_event_raw_ext4_ext_remove_space { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t start; - ext4_lblk_t end; - int depth; - char __data[0]; +typedef long int __kernel_ptrdiff_t; + +typedef __kernel_ptrdiff_t ptrdiff_t; + +struct buffer_head; + +typedef void bh_end_io_t(struct buffer_head *, int); + +struct buffer_head { + long unsigned int b_state; + struct buffer_head *b_this_page; + struct page *b_page; + sector_t b_blocknr; + size_t b_size; + char *b_data; + struct block_device *b_bdev; + bh_end_io_t *b_end_io; + void *b_private; + struct list_head b_assoc_buffers; + struct address_space *b_assoc_map; + atomic_t b_count; + spinlock_t b_uptodate_lock; }; -struct trace_event_raw_ext4_ext_remove_space_done { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t start; - ext4_lblk_t end; - int depth; - ext4_fsblk_t pc_pclu; - ext4_lblk_t pc_lblk; - int pc_state; - short unsigned int eh_entries; - char __data[0]; +enum bh_state_bits { + BH_Uptodate = 0, + BH_Dirty = 1, + BH_Lock = 2, + BH_Req = 3, + BH_Mapped = 4, + BH_New = 5, + BH_Async_Read = 6, + BH_Async_Write = 7, + BH_Delay = 8, + BH_Boundary = 9, + BH_Write_EIO = 10, + BH_Unwritten = 11, + BH_Quiet = 12, + BH_Meta = 13, + BH_Prio = 14, + BH_Defer_Completion = 15, + BH_PrivateStart = 16, }; -struct trace_event_raw_ext4__es_extent { +struct trace_event_raw_mm_migrate_pages { struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t lblk; - ext4_lblk_t len; - ext4_fsblk_t pblk; - char status; + long unsigned int succeeded; + long unsigned int failed; + long unsigned int thp_succeeded; + long unsigned int thp_failed; + long unsigned int thp_split; + enum migrate_mode mode; + int reason; char __data[0]; }; -struct trace_event_raw_ext4_es_remove_extent { +struct trace_event_raw_mm_migrate_pages_start { struct trace_entry ent; - dev_t dev; - ino_t ino; - loff_t lblk; - loff_t len; + enum migrate_mode mode; + int reason; char __data[0]; }; -struct trace_event_raw_ext4_es_find_extent_range_enter { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t lblk; - char __data[0]; -}; +struct trace_event_data_offsets_mm_migrate_pages {}; -struct trace_event_raw_ext4_es_find_extent_range_exit { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t lblk; - ext4_lblk_t len; - ext4_fsblk_t pblk; - char status; - char __data[0]; -}; +struct trace_event_data_offsets_mm_migrate_pages_start {}; -struct trace_event_raw_ext4_es_lookup_extent_enter { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t lblk; - char __data[0]; -}; +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); -struct trace_event_raw_ext4_es_lookup_extent_exit { +typedef void (*btf_trace_mm_migrate_pages_start)(void *, enum migrate_mode, int); + +enum scan_result { + SCAN_FAIL = 0, + SCAN_SUCCEED = 1, + SCAN_PMD_NULL = 2, + SCAN_EXCEED_NONE_PTE = 3, + SCAN_EXCEED_SWAP_PTE = 4, + SCAN_EXCEED_SHARED_PTE = 5, + SCAN_PTE_NON_PRESENT = 6, + SCAN_PTE_UFFD_WP = 7, + SCAN_PAGE_RO = 8, + SCAN_LACK_REFERENCED_PAGE = 9, + SCAN_PAGE_NULL = 10, + SCAN_SCAN_ABORT = 11, + SCAN_PAGE_COUNT = 12, + SCAN_PAGE_LRU = 13, + SCAN_PAGE_LOCK = 14, + SCAN_PAGE_ANON = 15, + SCAN_PAGE_COMPOUND = 16, + SCAN_ANY_PROCESS = 17, + SCAN_VMA_NULL = 18, + SCAN_VMA_CHECK = 19, + SCAN_ADDRESS_RANGE = 20, + SCAN_SWAP_CACHE_PAGE = 21, + SCAN_DEL_PAGE_LRU = 22, + SCAN_ALLOC_HUGE_PAGE_FAIL = 23, + SCAN_CGROUP_CHARGE_FAIL = 24, + SCAN_TRUNCATED = 25, + SCAN_PAGE_HAS_PRIVATE = 26, +}; + +struct trace_event_raw_mm_khugepaged_scan_pmd { struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t lblk; - ext4_lblk_t len; - ext4_fsblk_t pblk; - char status; - int found; + struct mm_struct *mm; + long unsigned int pfn; + bool writable; + int referenced; + int none_or_zero; + int status; + int unmapped; char __data[0]; }; -struct trace_event_raw_ext4__es_shrink_enter { +struct trace_event_raw_mm_collapse_huge_page { struct trace_entry ent; - dev_t dev; - int nr_to_scan; - int cache_cnt; + struct mm_struct *mm; + int isolated; + int status; char __data[0]; }; -struct trace_event_raw_ext4_es_shrink_scan_exit { +struct trace_event_raw_mm_collapse_huge_page_isolate { struct trace_entry ent; - dev_t dev; - int nr_shrunk; - int cache_cnt; + long unsigned int pfn; + int none_or_zero; + int referenced; + bool writable; + int status; char __data[0]; }; -struct trace_event_raw_ext4_collapse_range { +struct trace_event_raw_mm_collapse_huge_page_swapin { struct trace_entry ent; - dev_t dev; - ino_t ino; - loff_t offset; - loff_t len; + struct mm_struct *mm; + int swapped_in; + int referenced; + int ret; char __data[0]; }; -struct trace_event_raw_ext4_insert_range { - struct trace_entry ent; - dev_t dev; - ino_t ino; - loff_t offset; - loff_t len; - char __data[0]; +struct trace_event_data_offsets_mm_khugepaged_scan_pmd {}; + +struct trace_event_data_offsets_mm_collapse_huge_page {}; + +struct trace_event_data_offsets_mm_collapse_huge_page_isolate {}; + +struct trace_event_data_offsets_mm_collapse_huge_page_swapin {}; + +typedef void (*btf_trace_mm_khugepaged_scan_pmd)(void *, struct mm_struct *, struct page *, bool, int, int, int, int); + +typedef void (*btf_trace_mm_collapse_huge_page)(void *, struct mm_struct *, int, int); + +typedef void (*btf_trace_mm_collapse_huge_page_isolate)(void *, struct page *, int, int, bool, int); + +typedef void (*btf_trace_mm_collapse_huge_page_swapin)(void *, struct mm_struct *, int, int, int); + +struct mm_slot___2 { + struct hlist_node hash; + struct list_head mm_node; + struct mm_struct *mm; + int nr_pte_mapped_thp; + long unsigned int pte_mapped_thp[8]; }; -struct trace_event_raw_ext4_es_shrink { - struct trace_entry ent; - dev_t dev; - int nr_shrunk; - long long unsigned int scan_time; - int nr_skipped; - int retried; - char __data[0]; +struct khugepaged_scan { + struct list_head mm_head; + struct mm_slot___2 *mm_slot; + long unsigned int address; }; -struct trace_event_raw_ext4_es_insert_delayed_block { - struct trace_entry ent; - dev_t dev; - ino_t ino; - ext4_lblk_t lblk; - ext4_lblk_t len; - ext4_fsblk_t pblk; - char status; - bool allocated; - char __data[0]; +struct mem_cgroup_tree_per_node { + struct rb_root rb_root; + struct rb_node *rb_rightmost; + spinlock_t lock; }; -struct trace_event_raw_ext4_fsmap_class { - struct trace_entry ent; - dev_t dev; - dev_t keydev; - u32 agno; - u64 bno; - u64 len; - u64 owner; - char __data[0]; +struct mem_cgroup_tree { + struct mem_cgroup_tree_per_node *rb_tree_per_node[2]; }; -struct trace_event_raw_ext4_getfsmap_class { - struct trace_entry ent; - dev_t dev; - dev_t keydev; - u64 block; - u64 len; - u64 owner; - u64 flags; - char __data[0]; +struct mem_cgroup_eventfd_list { + struct list_head list; + struct eventfd_ctx *eventfd; }; -struct trace_event_raw_ext4_shutdown { - struct trace_entry ent; - dev_t dev; - unsigned int flags; - char __data[0]; +struct mem_cgroup_event { + struct mem_cgroup *memcg; + struct eventfd_ctx *eventfd; + struct list_head list; + int (*register_event)(struct mem_cgroup *, struct eventfd_ctx *, const char *); + void (*unregister_event)(struct mem_cgroup *, struct eventfd_ctx *); + poll_table pt; + wait_queue_head_t *wqh; + wait_queue_entry_t wait; + struct work_struct remove; }; -struct trace_event_raw_ext4_error { - struct trace_entry ent; - dev_t dev; - const char *function; - unsigned int line; - char __data[0]; +struct move_charge_struct { + spinlock_t lock; + struct mm_struct *mm; + struct mem_cgroup *from; + struct mem_cgroup *to; + long unsigned int flags; + long unsigned int precharge; + long unsigned int moved_charge; + long unsigned int moved_swap; + struct task_struct *moving_task; + wait_queue_head_t waitq; }; -struct trace_event_raw_ext4_prefetch_bitmaps { - struct trace_entry ent; - dev_t dev; - __u32 group; - __u32 next; - __u32 ios; - char __data[0]; +enum res_type { + _MEM = 0, + _MEMSWAP = 1, + _OOM_TYPE = 2, + _KMEM = 3, + _TCP = 4, }; -struct trace_event_raw_ext4_lazy_itable_init { - struct trace_entry ent; - dev_t dev; - __u32 group; - char __data[0]; +struct memory_stat { + const char *name; + unsigned int idx; }; -struct trace_event_raw_ext4_fc_replay_scan { - struct trace_entry ent; - dev_t dev; - int error; - int off; - char __data[0]; +struct oom_wait_info { + struct mem_cgroup *memcg; + wait_queue_entry_t wait; }; -struct trace_event_raw_ext4_fc_replay { - struct trace_entry ent; - dev_t dev; - int tag; - int ino; - int priv1; - int priv2; - char __data[0]; +enum oom_status { + OOM_SUCCESS = 0, + OOM_FAILED = 1, + OOM_ASYNC = 2, + OOM_SKIPPED = 3, }; -struct trace_event_raw_ext4_fc_commit_start { - struct trace_entry ent; - dev_t dev; - tid_t tid; - char __data[0]; +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 trace_event_raw_ext4_fc_commit_stop { - struct trace_entry ent; - dev_t dev; - int nblks; - int reason; - int num_fc; - int num_fc_ineligible; - int nblks_agg; - tid_t tid; - char __data[0]; +struct memcg_stock_pcp { + struct mem_cgroup *cached; + unsigned int nr_pages; + struct obj_stock task_obj; + struct obj_stock irq_obj; + struct work_struct work; + long unsigned int flags; }; -struct trace_event_raw_ext4_fc_stats { - struct trace_entry ent; - dev_t dev; - unsigned int fc_ineligible_rc[9]; - long unsigned int fc_commits; - long unsigned int fc_ineligible_commits; - long unsigned int fc_numblks; - char __data[0]; +enum { + RES_USAGE = 0, + RES_LIMIT = 1, + RES_MAX_USAGE = 2, + RES_FAILCNT = 3, + RES_SOFT_LIMIT = 4, }; -struct trace_event_raw_ext4_fc_track_dentry { - struct trace_entry ent; - dev_t dev; - tid_t t_tid; - ino_t i_ino; - tid_t i_sync_tid; - int error; - char __data[0]; +union mc_target { + struct page *page; + swp_entry_t ent; }; -struct trace_event_raw_ext4_fc_track_inode { - struct trace_entry ent; - dev_t dev; - tid_t t_tid; - ino_t i_ino; - tid_t i_sync_tid; - int error; - char __data[0]; +enum mc_target_type { + MC_TARGET_NONE = 0, + MC_TARGET_PAGE = 1, + MC_TARGET_SWAP = 2, + MC_TARGET_DEVICE = 3, }; -struct trace_event_raw_ext4_fc_track_range { - struct trace_entry ent; - dev_t dev; - tid_t t_tid; - ino_t i_ino; - tid_t i_sync_tid; - long int start; - long int end; - int error; - char __data[0]; +struct uncharge_gather { + struct mem_cgroup *memcg; + long unsigned int nr_memory; + long unsigned int pgpgout; + long unsigned int nr_kmem; + struct page *dummy_page; }; -struct trace_event_raw_ext4_fc_cleanup { - struct trace_entry ent; - dev_t dev; - int j_fc_off; - int full; - tid_t tid; - char __data[0]; +struct numa_stat { + const char *name; + unsigned int lru_mask; }; -struct trace_event_raw_ext4_update_sb { - struct trace_entry ent; - dev_t dev; - ext4_fsblk_t fsblk; - unsigned int flags; - char __data[0]; +enum vmpressure_levels { + VMPRESSURE_LOW = 0, + VMPRESSURE_MEDIUM = 1, + VMPRESSURE_CRITICAL = 2, + VMPRESSURE_NUM_LEVELS = 3, }; -struct trace_event_data_offsets_ext4_other_inode_update_time {}; +enum vmpressure_modes { + VMPRESSURE_NO_PASSTHROUGH = 0, + VMPRESSURE_HIERARCHY = 1, + VMPRESSURE_LOCAL = 2, + VMPRESSURE_NUM_MODES = 3, +}; -struct trace_event_data_offsets_ext4_free_inode {}; +struct vmpressure_event { + struct eventfd_ctx *efd; + enum vmpressure_levels level; + enum vmpressure_modes mode; + struct list_head node; +}; -struct trace_event_data_offsets_ext4_request_inode {}; +struct swap_cgroup_ctrl { + struct page **map; + long unsigned int length; + spinlock_t lock; +}; -struct trace_event_data_offsets_ext4_allocate_inode {}; +struct swap_cgroup { + short unsigned int id; +}; -struct trace_event_data_offsets_ext4_evict_inode {}; +enum { + RES_USAGE___2 = 0, + RES_RSVD_USAGE = 1, + RES_LIMIT___2 = 2, + RES_RSVD_LIMIT = 3, + RES_MAX_USAGE___2 = 4, + RES_RSVD_MAX_USAGE = 5, + RES_FAILCNT___2 = 6, + RES_RSVD_FAILCNT = 7, +}; -struct trace_event_data_offsets_ext4_drop_inode {}; +struct cleancache_filekey { + union { + ino_t ino; + __u32 fh[6]; + u32 key[6]; + } u; +}; -struct trace_event_data_offsets_ext4_nfs_commit_metadata {}; +struct cleancache_ops { + int (*init_fs)(size_t); + int (*init_shared_fs)(uuid_t *, size_t); + int (*get_page)(int, struct cleancache_filekey, long unsigned int, struct page *); + void (*put_page)(int, struct cleancache_filekey, long unsigned int, struct page *); + void (*invalidate_page)(int, struct cleancache_filekey, long unsigned int); + void (*invalidate_inode)(int, struct cleancache_filekey); + void (*invalidate_fs)(int); +}; -struct trace_event_data_offsets_ext4_mark_inode_dirty {}; +struct trace_event_raw_test_pages_isolated { + struct trace_entry ent; + long unsigned int start_pfn; + long unsigned int end_pfn; + long unsigned int fin_pfn; + char __data[0]; +}; -struct trace_event_data_offsets_ext4_begin_ordered_truncate {}; +struct trace_event_data_offsets_test_pages_isolated {}; -struct trace_event_data_offsets_ext4__write_begin {}; +typedef void (*btf_trace_test_pages_isolated)(void *, long unsigned int, long unsigned int, long unsigned int); -struct trace_event_data_offsets_ext4__write_end {}; +struct zpool_driver; -struct trace_event_data_offsets_ext4_writepages {}; +struct zpool { + struct zpool_driver *driver; + void *pool; + const struct zpool_ops *ops; + bool evictable; + bool can_sleep_mapped; + struct list_head list; +}; -struct trace_event_data_offsets_ext4_da_write_pages {}; +struct zpool_driver { + char *type; + struct module *owner; + atomic_t refcount; + struct list_head list; + void * (*create)(const char *, gfp_t, const struct zpool_ops *, struct zpool *); + void (*destroy)(void *); + bool malloc_support_movable; + 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 *); +}; -struct trace_event_data_offsets_ext4_da_write_pages_extent {}; +struct zbud_pool; -struct trace_event_data_offsets_ext4_writepages_result {}; +struct zbud_ops { + int (*evict)(struct zbud_pool *, long unsigned int); +}; -struct trace_event_data_offsets_ext4__page_op {}; +struct zbud_pool { + spinlock_t lock; + union { + struct list_head buddied; + struct list_head unbuddied[63]; + }; + struct list_head lru; + u64 pages_nr; + const struct zbud_ops *ops; + struct zpool *zpool; + const struct zpool_ops *zpool_ops; +}; -struct trace_event_data_offsets_ext4_invalidate_folio_op {}; +struct zbud_header { + struct list_head buddy; + struct list_head lru; + unsigned int first_chunks; + unsigned int last_chunks; + bool under_reclaim; +}; -struct trace_event_data_offsets_ext4_discard_blocks {}; +enum buddy { + FIRST = 0, + LAST = 1, +}; -struct trace_event_data_offsets_ext4__mb_new_pa {}; +enum zs_mapmode { + ZS_MM_RW = 0, + ZS_MM_RO = 1, + ZS_MM_WO = 2, +}; -struct trace_event_data_offsets_ext4_mb_release_inode_pa {}; +struct zs_pool_stats { + atomic_long_t pages_compacted; +}; -struct trace_event_data_offsets_ext4_mb_release_group_pa {}; +enum fullness_group { + ZS_EMPTY = 0, + ZS_ALMOST_EMPTY = 1, + ZS_ALMOST_FULL = 2, + ZS_FULL = 3, + NR_ZS_FULLNESS = 4, +}; -struct trace_event_data_offsets_ext4_discard_preallocations {}; +enum zs_stat_type { + CLASS_EMPTY = 0, + CLASS_ALMOST_EMPTY = 1, + CLASS_ALMOST_FULL = 2, + CLASS_FULL = 3, + OBJ_ALLOCATED = 4, + OBJ_USED = 5, + NR_ZS_STAT_TYPE = 6, +}; -struct trace_event_data_offsets_ext4_mb_discard_preallocations {}; +struct zs_size_stat { + long unsigned int objs[6]; +}; -struct trace_event_data_offsets_ext4_request_blocks {}; +struct size_class { + spinlock_t lock; + struct list_head fullness_list[4]; + int size; + int objs_per_zspage; + int pages_per_zspage; + unsigned int index; + struct zs_size_stat stats; +}; -struct trace_event_data_offsets_ext4_allocate_blocks {}; +struct link_free { + union { + long unsigned int next; + long unsigned int handle; + }; +}; -struct trace_event_data_offsets_ext4_free_blocks {}; +struct zs_pool { + const char *name; + struct size_class *size_class[255]; + struct kmem_cache *handle_cachep; + struct kmem_cache *zspage_cachep; + atomic_long_t pages_allocated; + struct zs_pool_stats stats; + struct shrinker shrinker; + struct inode *inode; + struct work_struct free_work; + struct wait_queue_head migration_wait; + atomic_long_t isolated_pages; + bool destroying; +}; -struct trace_event_data_offsets_ext4_sync_file_enter {}; +struct zspage { + struct { + unsigned int fullness: 2; + unsigned int class: 9; + unsigned int isolated: 3; + unsigned int magic: 8; + }; + unsigned int inuse; + unsigned int freeobj; + struct page *first_page; + struct list_head list; + rwlock_t lock; +}; -struct trace_event_data_offsets_ext4_sync_file_exit {}; +struct mapping_area { + char *vm_buf; + char *vm_addr; + enum zs_mapmode vm_mm; +}; -struct trace_event_data_offsets_ext4_sync_fs {}; +struct zs_compact_control { + struct page *s_page; + struct page *d_page; + int obj_idx; +}; -struct trace_event_data_offsets_ext4_alloc_da_blocks {}; +struct trace_event_raw_cma_alloc_class { + struct trace_entry ent; + u32 __data_loc_name; + long unsigned int pfn; + const struct page *page; + long unsigned int count; + unsigned int align; + char __data[0]; +}; -struct trace_event_data_offsets_ext4_mballoc_alloc {}; +struct trace_event_raw_cma_release { + struct trace_entry ent; + u32 __data_loc_name; + long unsigned int pfn; + const struct page *page; + long unsigned int count; + char __data[0]; +}; -struct trace_event_data_offsets_ext4_mballoc_prealloc {}; +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_ext4__mballoc {}; +struct trace_event_data_offsets_cma_alloc_class { + u32 name; +}; -struct trace_event_data_offsets_ext4_forget {}; +struct trace_event_data_offsets_cma_release { + u32 name; +}; -struct trace_event_data_offsets_ext4_da_update_reserve_space {}; +struct trace_event_data_offsets_cma_alloc_start { + u32 name; +}; -struct trace_event_data_offsets_ext4_da_reserve_space {}; +typedef void (*btf_trace_cma_release)(void *, const char *, long unsigned int, const struct page *, long unsigned int); -struct trace_event_data_offsets_ext4_da_release_space {}; +typedef void (*btf_trace_cma_alloc_start)(void *, const char *, long unsigned int, unsigned int); -struct trace_event_data_offsets_ext4__bitmap_load {}; +typedef void (*btf_trace_cma_alloc_finish)(void *, const char *, long unsigned int, const struct page *, long unsigned int, unsigned int); -struct trace_event_data_offsets_ext4_read_block_bitmap_load {}; +typedef void (*btf_trace_cma_alloc_busy_retry)(void *, const char *, long unsigned int, const struct page *, long unsigned int, unsigned int); -struct trace_event_data_offsets_ext4__fallocate_mode {}; +struct cma_kobject { + struct kobject kobj; + struct cma *cma; +}; -struct trace_event_data_offsets_ext4_fallocate_exit {}; +struct balloon_dev_info { + long unsigned int isolated_pages; + spinlock_t pages_lock; + struct list_head pages; + int (*migratepage)(struct balloon_dev_info *, struct page *, struct page *, enum migrate_mode); + struct inode *inode; +}; -struct trace_event_data_offsets_ext4_unlink_enter {}; +enum { + BAD_STACK = 4294967295, + NOT_STACK = 0, + GOOD_FRAME = 1, + GOOD_STACK = 2, +}; -struct trace_event_data_offsets_ext4_unlink_exit {}; +enum hmm_pfn_flags { + HMM_PFN_VALID = 0, + HMM_PFN_WRITE = 0, + HMM_PFN_ERROR = 0, + HMM_PFN_ORDER_SHIFT = 56, + HMM_PFN_REQ_FAULT = 0, + HMM_PFN_REQ_WRITE = 0, + HMM_PFN_FLAGS = 0, +}; -struct trace_event_data_offsets_ext4__truncate {}; +struct hmm_range { + struct mmu_interval_notifier *notifier; + long unsigned int notifier_seq; + long unsigned int start; + long unsigned int end; + long unsigned int *hmm_pfns; + long unsigned int default_flags; + long unsigned int pfn_flags_mask; + void *dev_private_owner; +}; -struct trace_event_data_offsets_ext4_ext_convert_to_initialized_enter {}; +struct hmm_vma_walk { + struct hmm_range *range; + long unsigned int last; +}; -struct trace_event_data_offsets_ext4_ext_convert_to_initialized_fastpath {}; +enum { + HMM_NEED_FAULT = 1, + HMM_NEED_WRITE_FAULT = 2, + HMM_NEED_ALL_BITS = 3, +}; -struct trace_event_data_offsets_ext4__map_blocks_enter {}; +struct hugetlbfs_inode_info { + struct shared_policy policy; + struct inode vfs_inode; + unsigned int seals; +}; -struct trace_event_data_offsets_ext4__map_blocks_exit {}; +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; +}; -struct trace_event_data_offsets_ext4_ext_load_extent {}; +enum { + PAGE_REPORTING_IDLE = 0, + PAGE_REPORTING_REQUESTED = 1, + PAGE_REPORTING_ACTIVE = 2, +}; -struct trace_event_data_offsets_ext4_load_inode {}; +struct open_how { + __u64 flags; + __u64 mode; + __u64 resolve; +}; -struct trace_event_data_offsets_ext4_journal_start {}; +typedef s32 compat_off_t; -struct trace_event_data_offsets_ext4_journal_start_reserved {}; +struct open_flags { + int open_flag; + umode_t mode; + int acc_mode; + int intent; + int lookup_flags; +}; -struct trace_event_data_offsets_ext4__trim {}; +typedef __kernel_long_t __kernel_off_t; -struct trace_event_data_offsets_ext4_ext_handle_unwritten_extents {}; +typedef __kernel_off_t off_t; -struct trace_event_data_offsets_ext4_get_implied_cluster_alloc_exit {}; +typedef __kernel_rwf_t rwf_t; -struct trace_event_data_offsets_ext4_ext_show_extent {}; +typedef s64 compat_loff_t; -struct trace_event_data_offsets_ext4_remove_blocks {}; +struct fscrypt_policy_v1 { + __u8 version; + __u8 contents_encryption_mode; + __u8 filenames_encryption_mode; + __u8 flags; + __u8 master_key_descriptor[8]; +}; -struct trace_event_data_offsets_ext4_ext_rm_leaf {}; +struct fscrypt_policy_v2 { + __u8 version; + __u8 contents_encryption_mode; + __u8 filenames_encryption_mode; + __u8 flags; + __u8 __reserved[4]; + __u8 master_key_identifier[16]; +}; -struct trace_event_data_offsets_ext4_ext_rm_idx {}; +union fscrypt_policy { + u8 version; + struct fscrypt_policy_v1 v1; + struct fscrypt_policy_v2 v2; +}; -struct trace_event_data_offsets_ext4_ext_remove_space {}; +enum vfs_get_super_keying { + vfs_get_single_super = 0, + vfs_get_single_reconf_super = 1, + vfs_get_keyed_super = 2, + vfs_get_independent_super = 3, +}; -struct trace_event_data_offsets_ext4_ext_remove_space_done {}; +typedef struct kobject *kobj_probe_t(dev_t, int *, void *); -struct trace_event_data_offsets_ext4__es_extent {}; +struct char_device_struct { + struct char_device_struct *next; + unsigned int major; + unsigned int baseminor; + int minorct; + char name[64]; + struct cdev *cdev; +}; -struct trace_event_data_offsets_ext4_es_remove_extent {}; +struct stat { + long unsigned int st_dev; + long unsigned int st_ino; + long unsigned int st_nlink; + unsigned int st_mode; + unsigned int st_uid; + unsigned int st_gid; + unsigned int __pad1; + long unsigned int st_rdev; + long unsigned int st_size; + long unsigned int st_atime; + long unsigned int st_atime_nsec; + long unsigned int st_mtime; + long unsigned int st_mtime_nsec; + long unsigned int st_ctime; + long unsigned int st_ctime_nsec; + long unsigned int st_blksize; + long int st_blocks; + long unsigned int __unused[3]; +}; -struct trace_event_data_offsets_ext4_es_find_extent_range_enter {}; +struct statx_timestamp { + __s64 tv_sec; + __u32 tv_nsec; + __s32 __reserved; +}; -struct trace_event_data_offsets_ext4_es_find_extent_range_exit {}; +struct statx { + __u32 stx_mask; + __u32 stx_blksize; + __u64 stx_attributes; + __u32 stx_nlink; + __u32 stx_uid; + __u32 stx_gid; + __u16 stx_mode; + __u16 __spare0[1]; + __u64 stx_ino; + __u64 stx_size; + __u64 stx_blocks; + __u64 stx_attributes_mask; + struct statx_timestamp stx_atime; + struct statx_timestamp stx_btime; + struct statx_timestamp stx_ctime; + struct statx_timestamp stx_mtime; + __u32 stx_rdev_major; + __u32 stx_rdev_minor; + __u32 stx_dev_major; + __u32 stx_dev_minor; + __u64 stx_mnt_id; + __u64 __spare2; + __u64 __spare3[12]; +}; -struct trace_event_data_offsets_ext4_es_lookup_extent_enter {}; +struct mount; -struct trace_event_data_offsets_ext4_es_lookup_extent_exit {}; +struct mnt_namespace { + struct ns_common ns; + struct mount *root; + struct list_head list; + spinlock_t ns_lock; + struct user_namespace *user_ns; + struct ucounts *ucounts; + u64 seq; + wait_queue_head_t poll; + u64 event; + unsigned int mounts; + unsigned int pending_mounts; +}; -struct trace_event_data_offsets_ext4__es_shrink_enter {}; +typedef u16 compat_mode_t; -struct trace_event_data_offsets_ext4_es_shrink_scan_exit {}; +typedef u32 compat_ino_t; -struct trace_event_data_offsets_ext4_collapse_range {}; +typedef u16 __compat_uid_t; -struct trace_event_data_offsets_ext4_insert_range {}; +typedef u16 __compat_gid_t; -struct trace_event_data_offsets_ext4_es_shrink {}; +typedef u16 compat_dev_t; -struct trace_event_data_offsets_ext4_es_insert_delayed_block {}; +typedef u16 compat_nlink_t; -struct trace_event_data_offsets_ext4_fsmap_class {}; +struct compat_stat { + compat_dev_t st_dev; + u16 __pad1; + compat_ino_t st_ino; + compat_mode_t st_mode; + compat_nlink_t st_nlink; + __compat_uid_t st_uid; + __compat_gid_t st_gid; + compat_dev_t st_rdev; + u16 __pad2; + u32 st_size; + u32 st_blksize; + u32 st_blocks; + u32 st_atime; + u32 st_atime_nsec; + u32 st_mtime; + u32 st_mtime_nsec; + u32 st_ctime; + u32 st_ctime_nsec; + u32 __unused4; + u32 __unused5; +}; -struct trace_event_data_offsets_ext4_getfsmap_class {}; +struct mnt_pcp; -struct trace_event_data_offsets_ext4_shutdown {}; +struct mountpoint; -struct trace_event_data_offsets_ext4_error {}; +struct mount { + struct hlist_node mnt_hash; + struct mount *mnt_parent; + struct dentry *mnt_mountpoint; + struct vfsmount mnt; + union { + struct callback_head mnt_rcu; + struct llist_node mnt_llist; + }; + struct mnt_pcp *mnt_pcp; + struct list_head mnt_mounts; + struct list_head mnt_child; + struct list_head mnt_instance; + const char *mnt_devname; + struct list_head mnt_list; + struct list_head mnt_expire; + struct list_head mnt_share; + struct list_head mnt_slave_list; + struct list_head mnt_slave; + struct mount *mnt_master; + struct mnt_namespace *mnt_ns; + struct mountpoint *mnt_mp; + union { + struct hlist_node mnt_mp_list; + struct hlist_node mnt_umount; + }; + struct list_head mnt_umounting; + struct fsnotify_mark_connector *mnt_fsnotify_marks; + __u32 mnt_fsnotify_mask; + int mnt_id; + int mnt_group_id; + int mnt_expiry_mark; + struct hlist_head mnt_pins; + struct hlist_head mnt_stuck_children; +}; -struct trace_event_data_offsets_ext4_prefetch_bitmaps {}; +struct mnt_pcp { + int mnt_count; + int mnt_writers; +}; -struct trace_event_data_offsets_ext4_lazy_itable_init {}; +struct mountpoint { + struct hlist_node m_hash; + struct dentry *m_dentry; + struct hlist_head m_list; + int m_count; +}; -struct trace_event_data_offsets_ext4_fc_replay_scan {}; +typedef short unsigned int ushort; -struct trace_event_data_offsets_ext4_fc_replay {}; +struct user_arg_ptr { + bool is_compat; + union { + const char * const *native; + const compat_uptr_t *compat; + } ptr; +}; -struct trace_event_data_offsets_ext4_fc_commit_start {}; +enum inode_i_mutex_lock_class { + I_MUTEX_NORMAL = 0, + I_MUTEX_PARENT = 1, + I_MUTEX_CHILD = 2, + I_MUTEX_XATTR = 3, + I_MUTEX_NONDIR2 = 4, + I_MUTEX_PARENT2 = 5, +}; -struct trace_event_data_offsets_ext4_fc_commit_stop {}; +struct name_snapshot { + struct qstr name; + unsigned char inline_name[32]; +}; -struct trace_event_data_offsets_ext4_fc_stats {}; +struct saved { + struct path link; + struct delayed_call done; + const char *name; + unsigned int seq; +}; -struct trace_event_data_offsets_ext4_fc_track_dentry {}; +struct nameidata { + struct path path; + struct qstr last; + struct path root; + struct inode *inode; + unsigned int flags; + unsigned int state; + unsigned int seq; + unsigned int m_seq; + unsigned int r_seq; + int last_type; + unsigned int depth; + int total_link_count; + struct saved *stack; + struct saved internal[2]; + struct filename *name; + struct nameidata *saved; + unsigned int root_seq; + int dfd; + kuid_t dir_uid; + umode_t dir_mode; +}; -struct trace_event_data_offsets_ext4_fc_track_inode {}; +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; +}; -struct trace_event_data_offsets_ext4_fc_track_range {}; +enum { + LAST_NORM = 0, + LAST_ROOT = 1, + LAST_DOT = 2, + LAST_DOTDOT = 3, +}; -struct trace_event_data_offsets_ext4_fc_cleanup {}; +enum { + WALK_TRAILING = 1, + WALK_MORE = 2, + WALK_NOFOLLOW = 4, +}; -struct trace_event_data_offsets_ext4_update_sb {}; +struct f_owner_ex { + int type; + __kernel_pid_t pid; +}; -typedef void (*btf_trace_ext4_other_inode_update_time)(void *, struct inode *, ino_t); +struct flock { + short int l_type; + short int l_whence; + __kernel_off_t l_start; + __kernel_off_t l_len; + __kernel_pid_t l_pid; +}; -typedef void (*btf_trace_ext4_free_inode)(void *, struct inode *); +struct compat_flock { + short int l_type; + short int l_whence; + compat_off_t l_start; + compat_off_t l_len; + compat_pid_t l_pid; +}; -typedef void (*btf_trace_ext4_request_inode)(void *, struct inode *, int); +struct compat_flock64 { + short int l_type; + short int l_whence; + compat_loff_t l_start; + compat_loff_t l_len; + compat_pid_t l_pid; +}; -typedef void (*btf_trace_ext4_allocate_inode)(void *, struct inode *, struct inode *, int); +struct file_clone_range { + __s64 src_fd; + __u64 src_offset; + __u64 src_length; + __u64 dest_offset; +}; -typedef void (*btf_trace_ext4_evict_inode)(void *, struct inode *); +struct file_dedupe_range_info { + __s64 dest_fd; + __u64 dest_offset; + __u64 bytes_deduped; + __s32 status; + __u32 reserved; +}; -typedef void (*btf_trace_ext4_drop_inode)(void *, struct inode *, int); +struct file_dedupe_range { + __u64 src_offset; + __u64 src_length; + __u16 dest_count; + __u16 reserved1; + __u32 reserved2; + struct file_dedupe_range_info info[0]; +}; -typedef void (*btf_trace_ext4_nfs_commit_metadata)(void *, struct inode *); +struct fsxattr { + __u32 fsx_xflags; + __u32 fsx_extsize; + __u32 fsx_nextents; + __u32 fsx_projid; + __u32 fsx_cowextsize; + unsigned char fsx_pad[8]; +}; -typedef void (*btf_trace_ext4_mark_inode_dirty)(void *, struct inode *, long unsigned int); +struct fiemap_extent; -typedef void (*btf_trace_ext4_begin_ordered_truncate)(void *, struct inode *, loff_t); +struct fiemap_extent_info { + unsigned int fi_flags; + unsigned int fi_extents_mapped; + unsigned int fi_extents_max; + struct fiemap_extent *fi_extents_start; +}; -typedef void (*btf_trace_ext4_write_begin)(void *, struct inode *, loff_t, unsigned int, unsigned int); +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; +}; -typedef void (*btf_trace_ext4_da_write_begin)(void *, struct inode *, loff_t, unsigned int, unsigned int); +struct space_resv { + __s16 l_type; + __s16 l_whence; + __s64 l_start; + __s64 l_len; + __s32 l_sysid; + __u32 l_pid; + __s32 l_pad[4]; +}; -typedef void (*btf_trace_ext4_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int); +struct fiemap_extent { + __u64 fe_logical; + __u64 fe_physical; + __u64 fe_length; + __u64 fe_reserved64[2]; + __u32 fe_flags; + __u32 fe_reserved[3]; +}; -typedef void (*btf_trace_ext4_journalled_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int); +struct fiemap { + __u64 fm_start; + __u64 fm_length; + __u32 fm_flags; + __u32 fm_mapped_extents; + __u32 fm_extent_count; + __u32 fm_reserved; + struct fiemap_extent fm_extents[0]; +}; -typedef void (*btf_trace_ext4_da_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int); +struct linux_dirent64 { + u64 d_ino; + s64 d_off; + short unsigned int d_reclen; + unsigned char d_type; + char d_name[0]; +}; -typedef void (*btf_trace_ext4_writepages)(void *, struct inode *, struct writeback_control *); +struct old_linux_dirent { + long unsigned int d_ino; + long unsigned int d_offset; + short unsigned int d_namlen; + char d_name[1]; +}; -typedef void (*btf_trace_ext4_da_write_pages)(void *, struct inode *, long unsigned int, struct writeback_control *); +struct readdir_callback { + struct dir_context ctx; + struct old_linux_dirent *dirent; + int result; +}; -typedef void (*btf_trace_ext4_da_write_pages_extent)(void *, struct inode *, struct ext4_map_blocks *); +struct linux_dirent { + long unsigned int d_ino; + long unsigned int d_off; + short unsigned int d_reclen; + char d_name[1]; +}; -typedef void (*btf_trace_ext4_writepages_result)(void *, struct inode *, struct writeback_control *, int, int); +struct getdents_callback { + struct dir_context ctx; + struct linux_dirent *current_dir; + int prev_reclen; + int count; + int error; +}; -typedef void (*btf_trace_ext4_writepage)(void *, struct page *); +struct getdents_callback64 { + struct dir_context ctx; + struct linux_dirent64 *current_dir; + int prev_reclen; + int count; + int error; +}; -typedef void (*btf_trace_ext4_readpage)(void *, struct page *); +struct compat_old_linux_dirent { + compat_ulong_t d_ino; + compat_ulong_t d_offset; + short unsigned int d_namlen; + char d_name[1]; +}; -typedef void (*btf_trace_ext4_releasepage)(void *, struct page *); +struct compat_readdir_callback { + struct dir_context ctx; + struct compat_old_linux_dirent *dirent; + int result; +}; -typedef void (*btf_trace_ext4_invalidate_folio)(void *, struct folio *, size_t, size_t); +struct compat_linux_dirent { + compat_ulong_t d_ino; + compat_ulong_t d_off; + short unsigned int d_reclen; + char d_name[1]; +}; -typedef void (*btf_trace_ext4_journalled_invalidate_folio)(void *, struct folio *, size_t, size_t); +struct compat_getdents_callback { + struct dir_context ctx; + struct compat_linux_dirent *current_dir; + int prev_reclen; + int count; + int error; +}; -typedef void (*btf_trace_ext4_discard_blocks)(void *, struct super_block *, long long unsigned int, long long unsigned int); +typedef struct { + long unsigned int fds_bits[16]; +} __kernel_fd_set; -typedef void (*btf_trace_ext4_mb_new_inode_pa)(void *, struct ext4_allocation_context *, struct ext4_prealloc_space *); +typedef __kernel_fd_set fd_set; -typedef void (*btf_trace_ext4_mb_new_group_pa)(void *, struct ext4_allocation_context *, struct ext4_prealloc_space *); +struct poll_table_entry { + struct file *filp; + __poll_t key; + wait_queue_entry_t wait; + wait_queue_head_t *wait_address; +}; -typedef void (*btf_trace_ext4_mb_release_inode_pa)(void *, struct ext4_prealloc_space *, long long unsigned int, unsigned int); +struct poll_table_page; -typedef void (*btf_trace_ext4_mb_release_group_pa)(void *, struct super_block *, struct ext4_prealloc_space *); +struct poll_wqueues { + poll_table pt; + struct poll_table_page *table; + struct task_struct *polling_task; + int triggered; + int error; + int inline_index; + struct poll_table_entry inline_entries[9]; +}; -typedef void (*btf_trace_ext4_discard_preallocations)(void *, struct inode *, unsigned int, unsigned int); +struct poll_table_page { + struct poll_table_page *next; + struct poll_table_entry *entry; + struct poll_table_entry entries[0]; +}; -typedef void (*btf_trace_ext4_mb_discard_preallocations)(void *, struct super_block *, int); +enum poll_time_type { + PT_TIMEVAL = 0, + PT_OLD_TIMEVAL = 1, + PT_TIMESPEC = 2, + PT_OLD_TIMESPEC = 3, +}; -typedef void (*btf_trace_ext4_request_blocks)(void *, struct ext4_allocation_request *); +typedef struct { + long unsigned int *in; + long unsigned int *out; + long unsigned int *ex; + long unsigned int *res_in; + long unsigned int *res_out; + long unsigned int *res_ex; +} fd_set_bits; -typedef void (*btf_trace_ext4_allocate_blocks)(void *, struct ext4_allocation_request *, long long unsigned int); +struct sigset_argpack { + sigset_t *p; + size_t size; +}; -typedef void (*btf_trace_ext4_free_blocks)(void *, struct inode *, __u64, long unsigned int, int); +struct poll_list { + struct poll_list *next; + int len; + struct pollfd entries[0]; +}; -typedef void (*btf_trace_ext4_sync_file_enter)(void *, struct file *, int); +struct compat_sel_arg_struct { + compat_ulong_t n; + compat_uptr_t inp; + compat_uptr_t outp; + compat_uptr_t exp; + compat_uptr_t tvp; +}; -typedef void (*btf_trace_ext4_sync_file_exit)(void *, struct inode *, int); +struct compat_sigset_argpack { + compat_uptr_t p; + compat_size_t size; +}; -typedef void (*btf_trace_ext4_sync_fs)(void *, struct super_block *, int); +enum dentry_d_lock_class { + DENTRY_D_LOCK_NORMAL = 0, + DENTRY_D_LOCK_NESTED = 1, +}; -typedef void (*btf_trace_ext4_alloc_da_blocks)(void *, struct inode *); +struct external_name { + union { + atomic_t count; + struct callback_head head; + } u; + unsigned char name[0]; +}; -typedef void (*btf_trace_ext4_mballoc_alloc)(void *, struct ext4_allocation_context *); +enum d_walk_ret { + D_WALK_CONTINUE = 0, + D_WALK_QUIT = 1, + D_WALK_NORETRY = 2, + D_WALK_SKIP = 3, +}; -typedef void (*btf_trace_ext4_mballoc_prealloc)(void *, struct ext4_allocation_context *); +struct check_mount { + struct vfsmount *mnt; + unsigned int mounted; +}; -typedef void (*btf_trace_ext4_mballoc_discard)(void *, struct super_block *, struct inode *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t); +struct select_data { + struct dentry *start; + union { + long int found; + struct dentry *victim; + }; + struct list_head dispose; +}; -typedef void (*btf_trace_ext4_mballoc_free)(void *, struct super_block *, struct inode *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t); +typedef long int pcp_op_T_____8; -typedef void (*btf_trace_ext4_forget)(void *, struct inode *, int, __u64); +enum file_time_flags { + S_ATIME = 1, + S_MTIME = 2, + S_CTIME = 4, + S_VERSION = 8, +}; -typedef void (*btf_trace_ext4_da_update_reserve_space)(void *, struct inode *, int, int); +struct mount_attr { + __u64 attr_set; + __u64 attr_clr; + __u64 propagation; + __u64 userns_fd; +}; -typedef void (*btf_trace_ext4_da_reserve_space)(void *, struct inode *); +struct proc_mounts { + struct mnt_namespace *ns; + struct path root; + int (*show)(struct seq_file *, struct vfsmount *); + struct mount cursor; +}; -typedef void (*btf_trace_ext4_da_release_space)(void *, struct inode *, int); +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; +}; -typedef void (*btf_trace_ext4_mb_bitmap_load)(void *, struct super_block *, long unsigned int); +enum umount_tree_flags { + UMOUNT_SYNC = 1, + UMOUNT_PROPAGATE = 2, + UMOUNT_CONNECTED = 4, +}; -typedef void (*btf_trace_ext4_mb_buddy_bitmap_load)(void *, struct super_block *, long unsigned int); +struct xattr_name { + char name[256]; +}; -typedef void (*btf_trace_ext4_load_inode_bitmap)(void *, struct super_block *, long unsigned int); +struct xattr_ctx { + union { + const void *cvalue; + void *value; + }; + void *kvalue; + size_t size; + struct xattr_name *kname; + unsigned int flags; +}; -typedef void (*btf_trace_ext4_read_block_bitmap_load)(void *, struct super_block *, long unsigned int, bool); +struct unicode_map { + const char *charset; + int version; +}; -typedef void (*btf_trace_ext4_fallocate_enter)(void *, struct inode *, loff_t, loff_t, int); +struct simple_transaction_argresp { + ssize_t size; + char data[0]; +}; -typedef void (*btf_trace_ext4_punch_hole)(void *, struct inode *, loff_t, loff_t, int); +struct simple_attr { + int (*get)(void *, u64 *); + int (*set)(void *, u64); + char get_buf[24]; + char set_buf[24]; + void *data; + const char *fmt; + struct mutex mutex; +}; -typedef void (*btf_trace_ext4_zero_range)(void *, struct inode *, loff_t, loff_t, int); +struct wb_writeback_work { + long int nr_pages; + struct super_block *sb; + enum writeback_sync_modes sync_mode; + unsigned int tagged_writepages: 1; + unsigned int for_kupdate: 1; + unsigned int range_cyclic: 1; + unsigned int for_background: 1; + unsigned int for_sync: 1; + unsigned int auto_free: 1; + enum wb_reason reason; + struct list_head list; + struct wb_completion *done; +}; -typedef void (*btf_trace_ext4_fallocate_exit)(void *, struct inode *, loff_t, unsigned int, int); +struct trace_event_raw_writeback_page_template { + struct trace_entry ent; + char name[32]; + ino_t ino; + long unsigned int index; + char __data[0]; +}; -typedef void (*btf_trace_ext4_unlink_enter)(void *, struct inode *, struct dentry *); +struct trace_event_raw_writeback_dirty_inode_template { + struct trace_entry ent; + char name[32]; + ino_t ino; + long unsigned int state; + long unsigned int flags; + char __data[0]; +}; -typedef void (*btf_trace_ext4_unlink_exit)(void *, struct dentry *, int); +struct trace_event_raw_inode_foreign_history { + struct trace_entry ent; + char name[32]; + ino_t ino; + ino_t cgroup_ino; + unsigned int history; + char __data[0]; +}; -typedef void (*btf_trace_ext4_truncate_enter)(void *, struct inode *); +struct trace_event_raw_inode_switch_wbs { + struct trace_entry ent; + char name[32]; + ino_t ino; + ino_t old_cgroup_ino; + ino_t new_cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_truncate_exit)(void *, struct inode *); +struct trace_event_raw_track_foreign_dirty { + struct trace_entry ent; + char name[32]; + u64 bdi_id; + ino_t ino; + unsigned int memcg_id; + ino_t cgroup_ino; + ino_t page_cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_ext_convert_to_initialized_enter)(void *, struct inode *, struct ext4_map_blocks *, struct ext4_extent *); +struct trace_event_raw_flush_foreign { + struct trace_entry ent; + char name[32]; + ino_t cgroup_ino; + unsigned int frn_bdi_id; + unsigned int frn_memcg_id; + char __data[0]; +}; -typedef void (*btf_trace_ext4_ext_convert_to_initialized_fastpath)(void *, struct inode *, struct ext4_map_blocks *, struct ext4_extent *, struct ext4_extent *); +struct trace_event_raw_writeback_write_inode_template { + struct trace_entry ent; + char name[32]; + ino_t ino; + int sync_mode; + ino_t cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_ext_map_blocks_enter)(void *, struct inode *, ext4_lblk_t, unsigned int, unsigned int); +struct trace_event_raw_writeback_work_class { + struct trace_entry ent; + char name[32]; + long int nr_pages; + dev_t sb_dev; + int sync_mode; + int for_kupdate; + int range_cyclic; + int for_background; + int reason; + ino_t cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_ind_map_blocks_enter)(void *, struct inode *, ext4_lblk_t, unsigned int, unsigned int); +struct trace_event_raw_writeback_pages_written { + struct trace_entry ent; + long int pages; + char __data[0]; +}; -typedef void (*btf_trace_ext4_ext_map_blocks_exit)(void *, struct inode *, unsigned int, struct ext4_map_blocks *, int); +struct trace_event_raw_writeback_class { + struct trace_entry ent; + char name[32]; + ino_t cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_ind_map_blocks_exit)(void *, struct inode *, unsigned int, struct ext4_map_blocks *, int); +struct trace_event_raw_writeback_bdi_register { + struct trace_entry ent; + char name[32]; + char __data[0]; +}; -typedef void (*btf_trace_ext4_ext_load_extent)(void *, struct inode *, ext4_lblk_t, ext4_fsblk_t); +struct trace_event_raw_wbc_class { + struct trace_entry ent; + char name[32]; + long int nr_to_write; + long int pages_skipped; + int sync_mode; + int for_kupdate; + int for_background; + int for_reclaim; + int range_cyclic; + long int range_start; + long int range_end; + ino_t cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_load_inode)(void *, struct super_block *, long unsigned int); +struct trace_event_raw_writeback_queue_io { + struct trace_entry ent; + char name[32]; + long unsigned int older; + long int age; + int moved; + int reason; + ino_t cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_journal_start)(void *, struct super_block *, int, int, int, long unsigned int); +struct trace_event_raw_global_dirty_state { + struct trace_entry ent; + long unsigned int nr_dirty; + long unsigned int nr_writeback; + long unsigned int background_thresh; + long unsigned int dirty_thresh; + long unsigned int dirty_limit; + long unsigned int nr_dirtied; + long unsigned int nr_written; + char __data[0]; +}; -typedef void (*btf_trace_ext4_journal_start_reserved)(void *, struct super_block *, int, long unsigned int); +struct trace_event_raw_bdi_dirty_ratelimit { + struct trace_entry ent; + char bdi[32]; + long unsigned int write_bw; + long unsigned int avg_write_bw; + long unsigned int dirty_rate; + long unsigned int dirty_ratelimit; + long unsigned int task_ratelimit; + long unsigned int balanced_dirty_ratelimit; + ino_t cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_trim_extent)(void *, struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t); +struct trace_event_raw_balance_dirty_pages { + struct trace_entry ent; + char bdi[32]; + long unsigned int limit; + long unsigned int setpoint; + long unsigned int dirty; + long unsigned int bdi_setpoint; + long unsigned int bdi_dirty; + long unsigned int dirty_ratelimit; + long unsigned int task_ratelimit; + unsigned int dirtied; + unsigned int dirtied_pause; + long unsigned int paused; + long int pause; + long unsigned int period; + long int think; + ino_t cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_trim_all_free)(void *, struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t); +struct trace_event_raw_writeback_sb_inodes_requeue { + struct trace_entry ent; + char name[32]; + ino_t ino; + long unsigned int state; + long unsigned int dirtied_when; + ino_t cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_ext_handle_unwritten_extents)(void *, struct inode *, struct ext4_map_blocks *, int, unsigned int, ext4_fsblk_t); +struct trace_event_raw_writeback_congest_waited_template { + struct trace_entry ent; + unsigned int usec_timeout; + unsigned int usec_delayed; + char __data[0]; +}; -typedef void (*btf_trace_ext4_get_implied_cluster_alloc_exit)(void *, struct super_block *, struct ext4_map_blocks *, int); +struct trace_event_raw_writeback_single_inode_template { + struct trace_entry ent; + char name[32]; + ino_t ino; + long unsigned int state; + long unsigned int dirtied_when; + long unsigned int writeback_index; + long int nr_to_write; + long unsigned int wrote; + ino_t cgroup_ino; + char __data[0]; +}; -typedef void (*btf_trace_ext4_ext_show_extent)(void *, struct inode *, ext4_lblk_t, ext4_fsblk_t, short unsigned int); +struct trace_event_raw_writeback_inode_template { + struct trace_entry ent; + dev_t dev; + ino_t ino; + long unsigned int state; + __u16 mode; + long unsigned int dirtied_when; + char __data[0]; +}; -typedef void (*btf_trace_ext4_remove_blocks)(void *, struct inode *, struct ext4_extent *, ext4_lblk_t, ext4_fsblk_t, struct partial_cluster *); +struct trace_event_data_offsets_writeback_page_template {}; -typedef void (*btf_trace_ext4_ext_rm_leaf)(void *, struct inode *, ext4_lblk_t, struct ext4_extent *, struct partial_cluster *); +struct trace_event_data_offsets_writeback_dirty_inode_template {}; -typedef void (*btf_trace_ext4_ext_rm_idx)(void *, struct inode *, ext4_fsblk_t); +struct trace_event_data_offsets_inode_foreign_history {}; -typedef void (*btf_trace_ext4_ext_remove_space)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int); +struct trace_event_data_offsets_inode_switch_wbs {}; -typedef void (*btf_trace_ext4_ext_remove_space_done)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int, struct partial_cluster *, __le16); +struct trace_event_data_offsets_track_foreign_dirty {}; -typedef void (*btf_trace_ext4_es_insert_extent)(void *, struct inode *, struct extent_status *); +struct trace_event_data_offsets_flush_foreign {}; -typedef void (*btf_trace_ext4_es_cache_extent)(void *, struct inode *, struct extent_status *); +struct trace_event_data_offsets_writeback_write_inode_template {}; -typedef void (*btf_trace_ext4_es_remove_extent)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t); +struct trace_event_data_offsets_writeback_work_class {}; -typedef void (*btf_trace_ext4_es_find_extent_range_enter)(void *, struct inode *, ext4_lblk_t); +struct trace_event_data_offsets_writeback_pages_written {}; -typedef void (*btf_trace_ext4_es_find_extent_range_exit)(void *, struct inode *, struct extent_status *); +struct trace_event_data_offsets_writeback_class {}; -typedef void (*btf_trace_ext4_es_lookup_extent_enter)(void *, struct inode *, ext4_lblk_t); +struct trace_event_data_offsets_writeback_bdi_register {}; -typedef void (*btf_trace_ext4_es_lookup_extent_exit)(void *, struct inode *, struct extent_status *, int); +struct trace_event_data_offsets_wbc_class {}; -typedef void (*btf_trace_ext4_es_shrink_count)(void *, struct super_block *, int, int); +struct trace_event_data_offsets_writeback_queue_io {}; -typedef void (*btf_trace_ext4_es_shrink_scan_enter)(void *, struct super_block *, int, int); +struct trace_event_data_offsets_global_dirty_state {}; -typedef void (*btf_trace_ext4_es_shrink_scan_exit)(void *, struct super_block *, int, int); +struct trace_event_data_offsets_bdi_dirty_ratelimit {}; -typedef void (*btf_trace_ext4_collapse_range)(void *, struct inode *, loff_t, loff_t); +struct trace_event_data_offsets_balance_dirty_pages {}; -typedef void (*btf_trace_ext4_insert_range)(void *, struct inode *, loff_t, loff_t); +struct trace_event_data_offsets_writeback_sb_inodes_requeue {}; -typedef void (*btf_trace_ext4_es_shrink)(void *, struct super_block *, int, u64, int, int); +struct trace_event_data_offsets_writeback_congest_waited_template {}; -typedef void (*btf_trace_ext4_es_insert_delayed_block)(void *, struct inode *, struct extent_status *, bool); +struct trace_event_data_offsets_writeback_single_inode_template {}; -typedef void (*btf_trace_ext4_fsmap_low_key)(void *, struct super_block *, u32, u32, u64, u64, u64); +struct trace_event_data_offsets_writeback_inode_template {}; -typedef void (*btf_trace_ext4_fsmap_high_key)(void *, struct super_block *, u32, u32, u64, u64, u64); +typedef void (*btf_trace_writeback_dirty_page)(void *, struct page *, struct address_space *); -typedef void (*btf_trace_ext4_fsmap_mapping)(void *, struct super_block *, u32, u32, u64, u64, u64); +typedef void (*btf_trace_wait_on_page_writeback)(void *, struct page *, struct address_space *); -typedef void (*btf_trace_ext4_getfsmap_low_key)(void *, struct super_block *, struct ext4_fsmap *); +typedef void (*btf_trace_writeback_mark_inode_dirty)(void *, struct inode *, int); -typedef void (*btf_trace_ext4_getfsmap_high_key)(void *, struct super_block *, struct ext4_fsmap *); +typedef void (*btf_trace_writeback_dirty_inode_start)(void *, struct inode *, int); -typedef void (*btf_trace_ext4_getfsmap_mapping)(void *, struct super_block *, struct ext4_fsmap *); +typedef void (*btf_trace_writeback_dirty_inode)(void *, struct inode *, int); -typedef void (*btf_trace_ext4_shutdown)(void *, struct super_block *, long unsigned int); +typedef void (*btf_trace_inode_foreign_history)(void *, struct inode *, struct writeback_control *, unsigned int); -typedef void (*btf_trace_ext4_error)(void *, struct super_block *, const char *, unsigned int); +typedef void (*btf_trace_inode_switch_wbs)(void *, struct inode *, struct bdi_writeback *, struct bdi_writeback *); -typedef void (*btf_trace_ext4_prefetch_bitmaps)(void *, struct super_block *, ext4_group_t, ext4_group_t, unsigned int); +typedef void (*btf_trace_track_foreign_dirty)(void *, struct page *, struct bdi_writeback *); -typedef void (*btf_trace_ext4_lazy_itable_init)(void *, struct super_block *, ext4_group_t); +typedef void (*btf_trace_flush_foreign)(void *, struct bdi_writeback *, unsigned int, unsigned int); -typedef void (*btf_trace_ext4_fc_replay_scan)(void *, struct super_block *, int, int); +typedef void (*btf_trace_writeback_write_inode_start)(void *, struct inode *, struct writeback_control *); -typedef void (*btf_trace_ext4_fc_replay)(void *, struct super_block *, int, int, int, int); +typedef void (*btf_trace_writeback_write_inode)(void *, struct inode *, struct writeback_control *); -typedef void (*btf_trace_ext4_fc_commit_start)(void *, struct super_block *, tid_t); +typedef void (*btf_trace_writeback_queue)(void *, struct bdi_writeback *, struct wb_writeback_work *); -typedef void (*btf_trace_ext4_fc_commit_stop)(void *, struct super_block *, int, int, tid_t); +typedef void (*btf_trace_writeback_exec)(void *, struct bdi_writeback *, struct wb_writeback_work *); -typedef void (*btf_trace_ext4_fc_stats)(void *, struct super_block *); +typedef void (*btf_trace_writeback_start)(void *, struct bdi_writeback *, struct wb_writeback_work *); -typedef void (*btf_trace_ext4_fc_track_create)(void *, handle_t *, struct inode *, struct dentry *, int); +typedef void (*btf_trace_writeback_written)(void *, struct bdi_writeback *, struct wb_writeback_work *); -typedef void (*btf_trace_ext4_fc_track_link)(void *, handle_t *, struct inode *, struct dentry *, int); +typedef void (*btf_trace_writeback_wait)(void *, struct bdi_writeback *, struct wb_writeback_work *); -typedef void (*btf_trace_ext4_fc_track_unlink)(void *, handle_t *, struct inode *, struct dentry *, int); +typedef void (*btf_trace_writeback_pages_written)(void *, long int); -typedef void (*btf_trace_ext4_fc_track_inode)(void *, handle_t *, struct inode *, int); +typedef void (*btf_trace_writeback_wake_background)(void *, struct bdi_writeback *); -typedef void (*btf_trace_ext4_fc_track_range)(void *, handle_t *, struct inode *, long int, long int, int); +typedef void (*btf_trace_writeback_bdi_register)(void *, struct backing_dev_info *); -typedef void (*btf_trace_ext4_fc_cleanup)(void *, journal_t *, int, tid_t); +typedef void (*btf_trace_wbc_writepage)(void *, struct writeback_control *, struct backing_dev_info *); -typedef void (*btf_trace_ext4_update_sb)(void *, struct super_block *, ext4_fsblk_t, unsigned int); +typedef void (*btf_trace_writeback_queue_io)(void *, struct bdi_writeback *, struct wb_writeback_work *, long unsigned int, int); -struct ext4_err_translation { - int code; - int errno; -}; +typedef void (*btf_trace_global_dirty_state)(void *, long unsigned int, long unsigned int); -enum { - Opt_bsd_df = 0, - Opt_minix_df = 1, - Opt_grpid = 2, - Opt_nogrpid = 3, - Opt_resgid = 4, - Opt_resuid = 5, - Opt_sb = 6, - Opt_nouid32 = 7, - Opt_debug = 8, - Opt_removed = 9, - Opt_user_xattr = 10, - Opt_nouser_xattr = 11, - Opt_acl = 12, - Opt_noacl = 13, - Opt_auto_da_alloc = 14, - Opt_noauto_da_alloc = 15, - Opt_noload = 16, - Opt_commit = 17, - Opt_min_batch_time = 18, - Opt_max_batch_time = 19, - Opt_journal_dev = 20, - Opt_journal_path = 21, - Opt_journal_checksum = 22, - Opt_journal_async_commit = 23, - Opt_abort = 24, - Opt_data_journal = 25, - Opt_data_ordered = 26, - Opt_data_writeback = 27, - Opt_data_err_abort = 28, - Opt_data_err_ignore = 29, - Opt_test_dummy_encryption = 30, - Opt_inlinecrypt = 31, - Opt_usrjquota = 32, - Opt_grpjquota = 33, - Opt_quota = 34, - Opt_noquota = 35, - Opt_barrier = 36, - Opt_nobarrier = 37, - Opt_err___2 = 38, - Opt_usrquota = 39, - Opt_grpquota = 40, - Opt_prjquota = 41, - Opt_i_version = 42, - Opt_dax = 43, - Opt_dax_always = 44, - Opt_dax_inode = 45, - Opt_dax_never = 46, - Opt_stripe = 47, - Opt_delalloc = 48, - Opt_nodelalloc = 49, - Opt_warn_on_error = 50, - Opt_nowarn_on_error = 51, - Opt_mblk_io_submit = 52, - Opt_debug_want_extra_isize = 53, - Opt_nomblk_io_submit = 54, - Opt_block_validity = 55, - Opt_noblock_validity = 56, - Opt_inode_readahead_blks = 57, - Opt_journal_ioprio = 58, - Opt_dioread_nolock = 59, - Opt_dioread_lock = 60, - Opt_discard = 61, - Opt_nodiscard = 62, - Opt_init_itable = 63, - Opt_noinit_itable = 64, - Opt_max_dir_size_kb = 65, - Opt_nojournal_checksum = 66, - Opt_nombcache = 67, - Opt_no_prefetch_block_bitmaps = 68, - Opt_mb_optimize_scan = 69, - Opt_errors = 70, - Opt_data = 71, - Opt_data_err = 72, - Opt_jqfmt = 73, - Opt_dax_type = 74, -}; +typedef void (*btf_trace_bdi_dirty_ratelimit)(void *, struct bdi_writeback *, long unsigned int, long unsigned int); -struct mount_opts { - int token; - int mount_opt; - int flags; -}; +typedef void (*btf_trace_balance_dirty_pages)(void *, struct bdi_writeback *, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long unsigned int, long int, long unsigned int); -struct ext4_sb_encodings { - __u16 magic; - char *name; - unsigned int version; -}; +typedef void (*btf_trace_writeback_sb_inodes_requeue)(void *, struct inode *); -struct ext4_fs_context { - char *s_qf_names[3]; - char *test_dummy_enc_arg; - int s_jquota_fmt; - short unsigned int qname_spec; - long unsigned int vals_s_flags; - long unsigned int mask_s_flags; - long unsigned int journal_devnum; - long unsigned int s_commit_interval; - long unsigned int s_stripe; - unsigned int s_inode_readahead_blks; - unsigned int s_want_extra_isize; - unsigned int s_li_wait_mult; - unsigned int s_max_dir_size_kb; - unsigned int journal_ioprio; - unsigned int vals_s_mount_opt; - unsigned int mask_s_mount_opt; - unsigned int vals_s_mount_opt2; - unsigned int mask_s_mount_opt2; - long unsigned int vals_s_mount_flags; - long unsigned int mask_s_mount_flags; - unsigned int opt_flags; - unsigned int spec; - u32 s_max_batch_time; - u32 s_min_batch_time; - kuid_t s_resuid; - kgid_t s_resgid; - ext4_fsblk_t s_sb_block; -}; +typedef void (*btf_trace_writeback_congestion_wait)(void *, unsigned int, unsigned int); -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]; -}; +typedef void (*btf_trace_writeback_wait_iff_congested)(void *, unsigned int, unsigned int); -struct ext4_xattr_header { - __le32 h_magic; - __le32 h_refcount; - __le32 h_blocks; - __le32 h_hash; - __le32 h_checksum; - __u32 h_reserved[3]; -}; +typedef void (*btf_trace_writeback_single_inode_start)(void *, struct inode *, struct writeback_control *, long unsigned int); -struct ext4_xattr_block_find { - struct ext4_xattr_search s; - struct buffer_head *bh; -}; +typedef void (*btf_trace_writeback_single_inode)(void *, struct inode *, struct writeback_control *, long unsigned int); -struct ext4_fc_tl { - __le16 fc_tag; - __le16 fc_len; -}; +typedef void (*btf_trace_writeback_lazytime)(void *, struct inode *); -struct ext4_fc_head { - __le32 fc_features; - __le32 fc_tid; -}; +typedef void (*btf_trace_writeback_lazytime_iput)(void *, struct inode *); -struct ext4_fc_add_range { - __le32 fc_ino; - __u8 fc_ex[12]; -}; +typedef void (*btf_trace_writeback_dirty_inode_enqueue)(void *, struct inode *); -struct ext4_fc_del_range { - __le32 fc_ino; - __le32 fc_lblk; - __le32 fc_len; -}; +typedef void (*btf_trace_sb_mark_inode_writeback)(void *, struct inode *); -struct ext4_fc_dentry_info { - __le32 fc_parent_ino; - __le32 fc_ino; - __u8 fc_dname[0]; -}; +typedef void (*btf_trace_sb_clear_inode_writeback)(void *, struct inode *); -struct ext4_fc_inode { - __le32 fc_ino; - __u8 fc_raw_inode[0]; +struct inode_switch_wbs_context { + struct rcu_work work; + struct bdi_writeback *new_wb; + struct inode *inodes[0]; }; -struct ext4_fc_tail { - __le32 fc_tid; - __le32 fc_crc; +struct splice_desc { + size_t total_len; + unsigned int len; + unsigned int flags; + union { + void *userptr; + struct file *file; + void *data; + } u; + loff_t pos; + loff_t *opos; + size_t num_spliced; + bool need_wakeup; }; -enum { - EXT4_FC_STATUS_OK = 0, - EXT4_FC_STATUS_INELIGIBLE = 1, - EXT4_FC_STATUS_SKIPPED = 2, - EXT4_FC_STATUS_FAILED = 3, -}; +typedef int splice_actor(struct pipe_inode_info *, struct pipe_buffer *, struct splice_desc *); -struct ext4_fc_dentry_update { - int fcd_op; - int fcd_parent; - int fcd_ino; - struct qstr fcd_name; - unsigned char fcd_iname[32]; - struct list_head fcd_list; - struct list_head fcd_dilist; -}; +typedef int splice_direct_actor(struct pipe_inode_info *, struct splice_desc *); -struct __track_dentry_update_args { - struct dentry *dentry; - int op; -}; +typedef __kernel_long_t __kernel_old_time_t; -struct __track_range_args { - ext4_lblk_t start; - ext4_lblk_t end; +struct old_utimbuf32 { + old_time32_t actime; + old_time32_t modtime; }; -struct dentry_info_args { - int parent_ino; - int dname_len; - int ino; - int inode_len; - char *dname; +struct utimbuf { + __kernel_old_time_t actime; + __kernel_old_time_t modtime; }; -struct ext4_orphan_block_tail { - __le32 ob_magic; - __le32 ob_checksum; +struct prepend_buffer { + char *buf; + int len; }; -typedef struct { - __le16 e_tag; - __le16 e_perm; - __le32 e_id; -} ext4_acl_entry; - -typedef struct { - __le32 a_version; -} ext4_acl_header; +typedef int __kernel_daddr_t; -struct commit_header { - __be32 h_magic; - __be32 h_blocktype; - __be32 h_sequence; - unsigned char h_chksum_type; - unsigned char h_chksum_size; - unsigned char h_padding[2]; - __be32 h_chksum[8]; - __be64 h_commit_sec; - __be32 h_commit_nsec; +struct ustat { + __kernel_daddr_t f_tfree; + unsigned int f_tinode; + char f_fname[6]; + char f_fpack[6]; }; -struct journal_block_tag3_s { - __be32 t_blocknr; - __be32 t_flags; - __be32 t_blocknr_high; - __be32 t_checksum; -}; +typedef s32 compat_daddr_t; -typedef struct journal_block_tag3_s journal_block_tag3_t; +typedef __kernel_fsid_t compat_fsid_t; -struct journal_block_tag_s { - __be32 t_blocknr; - __be16 t_checksum; - __be16 t_flags; - __be32 t_blocknr_high; +struct compat_statfs { + u32 f_type; + u32 f_bsize; + u32 f_blocks; + u32 f_bfree; + u32 f_bavail; + u32 f_files; + u32 f_ffree; + compat_fsid_t f_fsid; + u32 f_namelen; + u32 f_frsize; + u32 f_flags; + u32 f_spare[4]; }; -typedef struct journal_block_tag_s journal_block_tag_t; - -struct jbd2_journal_block_tail { - __be32 t_checksum; +struct compat_statfs64 { + u32 f_type; + u32 f_bsize; + u64 f_blocks; + u64 f_bfree; + u64 f_bavail; + u64 f_files; + u64 f_ffree; + compat_fsid_t f_fsid; + u32 f_namelen; + u32 f_frsize; + u32 f_flags; + u32 f_spare[4]; }; -struct jbd2_journal_revoke_header_s { - journal_header_t r_header; - __be32 r_count; +struct compat_ustat { + compat_daddr_t f_tfree; + compat_ino_t f_tinode; + char f_fname[6]; + char f_fpack[6]; }; -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 statfs { + unsigned int f_type; + unsigned int f_bsize; + long unsigned int f_blocks; + long unsigned int f_bfree; + long unsigned int f_bavail; + long unsigned int f_files; + long unsigned int f_ffree; + __kernel_fsid_t f_fsid; + unsigned int f_namelen; + unsigned int f_frsize; + unsigned int f_flags; + unsigned int f_spare[4]; }; -struct jbd2_revoke_table_s { - int hash_size; - int hash_shift; - struct list_head *hash_table; +struct statfs64 { + unsigned int f_type; + unsigned int f_bsize; + long long unsigned int f_blocks; + long long unsigned int f_bfree; + long long unsigned int f_bavail; + long long unsigned int f_files; + long long unsigned int f_ffree; + __kernel_fsid_t f_fsid; + unsigned int f_namelen; + unsigned int f_frsize; + unsigned int f_flags; + unsigned int f_spare[4]; }; -struct jbd2_revoke_record_s { - struct list_head hash; - tid_t sequence; - long long unsigned int blocknr; +struct ns_get_path_task_args { + const struct proc_ns_operations *ns_ops; + struct task_struct *task; }; -struct ramfs_mount_opts { - umode_t mode; +enum legacy_fs_param { + LEGACY_FS_UNSET_PARAMS = 0, + LEGACY_FS_MONOLITHIC_PARAMS = 1, + LEGACY_FS_INDIVIDUAL_PARAMS = 2, }; -struct ramfs_fs_info { - struct ramfs_mount_opts mount_opts; +struct legacy_fs_context { + char *legacy_data; + size_t data_size; + enum legacy_fs_param param_type; }; -enum ramfs_param { - Opt_mode___3 = 0, +enum fsconfig_command { + FSCONFIG_SET_FLAG = 0, + FSCONFIG_SET_STRING = 1, + FSCONFIG_SET_BINARY = 2, + FSCONFIG_SET_PATH = 3, + FSCONFIG_SET_PATH_EMPTY = 4, + FSCONFIG_SET_FD = 5, + FSCONFIG_CMD_CREATE = 6, + FSCONFIG_CMD_RECONFIGURE = 7, }; -struct trace_event_raw_jbd2_checkpoint { - struct trace_entry ent; - dev_t dev; - int result; - char __data[0]; -}; +typedef int get_block_t(struct inode *, sector_t, struct buffer_head *, int); -struct trace_event_raw_jbd2_commit { - struct trace_entry ent; - dev_t dev; - char sync_commit; - int transaction; - char __data[0]; -}; +struct dax_device; -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 iomap_page_ops; -struct trace_event_raw_jbd2_submit_inode_data { - struct trace_entry ent; - dev_t dev; - ino_t ino; - char __data[0]; +struct iomap { + u64 addr; + loff_t offset; + u64 length; + u16 type; + u16 flags; + struct block_device *bdev; + struct dax_device *dax_dev; + void *inline_data; + void *private; + const struct iomap_page_ops *page_ops; }; -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 iomap_page_ops { + int (*page_prepare)(struct inode *, loff_t, unsigned int); + void (*page_done)(struct inode *, loff_t, unsigned int, struct page *); }; -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 decrypt_bh_ctx { + struct work_struct work; + struct buffer_head *bh; }; -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 bh_lru { + struct buffer_head *bhs[16]; }; -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 bh_accounting { + int nr; + int ratelimit; }; -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]; -}; +typedef int dio_iodone_t(struct kiocb *, loff_t, ssize_t, void *); -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]; +typedef void dio_submit_t(struct bio *, struct inode *, loff_t); + +enum { + DIO_LOCKING = 1, + DIO_SKIP_HOLES = 2, }; -struct trace_event_raw_jbd2_write_superblock { - struct trace_entry ent; - dev_t dev; - int write_op; - char __data[0]; +struct dio_submit { + struct bio *bio; + unsigned int blkbits; + unsigned int blkfactor; + unsigned int start_zero_done; + int pages_in_io; + sector_t block_in_file; + unsigned int blocks_available; + int reap_counter; + sector_t final_block_in_request; + int boundary; + get_block_t *get_block; + dio_submit_t *submit_io; + loff_t logical_offset_in_bio; + sector_t final_block_in_bio; + sector_t next_block_for_io; + struct page *cur_page; + unsigned int cur_page_offset; + unsigned int cur_page_len; + sector_t cur_page_block; + loff_t cur_page_fs_offset; + struct iov_iter *iter; + unsigned int head; + unsigned int tail; + size_t from; + size_t to; }; -struct trace_event_raw_jbd2_lock_buffer_stall { - struct trace_entry ent; - dev_t dev; - long unsigned int stall_ms; - char __data[0]; +struct dio { + int flags; + int op; + int op_flags; + blk_qc_t bio_cookie; + struct gendisk *bio_disk; + struct inode *inode; + loff_t i_size; + dio_iodone_t *end_io; + void *private; + spinlock_t bio_lock; + int page_errors; + int is_async; + bool defer_completion; + bool should_dirty; + int io_error; + long unsigned int refcount; + struct bio *bio_list; + struct task_struct *waiter; + struct kiocb *iocb; + ssize_t result; + union { + struct page *pages[64]; + struct work_struct complete_work; + }; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 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 bvec_iter_all { + struct bio_vec bv; + int idx; + unsigned int done; }; -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 mpage_readpage_args { + struct bio *bio; + struct page *page; + unsigned int nr_pages; + bool is_readahead; + sector_t last_block_in_bio; + struct buffer_head map_bh; + long unsigned int first_logical_block; + get_block_t *get_block; }; -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 mpage_data { + struct bio *bio; + sector_t last_block_in_bio; + get_block_t *get_block; + unsigned int use_writepage; }; -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 u32 nlink_t; -typedef void (*btf_trace_jbd2_commit_flushing)(void *, journal_t *, transaction_t *); +typedef int (*proc_write_t)(struct file *, char *, size_t); -typedef void (*btf_trace_jbd2_commit_logging)(void *, journal_t *, transaction_t *); +struct proc_dir_entry { + atomic_t in_use; + refcount_t refcnt; + struct list_head pde_openers; + spinlock_t pde_unload_lock; + struct completion *pde_unload_completion; + const struct inode_operations *proc_iops; + union { + const struct proc_ops *proc_ops; + const struct file_operations *proc_dir_ops; + }; + const struct dentry_operations *proc_dops; + union { + const struct seq_operations *seq_ops; + int (*single_show)(struct seq_file *, void *); + }; + proc_write_t write; + void *data; + unsigned int state_size; + unsigned int low_ino; + nlink_t nlink; + kuid_t uid; + kgid_t gid; + loff_t size; + struct proc_dir_entry *parent; + struct rb_root subdir; + struct rb_node subdir_node; + char *name; + umode_t mode; + u8 flags; + u8 namelen; + char inline_name[0]; +}; -typedef void (*btf_trace_jbd2_drop_transaction)(void *, journal_t *, transaction_t *); +union proc_op { + int (*proc_get_link)(struct dentry *, struct path *); + int (*proc_show)(struct seq_file *, struct pid_namespace *, struct pid *, struct task_struct *); + const char *lsm; +}; -typedef void (*btf_trace_jbd2_end_commit)(void *, journal_t *, transaction_t *); +struct proc_inode { + struct pid *pid; + unsigned int fd; + union proc_op op; + struct proc_dir_entry *pde; + struct ctl_table_header *sysctl; + struct ctl_table *sysctl_entry; + struct hlist_node sibling_inodes; + const struct proc_ns_operations *ns_ops; + struct inode vfs_inode; +}; -typedef void (*btf_trace_jbd2_submit_inode_data)(void *, struct inode *); +struct proc_fs_opts { + int flag; + const char *str; +}; -typedef void (*btf_trace_jbd2_handle_start)(void *, dev_t, long unsigned int, unsigned int, unsigned int, int); +struct file_handle { + __u32 handle_bytes; + int handle_type; + unsigned char f_handle[0]; +}; -typedef void (*btf_trace_jbd2_handle_restart)(void *, dev_t, long unsigned int, unsigned int, unsigned int, int); +struct inotify_inode_mark { + struct fsnotify_mark fsn_mark; + int wd; +}; -typedef void (*btf_trace_jbd2_handle_extend)(void *, dev_t, long unsigned int, unsigned int, unsigned int, int, int); +struct dnotify_struct { + struct dnotify_struct *dn_next; + __u32 dn_mask; + int dn_fd; + struct file *dn_filp; + fl_owner_t dn_owner; +}; -typedef void (*btf_trace_jbd2_handle_stats)(void *, dev_t, long unsigned int, unsigned int, unsigned int, int, int, int, int); +struct dnotify_mark { + struct fsnotify_mark fsn_mark; + struct dnotify_struct *dn; +}; -typedef void (*btf_trace_jbd2_run_stats)(void *, dev_t, long unsigned int, struct transaction_run_stats_s *); +struct inotify_event_info { + struct fsnotify_event fse; + u32 mask; + int wd; + u32 sync_cookie; + int name_len; + char name[0]; +}; -typedef void (*btf_trace_jbd2_checkpoint_stats)(void *, dev_t, long unsigned int, struct transaction_chp_stats_s *); +struct inotify_event { + __s32 wd; + __u32 mask; + __u32 cookie; + __u32 len; + char name[0]; +}; -typedef void (*btf_trace_jbd2_update_log_tail)(void *, journal_t *, tid_t, long unsigned int, long unsigned int); +enum { + FAN_EVENT_INIT = 0, + FAN_EVENT_REPORTED = 1, + FAN_EVENT_ANSWERED = 2, + FAN_EVENT_CANCELED = 3, +}; -typedef void (*btf_trace_jbd2_write_superblock)(void *, journal_t *, int); +struct fanotify_fh { + u8 type; + u8 len; + u8 flags; + u8 pad; + unsigned char buf[0]; +}; -typedef void (*btf_trace_jbd2_lock_buffer_stall)(void *, dev_t, long unsigned int); +struct fanotify_info { + u8 dir_fh_totlen; + u8 file_fh_totlen; + u8 name_len; + u8 pad; + unsigned char buf[0]; +}; -typedef void (*btf_trace_jbd2_shrink_count)(void *, journal_t *, long unsigned int, long unsigned int); +enum fanotify_event_type { + FANOTIFY_EVENT_TYPE_FID = 0, + FANOTIFY_EVENT_TYPE_FID_NAME = 1, + FANOTIFY_EVENT_TYPE_PATH = 2, + FANOTIFY_EVENT_TYPE_PATH_PERM = 3, + FANOTIFY_EVENT_TYPE_OVERFLOW = 4, + __FANOTIFY_EVENT_TYPE_NUM = 5, +}; -typedef void (*btf_trace_jbd2_shrink_scan_enter)(void *, journal_t *, long unsigned int, long unsigned int); +struct fanotify_event { + struct fsnotify_event fse; + struct hlist_node merge_list; + u32 mask; + struct { + unsigned int type: 3; + unsigned int hash: 29; + }; + struct pid *pid; +}; -typedef void (*btf_trace_jbd2_shrink_scan_exit)(void *, journal_t *, long unsigned int, long unsigned int, long unsigned int); +struct fanotify_fid_event { + struct fanotify_event fae; + __kernel_fsid_t fsid; + struct fanotify_fh object_fh; + unsigned char _inline_fh_buf[12]; +}; -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 fanotify_name_event { + struct fanotify_event fae; + __kernel_fsid_t fsid; + struct fanotify_info info; +}; -struct jbd2_stats_proc_session { - journal_t *journal; - struct transaction_stats_s *stats; - int start; - int max; +struct fanotify_path_event { + struct fanotify_event fae; + struct path path; }; -enum hugetlbfs_size_type { - NO_SIZE = 0, - SIZE_STD = 1, - SIZE_PERCENT = 2, +struct fanotify_perm_event { + struct fanotify_event fae; + struct path path; + short unsigned int response; + short unsigned int state; + int fd; }; -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 fanotify_event_metadata { + __u32 event_len; + __u8 vers; + __u8 reserved; + __u16 metadata_len; + __u64 mask; + __s32 fd; + __s32 pid; }; -enum hugetlb_param { - Opt_gid___5 = 0, - Opt_min_size = 1, - Opt_mode___4 = 2, - Opt_nr_inodes___2 = 3, - Opt_pagesize = 4, - Opt_size___2 = 5, - Opt_uid___4 = 6, +struct fanotify_event_info_header { + __u8 info_type; + __u8 pad; + __u16 len; }; -struct getdents_callback___2 { - struct dir_context ctx; - char *name; - u64 ino; - int found; - int sequence; +struct fanotify_event_info_fid { + struct fanotify_event_info_header hdr; + __kernel_fsid_t fsid; + unsigned char handle[0]; }; -typedef u16 wchar_t; +struct fanotify_event_info_pidfd { + struct fanotify_event_info_header hdr; + __s32 pidfd; +}; -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 fanotify_response { + __s32 fd; + __u32 response; }; -struct utf8cursor { - const struct unicode_map *um; - enum utf8_normalization n; - const char *s; - const char *p; - const char *ss; - const char *sp; - unsigned int len; - unsigned int slen; - short int ccc; - short int nccc; - unsigned char hangul[12]; +struct epoll_event { + __poll_t events; + __u64 data; }; -typedef const unsigned char utf8trie_t; +struct wake_irq; -typedef const unsigned char utf8leaf_t; +struct wakeup_source { + const char *name; + int id; + struct list_head entry; + spinlock_t lock; + struct wake_irq *wakeirq; + struct timer_list timer; + long unsigned int timer_expires; + ktime_t total_time; + ktime_t max_time; + ktime_t last_time; + ktime_t start_prevent_time; + ktime_t prevent_sleep_time; + long unsigned int event_count; + long unsigned int active_count; + long unsigned int relax_count; + long unsigned int expire_count; + long unsigned int wakeup_count; + struct device *dev; + bool active: 1; + bool autosleep_enabled: 1; +}; -typedef u32 unicode_t; +struct epoll_filefd { + struct file *file; + int fd; +} __attribute__((packed)); -enum utf16_endian { - UTF16_HOST_ENDIAN = 0, - UTF16_LITTLE_ENDIAN = 1, - UTF16_BIG_ENDIAN = 2, -}; +struct epitem; -struct utf8_table { - int cmask; - int cval; - int shift; - long int lmask; - long int lval; +struct eppoll_entry { + struct eppoll_entry *next; + struct epitem *base; + wait_queue_entry_t wait; + wait_queue_head_t *whead; }; -typedef unsigned int autofs_wqt_t; - -struct autofs_sb_info; +struct eventpoll; -struct autofs_info { - struct dentry *dentry; - struct inode *inode; - int flags; - struct completion expire_complete; - struct list_head active; - struct list_head expiring; - struct autofs_sb_info *sbi; - long unsigned int last_used; - int count; - kuid_t uid; - kgid_t gid; - struct callback_head rcu; +struct epitem { + union { + struct rb_node rbn; + struct callback_head rcu; + }; + struct list_head rdllink; + struct epitem *next; + struct epoll_filefd ffd; + struct eppoll_entry *pwqlist; + struct eventpoll *ep; + struct hlist_node fllink; + struct wakeup_source *ws; + struct epoll_event event; }; -struct autofs_wait_queue; +struct eventpoll { + struct mutex mtx; + wait_queue_head_t wq; + wait_queue_head_t poll_wait; + struct list_head rdllist; + rwlock_t lock; + struct rb_root_cached rbr; + struct epitem *ovflist; + struct wakeup_source *ws; + struct user_struct *user; + struct file *file; + u64 gen; + struct hlist_head refs; + unsigned int napi_id; +}; -struct autofs_sb_info { - u32 magic; - int pipefd; - struct file *pipe; - struct pid *oz_pgrp; - int version; - int sub_version; - int min_proto; - int max_proto; - unsigned int flags; - long unsigned int exp_timeout; - unsigned int type; - struct super_block *sb; - struct mutex wq_mutex; - struct mutex pipe_mutex; - spinlock_t fs_lock; - struct autofs_wait_queue *queues; - spinlock_t lookup_lock; - struct list_head active_list; - struct list_head expiring_list; - struct callback_head rcu; +struct ep_pqueue { + poll_table pt; + struct epitem *epi; }; -struct autofs_wait_queue { - wait_queue_head_t queue; - struct autofs_wait_queue *next; - autofs_wqt_t wait_queue_token; - struct qstr name; - u32 offset; - u32 dev; - u64 ino; - kuid_t uid; - kgid_t gid; - pid_t pid; - pid_t tgid; - int status; - unsigned int wait_ctr; +struct epitems_head { + struct hlist_head epitems; + struct epitems_head *next; }; -enum { - Opt_err___3 = 0, - Opt_fd = 1, - Opt_uid___5 = 2, - Opt_gid___6 = 3, - Opt_pgrp = 4, - Opt_minproto = 5, - Opt_maxproto = 6, - Opt_indirect = 7, - Opt_direct = 8, - Opt_offset = 9, - Opt_strictexpire = 10, - Opt_ignore = 11, +struct signalfd_siginfo { + __u32 ssi_signo; + __s32 ssi_errno; + __s32 ssi_code; + __u32 ssi_pid; + __u32 ssi_uid; + __s32 ssi_fd; + __u32 ssi_tid; + __u32 ssi_band; + __u32 ssi_overrun; + __u32 ssi_trapno; + __s32 ssi_status; + __s32 ssi_int; + __u64 ssi_ptr; + __u64 ssi_utime; + __u64 ssi_stime; + __u64 ssi_addr; + __u16 ssi_addr_lsb; + __u16 __pad2; + __s32 ssi_syscall; + __u64 ssi_call_addr; + __u32 ssi_arch; + __u8 __pad[28]; }; -struct autofs_packet_hdr { - int proto_version; - int type; +struct signalfd_ctx { + sigset_t sigmask; }; -struct autofs_packet_missing { - struct autofs_packet_hdr hdr; - autofs_wqt_t wait_queue_token; - int len; - char name[256]; +struct timerfd_ctx { + union { + struct hrtimer tmr; + struct alarm alarm; + } t; + ktime_t tintv; + ktime_t moffs; + wait_queue_head_t wqh; + u64 ticks; + int clockid; + short unsigned int expired; + short unsigned int settime_flags; + struct callback_head rcu; + struct list_head clist; + spinlock_t cancel_lock; + bool might_cancel; }; -struct autofs_packet_expire { - struct autofs_packet_hdr hdr; - int len; - char name[256]; +struct eventfd_ctx { + struct kref kref; + wait_queue_head_t wqh; + __u64 count; + unsigned int flags; + int id; }; -enum autofs_notify { - NFY_NONE = 0, - NFY_MOUNT = 1, - NFY_EXPIRE = 2, +struct userfaultfd_ctx { + wait_queue_head_t fault_pending_wqh; + wait_queue_head_t fault_wqh; + wait_queue_head_t fd_wqh; + wait_queue_head_t event_wqh; + seqcount_spinlock_t refile_seq; + refcount_t refcount; + unsigned int flags; + unsigned int features; + bool released; + atomic_t mmap_changing; + struct mm_struct *mm; }; -struct autofs_packet_expire_multi { - struct autofs_packet_hdr hdr; - autofs_wqt_t wait_queue_token; - int len; - char name[256]; +struct uffd_msg { + __u8 event; + __u8 reserved1; + __u16 reserved2; + __u32 reserved3; + union { + struct { + __u64 flags; + __u64 address; + union { + __u32 ptid; + } feat; + } pagefault; + struct { + __u32 ufd; + } fork; + struct { + __u64 from; + __u64 to; + __u64 len; + } remap; + struct { + __u64 start; + __u64 end; + } remove; + struct { + __u64 reserved1; + __u64 reserved2; + __u64 reserved3; + } reserved; + } arg; }; -union autofs_packet_union { - struct autofs_packet_hdr hdr; - struct autofs_packet_missing missing; - struct autofs_packet_expire expire; - struct autofs_packet_expire_multi expire_multi; +struct uffdio_api { + __u64 api; + __u64 features; + __u64 ioctls; }; -struct autofs_v5_packet { - struct autofs_packet_hdr hdr; - autofs_wqt_t wait_queue_token; - __u32 dev; - __u64 ino; - __u32 uid; - __u32 gid; - __u32 pid; - __u32 tgid; - __u32 len; - char name[256]; +struct uffdio_range { + __u64 start; + __u64 len; }; -typedef struct autofs_v5_packet autofs_packet_missing_indirect_t; - -typedef struct autofs_v5_packet autofs_packet_expire_indirect_t; - -typedef struct autofs_v5_packet autofs_packet_missing_direct_t; - -typedef struct autofs_v5_packet autofs_packet_expire_direct_t; - -union autofs_v5_packet_union { - struct autofs_packet_hdr hdr; - struct autofs_v5_packet v5_packet; - autofs_packet_missing_indirect_t missing_indirect; - autofs_packet_expire_indirect_t expire_indirect; - autofs_packet_missing_direct_t missing_direct; - autofs_packet_expire_direct_t expire_direct; +struct uffdio_register { + struct uffdio_range range; + __u64 mode; + __u64 ioctls; }; -enum { - AUTOFS_IOC_READY_CMD = 96, - AUTOFS_IOC_FAIL_CMD = 97, - AUTOFS_IOC_CATATONIC_CMD = 98, - AUTOFS_IOC_PROTOVER_CMD = 99, - AUTOFS_IOC_SETTIMEOUT_CMD = 100, - AUTOFS_IOC_EXPIRE_CMD = 101, +struct uffdio_copy { + __u64 dst; + __u64 src; + __u64 len; + __u64 mode; + __s64 copy; }; -enum { - AUTOFS_IOC_EXPIRE_MULTI_CMD = 102, - AUTOFS_IOC_PROTOSUBVER_CMD = 103, - AUTOFS_IOC_ASKUMOUNT_CMD = 112, +struct uffdio_zeropage { + struct uffdio_range range; + __u64 mode; + __s64 zeropage; }; -struct args_protover { - __u32 version; +struct uffdio_writeprotect { + struct uffdio_range range; + __u64 mode; }; -struct args_protosubver { - __u32 sub_version; +struct uffdio_continue { + struct uffdio_range range; + __u64 mode; + __s64 mapped; }; -struct args_openmount { - __u32 devid; +struct userfaultfd_fork_ctx { + struct userfaultfd_ctx *orig; + struct userfaultfd_ctx *new; + struct list_head list; }; -struct args_ready { - __u32 token; +struct userfaultfd_unmap_ctx { + struct userfaultfd_ctx *ctx; + long unsigned int start; + long unsigned int end; + struct list_head list; }; -struct args_fail { - __u32 token; - __s32 status; +struct userfaultfd_wait_queue { + struct uffd_msg msg; + wait_queue_entry_t wq; + struct userfaultfd_ctx *ctx; + bool waken; }; -struct args_setpipefd { - __s32 pipefd; +struct userfaultfd_wake_range { + long unsigned int start; + long unsigned int len; }; -struct args_timeout { - __u64 timeout; -}; +struct kioctx; -struct args_requester { - __u32 uid; - __u32 gid; +struct kioctx_table { + struct callback_head rcu; + unsigned int nr; + struct kioctx *table[0]; }; -struct args_expire { - __u32 how; -}; +typedef __kernel_ulong_t aio_context_t; -struct args_askumount { - __u32 may_umount; +enum { + IOCB_CMD_PREAD = 0, + IOCB_CMD_PWRITE = 1, + IOCB_CMD_FSYNC = 2, + IOCB_CMD_FDSYNC = 3, + IOCB_CMD_POLL = 5, + IOCB_CMD_NOOP = 6, + IOCB_CMD_PREADV = 7, + IOCB_CMD_PWRITEV = 8, }; -struct args_in { - __u32 type; +struct io_event { + __u64 data; + __u64 obj; + __s64 res; + __s64 res2; }; -struct args_out { - __u32 devid; - __u32 magic; +struct iocb { + __u64 aio_data; + __kernel_rwf_t aio_rw_flags; + __u32 aio_key; + __u16 aio_lio_opcode; + __s16 aio_reqprio; + __u32 aio_fildes; + __u64 aio_buf; + __u64 aio_nbytes; + __s64 aio_offset; + __u64 aio_reserved2; + __u32 aio_flags; + __u32 aio_resfd; }; -struct args_ismountpoint { - union { - struct args_in in; - struct args_out out; - }; -}; +typedef u32 compat_aio_context_t; -struct autofs_dev_ioctl { - __u32 ver_major; - __u32 ver_minor; - __u32 size; - __s32 ioctlfd; - union { - struct args_protover protover; - struct args_protosubver protosubver; - struct args_openmount openmount; - struct args_ready ready; - struct args_fail fail; - struct args_setpipefd setpipefd; - struct args_timeout timeout; - struct args_requester requester; - struct args_expire expire; - struct args_askumount askumount; - struct args_ismountpoint ismountpoint; - }; - char path[0]; -}; +typedef int kiocb_cancel_fn(struct kiocb *); -enum { - AUTOFS_DEV_IOCTL_VERSION_CMD = 113, - AUTOFS_DEV_IOCTL_PROTOVER_CMD = 114, - AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD = 115, - AUTOFS_DEV_IOCTL_OPENMOUNT_CMD = 116, - AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD = 117, - AUTOFS_DEV_IOCTL_READY_CMD = 118, - AUTOFS_DEV_IOCTL_FAIL_CMD = 119, - AUTOFS_DEV_IOCTL_SETPIPEFD_CMD = 120, - AUTOFS_DEV_IOCTL_CATATONIC_CMD = 121, - AUTOFS_DEV_IOCTL_TIMEOUT_CMD = 122, - AUTOFS_DEV_IOCTL_REQUESTER_CMD = 123, - AUTOFS_DEV_IOCTL_EXPIRE_CMD = 124, - AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD = 125, - AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD = 126, +struct aio_ring { + unsigned int id; + unsigned int nr; + unsigned int head; + unsigned int tail; + unsigned int magic; + unsigned int compat_features; + unsigned int incompat_features; + unsigned int header_length; + struct io_event io_events[0]; }; -typedef int (*ioctl_fn)(struct file *, struct autofs_sb_info *, struct autofs_dev_ioctl *); +struct kioctx_cpu; -struct debugfs_fsdata { - const struct file_operations *real_fops; - refcount_t active_users; - struct completion active_users_drained; +struct ctx_rq_wait; + +struct kioctx { + struct percpu_ref users; + atomic_t dead; + struct percpu_ref reqs; + long unsigned int user_id; + struct kioctx_cpu *cpu; + unsigned int req_batch; + unsigned int max_reqs; + unsigned int nr_events; + long unsigned int mmap_base; + long unsigned int mmap_size; + struct page **ring_pages; + long int nr_pages; + struct rcu_work free_rwork; + struct ctx_rq_wait *rq_wait; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct { + atomic_t reqs_available; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 { + spinlock_t ctx_lock; + struct list_head active_reqs; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 { + struct mutex ring_lock; + wait_queue_head_t wait; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 { + unsigned int tail; + unsigned int completed_events; + spinlock_t completion_lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 page *internal_pages[8]; + struct file *aio_ring_file; + unsigned int id; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 debugfs_mount_opts { - kuid_t uid; - kgid_t gid; - umode_t mode; +struct kioctx_cpu { + unsigned int reqs_available; }; -enum { - Opt_uid___6 = 0, - Opt_gid___7 = 1, - Opt_mode___5 = 2, - Opt_err___4 = 3, +struct ctx_rq_wait { + struct completion comp; + atomic_t count; }; -struct debugfs_fs_info { - struct debugfs_mount_opts mount_opts; +struct fsync_iocb { + struct file *file; + struct work_struct work; + bool datasync; + struct cred *creds; }; -struct debugfs_blob_wrapper { - void *data; - long unsigned int size; +struct poll_iocb { + struct file *file; + struct wait_queue_head *head; + __poll_t events; + bool cancelled; + bool work_scheduled; + bool work_need_resched; + struct wait_queue_entry wait; + struct work_struct work; }; -struct debugfs_reg32 { - char *name; - long unsigned int offset; +struct aio_kiocb { + union { + struct file *ki_filp; + struct kiocb rw; + struct fsync_iocb fsync; + struct poll_iocb poll; + }; + struct kioctx *ki_ctx; + kiocb_cancel_fn *ki_cancel; + struct io_event ki_res; + struct list_head ki_list; + refcount_t ki_refcnt; + struct eventfd_ctx *ki_eventfd; }; -struct debugfs_regset32 { - const struct debugfs_reg32 *regs; - int nregs; - void *base; - struct device *dev; +struct aio_poll_table { + struct poll_table_struct pt; + struct aio_kiocb *iocb; + bool queued; + int error; }; -struct debugfs_u32_array { - u32 *array; - u32 n_elements; +struct __aio_sigset { + const sigset_t *sigmask; + size_t sigsetsize; }; -struct debugfs_devm_entry { - int (*read)(struct seq_file *, void *); - struct device *dev; +struct __compat_aio_sigset { + compat_uptr_t sigmask; + compat_size_t sigsetsize; }; -struct tracefs_dir_ops { - int (*mkdir)(const char *); - int (*rmdir)(const char *); -}; +typedef long unsigned int dax_entry_t; -struct tracefs_mount_opts { - kuid_t uid; - kgid_t gid; - umode_t mode; +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 tracefs_fs_info { - struct tracefs_mount_opts mount_opts; +struct iomap_iter { + struct inode *inode; + loff_t pos; + u64 len; + s64 processed; + unsigned int flags; + struct iomap iomap; + struct iomap srcmap; }; -struct btrfs_qgroup_limit { - __u64 flags; - __u64 max_rfer; - __u64 max_excl; - __u64 rsv_rfer; - __u64 rsv_excl; +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]; }; -struct btrfs_qgroup_inherit { - __u64 flags; - __u64 num_qgroups; - __u64 num_ref_copies; - __u64 num_excl_copies; - struct btrfs_qgroup_limit lim; - __u64 qgroups[0]; -}; - -struct btrfs_scrub_progress { - __u64 data_extents_scrubbed; - __u64 tree_extents_scrubbed; - __u64 data_bytes_scrubbed; - __u64 tree_bytes_scrubbed; - __u64 read_errors; - __u64 csum_errors; - __u64 verify_errors; - __u64 no_csum; - __u64 csum_discards; - __u64 super_errors; - __u64 malloc_errors; - __u64 uncorrectable_errors; - __u64 corrected_errors; - __u64 last_physical; - __u64 unverified_errors; -}; - -struct btrfs_balance_args { - __u64 profiles; - union { - __u64 usage; - struct { - __u32 usage_min; - __u32 usage_max; - }; - }; - __u64 devid; - __u64 pstart; - __u64 pend; - __u64 vstart; - __u64 vend; - __u64 target; - __u64 flags; - union { - __u64 limit; - struct { - __u32 limit_min; - __u32 limit_max; - }; - }; - __u32 stripes_min; - __u32 stripes_max; - __u64 unused[6]; +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 btrfs_balance_progress { - __u64 expected; - __u64 considered; - __u64 completed; +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]; }; -enum btrfs_dev_stat_values { - BTRFS_DEV_STAT_WRITE_ERRS = 0, - BTRFS_DEV_STAT_READ_ERRS = 1, - BTRFS_DEV_STAT_FLUSH_ERRS = 2, - BTRFS_DEV_STAT_CORRUPTION_ERRS = 3, - BTRFS_DEV_STAT_GENERATION_ERRS = 4, - BTRFS_DEV_STAT_VALUES_MAX = 5, +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]; }; -enum btrfs_csum_type { - BTRFS_CSUM_TYPE_CRC32 = 0, - BTRFS_CSUM_TYPE_XXHASH = 1, - BTRFS_CSUM_TYPE_SHA256 = 2, - BTRFS_CSUM_TYPE_BLAKE2 = 3, +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 btrfs_disk_key { - __le64 objectid; - __u8 type; - __le64 offset; -} __attribute__((packed)); - -struct btrfs_key { - __u64 objectid; - __u8 type; - __u64 offset; -} __attribute__((packed)); - -struct btrfs_dev_item { - __le64 devid; - __le64 total_bytes; - __le64 bytes_used; - __le32 io_align; - __le32 io_width; - __le32 sector_size; - __le64 type; - __le64 generation; - __le64 start_offset; - __le32 dev_group; - __u8 seek_speed; - __u8 bandwidth; - __u8 uuid[16]; - __u8 fsid[16]; -} __attribute__((packed)); - -struct btrfs_timespec { - __le64 sec; - __le32 nsec; -} __attribute__((packed)); - -struct btrfs_inode_item { - __le64 generation; - __le64 transid; - __le64 size; - __le64 nbytes; - __le64 block_group; - __le32 nlink; - __le32 uid; - __le32 gid; - __le32 mode; - __le64 rdev; - __le64 flags; - __le64 sequence; - __le64 reserved[4]; - struct btrfs_timespec atime; - struct btrfs_timespec ctime; - struct btrfs_timespec mtime; - struct btrfs_timespec otime; -} __attribute__((packed)); - -struct btrfs_root_item { - struct btrfs_inode_item inode; - __le64 generation; - __le64 root_dirid; - __le64 bytenr; - __le64 byte_limit; - __le64 bytes_used; - __le64 last_snapshot; - __le64 flags; - __le32 refs; - struct btrfs_disk_key drop_progress; - __u8 drop_level; - __u8 level; - __le64 generation_v2; - __u8 uuid[16]; - __u8 parent_uuid[16]; - __u8 received_uuid[16]; - __le64 ctransid; - __le64 otransid; - __le64 stransid; - __le64 rtransid; - struct btrfs_timespec ctime; - struct btrfs_timespec otime; - struct btrfs_timespec stime; - struct btrfs_timespec rtime; - __le64 reserved[8]; -} __attribute__((packed)); - -enum { - BTRFS_FILE_EXTENT_INLINE = 0, - BTRFS_FILE_EXTENT_REG = 1, - BTRFS_FILE_EXTENT_PREALLOC = 2, - BTRFS_NR_FILE_EXTENT_TYPES = 3, +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 btrfs_file_extent_item { - __le64 generation; - __le64 ram_bytes; - __u8 compression; - __u8 encryption; - __le16 other_encoding; - __u8 type; - __le64 disk_bytenr; - __le64 disk_num_bytes; - __le64 offset; - __le64 num_bytes; -} __attribute__((packed)); - -enum btrfs_raid_types { - BTRFS_RAID_RAID10 = 0, - BTRFS_RAID_RAID1 = 1, - BTRFS_RAID_DUP = 2, - BTRFS_RAID_RAID0 = 3, - BTRFS_RAID_SINGLE = 4, - BTRFS_RAID_RAID5 = 5, - BTRFS_RAID_RAID6 = 6, - BTRFS_RAID_RAID1C3 = 7, - BTRFS_RAID_RAID1C4 = 8, - BTRFS_NR_RAID_TYPES = 9, +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 btrfs_fs_info; - -struct extent_io_tree { - struct rb_root state; - struct btrfs_fs_info *fs_info; - void *private_data; - u64 dirty_bytes; - bool track_uptodate; - u8 owner; - spinlock_t lock; -}; +struct trace_event_data_offsets_dax_pmd_fault_class {}; -struct extent_map_tree { - struct rb_root_cached map; - struct list_head modified_extents; - rwlock_t lock; -}; +struct trace_event_data_offsets_dax_pmd_load_hole_class {}; -struct btrfs_space_info; +struct trace_event_data_offsets_dax_pmd_insert_mapping_class {}; -struct btrfs_block_rsv { - u64 size; - u64 reserved; - struct btrfs_space_info *space_info; - spinlock_t lock; - short unsigned int full; - short unsigned int type; - short unsigned int failfast; - u64 qgroup_rsv_size; - u64 qgroup_rsv_reserved; -}; +struct trace_event_data_offsets_dax_pte_fault_class {}; -struct btrfs_block_group; +struct trace_event_data_offsets_dax_insert_mapping {}; -struct btrfs_free_cluster { - spinlock_t lock; - spinlock_t refill_lock; - struct rb_root root; - u64 max_size; - u64 window_start; - bool fragmented; - struct btrfs_block_group *block_group; - struct list_head block_group_list; -}; +struct trace_event_data_offsets_dax_writeback_range_class {}; -struct btrfs_discard_ctl { - struct workqueue_struct *discard_workers; - struct delayed_work work; - spinlock_t lock; - struct btrfs_block_group *block_group; - struct list_head discard_list[3]; - u64 prev_discard; - u64 prev_discard_time; - atomic_t discardable_extents; - atomic64_t discardable_bytes; - u64 max_discard_size; - u64 delay_ms; - u32 iops_limit; - u32 kbps_limit; - u64 discard_extent_bytes; - u64 discard_bitmap_bytes; - atomic64_t discard_bytes_saved; -}; - -struct btrfs_work; - -typedef void (*btrfs_func_t)(struct btrfs_work *); - -struct __btrfs_workqueue; - -struct btrfs_work { - btrfs_func_t func; - btrfs_func_t ordered_func; - btrfs_func_t ordered_free; - struct work_struct normal_work; - struct list_head ordered_list; - struct __btrfs_workqueue *wq; - long unsigned int flags; -}; +struct trace_event_data_offsets_dax_writeback_one {}; -struct btrfs_device; +typedef void (*btf_trace_dax_pmd_fault)(void *, struct inode *, struct vm_fault *, long unsigned int, int); -struct btrfs_dev_replace { - u64 replace_state; - time64_t time_started; - time64_t time_stopped; - atomic64_t num_write_errors; - atomic64_t num_uncorrectable_read_errors; - u64 cursor_left; - u64 committed_cursor_left; - u64 cursor_left_last_write_of_item; - u64 cursor_right; - u64 cont_reading_from_srcdev_mode; - int is_valid; - int item_needs_writeback; - struct btrfs_device *srcdev; - struct btrfs_device *tgtdev; - struct mutex lock_finishing_cancel_unmount; - struct rw_semaphore rwsem; - struct btrfs_scrub_progress scrub_progress; - struct percpu_counter bio_counter; - wait_queue_head_t replace_wait; -}; +typedef void (*btf_trace_dax_pmd_fault_done)(void *, struct inode *, struct vm_fault *, long unsigned int, int); -enum btrfs_exclusive_operation { - BTRFS_EXCLOP_NONE = 0, - BTRFS_EXCLOP_BALANCE_PAUSED = 1, - BTRFS_EXCLOP_BALANCE = 2, - BTRFS_EXCLOP_DEV_ADD = 3, - BTRFS_EXCLOP_DEV_REMOVE = 4, - BTRFS_EXCLOP_DEV_REPLACE = 5, - BTRFS_EXCLOP_RESIZE = 6, - BTRFS_EXCLOP_SWAP_ACTIVATE = 7, -}; +typedef void (*btf_trace_dax_pmd_load_hole)(void *, struct inode *, struct vm_fault *, struct page *, void *); -struct btrfs_root; +typedef void (*btf_trace_dax_pmd_load_hole_fallback)(void *, struct inode *, struct vm_fault *, struct page *, void *); -struct btrfs_transaction; +typedef void (*btf_trace_dax_pmd_insert_mapping)(void *, struct inode *, struct vm_fault *, long int, pfn_t, void *); -struct btrfs_super_block; +typedef void (*btf_trace_dax_pte_fault)(void *, struct inode *, struct vm_fault *, int); -struct btrfs_stripe_hash_table; +typedef void (*btf_trace_dax_pte_fault_done)(void *, struct inode *, struct vm_fault *, int); -struct btrfs_workqueue; +typedef void (*btf_trace_dax_load_hole)(void *, struct inode *, struct vm_fault *, int); -struct btrfs_fs_devices; +typedef void (*btf_trace_dax_insert_pfn_mkwrite_no_entry)(void *, struct inode *, struct vm_fault *, int); -struct reloc_control; +typedef void (*btf_trace_dax_insert_pfn_mkwrite)(void *, struct inode *, struct vm_fault *, int); -struct btrfs_balance_control; +typedef void (*btf_trace_dax_insert_mapping)(void *, struct inode *, struct vm_fault *, void *); -struct btrfs_subpage_info; +typedef void (*btf_trace_dax_writeback_range)(void *, struct inode *, long unsigned int, long unsigned int); -struct ulist; +typedef void (*btf_trace_dax_writeback_range_done)(void *, struct inode *, long unsigned int, long unsigned int); -struct btrfs_delayed_root; +typedef void (*btf_trace_dax_writeback_one)(void *, struct inode *, long unsigned int, long unsigned int); -struct btrfs_fs_info { - u8 chunk_tree_uuid[16]; - long unsigned int flags; - struct btrfs_root *tree_root; - struct btrfs_root *chunk_root; - struct btrfs_root *dev_root; - struct btrfs_root *fs_root; - struct btrfs_root *quota_root; - struct btrfs_root *uuid_root; - struct btrfs_root *data_reloc_root; - struct btrfs_root *block_group_root; - struct btrfs_root *log_root_tree; - rwlock_t global_root_lock; - struct rb_root global_root_tree; - spinlock_t fs_roots_radix_lock; - struct xarray fs_roots_radix; - spinlock_t block_group_cache_lock; - u64 first_logical_byte; - struct rb_root block_group_cache_tree; - atomic64_t free_chunk_space; - struct extent_io_tree excluded_extents; - struct extent_map_tree mapping_tree; - struct btrfs_block_rsv global_block_rsv; - struct btrfs_block_rsv trans_block_rsv; - struct btrfs_block_rsv chunk_block_rsv; - struct btrfs_block_rsv delayed_block_rsv; - struct btrfs_block_rsv delayed_refs_rsv; - struct btrfs_block_rsv empty_block_rsv; - u64 generation; - u64 last_trans_committed; - u64 last_reloc_trans; - u64 avg_delayed_ref_runtime; - u64 last_trans_log_full_commit; - long unsigned int mount_opt; - long unsigned int pending_changes; - long unsigned int compress_type: 4; - unsigned int compress_level; - u32 commit_interval; - u64 max_inline; - struct btrfs_transaction *running_transaction; - wait_queue_head_t transaction_throttle; - wait_queue_head_t transaction_wait; - wait_queue_head_t transaction_blocked_wait; - wait_queue_head_t async_submit_wait; - spinlock_t super_lock; - struct btrfs_super_block *super_copy; - struct btrfs_super_block *super_for_commit; - struct super_block *sb; - struct inode *btree_inode; - struct mutex tree_log_mutex; - struct mutex transaction_kthread_mutex; - struct mutex cleaner_mutex; - struct mutex chunk_mutex; - struct mutex ro_block_group_mutex; - struct btrfs_stripe_hash_table *stripe_hash_table; - struct mutex ordered_operations_mutex; - struct rw_semaphore commit_root_sem; - struct rw_semaphore cleanup_work_sem; - struct rw_semaphore subvol_sem; - spinlock_t trans_lock; - struct mutex reloc_mutex; - struct list_head trans_list; - struct list_head dead_roots; - struct list_head caching_block_groups; - spinlock_t delayed_iput_lock; - struct list_head delayed_iputs; - atomic_t nr_delayed_iputs; - wait_queue_head_t delayed_iputs_wait; - atomic64_t tree_mod_seq; - rwlock_t tree_mod_log_lock; - struct rb_root tree_mod_log; - struct list_head tree_mod_seq_list; - atomic_t async_delalloc_pages; - spinlock_t ordered_root_lock; - struct list_head ordered_roots; - struct mutex delalloc_root_mutex; - spinlock_t delalloc_root_lock; - struct list_head delalloc_roots; - struct btrfs_workqueue *workers; - struct btrfs_workqueue *delalloc_workers; - struct btrfs_workqueue *flush_workers; - struct btrfs_workqueue *endio_workers; - struct btrfs_workqueue *endio_meta_workers; - struct btrfs_workqueue *endio_raid56_workers; - struct btrfs_workqueue *rmw_workers; - struct btrfs_workqueue *endio_meta_write_workers; - struct btrfs_workqueue *endio_write_workers; - struct btrfs_workqueue *endio_freespace_worker; - struct btrfs_workqueue *caching_workers; - struct btrfs_workqueue *fixup_workers; - struct btrfs_workqueue *delayed_workers; - struct task_struct *transaction_kthread; - struct task_struct *cleaner_kthread; - u32 thread_pool_size; - struct kobject *space_info_kobj; - struct kobject *qgroups_kobj; - struct percpu_counter dirty_metadata_bytes; - struct percpu_counter delalloc_bytes; - struct percpu_counter ordered_bytes; - s32 dirty_metadata_batch; - s32 delalloc_batch; - struct list_head dirty_cowonly_roots; - struct btrfs_fs_devices *fs_devices; - struct list_head space_info; - struct btrfs_space_info *data_sinfo; - struct reloc_control *reloc_ctl; - struct btrfs_free_cluster data_alloc_cluster; - struct btrfs_free_cluster meta_alloc_cluster; - spinlock_t defrag_inodes_lock; - struct rb_root defrag_inodes; - atomic_t defrag_running; - seqlock_t profiles_lock; - u64 avail_data_alloc_bits; - u64 avail_metadata_alloc_bits; - u64 avail_system_alloc_bits; - spinlock_t balance_lock; - struct mutex balance_mutex; - atomic_t balance_pause_req; - atomic_t balance_cancel_req; - struct btrfs_balance_control *balance_ctl; - wait_queue_head_t balance_wait_q; - atomic_t reloc_cancel_req; - u32 data_chunk_allocations; - u32 metadata_ratio; - void *bdev_holder; - struct mutex scrub_lock; - atomic_t scrubs_running; - atomic_t scrub_pause_req; - atomic_t scrubs_paused; - atomic_t scrub_cancel_req; - wait_queue_head_t scrub_pause_wait; - refcount_t scrub_workers_refcnt; - struct btrfs_workqueue *scrub_workers; - struct btrfs_workqueue *scrub_wr_completion_workers; - struct btrfs_workqueue *scrub_parity_workers; - struct btrfs_subpage_info *subpage_info; - struct btrfs_discard_ctl discard_ctl; - u64 qgroup_flags; - struct rb_root qgroup_tree; - spinlock_t qgroup_lock; - struct ulist *qgroup_ulist; - struct mutex qgroup_ioctl_lock; - struct list_head dirty_qgroups; - u64 qgroup_seq; - struct mutex qgroup_rescan_lock; - struct btrfs_key qgroup_rescan_progress; - struct btrfs_workqueue *qgroup_rescan_workers; - struct completion qgroup_rescan_completion; - struct btrfs_work qgroup_rescan_work; - bool qgroup_rescan_running; - long unsigned int fs_state; - struct btrfs_delayed_root *delayed_root; - spinlock_t buffer_lock; - struct xarray buffer_radix; - int backup_root_index; - struct btrfs_dev_replace dev_replace; - struct semaphore uuid_tree_rescan_sem; - struct work_struct async_reclaim_work; - struct work_struct async_data_reclaim_work; - struct work_struct preempt_reclaim_work; - struct work_struct reclaim_bgs_work; - struct list_head reclaim_bgs; - int bg_reclaim_threshold; - spinlock_t unused_bgs_lock; - struct list_head unused_bgs; - struct mutex unused_bg_unpin_mutex; - struct mutex reclaim_bgs_lock; - u32 nodesize; - u32 sectorsize; - u32 sectorsize_bits; - u32 csum_size; - u32 csums_per_leaf; - u32 stripesize; - spinlock_t swapfile_pins_lock; - struct rb_root swapfile_pins; - struct crypto_shash *csum_shash; - enum btrfs_exclusive_operation exclusive_operation; - union { - u64 zone_size; - u64 zoned; - }; - struct mutex zoned_meta_io_lock; - spinlock_t treelog_bg_lock; - u64 treelog_bg; - spinlock_t relocation_bg_lock; - u64 data_reloc_bg; - struct mutex zoned_data_reloc_io_lock; - u64 nr_global_roots; - spinlock_t zone_active_bgs_lock; - struct list_head zone_active_bgs; -}; - -struct ulist { - long unsigned int nnodes; - struct list_head nodes; - struct rb_root root; +struct exceptional_entry_key { + struct xarray *xa; + long unsigned int entry_start; }; -enum { - EXTENT_BUFFER_UPTODATE = 0, - EXTENT_BUFFER_DIRTY = 1, - EXTENT_BUFFER_CORRUPT = 2, - EXTENT_BUFFER_READAHEAD = 3, - EXTENT_BUFFER_TREE_REF = 4, - EXTENT_BUFFER_STALE = 5, - EXTENT_BUFFER_WRITEBACK = 6, - EXTENT_BUFFER_READ_ERR = 7, - EXTENT_BUFFER_UNMAPPED = 8, - EXTENT_BUFFER_IN_TREE = 9, - EXTENT_BUFFER_WRITE_ERR = 10, - EXTENT_BUFFER_NO_CHECK = 11, +struct wait_exceptional_entry_queue { + wait_queue_entry_t wait; + struct exceptional_entry_key key; }; -struct extent_buffer { - u64 start; - long unsigned int len; - long unsigned int bflags; - struct btrfs_fs_info *fs_info; - spinlock_t refs_lock; - atomic_t refs; - atomic_t io_pages; - int read_mirror; - struct callback_head callback_head; - pid_t lock_owner; - s8 log_index; - struct rw_semaphore lock; - struct page *pages[16]; - struct list_head release_list; -}; - -enum btrfs_lock_nesting { - BTRFS_NESTING_NORMAL = 0, - BTRFS_NESTING_COW = 1, - BTRFS_NESTING_LEFT = 2, - BTRFS_NESTING_RIGHT = 3, - BTRFS_NESTING_LEFT_COW = 4, - BTRFS_NESTING_RIGHT_COW = 5, - BTRFS_NESTING_SPLIT = 6, - BTRFS_NESTING_NEW_ROOT = 7, - BTRFS_NESTING_MAX = 8, -}; - -struct btrfs_drew_lock { - atomic_t readers; - struct percpu_counter writers; - wait_queue_head_t pending_writers; - wait_queue_head_t pending_readers; -}; - -enum { - BTRFS_FS_STATE_ERROR = 0, - BTRFS_FS_STATE_REMOUNTING = 1, - BTRFS_FS_STATE_RO = 2, - BTRFS_FS_STATE_TRANS_ABORTED = 3, - BTRFS_FS_STATE_DEV_REPLACING = 4, - BTRFS_FS_STATE_DUMMY_FS_INFO = 5, - BTRFS_FS_STATE_NO_CSUMS = 6, - BTRFS_FS_STATE_LOG_CLEANUP_ERROR = 7, - BTRFS_FS_STATE_COUNT = 8, -}; - -struct btrfs_header { - u8 csum[32]; - u8 fsid[16]; - __le64 bytenr; - __le64 flags; - u8 chunk_tree_uuid[16]; - __le64 generation; - __le64 owner; - __le32 nritems; - u8 level; -} __attribute__((packed)); - -struct btrfs_root_backup { - __le64 tree_root; - __le64 tree_root_gen; - __le64 chunk_root; - __le64 chunk_root_gen; - __le64 extent_root; - __le64 extent_root_gen; - __le64 fs_root; - __le64 fs_root_gen; - __le64 dev_root; - __le64 dev_root_gen; - __le64 csum_root; - __le64 csum_root_gen; - __le64 total_bytes; - __le64 bytes_used; - __le64 num_devices; - __le64 unused_64[4]; - u8 tree_root_level; - u8 chunk_root_level; - u8 extent_root_level; - u8 fs_root_level; - u8 dev_root_level; - u8 csum_root_level; - u8 unused_8[10]; -}; - -struct btrfs_super_block { - u8 csum[32]; - u8 fsid[16]; - __le64 bytenr; - __le64 flags; - __le64 magic; - __le64 generation; - __le64 root; - __le64 chunk_root; - __le64 log_root; - __le64 log_root_transid; - __le64 total_bytes; - __le64 bytes_used; - __le64 root_dir_objectid; - __le64 num_devices; - __le32 sectorsize; - __le32 nodesize; - __le32 __unused_leafsize; - __le32 stripesize; - __le32 sys_chunk_array_size; - __le64 chunk_root_generation; - __le64 compat_flags; - __le64 compat_ro_flags; - __le64 incompat_flags; - __le16 csum_type; - u8 root_level; - u8 chunk_root_level; - u8 log_root_level; - struct btrfs_dev_item dev_item; - char label[256]; - __le64 cache_generation; - __le64 uuid_tree_generation; - u8 metadata_uuid[16]; - __le64 block_group_root; - __le64 block_group_root_generation; - u8 block_group_root_level; - u8 reserved8[7]; - __le64 reserved[25]; - u8 sys_chunk_array[2048]; - struct btrfs_root_backup super_roots[4]; - u8 padding[565]; -} __attribute__((packed)); - -struct btrfs_item { - struct btrfs_disk_key key; - __le32 offset; - __le32 size; -} __attribute__((packed)); +enum dax_wake_mode { + WAKE_ALL = 0, + WAKE_NEXT = 1, +}; -struct btrfs_key_ptr { - struct btrfs_disk_key key; - __le64 blockptr; - __le64 generation; -} __attribute__((packed)); +struct crypto_skcipher; -enum { - READA_NONE = 0, - READA_BACK = 1, - READA_FORWARD = 2, - READA_FORWARD_ALWAYS = 3, -}; +struct fscrypt_blk_crypto_key; -struct btrfs_path { - struct extent_buffer *nodes[8]; - int slots[8]; - u8 locks[8]; - u8 reada; - u8 lowest_level; - unsigned int search_for_split: 1; - unsigned int keep_locks: 1; - unsigned int skip_locking: 1; - unsigned int search_commit_root: 1; - unsigned int need_commit_sem: 1; - unsigned int skip_release_on_error: 1; - unsigned int search_for_extension: 1; +struct fscrypt_prepared_key { + struct crypto_skcipher *tfm; + struct fscrypt_blk_crypto_key *blk_key; }; -struct rcu_string; +struct fscrypt_mode; -struct btrfs_zoned_device_info; +struct fscrypt_master_key; -struct scrub_ctx; +struct fscrypt_direct_key; -struct btrfs_device { - struct list_head dev_list; - struct list_head dev_alloc_list; - struct list_head post_commit_list; - struct btrfs_fs_devices *fs_devices; - struct btrfs_fs_info *fs_info; - struct rcu_string *name; - u64 generation; - struct block_device *bdev; - struct btrfs_zoned_device_info *zone_info; - fmode_t mode; - dev_t devt; - long unsigned int dev_state; - blk_status_t last_flush_error; - u64 devid; - u64 total_bytes; - u64 disk_total_bytes; - u64 bytes_used; - u32 io_align; - u32 io_width; - u64 type; - u32 sector_size; - u8 uuid[16]; - u64 commit_total_bytes; - u64 commit_bytes_used; - struct bio *flush_bio; - struct completion flush_wait; - struct scrub_ctx *scrub_ctx; - int dev_stats_valid; - atomic_t dev_stats_ccnt; - atomic_t dev_stat_values[5]; - struct extent_io_tree alloc_state; - struct completion kobj_unregister; - struct kobject devid_kobj; - u64 scrub_speed_max; +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 btrfs_qgroup_swapped_blocks { - spinlock_t lock; - bool swapped; - struct rb_root blocks[8]; +struct skcipher_request { + unsigned int cryptlen; + u8 *iv; + struct scatterlist *src; + struct scatterlist *dst; + struct crypto_async_request base; + void *__ctx[0]; }; -struct btrfs_root { - struct rb_node rb_node; - struct extent_buffer *node; - struct extent_buffer *commit_root; - struct btrfs_root *log_root; - struct btrfs_root *reloc_root; - long unsigned int state; - struct btrfs_root_item root_item; - struct btrfs_key root_key; - struct btrfs_fs_info *fs_info; - struct extent_io_tree dirty_log_pages; - struct mutex objectid_mutex; - spinlock_t accounting_lock; - int: 32; - struct btrfs_block_rsv *block_rsv; - struct mutex log_mutex; - wait_queue_head_t log_writer_wait; - wait_queue_head_t log_commit_wait[2]; - struct list_head log_ctxs[2]; - atomic_t log_writers; - atomic_t log_commit[2]; - atomic_t log_batch; - int log_transid; - int log_transid_committed; - int last_log_commit; - pid_t log_start_pid; - u64 last_trans; - u32 type; - int: 32; - u64 free_objectid; - struct btrfs_key defrag_progress; - struct btrfs_key defrag_max; - long: 48; - struct list_head dirty_list; - struct list_head root_list; - spinlock_t log_extents_lock[2]; - struct list_head logged_list[2]; - spinlock_t inode_lock; - int: 32; - struct rb_root inode_tree; - struct xarray delayed_nodes_tree; - dev_t anon_dev; - spinlock_t root_item_lock; - refcount_t refs; - int: 32; - struct mutex delalloc_mutex; - spinlock_t delalloc_lock; - int: 32; - struct list_head delalloc_inodes; - struct list_head delalloc_root; - u64 nr_delalloc_inodes; - struct mutex ordered_extent_mutex; - spinlock_t ordered_extent_lock; - int: 32; - struct list_head ordered_extents; - struct list_head ordered_root; - u64 nr_ordered_extents; - struct list_head reloc_dirty_list; - int send_in_progress; - int dedupe_in_progress; - struct btrfs_drew_lock snapshot_lock; - atomic_t snapshot_force_cow; - spinlock_t qgroup_meta_rsv_lock; - u64 qgroup_meta_rsv_pertrans; - u64 qgroup_meta_rsv_prealloc; - wait_queue_head_t qgroup_flush_wait; - atomic_t nr_swapfiles; - int: 32; - struct btrfs_qgroup_swapped_blocks swapped_blocks; - struct extent_io_tree log_csum_range; -} __attribute__((packed)); - -enum btrfs_trans_state { - TRANS_STATE_RUNNING = 0, - TRANS_STATE_COMMIT_START = 1, - TRANS_STATE_COMMIT_DOING = 2, - TRANS_STATE_UNBLOCKED = 3, - TRANS_STATE_SUPER_COMMITTED = 4, - TRANS_STATE_COMPLETED = 5, - TRANS_STATE_MAX = 6, +struct crypto_skcipher { + unsigned int reqsize; + struct crypto_tfm base; }; -struct btrfs_delayed_ref_root { - struct rb_root_cached href_root; - struct rb_root dirty_extent_root; - spinlock_t lock; - atomic_t num_entries; - long unsigned int num_heads; - long unsigned int num_heads_ready; - u64 pending_csums; - long unsigned int flags; - u64 run_delayed_start; - u64 qgroup_to_skip; +struct fscrypt_key_specifier { + __u32 type; + __u32 __reserved; + union { + __u8 __reserved[32]; + __u8 descriptor[8]; + __u8 identifier[16]; + } u; }; -struct btrfs_transaction { - u64 transid; - atomic_t num_extwriters; - atomic_t num_writers; - refcount_t use_count; - long unsigned int flags; - enum btrfs_trans_state state; - int aborted; - struct list_head list; - struct extent_io_tree dirty_pages; - time64_t start_time; - wait_queue_head_t writer_wait; - wait_queue_head_t commit_wait; - struct list_head pending_snapshots; - struct list_head dev_update_list; - struct list_head switch_commits; - struct list_head dirty_bgs; - struct list_head io_bgs; - struct list_head dropped_roots; - struct extent_io_tree pinned_extents; - struct mutex cache_write_mutex; - spinlock_t dirty_bgs_lock; - struct list_head deleted_bgs; - spinlock_t dropped_roots_lock; - struct btrfs_delayed_ref_root delayed_refs; - struct btrfs_fs_info *fs_info; - atomic_t pending_ordered; - wait_queue_head_t pending_wait; - spinlock_t releasing_ebs_lock; - struct list_head releasing_ebs; -}; - -enum btrfs_chunk_allocation_policy { - BTRFS_CHUNK_ALLOC_REGULAR = 0, - BTRFS_CHUNK_ALLOC_ZONED = 1, -}; - -enum btrfs_read_policy { - BTRFS_READ_POLICY_PID = 0, - BTRFS_NR_READ_POLICY = 1, -}; - -struct btrfs_fs_devices { - u8 fsid[16]; - u8 metadata_uuid[16]; - bool fsid_change; - struct list_head fs_list; - u64 num_devices; - u64 open_devices; - u64 rw_devices; - u64 missing_devices; - u64 total_rw_bytes; - u64 total_devices; - u64 latest_generation; - struct btrfs_device *latest_dev; - struct mutex device_list_mutex; - struct list_head devices; - struct list_head alloc_list; - struct list_head seed_list; - bool seeding; - int opened; - bool rotating; - struct btrfs_fs_info *fs_info; - struct kobject fsid_kobj; - struct kobject *devices_kobj; - struct kobject *devinfo_kobj; - struct completion kobj_unregister; - enum btrfs_chunk_allocation_policy chunk_alloc_policy; - enum btrfs_read_policy read_policy; +struct crypto_shash { + unsigned int descsize; + struct crypto_tfm base; }; -struct btrfs_balance_control { - struct btrfs_balance_args data; - struct btrfs_balance_args meta; - struct btrfs_balance_args sys; - u64 flags; - struct btrfs_balance_progress stat; +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 btrfs_delayed_root { - spinlock_t lock; - struct list_head node_list; - struct list_head prepare_list; - atomic_t items; - atomic_t items_seq; - int nodes; - wait_queue_head_t wait; +struct fscrypt_hkdf { + struct crypto_shash *hmac_tfm; }; -enum { - BTRFS_ROOT_IN_TRANS_SETUP = 0, - BTRFS_ROOT_SHAREABLE = 1, - BTRFS_ROOT_TRACK_DIRTY = 2, - BTRFS_ROOT_IN_RADIX = 3, - BTRFS_ROOT_ORPHAN_ITEM_INSERTED = 4, - BTRFS_ROOT_DEFRAG_RUNNING = 5, - BTRFS_ROOT_FORCE_COW = 6, - BTRFS_ROOT_MULTI_LOG_TASKS = 7, - BTRFS_ROOT_DIRTY = 8, - BTRFS_ROOT_DELETING = 9, - BTRFS_ROOT_DEAD_RELOC_TREE = 10, - BTRFS_ROOT_DEAD_TREE = 11, - BTRFS_ROOT_HAS_LOG_TREE = 12, - BTRFS_ROOT_QGROUP_FLUSHING = 13, - BTRFS_ROOT_ORPHAN_CLEANUP = 14, - BTRFS_ROOT_UNFINISHED_DROP = 15, -}; - -struct btrfs_map_token { - struct extent_buffer *eb; - char *kaddr; - long unsigned int offset; +struct fscrypt_master_key_secret { + struct fscrypt_hkdf hkdf; + u32 size; + u8 raw[64]; }; -struct btrfs_item_batch { - const struct btrfs_key *keys; - const u32 *data_sizes; - u32 total_data_size; - int nr; +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 btrfs_pending_snapshot; +typedef enum { + FS_DECRYPT = 0, + FS_ENCRYPT = 1, +} fscrypt_direction_t; -struct btrfs_trans_handle { - u64 transid; - u64 bytes_reserved; - u64 chunk_bytes_reserved; - long unsigned int delayed_ref_updates; - struct btrfs_transaction *transaction; - struct btrfs_block_rsv *block_rsv; - struct btrfs_block_rsv *orig_rsv; - struct btrfs_pending_snapshot *pending_snapshot; - refcount_t use_count; - unsigned int type; - short int aborted; - bool adding_csums; - bool allocating_chunk; - bool removing_chunk; - bool reloc_reserved; - bool in_fsync; - struct btrfs_fs_info *fs_info; - struct list_head new_bgs; +union fscrypt_iv { + struct { + __le64 lblk_num; + u8 nonce[16]; + }; + u8 raw[32]; + __le64 dun[4]; }; -struct btrfs_pending_snapshot { - struct dentry *dentry; - struct inode *dir; - struct btrfs_root *root; - struct btrfs_root_item *root_item; - struct btrfs_root *snap; - struct btrfs_qgroup_inherit *inherit; - struct btrfs_path *path; - struct btrfs_block_rsv block_rsv; - int error; - dev_t anon_dev; - bool readonly; - struct list_head list; +struct fscrypt_str { + unsigned char *name; + u32 len; }; -enum btrfs_qgroup_rsv_type { - BTRFS_QGROUP_RSV_DATA = 0, - BTRFS_QGROUP_RSV_META_PERTRANS = 1, - BTRFS_QGROUP_RSV_META_PREALLOC = 2, - BTRFS_QGROUP_RSV_LAST = 3, +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; }; -enum btrfs_mod_log_op { - BTRFS_MOD_LOG_KEY_REPLACE = 0, - BTRFS_MOD_LOG_KEY_ADD = 1, - BTRFS_MOD_LOG_KEY_REMOVE = 2, - BTRFS_MOD_LOG_KEY_REMOVE_WHILE_FREEING = 3, - BTRFS_MOD_LOG_KEY_REMOVE_WHILE_MOVING = 4, - BTRFS_MOD_LOG_MOVE_KEYS = 5, - BTRFS_MOD_LOG_ROOT_REPLACE = 6, +struct fscrypt_nokey_name { + u32 dirhash[2]; + u8 bytes[149]; + u8 sha256[32]; }; -struct btrfs_csums { - u16 size; - const char name[10]; - const char driver[12]; +struct shash_desc { + struct crypto_shash *tfm; + void *__ctx[0]; }; -struct btrfs_ioctl_vol_args { - __s64 fd; - char name[4088]; +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: 0; + unsigned int digestsize; + unsigned int statesize; + struct crypto_alg base; }; -struct btrfs_inode_ref { - __le64 index; - __le16 name_len; -} __attribute__((packed)); - -struct btrfs_dir_item { - struct btrfs_disk_key location; - __le64 transid; - __le16 data_len; - __le16 name_len; - __u8 type; -} __attribute__((packed)); +typedef __u16 __le16; -struct btrfs_root_ref { - __le64 dirid; - __le64 sequence; - __le16 name_len; +struct fscrypt_symlink_data { + __le16 len; + char encrypted_path[1]; } __attribute__((packed)); -enum { - IO_TREE_FS_PINNED_EXTENTS = 0, - IO_TREE_FS_EXCLUDED_EXTENTS = 1, - IO_TREE_BTREE_INODE_IO = 2, - IO_TREE_INODE_IO = 3, - IO_TREE_INODE_IO_FAILURE = 4, - IO_TREE_RELOC_BLOCKS = 5, - IO_TREE_TRANS_DIRTY_PAGES = 6, - IO_TREE_ROOT_DIRTY_LOG_PAGES = 7, - IO_TREE_INODE_FILE_EXTENT = 8, - IO_TREE_LOG_CSUM_RANGE = 9, - IO_TREE_SELFTEST = 10, - IO_TREE_DEVICE_ALLOC_STATE = 11, +enum key_state { + KEY_IS_UNINSTANTIATED = 0, + KEY_IS_POSITIVE = 1, }; -struct io_failure_record; - -struct extent_state { - u64 start; - u64 end; - struct rb_node rb_node; - wait_queue_head_t wq; - refcount_t refs; - u32 state; - struct io_failure_record *failrec; +struct fscrypt_keyring { + spinlock_t lock; + struct hlist_head key_hashtable[128]; }; -struct io_failure_record { - struct page *page; - u64 start; - u64 len; - u64 logical; - long unsigned int bio_flags; - int this_mirror; - int failed_mirror; +struct fscrypt_provisioning_key_payload { + __u32 type; + __u32 __reserved; + __u8 raw[0]; }; -struct map_lookup; - -struct extent_map { - struct rb_node rb_node; - u64 start; - u64 len; - u64 mod_start; - u64 mod_len; - u64 orig_start; - u64 orig_block_len; - u64 ram_bytes; - u64 block_start; - u64 block_len; - u64 generation; - long unsigned int flags; - struct map_lookup *map_lookup; - refcount_t refs; - unsigned int compress_type; - struct list_head list; +struct fscrypt_add_key_arg { + struct fscrypt_key_specifier key_spec; + __u32 raw_size; + __u32 key_id; + __u32 __reserved[8]; + __u8 raw[0]; }; -struct btrfs_ordered_inode_tree { - spinlock_t lock; - struct rb_root tree; - struct rb_node *last; +struct fscrypt_remove_key_arg { + struct fscrypt_key_specifier key_spec; + __u32 removal_status_flags; + __u32 __reserved[5]; }; -struct btrfs_delayed_node; - -struct btrfs_inode { - struct btrfs_root *root; - struct btrfs_key location; - spinlock_t lock; - struct extent_map_tree extent_tree; - struct extent_io_tree io_tree; - struct extent_io_tree io_failure_tree; - struct extent_io_tree file_extent_tree; - struct mutex log_mutex; - struct btrfs_ordered_inode_tree ordered_tree; - struct list_head delalloc_inodes; - struct rb_node rb_node; - long unsigned int runtime_flags; - atomic_t sync_writers; - u64 generation; - u64 last_trans; - u64 logged_trans; - int last_sub_trans; - int last_log_commit; - u64 delalloc_bytes; - union { - u64 new_delalloc_bytes; - u64 last_dir_index_offset; - }; - u64 defrag_bytes; - u64 disk_i_size; - u64 index_cnt; - u64 dir_index; - u64 last_unlink_trans; - u64 last_reflink_trans; - u64 csum_bytes; - u32 flags; - u32 ro_flags; - unsigned int outstanding_extents; - struct btrfs_block_rsv block_rsv; - unsigned int prop_compress; - unsigned int defrag_compress; - struct btrfs_delayed_node *delayed_node; - struct timespec64 i_otime; - struct list_head delayed_iput; - struct rw_semaphore i_mmap_lock; - struct inode vfs_inode; +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]; }; -enum { - EXTENT_FLAG_PINNED = 0, - EXTENT_FLAG_COMPRESSED = 1, - EXTENT_FLAG_PREALLOC = 2, - EXTENT_FLAG_LOGGING = 3, - EXTENT_FLAG_FILLING = 4, - EXTENT_FLAG_FS_MAPPING = 5, - EXTENT_FLAG_MERGED = 6, +struct skcipher_alg { + int (*setkey)(struct crypto_skcipher *, const u8 *, unsigned int); + int (*encrypt)(struct skcipher_request *); + int (*decrypt)(struct skcipher_request *); + int (*init)(struct crypto_skcipher *); + void (*exit)(struct crypto_skcipher *); + unsigned int min_keysize; + unsigned int max_keysize; + unsigned int ivsize; + unsigned int chunksize; + unsigned int walksize; + struct crypto_alg base; }; -struct btrfs_io_stripe { - struct btrfs_device *dev; - u64 physical; - u64 length; +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 map_lookup { - u64 type; - int io_align; - int io_width; - u64 stripe_len; - int num_stripes; - int sub_stripes; - int verified_stripes; - struct btrfs_io_stripe stripes[0]; -}; - -struct __btrfs_workqueue { - struct workqueue_struct *normal_wq; - struct btrfs_fs_info *fs_info; - struct list_head ordered_list; - spinlock_t list_lock; - atomic_t pending; - int limit_active; - int current_active; - int thresh; - unsigned int count; - spinlock_t thres_lock; +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 btrfs_space_info { - spinlock_t lock; - u64 total_bytes; - u64 bytes_used; - u64 bytes_pinned; - u64 bytes_reserved; - u64 bytes_may_use; - u64 bytes_readonly; - u64 bytes_zone_unusable; - u64 max_extent_size; - int clamp; - unsigned int full: 1; - unsigned int chunk_alloc: 1; - unsigned int flush: 1; - unsigned int force_alloc; - u64 disk_used; - u64 disk_total; - u64 flags; - struct list_head list; - struct list_head ro_bgs; - struct list_head priority_tickets; - struct list_head tickets; - u64 reclaim_size; - u64 tickets_id; - struct rw_semaphore groups_sem; - struct list_head block_groups[9]; - struct kobject kobj; - struct kobject *block_group_kobjs[9]; +union fscrypt_context { + u8 version; + struct fscrypt_context_v1 v1; + struct fscrypt_context_v2 v2; }; -enum btrfs_discard_state { - BTRFS_DISCARD_EXTENTS = 0, - BTRFS_DISCARD_BITMAPS = 1, - BTRFS_DISCARD_RESET_CURSOR = 2, -}; +struct crypto_template; -struct btrfs_io_ctl { - void *cur; - void *orig; - struct page *page; - struct page **pages; - struct btrfs_fs_info *fs_info; - struct inode *inode; - long unsigned int size; - int index; - int num_pages; - int entries; - int bitmaps; -}; +struct crypto_spawn; -struct btrfs_full_stripe_locks_tree { - struct rb_root root; - struct mutex lock; +struct crypto_instance { + struct crypto_alg alg; + struct crypto_template *tmpl; + union { + struct hlist_node list; + struct crypto_spawn *spawns; + }; + void *__ctx[0]; }; -struct btrfs_caching_control; - -struct btrfs_free_space_ctl; - -struct btrfs_block_group { - struct btrfs_fs_info *fs_info; - struct inode *inode; - spinlock_t lock; - u64 start; - u64 length; - u64 pinned; - u64 reserved; - u64 used; - u64 delalloc_bytes; - u64 bytes_super; - u64 flags; - u64 cache_generation; - u64 global_root_id; - u32 bitmap_high_thresh; - u32 bitmap_low_thresh; - struct rw_semaphore data_rwsem; - long unsigned int full_stripe_len; - unsigned int ro; - unsigned int iref: 1; - unsigned int has_caching_ctl: 1; - unsigned int removed: 1; - unsigned int to_copy: 1; - unsigned int relocating_repair: 1; - unsigned int chunk_item_inserted: 1; - unsigned int zone_is_active: 1; - int disk_cache_state; - int cached; - struct btrfs_caching_control *caching_ctl; - u64 last_byte_to_unpin; - struct btrfs_space_info *space_info; - struct btrfs_free_space_ctl *free_space_ctl; - struct rb_node cache_node; +struct crypto_spawn { struct list_head list; - refcount_t refs; - struct list_head cluster_list; - struct list_head bg_list; - struct list_head ro_list; - atomic_t frozen; - struct list_head discard_list; - int discard_index; - u64 discard_eligible_time; - u64 discard_cursor; - enum btrfs_discard_state discard_state; - struct list_head dirty_list; - struct list_head io_list; - struct btrfs_io_ctl io_ctl; - atomic_t reservations; - atomic_t nocow_writers; - struct mutex free_space_lock; - int needs_free_space; - bool seq_zone; - int swap_extents; - struct btrfs_full_stripe_locks_tree full_stripe_locks_root; - u64 alloc_offset; - u64 zone_unusable; - u64 zone_capacity; - u64 meta_write_pointer; - struct map_lookup *physical_map; - struct list_head active_bg_list; - struct work_struct zone_finish_work; - struct extent_buffer *last_eb; -}; - -enum { - BTRFS_FS_CLOSING_START = 0, - BTRFS_FS_CLOSING_DONE = 1, - BTRFS_FS_LOG_RECOVERING = 2, - BTRFS_FS_OPEN = 3, - BTRFS_FS_QUOTA_ENABLED = 4, - BTRFS_FS_UPDATE_UUID_TREE_GEN = 5, - BTRFS_FS_CREATING_FREE_SPACE_TREE = 6, - BTRFS_FS_BTREE_ERR = 7, - BTRFS_FS_LOG1_ERR = 8, - BTRFS_FS_LOG2_ERR = 9, - BTRFS_FS_QUOTA_OVERRIDE = 10, - BTRFS_FS_FROZEN = 11, - BTRFS_FS_BALANCE_RUNNING = 12, - BTRFS_FS_RELOC_RUNNING = 13, - BTRFS_FS_CLEANER_RUNNING = 14, - BTRFS_FS_CSUM_IMPL_FAST = 15, - BTRFS_FS_DISCARD_RUNNING = 16, - BTRFS_FS_CLEANUP_SPACE_CACHE_V1 = 17, - BTRFS_FS_FREE_SPACE_TREE_UNTRUSTED = 18, - BTRFS_FS_TREE_MOD_LOG_USERS = 19, - BTRFS_FS_COMMIT_TRANS = 20, - BTRFS_FS_UNFINISHED_DROPS = 21, -}; - -enum { - BTRFS_MOUNT_NODATASUM = 1, - BTRFS_MOUNT_NODATACOW = 2, - BTRFS_MOUNT_NOBARRIER = 4, - BTRFS_MOUNT_SSD = 8, - BTRFS_MOUNT_DEGRADED = 16, - BTRFS_MOUNT_COMPRESS = 32, - BTRFS_MOUNT_NOTREELOG = 64, - BTRFS_MOUNT_FLUSHONCOMMIT = 128, - BTRFS_MOUNT_SSD_SPREAD = 256, - BTRFS_MOUNT_NOSSD = 512, - BTRFS_MOUNT_DISCARD_SYNC = 1024, - BTRFS_MOUNT_FORCE_COMPRESS = 2048, - BTRFS_MOUNT_SPACE_CACHE = 4096, - BTRFS_MOUNT_CLEAR_CACHE = 8192, - BTRFS_MOUNT_USER_SUBVOL_RM_ALLOWED = 16384, - BTRFS_MOUNT_ENOSPC_DEBUG = 32768, - BTRFS_MOUNT_AUTO_DEFRAG = 65536, - BTRFS_MOUNT_USEBACKUPROOT = 131072, - BTRFS_MOUNT_SKIP_BALANCE = 262144, - BTRFS_MOUNT_CHECK_INTEGRITY = 524288, - BTRFS_MOUNT_CHECK_INTEGRITY_DATA = 1048576, - BTRFS_MOUNT_PANIC_ON_FATAL_ERROR = 2097152, - BTRFS_MOUNT_RESCAN_UUID_TREE = 4194304, - BTRFS_MOUNT_FRAGMENT_DATA = 8388608, - BTRFS_MOUNT_FRAGMENT_METADATA = 16777216, - BTRFS_MOUNT_FREE_SPACE_TREE = 33554432, - BTRFS_MOUNT_NOLOGREPLAY = 67108864, - BTRFS_MOUNT_REF_VERIFY = 134217728, - BTRFS_MOUNT_DISCARD_ASYNC = 268435456, - BTRFS_MOUNT_IGNOREBADROOTS = 536870912, - BTRFS_MOUNT_IGNOREDATACSUMS = 1073741824, -}; - -enum btrfs_reserve_flush_enum { - BTRFS_RESERVE_NO_FLUSH = 0, - BTRFS_RESERVE_FLUSH_LIMIT = 1, - BTRFS_RESERVE_FLUSH_EVICT = 2, - BTRFS_RESERVE_FLUSH_DATA = 3, - BTRFS_RESERVE_FLUSH_FREE_SPACE_INODE = 4, - BTRFS_RESERVE_FLUSH_ALL = 5, - BTRFS_RESERVE_FLUSH_ALL_STEAL = 6, -}; - -enum btrfs_flush_state { - FLUSH_DELAYED_ITEMS_NR = 1, - FLUSH_DELAYED_ITEMS = 2, - FLUSH_DELAYED_REFS_NR = 3, - FLUSH_DELAYED_REFS = 4, - FLUSH_DELALLOC = 5, - FLUSH_DELALLOC_WAIT = 6, - FLUSH_DELALLOC_FULL = 7, - ALLOC_CHUNK = 8, - ALLOC_CHUNK_FORCE = 9, - RUN_DELAYED_IPUTS = 10, - COMMIT_TRANS = 11, -}; - -struct btrfs_delayed_node { - u64 inode_id; - u64 bytes_reserved; - struct btrfs_root *root; - struct list_head n_list; - struct list_head p_list; - struct rb_root_cached ins_root; - struct rb_root_cached del_root; - struct mutex mutex; - struct btrfs_inode_item inode_item; - refcount_t refs; - u64 index_cnt; - long unsigned int flags; - int count; + 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 { - BTRFS_ORDERED_REGULAR = 0, - BTRFS_ORDERED_NOCOW = 1, - BTRFS_ORDERED_PREALLOC = 2, - BTRFS_ORDERED_COMPRESSED = 3, - BTRFS_ORDERED_DIRECT = 4, - BTRFS_ORDERED_IO_DONE = 5, - BTRFS_ORDERED_COMPLETE = 6, - BTRFS_ORDERED_IOERR = 7, - BTRFS_ORDERED_TRUNCATED = 8, - BTRFS_ORDERED_LOGGED = 9, - BTRFS_ORDERED_LOGGED_CSUM = 10, - BTRFS_ORDERED_PENDING = 11, - BTRFS_ORDERED_ENCODED = 12, -}; - -struct btrfs_ordered_extent { - u64 file_offset; - u64 num_bytes; - u64 ram_bytes; - u64 disk_bytenr; - u64 disk_num_bytes; - u64 offset; - u64 bytes_left; - u64 outstanding_isize; - u64 truncated_len; - long unsigned int flags; - int compress_type; - int qgroup_rsv; - refcount_t refs; - struct inode *inode; +struct rtattr; + +struct crypto_template { struct list_head list; - struct list_head log_list; - wait_queue_head_t wait; - struct rb_node rb_node; - struct list_head root_extent_list; - struct btrfs_work work; - struct completion completion; - struct btrfs_work flush_work; - struct list_head work_list; - u64 physical; - struct block_device *bdev; + struct hlist_head instances; + struct module *module; + int (*create)(struct crypto_template *, struct rtattr **); + char name[128]; }; -struct btrfs_delayed_ref_node { - struct rb_node ref_node; - struct list_head add_list; - u64 bytenr; - u64 num_bytes; - u64 seq; - refcount_t refs; - int ref_mod; - unsigned int action: 8; - unsigned int type: 8; - unsigned int is_head: 1; - unsigned int in_tree: 1; +struct user_key_payload { + struct callback_head rcu; + short unsigned int datalen; + long: 0; + char data[0]; }; -struct btrfs_delayed_extent_op { - struct btrfs_disk_key key; - u8 level; - bool update_key; - bool update_flags; - bool is_data; - u64 flags_to_set; +struct fscrypt_key { + __u32 mode; + __u8 raw[64]; + __u32 size; }; -struct btrfs_delayed_ref_head { - u64 bytenr; - u64 num_bytes; - refcount_t refs; - struct mutex mutex; - spinlock_t lock; - struct rb_root_cached ref_tree; - struct list_head ref_add_list; - struct rb_node href_node; - struct btrfs_delayed_extent_op *extent_op; - int total_ref_mod; - int ref_mod; - unsigned int must_insert_reserved: 1; - unsigned int is_data: 1; - unsigned int is_system: 1; - unsigned int processing: 1; -}; - -struct btrfs_delayed_tree_ref { - struct btrfs_delayed_ref_node node; - u64 root; - u64 parent; - int level; +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 btrfs_delayed_data_ref { - struct btrfs_delayed_ref_node node; - u64 root; - u64 parent; - u64 objectid; - u64 offset; +struct fscrypt_get_policy_ex_arg { + __u64 policy_size; + union { + __u8 version; + struct fscrypt_policy_v1 v1; + struct fscrypt_policy_v2 v2; + } policy; }; -struct rcu_string { - struct callback_head rcu; - char str[0]; +struct fscrypt_dummy_policy { + const union fscrypt_policy *policy; }; -struct btrfs_zoned_device_info { - u64 zone_size; - u8 zone_size_shift; - u32 nr_zones; - unsigned int max_active_zones; - atomic_t active_zones_left; - long unsigned int *seq_zones; - long unsigned int *empty_zones; - long unsigned int *active_zones; - struct blk_zone *zone_cache; - struct blk_zone sb_zones[6]; -}; - -struct btrfs_device_info { - struct btrfs_device *dev; - u64 dev_offset; - u64 max_avail; - u64 total_avail; -}; - -struct btrfs_raid_attr { - u8 sub_stripes; - u8 dev_stripes; - u8 devs_max; - u8 devs_min; - u8 tolerated_failures; - u8 devs_increment; - u8 ncopies; - u8 nparity; - u8 mindev_error; - const char raid_name[8]; - u64 bg_flag; -}; - -enum btrfs_compression_type { - BTRFS_COMPRESS_NONE = 0, - BTRFS_COMPRESS_ZLIB = 1, - BTRFS_COMPRESS_LZO = 2, - BTRFS_COMPRESS_ZSTD = 3, - BTRFS_NR_COMPRESS_TYPES = 4, -}; - -enum btrfs_trim_state { - BTRFS_TRIM_STATE_UNTRIMMED = 0, - BTRFS_TRIM_STATE_TRIMMED = 1, - BTRFS_TRIM_STATE_TRIMMING = 2, -}; - -struct btrfs_free_space { - struct rb_node offset_index; - struct rb_node bytes_index; - u64 offset; - u64 bytes; - u64 max_extent_size; - long unsigned int *bitmap; - struct list_head list; - enum btrfs_trim_state trim_state; - s32 bitmap_extents; +struct fscrypt_blk_crypto_key { + struct blk_crypto_key base; + int num_devs; + struct request_queue *devs[0]; }; -struct btrfs_free_space_op; +struct fsverity_hash_alg; -struct btrfs_free_space_ctl { - spinlock_t tree_lock; - struct rb_root free_space_offset; - struct rb_root_cached free_space_bytes; - u64 free_space; - int extents_thresh; - int free_extents; - int total_bitmaps; - int unit; - u64 start; - s32 discardable_extents[2]; - s64 discardable_bytes[2]; - const struct btrfs_free_space_op *op; - struct btrfs_block_group *block_group; - struct mutex cache_writeout_mutex; - struct list_head trimming_ranges; +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 btrfs_free_space_op { - bool (*use_bitmap)(struct btrfs_free_space_ctl *, struct btrfs_free_space *); +struct fsverity_info { + struct merkle_tree_params tree_params; + u8 root_hash[64]; + u8 file_digest[64]; + const struct inode *inode; }; -struct extent_inode_elem; - -struct prelim_ref { - struct rb_node rbnode; - u64 root_id; - struct btrfs_key key_for_search; - int level; - int count; - struct extent_inode_elem *inode_list; - u64 parent; - u64 wanted_disk_byte; +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 btrfs_caching_control { - struct list_head list; - struct mutex mutex; - wait_queue_head_t wait; - struct btrfs_work work; - struct btrfs_block_group *block_group; - u64 progress; - refcount_t count; +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 btrfs_qgroup_extent_record { - struct rb_node node; - u64 bytenr; - u64 num_bytes; - u32 data_rsv; - u64 data_rsv_refroot; - struct ulist *old_roots; -}; - -struct btrfs_qgroup_rsv { - u64 values[3]; -}; - -struct btrfs_qgroup { - u64 qgroupid; - u64 rfer; - u64 rfer_cmpr; - u64 excl; - u64 excl_cmpr; - u64 lim_flags; - u64 max_rfer; - u64 max_excl; - u64 rsv_rfer; - u64 rsv_excl; - struct btrfs_qgroup_rsv rsv; - struct list_head groups; - struct list_head members; - struct list_head dirty; - struct rb_node node; - u64 old_refcnt; - u64 new_refcnt; - struct kobject kobj; -}; +struct crypto_ahash; -struct trace_event_raw_btrfs_transaction_commit { - struct trace_entry ent; - u8 fsid[16]; - u64 generation; - u64 root_objectid; - char __data[0]; +struct fsverity_hash_alg { + struct crypto_ahash *tfm; + const char *name; + unsigned int digest_size; + unsigned int block_size; + mempool_t req_pool; }; -struct trace_event_raw_btrfs__inode { - struct trace_entry ent; - u8 fsid[16]; - u64 ino; - u64 blocks; - u64 disk_i_size; - u64 generation; - u64 last_trans; - u64 logged_trans; - u64 root_objectid; - char __data[0]; -}; +struct ahash_request; -struct trace_event_raw_btrfs_get_extent { - struct trace_entry ent; - u8 fsid[16]; - u64 root_objectid; - u64 ino; - u64 start; - u64 len; - u64 orig_start; - u64 block_start; - u64 block_len; - long unsigned int flags; - int refs; - unsigned int compress_type; - char __data[0]; +struct crypto_ahash { + int (*init)(struct ahash_request *); + int (*update)(struct ahash_request *); + int (*final)(struct ahash_request *); + int (*finup)(struct ahash_request *); + int (*digest)(struct ahash_request *); + int (*export)(struct ahash_request *, void *); + int (*import)(struct ahash_request *, const void *); + int (*setkey)(struct crypto_ahash *, const u8 *, unsigned int); + unsigned int reqsize; + struct crypto_tfm base; }; -struct trace_event_raw_btrfs_handle_em_exist { - struct trace_entry ent; - u8 fsid[16]; - u64 e_start; - u64 e_len; - u64 map_start; - u64 map_len; - u64 start; - u64 len; - char __data[0]; +struct ahash_request { + struct crypto_async_request base; + unsigned int nbytes; + struct scatterlist *src; + u8 *result; + void *priv; + void *__ctx[0]; }; -struct trace_event_raw_btrfs__file_extent_item_regular { - struct trace_entry ent; - u8 fsid[16]; - u64 root_obj; - u64 ino; - loff_t isize; - u64 disk_isize; - u64 num_bytes; - u64 ram_bytes; - u64 disk_bytenr; - u64 disk_num_bytes; - u64 extent_offset; - u8 extent_type; - u8 compression; - u64 extent_start; - u64 extent_end; - char __data[0]; +struct hash_alg_common { + unsigned int digestsize; + unsigned int statesize; + struct crypto_alg base; }; -struct trace_event_raw_btrfs__file_extent_item_inline { - struct trace_entry ent; - u8 fsid[16]; - u64 root_obj; - u64 ino; - loff_t isize; - u64 disk_isize; - u8 extent_type; - u8 compression; - u64 extent_start; - u64 extent_end; - char __data[0]; +struct fsverity_digest { + __u16 digest_algorithm; + __u16 digest_size; + __u8 digest[0]; }; -struct trace_event_raw_btrfs__ordered_extent { - struct trace_entry ent; - u8 fsid[16]; - u64 ino; - u64 file_offset; - u64 start; - u64 len; - u64 disk_len; - u64 bytes_left; - long unsigned int flags; - int compress_type; - int refs; - u64 root_objectid; - u64 truncated_len; - char __data[0]; +struct fsverity_read_metadata_arg { + __u64 metadata_type; + __u64 offset; + __u64 length; + __u64 buf_ptr; + __u64 __reserved; }; -struct trace_event_raw_btrfs__writepage { - struct trace_entry ent; - u8 fsid[16]; - u64 ino; - long unsigned int index; - long int nr_to_write; - long int pages_skipped; - loff_t range_start; - loff_t range_end; - char for_kupdate; - char for_reclaim; - char range_cyclic; - long unsigned int writeback_index; - u64 root_objectid; - char __data[0]; +struct fsverity_formatted_digest { + char magic[8]; + __le16 digest_algorithm; + __le16 digest_size; + __u8 digest[0]; }; -struct trace_event_raw_btrfs_writepage_end_io_hook { - struct trace_entry ent; - u8 fsid[16]; - u64 ino; - u64 start; - u64 end; - int uptodate; - u64 root_objectid; - char __data[0]; +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 trace_event_raw_btrfs_sync_file { +struct trace_event_raw_locks_get_lock_context { struct trace_entry ent; - u8 fsid[16]; - u64 ino; - u64 parent; - int datasync; - u64 root_objectid; + long unsigned int i_ino; + dev_t s_dev; + unsigned char type; + struct file_lock_context *ctx; char __data[0]; }; -struct trace_event_raw_btrfs_sync_fs { +struct trace_event_raw_filelock_lock { struct trace_entry ent; - u8 fsid[16]; - int wait; + 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 trace_event_raw_btrfs_add_block_group { +struct trace_event_raw_filelock_lease { struct trace_entry ent; - u8 fsid[16]; - u64 offset; - u64 size; - u64 flags; - u64 bytes_used; - u64 bytes_super; - int create; + 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 trace_event_raw_btrfs_delayed_tree_ref { +struct trace_event_raw_generic_add_lease { struct trace_entry ent; - u8 fsid[16]; - u64 bytenr; - u64 num_bytes; - int action; - u64 parent; - u64 ref_root; - int level; - int type; - u64 seq; + 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 trace_event_raw_btrfs_delayed_data_ref { +struct trace_event_raw_leases_conflict { struct trace_entry ent; - u8 fsid[16]; - u64 bytenr; - u64 num_bytes; - int action; - u64 parent; - u64 ref_root; - u64 owner; - u64 offset; - int type; - u64 seq; + 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 trace_event_raw_btrfs_delayed_ref_head { - struct trace_entry ent; - u8 fsid[16]; - u64 bytenr; - u64 num_bytes; - int action; - int is_data; - char __data[0]; -}; +struct trace_event_data_offsets_locks_get_lock_context {}; -struct trace_event_raw_btrfs__chunk { - struct trace_entry ent; - u8 fsid[16]; - int num_stripes; - u64 type; - int sub_stripes; - u64 offset; - u64 size; - u64 root_objectid; - char __data[0]; -}; +struct trace_event_data_offsets_filelock_lock {}; -struct trace_event_raw_btrfs_cow_block { - struct trace_entry ent; - u8 fsid[16]; - u64 root_objectid; - u64 buf_start; - int refs; - u64 cow_start; - int buf_level; - int cow_level; - char __data[0]; -}; +struct trace_event_data_offsets_filelock_lease {}; -struct trace_event_raw_btrfs_space_reservation { - struct trace_entry ent; - u8 fsid[16]; - u32 __data_loc_type; - u64 val; - u64 bytes; - int reserve; - char __data[0]; -}; +struct trace_event_data_offsets_generic_add_lease {}; -struct trace_event_raw_btrfs_trigger_flush { - struct trace_entry ent; - u8 fsid[16]; - u64 flags; - u64 bytes; - int flush; - u32 __data_loc_reason; - char __data[0]; -}; +struct trace_event_data_offsets_leases_conflict {}; -struct trace_event_raw_btrfs_flush_space { - struct trace_entry ent; - u8 fsid[16]; - u64 flags; - u64 num_bytes; - int state; - int ret; - bool for_preempt; - char __data[0]; -}; +typedef void (*btf_trace_locks_get_lock_context)(void *, struct inode *, int, struct file_lock_context *); -struct trace_event_raw_btrfs__reserved_extent { - struct trace_entry ent; - u8 fsid[16]; - u64 start; - u64 len; - char __data[0]; -}; +typedef void (*btf_trace_posix_lock_inode)(void *, struct inode *, struct file_lock *, int); -struct trace_event_raw_find_free_extent { - struct trace_entry ent; - u8 fsid[16]; - u64 root_objectid; - u64 num_bytes; - u64 empty_size; - u64 data; - char __data[0]; -}; +typedef void (*btf_trace_fcntl_setlk)(void *, struct inode *, struct file_lock *, int); -struct trace_event_raw_btrfs__reserve_extent { - struct trace_entry ent; - u8 fsid[16]; - u64 bg_objectid; - u64 flags; - u64 start; - u64 len; - char __data[0]; -}; +typedef void (*btf_trace_locks_remove_posix)(void *, struct inode *, struct file_lock *, int); -struct trace_event_raw_btrfs_find_cluster { - struct trace_entry ent; - u8 fsid[16]; - u64 bg_objectid; - u64 flags; - u64 start; - u64 bytes; - u64 empty_size; - u64 min_bytes; - char __data[0]; -}; +typedef void (*btf_trace_flock_lock_inode)(void *, struct inode *, struct file_lock *, int); -struct trace_event_raw_btrfs_failed_cluster_setup { - struct trace_entry ent; - u8 fsid[16]; - u64 bg_objectid; - char __data[0]; -}; +typedef void (*btf_trace_break_lease_noblock)(void *, struct inode *, struct file_lock *); -struct trace_event_raw_btrfs_setup_cluster { - struct trace_entry ent; - u8 fsid[16]; - u64 bg_objectid; - u64 flags; - u64 start; - u64 max_size; - u64 size; - int bitmap; - char __data[0]; -}; +typedef void (*btf_trace_break_lease_block)(void *, struct inode *, struct file_lock *); -struct trace_event_raw_alloc_extent_state { - struct trace_entry ent; - const struct extent_state *state; - gfp_t mask; - const void *ip; - char __data[0]; -}; +typedef void (*btf_trace_break_lease_unblock)(void *, struct inode *, struct file_lock *); -struct trace_event_raw_free_extent_state { - struct trace_entry ent; - const struct extent_state *state; - const void *ip; - char __data[0]; -}; +typedef void (*btf_trace_generic_delete_lease)(void *, struct inode *, struct file_lock *); -struct trace_event_raw_btrfs__work { - struct trace_entry ent; - u8 fsid[16]; - const void *work; - const void *wq; - const void *func; - const void *ordered_func; - const void *ordered_free; - const void *normal_work; - char __data[0]; -}; +typedef void (*btf_trace_time_out_leases)(void *, struct inode *, struct file_lock *); -struct trace_event_raw_btrfs__work__done { - struct trace_entry ent; - u8 fsid[16]; - const void *wtag; - char __data[0]; -}; +typedef void (*btf_trace_generic_add_lease)(void *, struct inode *, struct file_lock *); -struct trace_event_raw_btrfs__workqueue { - struct trace_entry ent; - u8 fsid[16]; - const void *wq; - u32 __data_loc_name; - int high; - char __data[0]; -}; +typedef void (*btf_trace_leases_conflict)(void *, bool, struct file_lock *, struct file_lock *); -struct trace_event_raw_btrfs__workqueue_done { - struct trace_entry ent; - u8 fsid[16]; - const void *wq; - char __data[0]; +struct file_lock_list_struct { + spinlock_t lock; + struct hlist_head hlist; }; -struct trace_event_raw_btrfs__qgroup_rsv_data { - struct trace_entry ent; - u8 fsid[16]; - u64 rootid; - u64 ino; - u64 start; - u64 len; - u64 reserved; - int op; - char __data[0]; +struct locks_iterator { + int li_cpu; + loff_t li_pos; }; -struct trace_event_raw_btrfs_qgroup_extent { - struct trace_entry ent; - u8 fsid[16]; - u64 bytenr; - u64 num_bytes; - char __data[0]; +struct arch_elf_state { + int rc; }; -struct trace_event_raw_qgroup_num_dirty_extents { - struct trace_entry ent; - u8 fsid[16]; - u64 transid; - u64 num_dirty_extents; - char __data[0]; +struct memelfnote { + const char *name; + int type; + unsigned int datasz; + void *data; }; -struct trace_event_raw_btrfs_qgroup_account_extent { - struct trace_entry ent; - u8 fsid[16]; - u64 transid; - u64 bytenr; - u64 num_bytes; - u64 nr_old_roots; - u64 nr_new_roots; - char __data[0]; +struct elf_thread_core_info { + struct elf_thread_core_info *next; + struct task_struct *task; + struct elf_prstatus prstatus; + struct memelfnote notes[0]; }; -struct trace_event_raw_qgroup_update_counters { - struct trace_entry ent; - u8 fsid[16]; - u64 qgid; - u64 old_rfer; - u64 old_excl; - u64 cur_old_count; - u64 cur_new_count; - char __data[0]; +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 trace_event_raw_qgroup_update_reserve { - struct trace_entry ent; - u8 fsid[16]; - u64 qgid; - u64 cur_reserved; - s64 diff; - int type; - char __data[0]; -}; +typedef struct { + psw_compat_t psw; + u32 gprs[16]; + u32 acrs[16]; + u32 orig_gpr2; + long: 0; +} s390_compat_regs; -struct trace_event_raw_qgroup_meta_reserve { - struct trace_entry ent; - u8 fsid[16]; - u64 refroot; - s64 diff; - int type; - char __data[0]; +typedef s390_compat_regs compat_elf_gregset_t; + +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 trace_event_raw_qgroup_meta_convert { - struct trace_entry ent; - u8 fsid[16]; - u64 refroot; - s64 diff; - char __data[0]; +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 trace_event_raw_qgroup_meta_free_all_pertrans { - struct trace_entry ent; - u8 fsid[16]; - u64 refroot; - s64 diff; - int type; - char __data[0]; +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 trace_event_raw_btrfs__prelim_ref { - struct trace_entry ent; - u8 fsid[16]; - u64 root_id; - u64 objectid; - u8 type; - u64 offset; - int level; - int old_count; - u64 parent; - u64 bytenr; - int mod_count; - u64 tree_size; - char __data[0]; +struct compat_elf_siginfo { + compat_int_t si_signo; + compat_int_t si_code; + compat_int_t si_errno; }; -struct trace_event_raw_btrfs_inode_mod_outstanding_extents { - struct trace_entry ent; - u8 fsid[16]; - u64 root_objectid; - u64 ino; - int mod; - char __data[0]; +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 trace_event_raw_btrfs__block_group { - struct trace_entry ent; - u8 fsid[16]; - u64 bytenr; - u64 len; - u64 used; - u64 flags; - char __data[0]; +struct compat_elf_prpsinfo { + char pr_state; + char pr_sname; + char pr_zomb; + char pr_nice; + compat_ulong_t pr_flag; + __compat_uid_t pr_uid; + __compat_gid_t pr_gid; + compat_pid_t pr_pid; + compat_pid_t pr_ppid; + compat_pid_t pr_pgrp; + compat_pid_t pr_sid; + char pr_fname[16]; + char pr_psargs[80]; }; -struct trace_event_raw_btrfs_set_extent_bit { - struct trace_entry ent; - u8 fsid[16]; - unsigned int owner; - u64 ino; - u64 rootid; - u64 start; - u64 len; - unsigned int set_bits; - char __data[0]; +struct compat_elf_prstatus { + struct compat_elf_prstatus_common common; + compat_elf_gregset_t pr_reg; + compat_int_t pr_fpvalid; + long: 0; }; -struct trace_event_raw_btrfs_clear_extent_bit { - struct trace_entry ent; - u8 fsid[16]; - unsigned int owner; - u64 ino; - u64 rootid; - u64 start; - u64 len; - unsigned int clear_bits; - char __data[0]; +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 trace_event_raw_btrfs_convert_extent_bit { - struct trace_entry ent; - u8 fsid[16]; - unsigned int owner; - u64 ino; - u64 rootid; - u64 start; - u64 len; - unsigned int set_bits; - unsigned int clear_bits; - char __data[0]; +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 trace_event_raw_btrfs_dump_space_info { - struct trace_entry ent; - u8 fsid[16]; - u64 flags; - u64 total_bytes; - u64 bytes_used; - u64 bytes_pinned; - u64 bytes_reserved; - u64 bytes_may_use; - u64 bytes_readonly; - u64 reclaim_size; - int clamp; - u64 global_reserved; - u64 trans_reserved; - u64 delayed_refs_reserved; - u64 delayed_reserved; - u64 free_chunk_space; - u64 delalloc_bytes; - u64 ordered_bytes; - char __data[0]; +enum { + MBE_REFERENCED_B = 0, + MBE_REUSABLE_B = 1, }; -struct trace_event_raw_btrfs_reserve_ticket { - struct trace_entry ent; - u8 fsid[16]; - u64 flags; - u64 bytes; - u64 start_ns; - int flush; - int error; - char __data[0]; +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 trace_event_raw_btrfs_sleep_tree_lock { - struct trace_entry ent; - u8 fsid[16]; - u64 block; - u64 generation; - u64 start_ns; - u64 end_ns; - u64 diff_ns; - u64 owner; - int is_log_tree; - char __data[0]; +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 trace_event_raw_btrfs_locking_events { - struct trace_entry ent; - u8 fsid[16]; - u64 block; - u64 generation; - u64 owner; - int is_log_tree; - char __data[0]; +struct posix_acl_xattr_entry { + __le16 e_tag; + __le16 e_perm; + __le32 e_id; }; -struct trace_event_raw_btrfs__space_info_update { - struct trace_entry ent; - u8 fsid[16]; - u64 type; - u64 old; - s64 diff; - char __data[0]; +struct posix_acl_xattr_header { + __le32 a_version; }; -struct trace_event_data_offsets_btrfs_transaction_commit {}; - -struct trace_event_data_offsets_btrfs__inode {}; - -struct trace_event_data_offsets_btrfs_get_extent {}; - -struct trace_event_data_offsets_btrfs_handle_em_exist {}; - -struct trace_event_data_offsets_btrfs__file_extent_item_regular {}; - -struct trace_event_data_offsets_btrfs__file_extent_item_inline {}; - -struct trace_event_data_offsets_btrfs__ordered_extent {}; - -struct trace_event_data_offsets_btrfs__writepage {}; - -struct trace_event_data_offsets_btrfs_writepage_end_io_hook {}; - -struct trace_event_data_offsets_btrfs_sync_file {}; - -struct trace_event_data_offsets_btrfs_sync_fs {}; - -struct trace_event_data_offsets_btrfs_add_block_group {}; +struct rpc_timer { + struct list_head list; + long unsigned int expires; + struct delayed_work dwork; +}; -struct trace_event_data_offsets_btrfs_delayed_tree_ref {}; +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 trace_event_data_offsets_btrfs_delayed_data_ref {}; +struct nfs_seqid_counter { + ktime_t create_time; + int owner_id; + int flags; + u32 counter; + spinlock_t lock; + struct list_head list; + struct rpc_wait_queue wait; +}; -struct trace_event_data_offsets_btrfs_delayed_ref_head {}; +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; +}; -struct trace_event_data_offsets_btrfs__chunk {}; +typedef struct nfs4_stateid_struct nfs4_stateid; -struct trace_event_data_offsets_btrfs_cow_block {}; +struct nfs4_state; -struct trace_event_data_offsets_btrfs_space_reservation { - u32 type; +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 trace_event_data_offsets_btrfs_trigger_flush { - u32 reason; +struct xdr_netobj { + unsigned int len; + u8 *data; }; -struct trace_event_data_offsets_btrfs_flush_space {}; +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 trace_event_data_offsets_btrfs__reserved_extent {}; +struct rpc_rqst; -struct trace_event_data_offsets_find_free_extent {}; +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 trace_event_data_offsets_btrfs__reserve_extent {}; +struct rpc_xprt; -struct trace_event_data_offsets_btrfs_find_cluster {}; +struct rpc_task; -struct trace_event_data_offsets_btrfs_failed_cluster_setup {}; +struct rpc_cred; -struct trace_event_data_offsets_btrfs_setup_cluster {}; +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 trace_event_data_offsets_alloc_extent_state {}; +typedef void (*kxdreproc_t)(struct rpc_rqst *, struct xdr_stream *, const void *); -struct trace_event_data_offsets_free_extent_state {}; +typedef int (*kxdrdproc_t)(struct rpc_rqst *, struct xdr_stream *, void *); -struct trace_event_data_offsets_btrfs__work {}; +struct rpc_procinfo; -struct trace_event_data_offsets_btrfs__work__done {}; +struct rpc_message { + const struct rpc_procinfo *rpc_proc; + void *rpc_argp; + void *rpc_resp; + const struct cred *rpc_cred; +}; -struct trace_event_data_offsets_btrfs__workqueue { - u32 name; +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 trace_event_data_offsets_btrfs__workqueue_done {}; +struct rpc_wait { + struct list_head list; + struct list_head links; + struct list_head timer_list; +}; -struct trace_event_data_offsets_btrfs__qgroup_rsv_data {}; +struct rpc_call_ops; -struct trace_event_data_offsets_btrfs_qgroup_extent {}; +struct rpc_clnt; -struct trace_event_data_offsets_qgroup_num_dirty_extents {}; +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; +}; -struct trace_event_data_offsets_btrfs_qgroup_account_extent {}; +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 trace_event_data_offsets_qgroup_update_counters {}; +struct rpc_iostats; -struct trace_event_data_offsets_qgroup_update_reserve {}; +struct rpc_pipe_dir_head { + struct list_head pdh_entries; + struct dentry *pdh_dentry; +}; -struct trace_event_data_offsets_qgroup_meta_reserve {}; +struct rpc_rtt { + long unsigned int timeo; + long unsigned int srtt[5]; + long unsigned int sdrtt[5]; + int ntimeouts[5]; +}; -struct trace_event_data_offsets_qgroup_meta_convert {}; +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 trace_event_data_offsets_qgroup_meta_free_all_pertrans {}; +struct rpc_sysfs_client; -struct trace_event_data_offsets_btrfs__prelim_ref {}; +struct rpc_xprt_switch; -struct trace_event_data_offsets_btrfs_inode_mod_outstanding_extents {}; +struct rpc_xprt_iter_ops; -struct trace_event_data_offsets_btrfs__block_group {}; +struct rpc_xprt_iter { + struct rpc_xprt_switch *xpi_xpswitch; + struct rpc_xprt *xpi_cursor; + const struct rpc_xprt_iter_ops *xpi_ops; +}; -struct trace_event_data_offsets_btrfs_set_extent_bit {}; +struct rpc_auth; -struct trace_event_data_offsets_btrfs_clear_extent_bit {}; +struct rpc_stat; -struct trace_event_data_offsets_btrfs_convert_extent_bit {}; +struct rpc_program; -struct trace_event_data_offsets_btrfs_dump_space_info {}; +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; + }; + const struct cred *cl_cred; + unsigned int cl_max_connect; +}; -struct trace_event_data_offsets_btrfs_reserve_ticket {}; +struct svc_xprt; -struct trace_event_data_offsets_btrfs_sleep_tree_lock {}; +struct rpc_sysfs_xprt; -struct trace_event_data_offsets_btrfs_locking_events {}; +struct rpc_xprt_ops; -struct trace_event_data_offsets_btrfs__space_info_update {}; +struct svc_serv; -typedef void (*btf_trace_btrfs_transaction_commit)(void *, const struct btrfs_fs_info *); +struct xprt_class; -typedef void (*btf_trace_btrfs_inode_new)(void *, const struct inode *); +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; + 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; +}; -typedef void (*btf_trace_btrfs_inode_request)(void *, const struct inode *); +struct rpc_credops; -typedef void (*btf_trace_btrfs_inode_evict)(void *, const struct inode *); +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; +}; -typedef void (*btf_trace_btrfs_get_extent)(void *, const struct btrfs_root *, const struct btrfs_inode *, const struct extent_map *); +typedef u32 rpc_authflavor_t; -typedef void (*btf_trace_btrfs_handle_em_exist)(void *, const struct btrfs_fs_info *, const struct extent_map *, const struct extent_map *, u64, u64); +struct auth_cred { + const struct cred *cred; + const char *principal; +}; -typedef void (*btf_trace_btrfs_get_extent_show_fi_regular)(void *, const struct btrfs_inode *, const struct extent_buffer *, const struct btrfs_file_extent_item *, u64); +struct rpc_cred_cache; -typedef void (*btf_trace_btrfs_truncate_show_fi_regular)(void *, const struct btrfs_inode *, const struct extent_buffer *, const struct btrfs_file_extent_item *, u64); +struct rpc_authops; -typedef void (*btf_trace_btrfs_get_extent_show_fi_inline)(void *, const struct btrfs_inode *, const struct extent_buffer *, const struct btrfs_file_extent_item *, int, u64); +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; +}; -typedef void (*btf_trace_btrfs_truncate_show_fi_inline)(void *, const struct btrfs_inode *, const struct extent_buffer *, const struct btrfs_file_extent_item *, int, u64); +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 *); +}; -typedef void (*btf_trace_btrfs_ordered_extent_add)(void *, const struct btrfs_inode *, const struct btrfs_ordered_extent *); +struct rpc_auth_create_args; -typedef void (*btf_trace_btrfs_ordered_extent_remove)(void *, const struct btrfs_inode *, const struct btrfs_ordered_extent *); +struct rpcsec_gss_info; -typedef void (*btf_trace_btrfs_ordered_extent_start)(void *, const struct btrfs_inode *, const struct btrfs_ordered_extent *); +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 *); +}; -typedef void (*btf_trace_btrfs_ordered_extent_put)(void *, const struct btrfs_inode *, const struct btrfs_ordered_extent *); +struct rpc_auth_create_args { + rpc_authflavor_t pseudoflavor; + const char *target_name; +}; -typedef void (*btf_trace___extent_writepage)(void *, const struct page *, const struct inode *, const struct writeback_control *); +struct rpcsec_gss_oid { + unsigned int len; + u8 data[32]; +}; -typedef void (*btf_trace_btrfs_writepage_end_io_hook)(void *, const struct btrfs_inode *, u64, u64, int); +struct rpcsec_gss_info { + struct rpcsec_gss_oid oid; + u32 qop; + u32 service; +}; -typedef void (*btf_trace_btrfs_sync_file)(void *, const struct file *, int); +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); +}; -typedef void (*btf_trace_btrfs_sync_fs)(void *, const struct btrfs_fs_info *, int); +struct svc_program; -typedef void (*btf_trace_btrfs_add_block_group)(void *, const struct btrfs_fs_info *, const struct btrfs_block_group *, int); +struct svc_stat; -typedef void (*btf_trace_add_delayed_tree_ref)(void *, const struct btrfs_fs_info *, const struct btrfs_delayed_ref_node *, const struct btrfs_delayed_tree_ref *, int); +struct svc_pool; -typedef void (*btf_trace_run_delayed_tree_ref)(void *, const struct btrfs_fs_info *, const struct btrfs_delayed_ref_node *, const struct btrfs_delayed_tree_ref *, int); +struct svc_serv_ops; -typedef void (*btf_trace_add_delayed_data_ref)(void *, const struct btrfs_fs_info *, const struct btrfs_delayed_ref_node *, const struct btrfs_delayed_data_ref *, int); +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_run_delayed_data_ref)(void *, const struct btrfs_fs_info *, const struct btrfs_delayed_ref_node *, const struct btrfs_delayed_data_ref *, int); +struct xprt_create; -typedef void (*btf_trace_add_delayed_ref_head)(void *, const struct btrfs_fs_info *, const struct btrfs_delayed_ref_head *, 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_run_delayed_ref_head)(void *, const struct btrfs_fs_info *, const struct btrfs_delayed_ref_head *, int); +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_btrfs_chunk_alloc)(void *, const struct btrfs_fs_info *, const struct map_lookup *, u64, u64); +struct rpc_sysfs_xprt_switch; -typedef void (*btf_trace_btrfs_chunk_free)(void *, const struct btrfs_fs_info *, const struct map_lookup *, u64, u64); +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_btrfs_cow_block)(void *, const struct btrfs_root *, const struct extent_buffer *, const struct extent_buffer *); +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_btrfs_space_reservation)(void *, const struct btrfs_fs_info *, const char *, u64, u64, int); +struct rpc_version; -typedef void (*btf_trace_btrfs_trigger_flush)(void *, const struct btrfs_fs_info *, u64, u64, int, const char *); +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_btrfs_flush_space)(void *, const struct btrfs_fs_info *, u64, u64, int, int, bool); +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_btrfs_reserved_extent_alloc)(void *, const struct btrfs_fs_info *, u64, u64); +struct svc_version; -typedef void (*btf_trace_btrfs_reserved_extent_free)(void *, const struct btrfs_fs_info *, u64, u64); +struct svc_rqst; -typedef void (*btf_trace_find_free_extent)(void *, const struct btrfs_root *, u64, u64, u64); +struct svc_process_info; -typedef void (*btf_trace_btrfs_reserve_extent)(void *, const struct btrfs_block_group *, u64, u64); +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_btrfs_reserve_extent_cluster)(void *, const struct btrfs_block_group *, u64, u64); +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 *); +}; -typedef void (*btf_trace_btrfs_find_cluster)(void *, const struct btrfs_block_group *, u64, u64, u64, u64); +struct rpc_version { + u32 number; + unsigned int nrprocs; + const struct rpc_procinfo *procs; + unsigned int *counts; +}; -typedef void (*btf_trace_btrfs_failed_cluster_setup)(void *, const struct btrfs_block_group *); +struct nfs_fh { + short unsigned int size; + unsigned char data[128]; +}; -typedef void (*btf_trace_btrfs_setup_cluster)(void *, const struct btrfs_block_group *, const struct btrfs_free_cluster *, u64, int); +enum nfs3_stable_how { + NFS_UNSTABLE = 0, + NFS_DATA_SYNC = 1, + NFS_FILE_SYNC = 2, + NFS_INVALID_STABLE_HOW = 4294967295, +}; -typedef void (*btf_trace_alloc_extent_state)(void *, const struct extent_state *, gfp_t, long unsigned int); +struct nfs4_label { + uint32_t lfs; + uint32_t pi; + u32 len; + char *label; +}; -typedef void (*btf_trace_free_extent_state)(void *, const struct extent_state *, long unsigned int); +typedef struct { + char data[8]; +} nfs4_verifier; -typedef void (*btf_trace_btrfs_work_queued)(void *, const struct btrfs_work *); +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, +}; -typedef void (*btf_trace_btrfs_work_sched)(void *, const struct btrfs_work *); +struct gss_api_mech; -typedef void (*btf_trace_btrfs_all_work_done)(void *, const struct btrfs_fs_info *, const void *); +struct gss_ctx { + struct gss_api_mech *mech_type; + void *internal_ctx_id; + unsigned int slack; + unsigned int align; +}; -typedef void (*btf_trace_btrfs_ordered_sched)(void *, const struct btrfs_work *); +struct gss_api_ops; -typedef void (*btf_trace_btrfs_workqueue_alloc)(void *, const struct __btrfs_workqueue *, const char *, int); +struct pf_desc; -typedef void (*btf_trace_btrfs_workqueue_destroy)(void *, const struct __btrfs_workqueue *); +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 void (*btf_trace_btrfs_qgroup_reserve_data)(void *, const struct inode *, u64, u64, u64, int); +struct auth_domain; -typedef void (*btf_trace_btrfs_qgroup_release_data)(void *, const struct inode *, u64, u64, u64, int); +struct pf_desc { + u32 pseudoflavor; + u32 qop; + u32 service; + char *name; + char *auth_domain_name; + struct auth_domain *domain; + bool datatouch; +}; -typedef void (*btf_trace_btrfs_qgroup_account_extents)(void *, const struct btrfs_fs_info *, const struct btrfs_qgroup_extent_record *); +struct auth_ops; -typedef void (*btf_trace_btrfs_qgroup_trace_extent)(void *, const struct btrfs_fs_info *, const struct btrfs_qgroup_extent_record *); +struct auth_domain { + struct kref ref; + struct hlist_node hash; + char *name; + struct auth_ops *flavour; + struct callback_head callback_head; +}; -typedef void (*btf_trace_qgroup_num_dirty_extents)(void *, const struct btrfs_fs_info *, u64, u64); +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 *); +}; -typedef void (*btf_trace_btrfs_qgroup_account_extent)(void *, const struct btrfs_fs_info *, u64, u64, u64, u64, u64); +struct nfs4_string { + unsigned int len; + char *data; +}; -typedef void (*btf_trace_qgroup_update_counters)(void *, const struct btrfs_fs_info *, const struct btrfs_qgroup *, u64, u64); +struct nfs_fsid { + uint64_t major; + uint64_t minor; +}; -typedef void (*btf_trace_qgroup_update_reserve)(void *, struct btrfs_fs_info *, struct btrfs_qgroup *, s64, int); +struct nfs4_threshold { + __u32 bm; + __u32 l_type; + __u64 rd_sz; + __u64 wr_sz; + __u64 rd_io_sz; + __u64 wr_io_sz; +}; -typedef void (*btf_trace_qgroup_meta_reserve)(void *, struct btrfs_root *, s64, int); +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; +}; -typedef void (*btf_trace_qgroup_meta_convert)(void *, struct btrfs_root *, s64); +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; +}; -typedef void (*btf_trace_qgroup_meta_free_all_pertrans)(void *, struct btrfs_root *); +struct nfs_fsstat { + struct nfs_fattr *fattr; + __u64 tbytes; + __u64 fbytes; + __u64 abytes; + __u64 tfiles; + __u64 ffiles; + __u64 afiles; +}; -typedef void (*btf_trace_btrfs_prelim_ref_merge)(void *, const struct btrfs_fs_info *, const struct prelim_ref *, const struct prelim_ref *, u64); +struct nfs_pathconf { + struct nfs_fattr *fattr; + __u32 max_link; + __u32 max_namelen; +}; -typedef void (*btf_trace_btrfs_prelim_ref_insert)(void *, const struct btrfs_fs_info *, const struct prelim_ref *, const struct prelim_ref *, u64); +struct nfs4_change_info { + u32 atomic; + u64 before; + u64 after; +}; -typedef void (*btf_trace_btrfs_inode_mod_outstanding_extents)(void *, const struct btrfs_root *, u64, int); +struct nfs4_slot; -typedef void (*btf_trace_btrfs_remove_block_group)(void *, const struct btrfs_block_group *); +struct nfs4_sequence_args { + struct nfs4_slot *sa_slot; + u8 sa_cache_this: 1; + u8 sa_privileged: 1; +}; -typedef void (*btf_trace_btrfs_add_unused_block_group)(void *, const struct btrfs_block_group *); +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; +}; -typedef void (*btf_trace_btrfs_add_reclaim_block_group)(void *, const struct btrfs_block_group *); +struct nfs_open_context; -typedef void (*btf_trace_btrfs_reclaim_block_group)(void *, const struct btrfs_block_group *); +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; +}; -typedef void (*btf_trace_btrfs_skip_unused_block_group)(void *, const struct btrfs_block_group *); +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; +}; -typedef void (*btf_trace_btrfs_set_extent_bit)(void *, const struct extent_io_tree *, u64, u64, unsigned int); +struct nlm_host; -typedef void (*btf_trace_btrfs_clear_extent_bit)(void *, const struct extent_io_tree *, u64, u64, unsigned int); +struct nfs_iostats; -typedef void (*btf_trace_btrfs_convert_extent_bit)(void *, const struct extent_io_tree *, u64, u64, unsigned int, unsigned int); +struct nfs_auth_info { + unsigned int flavor_len; + rpc_authflavor_t flavors[12]; +}; -typedef void (*btf_trace_btrfs_done_preemptive_reclaim)(void *, struct btrfs_fs_info *, const struct btrfs_space_info *); +struct nfs_fscache_key; -typedef void (*btf_trace_btrfs_fail_all_tickets)(void *, struct btrfs_fs_info *, const struct btrfs_space_info *); +struct fscache_cookie; -typedef void (*btf_trace_btrfs_reserve_ticket)(void *, const struct btrfs_fs_info *, u64, u64, u64, int, int); +struct pnfs_layoutdriver_type; -typedef void (*btf_trace_btrfs_tree_read_lock)(void *, const struct extent_buffer *, u64); +struct nfs_client; -typedef void (*btf_trace_btrfs_tree_lock)(void *, const struct extent_buffer *, u64); +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; +}; -typedef void (*btf_trace_btrfs_tree_unlock)(void *, const struct extent_buffer *); +struct nfs_subversion; -typedef void (*btf_trace_btrfs_tree_read_unlock)(void *, const struct extent_buffer *); +struct idmap; -typedef void (*btf_trace_btrfs_tree_read_unlock_blocking)(void *, const struct extent_buffer *); +struct nfs4_slot_table; -typedef void (*btf_trace_btrfs_set_lock_blocking_read)(void *, const struct extent_buffer *); +struct nfs4_session; -typedef void (*btf_trace_btrfs_set_lock_blocking_write)(void *, const struct extent_buffer *); +struct nfs_rpc_ops; -typedef void (*btf_trace_btrfs_try_tree_read_lock)(void *, const struct extent_buffer *); +struct nfs4_minor_version_ops; -typedef void (*btf_trace_btrfs_try_tree_write_lock)(void *, const struct extent_buffer *); +struct nfs41_server_owner; -typedef void (*btf_trace_btrfs_tree_read_lock_atomic)(void *, const struct extent_buffer *); +struct nfs41_server_scope; -typedef void (*btf_trace_update_bytes_may_use)(void *, const struct btrfs_fs_info *, const struct btrfs_space_info *, u64, s64); +struct nfs41_impl_id; -typedef void (*btf_trace_update_bytes_pinned)(void *, const struct btrfs_fs_info *, const struct btrfs_space_info *, u64, s64); +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; +}; -enum { - Opt_acl___2 = 0, - Opt_noacl___2 = 1, - Opt_clear_cache = 2, - Opt_commit_interval = 3, - Opt_compress = 4, - Opt_compress_force = 5, - Opt_compress_force_type = 6, - Opt_compress_type = 7, - Opt_degraded = 8, - Opt_device = 9, - Opt_fatal_errors = 10, - Opt_flushoncommit = 11, - Opt_noflushoncommit = 12, - Opt_max_inline = 13, - Opt_barrier___2 = 14, - Opt_nobarrier___2 = 15, - Opt_datacow = 16, - Opt_nodatacow = 17, - Opt_datasum = 18, - Opt_nodatasum = 19, - Opt_defrag = 20, - Opt_nodefrag = 21, - Opt_discard___2 = 22, - Opt_nodiscard___2 = 23, - Opt_discard_mode = 24, - Opt_norecovery = 25, - Opt_ratio = 26, - Opt_rescan_uuid_tree = 27, - Opt_skip_balance = 28, - Opt_space_cache = 29, - Opt_no_space_cache = 30, - Opt_space_cache_version = 31, - Opt_ssd = 32, - Opt_nossd = 33, - Opt_ssd_spread = 34, - Opt_nossd_spread = 35, - Opt_subvol = 36, - Opt_subvol_empty = 37, - Opt_subvolid = 38, - Opt_thread_pool = 39, - Opt_treelog = 40, - Opt_notreelog = 41, - Opt_user_subvol_rm_allowed = 42, - Opt_rescue = 43, - Opt_usebackuproot = 44, - Opt_nologreplay = 45, - Opt_ignorebadroots = 46, - Opt_ignoredatacsums = 47, - Opt_rescue_all = 48, - Opt_recovery = 49, - Opt_inode_cache = 50, - Opt_noinode_cache = 51, - Opt_check_integrity = 52, - Opt_check_integrity_including_extent_data = 53, - Opt_check_integrity_print_mask = 54, - Opt_enospc_debug = 55, - Opt_noenospc_debug = 56, - Opt_err___5 = 57, -}; - -struct btrfs_stripe { - __le64 devid; - __le64 offset; - __u8 dev_uuid[16]; -}; - -struct btrfs_chunk { - __le64 length; - __le64 owner; - __le64 stripe_len; - __le64 type; - __le32 io_align; - __le32 io_width; - __le32 sector_size; - __le16 num_stripes; - __le16 sub_stripes; - struct btrfs_stripe stripe; -}; - -struct btrfs_extent_item { - __le64 refs; - __le64 generation; - __le64 flags; -}; - -struct btrfs_tree_block_info { - struct btrfs_disk_key key; - __u8 level; -} __attribute__((packed)); +struct pnfs_layout_segment; -struct btrfs_extent_data_ref { - __le64 root; - __le64 objectid; - __le64 offset; - __le32 count; -} __attribute__((packed)); +struct nfs_seqid { + struct nfs_seqid_counter *sequence; + struct list_head list; + struct rpc_task *task; +}; -struct btrfs_shared_data_ref { - __le32 count; +struct nfs_write_verifier { + char data[8]; }; -struct btrfs_extent_inline_ref { - __u8 type; - __le64 offset; -} __attribute__((packed)); +struct nfs_writeverf { + struct nfs_write_verifier verifier; + enum nfs3_stable_how committed; +}; -struct btrfs_dev_extent { - __le64 chunk_tree; - __le64 chunk_objectid; - __le64 chunk_offset; - __le64 length; - __u8 chunk_tree_uuid[16]; +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 btrfs_block_group_item { - __le64 used; - __le64 chunk_objectid; - __le64 flags; +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 root_name_map { - u64 id; - char name[16]; +struct nfs_commitargs { + struct nfs4_sequence_args seq_args; + struct nfs_fh *fh; + __u64 offset; + __u32 count; + const u32 *bitmask; }; -struct extent_changeset { - u64 bytes_changed; - struct ulist range_changed; +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; }; -enum btrfs_caching_type { - BTRFS_CACHE_NO = 0, - BTRFS_CACHE_STARTED = 1, - BTRFS_CACHE_FAST = 2, - BTRFS_CACHE_FINISHED = 3, - BTRFS_CACHE_ERROR = 4, +struct nfs_removeargs { + struct nfs4_sequence_args seq_args; + const struct nfs_fh *fh; + struct qstr name; }; -enum btrfs_inline_ref_type { - BTRFS_REF_TYPE_INVALID = 0, - BTRFS_REF_TYPE_BLOCK = 1, - BTRFS_REF_TYPE_DATA = 2, - BTRFS_REF_TYPE_ANY = 3, +struct nfs_removeres { + struct nfs4_sequence_res seq_res; + struct nfs_server *server; + struct nfs_fattr *dir_attr; + struct nfs4_change_info cinfo; }; -enum btrfs_ref_type { - BTRFS_REF_NOT_SET = 0, - BTRFS_REF_DATA = 1, - BTRFS_REF_METADATA = 2, - BTRFS_REF_LAST = 3, +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 btrfs_data_ref { - u64 owning_root; - u64 ino; - u64 offset; +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 btrfs_tree_ref { - int level; - u64 owning_root; +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 btrfs_ref { - enum btrfs_ref_type type; - int action; - bool skip_qgroup; - u64 bytenr; - u64 len; - u64 parent; - union { - struct btrfs_data_ref data_ref; - struct btrfs_tree_ref tree_ref; - }; +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 btrfs_io_context { - refcount_t refs; - atomic_t stripes_pending; - struct btrfs_fs_info *fs_info; - u64 map_type; - bio_end_io_t *end_io; - struct bio *orig_bio; - void *private; - atomic_t error; - int max_errors; - int num_stripes; - int mirror_num; - int num_tgtdevs; - int *tgtdev_map; - u64 *raid_map; - struct btrfs_io_stripe stripes[0]; +struct nfs_readdir_res { + __be32 *verf; }; -enum btrfs_map_op { - BTRFS_MAP_READ = 0, - BTRFS_MAP_WRITE = 1, - BTRFS_MAP_DISCARD = 2, - BTRFS_MAP_GET_READ_MIRRORS = 3, +struct nfs4_pathname { + unsigned int ncomponents; + struct nfs4_string components[512]; }; -enum btrfs_chunk_alloc_enum { - CHUNK_ALLOC_NO_FORCE = 0, - CHUNK_ALLOC_LIMITED = 1, - CHUNK_ALLOC_FORCE = 2, - CHUNK_ALLOC_FORCE_FOR_EXTENT = 3, +struct nfs4_fs_location { + unsigned int nservers; + struct nfs4_string servers[10]; + struct nfs4_pathname rootpath; }; -enum btrfs_loop_type { - LOOP_CACHING_NOWAIT = 0, - LOOP_CACHING_WAIT = 1, - LOOP_ALLOC_CHUNK = 2, - LOOP_NO_EMPTY_SIZE = 3, +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]; }; -enum btrfs_extent_allocation_policy { - BTRFS_EXTENT_ALLOC_CLUSTERED = 0, - BTRFS_EXTENT_ALLOC_ZONED = 1, +struct nfstime4 { + u64 seconds; + u32 nseconds; }; -struct find_free_extent_ctl { - u64 ram_bytes; - u64 num_bytes; - u64 min_alloc_size; - u64 empty_size; - u64 flags; - int delalloc; - u64 search_start; - u64 empty_cluster; - struct btrfs_free_cluster *last_ptr; - bool use_cluster; - bool have_caching_bg; - bool orig_have_caching_bg; - bool for_treelog; - bool for_data_reloc; - int index; - int loop; - bool retry_clustered; - bool retry_unclustered; - int cached; - u64 max_extent_size; - u64 total_free_space; - u64 found_offset; - u64 hint_byte; - enum btrfs_extent_allocation_policy policy; -}; - -struct walk_control { - u64 refs[8]; - u64 flags[8]; - struct btrfs_key update_progress; - struct btrfs_key drop_progress; - short: 16; - int drop_level; - int stage; - int level; - int shared_level; - int update_ref; - int keep_locks; - int reada_slot; - int reada_count; - int restarted; -} __attribute__((packed)); +struct pnfs_commit_ops; -struct btrfs_csum_item { - __u8 csum; +struct pnfs_ds_commit_info { + struct list_head commits; + unsigned int nwritten; + unsigned int ncommitting; + const struct pnfs_commit_ops *ops; }; -struct btrfs_ordered_sum { - u64 bytenr; - int len; - struct list_head list; - u8 sums[0]; +struct nfs41_server_owner { + uint64_t minor_id; + uint32_t major_id_sz; + char major_id[1024]; }; -struct btrfs_bio { - unsigned int mirror_num; - u64 file_offset; - struct btrfs_device *device; - u8 *csum; - u8 csum_inline[64]; - struct bvec_iter iter; - struct bio bio; +struct nfs41_server_scope { + uint32_t server_scope_sz; + char server_scope[1024]; }; -struct btrfs_inode_extref { - __le64 parent_objectid; - __le64 index; - __le16 name_len; - __u8 name[0]; -} __attribute__((packed)); - -struct btrfs_truncate_control { - struct btrfs_inode *inode; - u64 new_size; - u64 extents_found; - u64 last_size; - u64 sub_bytes; - u64 ino; - u32 min_type; - bool skip_ref_updates; - bool clear_extent_range; +struct nfs41_impl_id { + char domain[1025]; + char name[1025]; + struct nfstime4 date; }; -enum btrfs_delayed_ref_flags { - BTRFS_DELAYED_REFS_FLUSHING = 0, +struct nfs_page_array { + struct page **pagevec; + unsigned int npages; + struct page *page_array[8]; }; -typedef struct { - __u8 b[16]; -} guid_t; - -typedef blk_status_t extent_submit_bio_start_t(struct inode *, struct bio *, u64); +struct nfs_page; -enum { - BTRFS_BLOCK_RSV_GLOBAL = 0, - BTRFS_BLOCK_RSV_DELALLOC = 1, - BTRFS_BLOCK_RSV_TRANS = 2, - BTRFS_BLOCK_RSV_CHUNK = 3, - BTRFS_BLOCK_RSV_DELOPS = 4, - BTRFS_BLOCK_RSV_DELREFS = 5, - BTRFS_BLOCK_RSV_EMPTY = 6, - BTRFS_BLOCK_RSV_TEMP = 7, -}; +struct nfs_rw_ops; -struct btrfs_subpage_info { - unsigned int bitmap_nr_bits; - unsigned int total_nr_bits; - unsigned int uptodate_offset; - unsigned int error_offset; - unsigned int dirty_offset; - unsigned int writeback_offset; - unsigned int ordered_offset; - unsigned int checked_offset; -}; +struct nfs_io_completion; -enum btrfs_wq_endio_type { - BTRFS_WQ_ENDIO_DATA = 0, - BTRFS_WQ_ENDIO_METADATA = 1, - BTRFS_WQ_ENDIO_FREE_SPACE = 2, - BTRFS_WQ_ENDIO_RAID56 = 3, -}; +struct nfs_direct_req; -enum { - BTRFS_INODE_FLUSH_ON_CLOSE = 0, - BTRFS_INODE_DUMMY = 1, - BTRFS_INODE_IN_DEFRAG = 2, - BTRFS_INODE_HAS_ASYNC_EXTENT = 3, - BTRFS_INODE_NEEDS_FULL_SYNC = 4, - BTRFS_INODE_COPY_EVERYTHING = 5, - BTRFS_INODE_IN_DELALLOC_LIST = 6, - BTRFS_INODE_HAS_PROPS = 7, - BTRFS_INODE_SNAPSHOT_FLUSH = 8, - BTRFS_INODE_NO_XATTRS = 9, - BTRFS_INODE_NO_DELALLOC_FLUSH = 10, - BTRFS_INODE_VERITY_IN_PROGRESS = 11, -}; +struct nfs_pgio_completion_ops; -enum btrfs_disk_cache_state { - BTRFS_DC_WRITTEN = 0, - BTRFS_DC_ERROR = 1, - BTRFS_DC_CLEAR = 2, - BTRFS_DC_SETUP = 3, +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 btrfs_end_io_wq { - struct bio *bio; - bio_end_io_t *end_io; - void *private; - struct btrfs_fs_info *info; - blk_status_t status; - enum btrfs_wq_endio_type metadata; - struct btrfs_work work; +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 async_submit_bio { - struct inode *inode; - struct bio *bio; - extent_submit_bio_start_t *submit_bio_start; - int mirror_num; - u64 dio_file_offset; - struct btrfs_work work; - blk_status_t status; +struct nfs_mds_commit_info { + atomic_t rpcs_out; + atomic_long_t ncommit; + struct list_head list; }; -struct btrfs_ioctl_defrag_range_args { - __u64 start; - __u64 len; - __u64 flags; - __u32 extent_thresh; - __u32 compress_type; - __u32 unused[4]; -}; +struct nfs_commit_data; -struct btrfs_ioctl_encoded_io_args { - const struct iovec *iov; - long unsigned int iovcnt; - __s64 offset; - __u64 flags; - __u64 len; - __u64 unencoded_len; - __u64 unencoded_offset; - __u32 compression; - __u32 encryption; - __u8 reserved[64]; -}; - -struct btrfs_replace_extent_info { - u64 disk_offset; - u64 disk_len; - u64 data_offset; - u64 data_len; - u64 file_offset; - char *extent_buf; - bool is_new_extent; - int qgroup_reserved; - int insertions; -}; - -struct btrfs_drop_extents_args { - struct btrfs_path *path; - u64 start; - u64 end; - bool drop_cache; - bool replace_extent; - u32 extent_item_size; - u64 drop_end; - u64 bytes_found; - bool extent_inserted; -}; +struct nfs_commit_info; -struct btrfs_file_private { - void *filldir_buf; +struct nfs_commit_completion_ops { + void (*completion)(struct nfs_commit_data *); + void (*resched_write)(struct nfs_commit_info *, struct nfs_page *); }; -struct btrfs_log_ctx { - int log_ret; - int log_transid; - bool log_new_dentries; - bool logging_new_name; - bool logged_before; - u64 last_dir_item_offset; +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 list_head ordered_extents; + 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 inode_defrag { - struct rb_node rb_node; - u64 ino; - u64 transid; - u64 root; - u32 extent_thresh; +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; }; -struct falloc_range { - struct list_head list; - u64 start; - u64 len; +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; }; -enum { - RANGE_BOUNDARY_WRITTEN_EXTENT = 0, - RANGE_BOUNDARY_PREALLOC_EXTENT = 1, - RANGE_BOUNDARY_HOLE = 2, +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 blk_status_t submit_bio_hook_t(struct inode *, struct bio *, int, long unsigned int); - -struct btrfs_bio_ctrl { - struct bio *bio; - long unsigned int bio_flags; - u32 len_to_stripe_boundary; - u32 len_to_oe_boundary; -}; +struct nlmclnt_operations; -struct btrfs_swapfile_pin { - struct rb_node node; - void *ptr; - struct inode *inode; - bool is_block_group; - int bg_extent_count; -}; +struct nfs_client_initdata; -struct btrfs_dio_private { - struct inode *inode; - u64 file_offset; - u64 disk_bytenr; - u32 bytes; - refcount_t refs; - struct bio *dio_bio; - u8 csums[0]; -}; +struct nfs_access_entry; -struct btrfs_io_geometry { - u64 len; - u64 offset; - u64 stripe_len; - u64 stripe_nr; - u64 stripe_offset; - u64 raid56_stripe_offset; +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 btrfs_subpage { - spinlock_t lock; - atomic_t readers; - union { - atomic_t eb_refs; - atomic_t writers; - }; - long unsigned int bitmaps[0]; +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; }; -struct btrfs_iget_args { - u64 ino; - struct btrfs_root *root; -}; +struct nfs4_state_recovery_ops; -struct btrfs_dio_data { - ssize_t submitted; - struct extent_changeset *data_reserved; - bool data_space_reserved; - bool nocow_done; -}; +struct nfs4_state_maintenance_ops; -struct btrfs_rename_ctx { - u64 index; -}; +struct nfs4_mig_recovery_ops; -struct async_extent { - u64 start; - u64 ram_size; - u64 compressed_size; - struct page **pages; - long unsigned int nr_pages; - int compress_type; - struct list_head list; +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 async_cow; +struct nfs4_state_owner; -struct async_chunk { +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; - struct page *locked_page; - u64 start; - u64 end; - unsigned int write_flags; - struct list_head extents; - struct cgroup_subsys_state *blkcg_css; - struct btrfs_work work; - struct async_cow *async_cow; + long unsigned int flags; + 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 async_cow { - atomic_t num_chunks; - struct async_chunk chunks[0]; +struct cache_head { + struct hlist_node cache_list; + time64_t expiry_time; + time64_t last_refresh; + struct kref ref; + long unsigned int flags; }; -struct btrfs_writepage_fixup { - struct page *page; - struct inode *inode; - struct btrfs_work work; -}; +struct cache_deferred_req; -struct dir_entry___2 { - u64 ino; - u64 offset; - unsigned int type; - int name_len; +struct cache_req { + struct cache_deferred_req * (*defer)(struct cache_req *); + int thread_wait; }; -struct btrfs_delalloc_work { - struct inode *inode; - struct completion completion; - struct list_head list; - struct btrfs_work work; +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); }; -struct btrfs_encoded_read_private { - struct btrfs_inode *inode; - u64 file_offset; - wait_queue_head_t wait; - atomic_t pending; - blk_status_t status; - bool skip_csum; +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; }; -struct btrfs_swap_info { - u64 start; - u64 block_start; - u64 block_len; - u64 lowest_ppage; - u64 highest_ppage; - long unsigned int nr_pages; - int nr_extents; +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 *); }; -enum btrfs_feature_set { - FEAT_COMPAT = 0, - FEAT_COMPAT_RO = 1, - FEAT_INCOMPAT = 2, - FEAT_MAX = 3, +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; + 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 btrfs_feature_attr { - struct kobj_attribute kobj_attr; - enum btrfs_feature_set feature_set; - u64 feature_bit; +struct svc_pool_stats { + atomic_long_t packets; + long unsigned int sockets_queued; + atomic_long_t threads_woken; + atomic_long_t threads_timedout; }; -struct raid_kobject { - u64 flags; - struct kobject kobj; +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; + long: 64; + long: 64; + long: 64; + long: 64; + 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 btrfs_ioctl_balance_args { - __u64 flags; - __u64 state; - struct btrfs_balance_args data; - struct btrfs_balance_args meta; - struct btrfs_balance_args sys; - struct btrfs_balance_progress stat; - __u64 unused[72]; +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 btrfs_ioctl_get_dev_stats { - __u64 devid; - __u64 nr_items; - __u64 flags; - __u64 values[5]; - __u64 unused[121]; +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; }; -enum btrfs_err_code { - BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1, - BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET = 2, - BTRFS_ERROR_DEV_RAID5_MIN_NOT_MET = 3, - BTRFS_ERROR_DEV_RAID6_MIN_NOT_MET = 4, - BTRFS_ERROR_DEV_TGT_REPLACE = 5, - BTRFS_ERROR_DEV_MISSING_NOT_FOUND = 6, - BTRFS_ERROR_DEV_ONLY_WRITABLE = 7, - BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS = 8, - BTRFS_ERROR_DEV_RAID1C3_MIN_NOT_MET = 9, - BTRFS_ERROR_DEV_RAID1C4_MIN_NOT_MET = 10, +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; + int argslen; + __be32 args[0]; }; -struct btrfs_disk_balance_args { - __le64 profiles; +struct svc_process_info { union { - __le64 usage; - struct { - __le32 usage_min; - __le32 usage_max; - }; - }; - __le64 devid; - __le64 pstart; - __le64 pend; - __le64 vstart; - __le64 vend; - __le64 target; - __le64 flags; - union { - __le64 limit; + int (*dispatch)(struct svc_rqst *, __be32 *); struct { - __le32 limit_min; - __le32 limit_max; - }; + unsigned int lovers; + unsigned int hivers; + } mismatch; }; - __le32 stripes_min; - __le32 stripes_max; - __le64 unused[6]; }; -struct btrfs_balance_item { - __le64 flags; - struct btrfs_disk_balance_args data; - struct btrfs_disk_balance_args meta; - struct btrfs_disk_balance_args sys; - __le64 unused[4]; +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 btrfs_dev_stats_item { - __le64 values[5]; -}; +struct nfs4_ssc_client_ops; -struct btrfs_dev_lookup_args { - u64 devid; - u8 *uuid; - u8 *fsid; - bool missing; -}; +struct nfs_ssc_client_ops; -struct alloc_chunk_ctl { - u64 start; - u64 type; - int num_stripes; - int sub_stripes; - int dev_stripes; - int devs_max; - int devs_min; - int devs_increment; - int ncopies; - int nparity; - u64 max_stripe_size; - u64 max_chunk_size; - u64 dev_extent_min; - u64 stripe_size; - u64 chunk_size; - int ndevs; -}; - -enum btrfs_subpage_type { - BTRFS_SUBPAGE_METADATA = 0, - BTRFS_SUBPAGE_DATA = 1, -}; - -struct tree_entry { - u64 start; - u64 end; - struct rb_node rb_node; +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 extent_page_data { - struct btrfs_bio_ctrl bio_ctrl; - unsigned int extent_locked: 1; - unsigned int sync_io: 1; +struct nfs4_ssc_client_ops { + struct file * (*sco_open)(struct vfsmount *, struct nfs_fh *, nfs4_stateid *); + void (*sco_close)(struct file *); }; -struct processed_extent { - struct btrfs_inode *inode; - u64 start; - u64 end; - bool uptodate; +struct nfs_ssc_client_ops { + void (*sco_sb_deactive)(struct super_block *); }; -struct fiemap_cache { - u64 offset; - u64 phys; - u64 len; - u32 flags; - bool cached; +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 btrfs_trans_handle; - -struct btrfs_workqueue { - struct __btrfs_workqueue *normal; - struct __btrfs_workqueue *high; +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 *); }; -enum { - WORK_DONE_BIT = 0, - WORK_ORDER_DONE_BIT = 1, - WORK_HIGH_PRIO_BIT = 2, +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 btrfs_ioctl_qgroup_limit_args { - __u64 qgroupid; - struct btrfs_qgroup_limit lim; +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 btrfs_ioctl_vol_args_v2 { - __s64 fd; - __u64 transid; - __u64 flags; - union { - struct { - __u64 size; - struct btrfs_qgroup_inherit *qgroup_inherit; - }; - __u64 unused[4]; - }; - union { - char name[4040]; - __u64 devid; - __u64 subvolid; - }; +struct core_name { + char *corename; + int used; + int size; }; -struct btrfs_ioctl_scrub_args { - __u64 devid; - __u64 start; - __u64 end; - __u64 flags; - struct btrfs_scrub_progress progress; - __u64 unused[109]; +struct trace_event_raw_iomap_readpage_class { + struct trace_entry ent; + dev_t dev; + u64 ino; + int nr_pages; + char __data[0]; }; -struct btrfs_ioctl_dev_replace_start_params { - __u64 srcdevid; - __u64 cont_reading_from_srcdev_mode; - __u8 srcdev_name[1025]; - __u8 tgtdev_name[1025]; +struct trace_event_raw_iomap_range_class { + struct trace_entry ent; + dev_t dev; + u64 ino; + loff_t size; + loff_t offset; + u64 length; + char __data[0]; }; -struct btrfs_ioctl_dev_replace_status_params { - __u64 replace_state; - __u64 progress_1000; - __u64 time_started; - __u64 time_stopped; - __u64 num_write_errors; - __u64 num_uncorrectable_read_errors; +struct trace_event_raw_iomap_class { + struct trace_entry ent; + dev_t dev; + u64 ino; + u64 addr; + loff_t offset; + u64 length; + u16 type; + u16 flags; + dev_t bdev; + char __data[0]; }; -struct btrfs_ioctl_dev_replace_args { - __u64 cmd; - __u64 result; - union { - struct btrfs_ioctl_dev_replace_start_params start; - struct btrfs_ioctl_dev_replace_status_params status; - }; - __u64 spare[64]; +struct trace_event_raw_iomap_iter { + struct trace_entry ent; + dev_t dev; + u64 ino; + loff_t pos; + u64 length; + unsigned int flags; + const void *ops; + long unsigned int caller; + char __data[0]; }; -struct btrfs_ioctl_dev_info_args { - __u64 devid; - __u8 uuid[16]; - __u64 bytes_used; - __u64 total_bytes; - __u64 unused[379]; - __u8 path[1024]; -}; - -struct btrfs_ioctl_fs_info_args { - __u64 max_id; - __u64 num_devices; - __u8 fsid[16]; - __u32 nodesize; - __u32 sectorsize; - __u32 clone_alignment; - __u16 csum_type; - __u16 csum_size; - __u64 flags; - __u64 generation; - __u8 metadata_uuid[16]; - __u8 reserved[944]; -}; +struct trace_event_data_offsets_iomap_readpage_class {}; -struct btrfs_ioctl_feature_flags { - __u64 compat_flags; - __u64 compat_ro_flags; - __u64 incompat_flags; -}; +struct trace_event_data_offsets_iomap_range_class {}; -struct btrfs_ioctl_ino_lookup_args { - __u64 treeid; - __u64 objectid; - char name[4080]; -}; +struct trace_event_data_offsets_iomap_class {}; -struct btrfs_ioctl_ino_lookup_user_args { - __u64 dirid; - __u64 treeid; - char name[256]; - char path[3824]; -}; - -struct btrfs_ioctl_search_key { - __u64 tree_id; - __u64 min_objectid; - __u64 max_objectid; - __u64 min_offset; - __u64 max_offset; - __u64 min_transid; - __u64 max_transid; - __u32 min_type; - __u32 max_type; - __u32 nr_items; - __u32 unused; - __u64 unused1; - __u64 unused2; - __u64 unused3; - __u64 unused4; -}; - -struct btrfs_ioctl_search_header { - __u64 transid; - __u64 objectid; - __u64 offset; - __u32 type; - __u32 len; -}; +struct trace_event_data_offsets_iomap_iter {}; -struct btrfs_ioctl_search_args { - struct btrfs_ioctl_search_key key; - char buf[3992]; -}; +typedef void (*btf_trace_iomap_readpage)(void *, struct inode *, int); -struct btrfs_ioctl_search_args_v2 { - struct btrfs_ioctl_search_key key; - __u64 buf_size; - __u64 buf[0]; -}; +typedef void (*btf_trace_iomap_readahead)(void *, struct inode *, int); -struct btrfs_ioctl_space_info { - __u64 flags; - __u64 total_bytes; - __u64 used_bytes; -}; +typedef void (*btf_trace_iomap_writepage)(void *, struct inode *, loff_t, u64); -struct btrfs_ioctl_space_args { - __u64 space_slots; - __u64 total_spaces; - struct btrfs_ioctl_space_info spaces[0]; -}; +typedef void (*btf_trace_iomap_releasepage)(void *, struct inode *, loff_t, u64); -struct btrfs_data_container { - __u32 bytes_left; - __u32 bytes_missing; - __u32 elem_cnt; - __u32 elem_missed; - __u64 val[0]; -}; +typedef void (*btf_trace_iomap_invalidatepage)(void *, struct inode *, loff_t, u64); -struct btrfs_ioctl_ino_path_args { - __u64 inum; - __u64 size; - __u64 reserved[4]; - __u64 fspath; -}; +typedef void (*btf_trace_iomap_dio_invalidate_fail)(void *, struct inode *, loff_t, u64); -struct btrfs_ioctl_logical_ino_args { - __u64 logical; - __u64 size; - __u64 reserved[3]; - __u64 flags; - __u64 inodes; -}; +typedef void (*btf_trace_iomap_iter_dstmap)(void *, struct inode *, struct iomap *); -struct btrfs_ioctl_quota_ctl_args { - __u64 cmd; - __u64 status; -}; +typedef void (*btf_trace_iomap_iter_srcmap)(void *, struct inode *, struct iomap *); -struct btrfs_ioctl_quota_rescan_args { - __u64 flags; - __u64 progress; - __u64 reserved[6]; -}; +typedef void (*btf_trace_iomap_iter)(void *, struct iomap_iter *, const void *, long unsigned int); -struct btrfs_ioctl_qgroup_assign_args { - __u64 assign; - __u64 src; - __u64 dst; +enum { + BIOSET_NEED_BVECS = 1, + BIOSET_NEED_RESCUER = 2, + BIOSET_PERCPU_CACHE = 4, }; -struct btrfs_ioctl_qgroup_create_args { - __u64 create; - __u64 qgroupid; +struct iomap_ioend { + struct list_head io_list; + u16 io_type; + u16 io_flags; + struct inode *io_inode; + size_t io_size; + loff_t io_offset; + struct bio *io_bio; + struct bio io_inline_bio; }; -struct btrfs_ioctl_timespec { - __u64 sec; - __u32 nsec; -}; +struct iomap_writepage_ctx; -struct btrfs_ioctl_received_subvol_args { - char uuid[16]; - __u64 stransid; - __u64 rtransid; - struct btrfs_ioctl_timespec stime; - struct btrfs_ioctl_timespec rtime; - __u64 flags; - __u64 reserved[16]; +struct iomap_writeback_ops { + int (*map_blocks)(struct iomap_writepage_ctx *, struct inode *, loff_t); + int (*prepare_ioend)(struct iomap_ioend *, int); + void (*discard_page)(struct page *, loff_t); }; -struct btrfs_ioctl_send_args { - __s64 send_fd; - __u64 clone_sources_count; - __u64 *clone_sources; - __u64 parent_root; - __u64 flags; - __u32 version; - __u8 reserved[28]; +struct iomap_writepage_ctx { + struct iomap iomap; + struct iomap_ioend *ioend; + const struct iomap_writeback_ops *ops; }; -struct btrfs_ioctl_get_subvol_info_args { - __u64 treeid; - char name[256]; - __u64 parent_id; - __u64 dirid; - __u64 generation; - __u64 flags; - __u8 uuid[16]; - __u8 parent_uuid[16]; - __u8 received_uuid[16]; - __u64 ctransid; - __u64 otransid; - __u64 stransid; - __u64 rtransid; - struct btrfs_ioctl_timespec ctime; - struct btrfs_ioctl_timespec otime; - struct btrfs_ioctl_timespec stime; - struct btrfs_ioctl_timespec rtime; - __u64 reserved[8]; -}; - -struct btrfs_ioctl_get_subvol_rootref_args { - __u64 min_treeid; - struct { - __u64 treeid; - __u64 dirid; - } rootref[255]; - __u8 num_items; - __u8 align[7]; -}; +typedef int (*list_cmp_func_t)(void *, const struct list_head *, const struct list_head *); -struct inode_fs_paths { - struct btrfs_path *btrfs_path; - struct btrfs_root *fs_root; - struct btrfs_data_container *fspath; +struct iomap_page { + atomic_t read_bytes_pending; + atomic_t write_bytes_pending; + spinlock_t uptodate_lock; + long unsigned int uptodate[0]; }; -typedef int iterate_extent_inodes_t(u64, u64, u64, void *); - -struct btrfs_ioctl_timespec_32 { - __u64 sec; - __u32 nsec; -} __attribute__((packed)); - -struct btrfs_ioctl_received_subvol_args_32 { - char uuid[16]; - __u64 stransid; - __u64 rtransid; - struct btrfs_ioctl_timespec_32 stime; - struct btrfs_ioctl_timespec_32 rtime; - __u64 flags; - __u64 reserved[16]; -} __attribute__((packed)); - -struct btrfs_ioctl_send_args_32 { - __s64 send_fd; - __u64 clone_sources_count; - compat_uptr_t clone_sources; - __u64 parent_root; - __u64 flags; - __u32 version; - __u8 reserved[28]; -} __attribute__((packed)); - -struct btrfs_ioctl_encoded_io_args_32 { - compat_uptr_t iov; - compat_ulong_t iovcnt; - __s64 offset; - __u64 flags; - __u64 len; - __u64 unencoded_len; - __u64 unencoded_offset; - __u32 compression; - __u32 encryption; - __u8 reserved[64]; +struct iomap_readpage_ctx { + struct page *cur_page; + bool cur_page_in_bio; + struct bio *bio; + struct readahead_control *rac; }; -struct defrag_target_range { - struct list_head list; - u64 start; - u64 len; +struct iomap_dio_ops { + int (*end_io)(struct kiocb *, ssize_t, int, unsigned int); + blk_qc_t (*submit_io)(const struct iomap_iter *, struct bio *, loff_t); }; -struct btrfs_fid { - u64 objectid; - u64 root_objectid; - u32 gen; - u64 parent_objectid; - u32 parent_gen; - u64 parent_root_objectid; -} __attribute__((packed)); - -struct btrfs_free_space_entry { - __le64 offset; - __le64 bytes; - __u8 type; -} __attribute__((packed)); - -struct btrfs_free_space_header { - struct btrfs_disk_key location; - __le64 generation; - __le64 num_entries; - __le64 num_bitmaps; -} __attribute__((packed)); - -struct btrfs_trim_range { - u64 start; - u64 bytes; - struct list_head list; +struct iomap_dio { + struct kiocb *iocb; + const struct iomap_dio_ops *dops; + loff_t i_size; + loff_t size; + atomic_t ref; + unsigned int flags; + int error; + size_t done_before; + bool wait_for_completion; + union { + struct { + struct iov_iter *iter; + struct task_struct *waiter; + struct request_queue *last_queue; + blk_qc_t cookie; + } submit; + struct { + struct work_struct work; + } aio; + }; }; -struct btrfs_dir_log_item { - __le64 end; +struct iomap_swapfile_info { + 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 { - LOG_INODE_ALL = 0, - LOG_INODE_EXISTS = 1, - LOG_OTHER_INODE = 2, - LOG_OTHER_INODE_ALL = 3, + QIF_BLIMITS_B = 0, + QIF_SPACE_B = 1, + QIF_ILIMITS_B = 2, + QIF_INODES_B = 3, + QIF_BTIME_B = 4, + QIF_ITIME_B = 5, }; +typedef __kernel_uid32_t qid_t; + enum { - LOG_WALK_PIN_ONLY = 0, - LOG_WALK_REPLAY_INODES = 1, - LOG_WALK_REPLAY_DIR_INDEX = 2, - LOG_WALK_REPLAY_ALL = 3, + DQF_INFO_DIRTY_B = 17, }; -struct walk_control___2 { - int free; - int pin; - int stage; - bool ignore_cur_inode; - struct btrfs_root *replay_dest; - struct btrfs_trans_handle *trans; - int (*process_func)(struct btrfs_root *, struct extent_buffer *, struct walk_control___2 *, u64, int); +struct dqstats { + long unsigned int stat[8]; + struct percpu_counter counter[8]; }; -struct btrfs_ino_list { - u64 ino; - u64 parent; - struct list_head list; +enum { + _DQUOT_USAGE_ENABLED = 0, + _DQUOT_LIMITS_ENABLED = 1, + _DQUOT_SUSPENDED = 2, + _DQUOT_STATE_FLAGS = 3, }; -struct btrfs_dir_list { - u64 ino; - struct list_head list; +struct quota_module_name { + int qm_fmt_id; + char *qm_mod_name; }; -typedef unsigned char Byte; - -typedef long unsigned int uLong; - -struct internal_state; - -struct z_stream_s { - const Byte *next_in; - uLong avail_in; - uLong total_in; - Byte *next_out; - uLong avail_out; - uLong total_out; - char *msg; - struct internal_state *state; - void *workspace; - int data_type; - uLong adler; - uLong reserved; +struct dquot_warn { + struct super_block *w_sb; + struct kqid w_dq_id; + short int w_type; }; -struct internal_state { - int dummy; +struct fs_disk_quota { + __s8 d_version; + __s8 d_flags; + __u16 d_fieldmask; + __u32 d_id; + __u64 d_blk_hardlimit; + __u64 d_blk_softlimit; + __u64 d_ino_hardlimit; + __u64 d_ino_softlimit; + __u64 d_bcount; + __u64 d_icount; + __s32 d_itimer; + __s32 d_btimer; + __u16 d_iwarns; + __u16 d_bwarns; + __s8 d_itimer_hi; + __s8 d_btimer_hi; + __s8 d_rtbtimer_hi; + __s8 d_padding2; + __u64 d_rtb_hardlimit; + __u64 d_rtb_softlimit; + __u64 d_rtbcount; + __s32 d_rtbtimer; + __u16 d_rtbwarns; + __s16 d_padding3; + char d_padding4[8]; }; -typedef struct z_stream_s z_stream; +struct fs_qfilestat { + __u64 qfs_ino; + __u64 qfs_nblks; + __u32 qfs_nextents; +}; -typedef z_stream *z_streamp; +typedef struct fs_qfilestat fs_qfilestat_t; -struct compressed_bio { - refcount_t pending_sectors; - unsigned int nr_pages; - struct page **compressed_pages; - struct inode *inode; - u64 start; - unsigned int len; - unsigned int compressed_len; - u8 compress_type; - bool writeback; - blk_status_t status; - int mirror_num; - struct bio *orig_bio; - u8 sums[0]; +struct fs_quota_stat { + __s8 qs_version; + __u16 qs_flags; + __s8 qs_pad; + fs_qfilestat_t qs_uquota; + fs_qfilestat_t qs_gquota; + __u32 qs_incoredqs; + __s32 qs_btimelimit; + __s32 qs_itimelimit; + __s32 qs_rtbtimelimit; + __u16 qs_bwarnlimit; + __u16 qs_iwarnlimit; }; -struct workspace_manager { - struct list_head idle_ws; - spinlock_t ws_lock; - int free_ws; - atomic_t total_ws; - wait_queue_head_t ws_wait; +struct fs_qfilestatv { + __u64 qfs_ino; + __u64 qfs_nblks; + __u32 qfs_nextents; + __u32 qfs_pad; }; -struct btrfs_compress_op { - struct workspace_manager *workspace_manager; - unsigned int max_level; - unsigned int default_level; +struct fs_quota_statv { + __s8 qs_version; + __u8 qs_pad1; + __u16 qs_flags; + __u32 qs_incoredqs; + struct fs_qfilestatv qs_uquota; + struct fs_qfilestatv qs_gquota; + struct fs_qfilestatv qs_pquota; + __s32 qs_btimelimit; + __s32 qs_itimelimit; + __s32 qs_rtbtimelimit; + __u16 qs_bwarnlimit; + __u16 qs_iwarnlimit; + __u16 qs_rtbwarnlimit; + __u16 qs_pad3; + __u32 qs_pad4; + __u64 qs_pad2[7]; }; -struct workspace { - z_stream strm; - char *buf; - unsigned int buf_size; - struct list_head list; - int level; +struct if_dqblk { + __u64 dqb_bhardlimit; + __u64 dqb_bsoftlimit; + __u64 dqb_curspace; + __u64 dqb_ihardlimit; + __u64 dqb_isoftlimit; + __u64 dqb_curinodes; + __u64 dqb_btime; + __u64 dqb_itime; + __u32 dqb_valid; }; -struct workspace___2 { - void *mem; - void *buf; - void *cbuf; - struct list_head list; +struct if_nextdqblk { + __u64 dqb_bhardlimit; + __u64 dqb_bsoftlimit; + __u64 dqb_curspace; + __u64 dqb_ihardlimit; + __u64 dqb_isoftlimit; + __u64 dqb_curinodes; + __u64 dqb_btime; + __u64 dqb_itime; + __u32 dqb_valid; + __u32 dqb_id; }; -typedef enum { - ZSTD_error_no_error = 0, - ZSTD_error_GENERIC = 1, - ZSTD_error_prefix_unknown = 10, - ZSTD_error_version_unsupported = 12, - ZSTD_error_frameParameter_unsupported = 14, - ZSTD_error_frameParameter_windowTooLarge = 16, - ZSTD_error_corruption_detected = 20, - ZSTD_error_checksum_wrong = 22, - ZSTD_error_dictionary_corrupted = 30, - ZSTD_error_dictionary_wrong = 32, - ZSTD_error_dictionaryCreation_failed = 34, - ZSTD_error_parameter_unsupported = 40, - ZSTD_error_parameter_outOfBound = 42, - ZSTD_error_tableLog_tooLarge = 44, - ZSTD_error_maxSymbolValue_tooLarge = 46, - ZSTD_error_maxSymbolValue_tooSmall = 48, - ZSTD_error_stage_wrong = 60, - ZSTD_error_init_missing = 62, - ZSTD_error_memory_allocation = 64, - ZSTD_error_workSpace_tooSmall = 66, - ZSTD_error_dstSize_tooSmall = 70, - ZSTD_error_srcSize_wrong = 72, - ZSTD_error_dstBuffer_null = 74, - ZSTD_error_frameIndex_tooLarge = 100, - ZSTD_error_seekableIO = 102, - ZSTD_error_dstBuffer_wrong = 104, - ZSTD_error_srcBuffer_wrong = 105, - ZSTD_error_maxCode = 120, -} ZSTD_ErrorCode; - -struct ZSTD_CCtx_s; - -typedef struct ZSTD_CCtx_s ZSTD_CCtx; - -struct ZSTD_DCtx_s; - -typedef struct ZSTD_DCtx_s ZSTD_DCtx; - -typedef enum { - ZSTD_fast = 1, - ZSTD_dfast = 2, - ZSTD_greedy = 3, - ZSTD_lazy = 4, - ZSTD_lazy2 = 5, - ZSTD_btlazy2 = 6, - ZSTD_btopt = 7, - ZSTD_btultra = 8, - ZSTD_btultra2 = 9, -} ZSTD_strategy; - -struct ZSTD_inBuffer_s { - const void *src; - size_t size; - size_t pos; +struct if_dqinfo { + __u64 dqi_bgrace; + __u64 dqi_igrace; + __u32 dqi_flags; + __u32 dqi_valid; }; -typedef struct ZSTD_inBuffer_s ZSTD_inBuffer; +typedef u64 compat_u64; -struct ZSTD_outBuffer_s { - void *dst; - size_t size; - size_t pos; +struct compat_if_dqblk { + compat_u64 dqb_bhardlimit; + compat_u64 dqb_bsoftlimit; + compat_u64 dqb_curspace; + compat_u64 dqb_ihardlimit; + compat_u64 dqb_isoftlimit; + compat_u64 dqb_curinodes; + compat_u64 dqb_btime; + compat_u64 dqb_itime; + compat_uint_t dqb_valid; }; -typedef struct ZSTD_outBuffer_s ZSTD_outBuffer; - -typedef ZSTD_CCtx ZSTD_CStream; - -typedef ZSTD_DCtx ZSTD_DStream; +enum { + QUOTA_NL_C_UNSPEC = 0, + QUOTA_NL_C_WARNING = 1, + __QUOTA_NL_C_MAX = 2, +}; -typedef struct { - unsigned int windowLog; - unsigned int chainLog; - unsigned int hashLog; - unsigned int searchLog; - unsigned int minMatch; - unsigned int targetLength; - ZSTD_strategy strategy; -} ZSTD_compressionParameters; +enum { + QUOTA_NL_A_UNSPEC = 0, + QUOTA_NL_A_QTYPE = 1, + QUOTA_NL_A_EXCESS_ID = 2, + QUOTA_NL_A_WARNING = 3, + QUOTA_NL_A_DEV_MAJOR = 4, + QUOTA_NL_A_DEV_MINOR = 5, + QUOTA_NL_A_CAUSED_ID = 6, + QUOTA_NL_A_PAD = 7, + __QUOTA_NL_A_MAX = 8, +}; -typedef struct { - int contentSizeFlag; - int checksumFlag; - int noDictIDFlag; -} ZSTD_frameParameters; +struct proc_maps_private { + struct inode *inode; + struct task_struct *task; + struct mm_struct *mm; + struct vm_area_struct *tail_vma; + struct mempolicy *task_mempolicy; +}; -typedef struct { - ZSTD_compressionParameters cParams; - ZSTD_frameParameters fParams; -} ZSTD_parameters; +struct mem_size_stats { + long unsigned int resident; + long unsigned int shared_clean; + long unsigned int shared_dirty; + long unsigned int private_clean; + long unsigned int private_dirty; + long unsigned int referenced; + long unsigned int anonymous; + long unsigned int lazyfree; + long unsigned int anonymous_thp; + long unsigned int shmem_thp; + long unsigned int file_thp; + long unsigned int swap; + long unsigned int shared_hugetlb; + long unsigned int private_hugetlb; + u64 pss; + u64 pss_anon; + u64 pss_file; + u64 pss_shmem; + u64 pss_locked; + u64 swap_pss; + bool check_shmem_swap; +}; -typedef void * (*ZSTD_allocFunction)(void *, size_t); +enum clear_refs_types { + CLEAR_REFS_ALL = 1, + CLEAR_REFS_ANON = 2, + CLEAR_REFS_MAPPED = 3, + CLEAR_REFS_SOFT_DIRTY = 4, + CLEAR_REFS_MM_HIWATER_RSS = 5, + CLEAR_REFS_LAST = 6, +}; -typedef void (*ZSTD_freeFunction)(void *, void *); +struct clear_refs_private { + enum clear_refs_types type; +}; typedef struct { - ZSTD_allocFunction customAlloc; - ZSTD_freeFunction customFree; - void *opaque; -} ZSTD_customMem; - -typedef ZSTD_ErrorCode zstd_error_code; - -typedef ZSTD_compressionParameters zstd_compression_parameters; - -typedef ZSTD_parameters zstd_parameters; + u64 pme; +} pagemap_entry_t; -typedef ZSTD_inBuffer zstd_in_buffer; +struct pagemapread { + int pos; + int len; + pagemap_entry_t *buffer; + bool show_pfn; +}; -typedef ZSTD_outBuffer zstd_out_buffer; +struct numa_maps { + long unsigned int pages; + long unsigned int anon; + long unsigned int active; + long unsigned int writeback; + long unsigned int mapcount_max; + long unsigned int dirty; + long unsigned int swapcache; + long unsigned int node[2]; +}; -typedef ZSTD_CStream zstd_cstream; +struct numa_maps_private { + struct proc_maps_private proc_maps; + struct numa_maps md; +}; -typedef ZSTD_DStream zstd_dstream; +struct pde_opener { + struct list_head lh; + struct file *file; + bool closing; + struct completion *c; +}; -struct workspace___3 { - void *mem; - size_t size; - char *buf; - unsigned int level; - unsigned int req_level; - long unsigned int last_used; - struct list_head list; - struct list_head lru_list; - zstd_in_buffer in_buf; - zstd_out_buffer out_buf; +enum { + BIAS = 2147483648, }; -struct zstd_workspace_manager { - const struct btrfs_compress_op *ops; - spinlock_t lock; - struct list_head lru_list; - struct list_head idle_ws[15]; - long unsigned int active_map; - wait_queue_head_t wait; - struct timer_list timer; +struct proc_fs_context { + struct pid_namespace *pid_ns; + unsigned int mask; + enum proc_hidepid hidepid; + int gid; + enum proc_pidonly pidonly; }; -struct bucket_item { - u32 count; +enum proc_param { + Opt_gid___3 = 0, + Opt_hidepid = 1, + Opt_subset = 2, }; -struct heuristic_ws { - u8 *sample; - u32 sample_size; - struct bucket_item *bucket; - struct bucket_item *bucket_b; - struct list_head list; +struct genradix_root; + +struct __genradix { + struct genradix_root *root; }; -struct ulist_iterator { - struct list_head *cur_list; +struct syscall_info { + __u64 sp; + struct seccomp_data data; }; -struct ulist_node { - u64 val; - u64 aux; - struct list_head list; - struct rb_node rb_node; +enum resctrl_conf_type { + CDP_NONE = 0, + CDP_CODE = 1, + CDP_DATA = 2, }; -struct btrfs_backref_node; +typedef struct dentry *instantiate_t(struct dentry *, struct task_struct *, const void *); -struct btrfs_backref_cache { - struct rb_root rb_root; - struct btrfs_backref_node *path[8]; - struct list_head pending[8]; - struct list_head leaves; - struct list_head changed; - struct list_head detached; - u64 last_trans; - int nr_nodes; - int nr_edges; - struct list_head pending_edge; - struct list_head useless_node; - struct btrfs_fs_info *fs_info; - unsigned int is_reloc; -}; - -struct file_extent_cluster { - u64 start; - u64 end; - u64 boundary[128]; - unsigned int nr; +struct pid_entry { + const char *name; + unsigned int len; + umode_t mode; + const struct inode_operations *iop; + const struct file_operations *fop; + union proc_op op; }; -struct mapping_tree { - struct rb_root rb_root; - spinlock_t lock; +struct limit_names { + const char *name; + const char *unit; }; -struct reloc_control { - struct btrfs_block_group *block_group; - struct btrfs_root *extent_root; - struct inode *data_inode; - struct btrfs_block_rsv *block_rsv; - struct btrfs_backref_cache backref_cache; - struct file_extent_cluster cluster; - struct extent_io_tree processed_blocks; - struct mapping_tree reloc_root_tree; - struct list_head reloc_roots; - struct list_head dirty_subvol_roots; - u64 merging_rsv_size; - u64 nodes_relocated; - u64 reserved_bytes; - u64 search_start; - u64 extents_found; - unsigned int stage: 8; - unsigned int create_reloc_tree: 1; - unsigned int merge_reloc_tree: 1; - unsigned int found_file_extent: 1; -}; - -struct btrfs_backref_iter { - u64 bytenr; - struct btrfs_path *path; - struct btrfs_fs_info *fs_info; - struct btrfs_key cur_key; - u32 item_ptr; - u32 cur_ptr; - u32 end_ptr; -}; - -struct btrfs_backref_node { - struct { - struct rb_node rb_node; - u64 bytenr; - }; - u64 new_bytenr; - u64 owner; - struct list_head list; - struct list_head upper; - struct list_head lower; - struct btrfs_root *root; - struct extent_buffer *eb; - unsigned int level: 8; - unsigned int cowonly: 1; - unsigned int lowest: 1; - unsigned int locked: 1; - unsigned int processed: 1; - unsigned int checked: 1; - unsigned int pending: 1; - unsigned int detached: 1; - unsigned int is_reloc_root: 1; +struct map_files_info { + long unsigned int start; + long unsigned int end; + fmode_t mode; }; -struct btrfs_backref_edge { - struct list_head list[2]; - struct btrfs_backref_node *node[2]; +struct timers_private { + struct pid *pid; + struct task_struct *task; + struct sighand_struct *sighand; + struct pid_namespace *ns; + long unsigned int flags; }; -struct rb_simple_node { - struct rb_node rb_node; - u64 bytenr; +struct tgid_iter { + unsigned int tgid; + struct task_struct *task; }; -struct mapping_node { - struct { - struct rb_node rb_node; - u64 bytenr; - }; - void *data; +struct fd_data { + fmode_t mode; + unsigned int fd; }; -struct tree_block { - struct { - struct rb_node rb_node; - u64 bytenr; - }; - u64 owner; - struct btrfs_key key; - unsigned int level: 8; - unsigned int key_ready: 1; +struct sysctl_alias { + const char *kernel_param; + const char *sysctl_param; }; -struct btrfs_delayed_item { - struct rb_node rb_node; - struct btrfs_key key; - struct list_head tree_list; - struct list_head readdir_list; - u64 bytes_reserved; - struct btrfs_delayed_node *delayed_node; - refcount_t refs; - int ins_or_del; - u32 data_len; - char data[0]; +struct seq_net_private { + struct net *net; }; -struct btrfs_async_delayed_work { - struct btrfs_delayed_root *delayed_root; - int nr; - struct btrfs_work work; +enum kcore_type { + KCORE_TEXT = 0, + KCORE_VMALLOC = 1, + KCORE_RAM = 2, + KCORE_VMEMMAP = 3, + KCORE_USER = 4, }; -struct scrub_bio; - -struct scrub_ctx { - struct scrub_bio *bios[64]; - struct btrfs_fs_info *fs_info; - int first_free; - int curr; - atomic_t bios_in_flight; - atomic_t workers_pending; - spinlock_t list_lock; - wait_queue_head_t list_wait; - struct list_head csum_list; - atomic_t cancel_req; - int readonly; - int pages_per_bio; - ktime_t throttle_deadline; - u64 throttle_sent; - int is_dev_replace; - u64 write_pointer; - struct scrub_bio *wr_curr_bio; - struct mutex wr_lock; - struct btrfs_device *wr_tgtdev; - bool flush_all_writes; - struct btrfs_scrub_progress stat; - spinlock_t stat_lock; - refcount_t refs; +struct kcore_list { + struct list_head list; + long unsigned int addr; + size_t size; + int type; }; -struct scrub_recover { - refcount_t refs; - struct btrfs_io_context *bioc; - u64 map_length; +struct vmcore { + struct list_head list; + long long unsigned int paddr; + long long unsigned int size; + loff_t offset; }; -struct scrub_block; - -struct scrub_page { - struct scrub_block *sblock; - struct page *page; - struct btrfs_device *dev; +struct vmcoredd_node { struct list_head list; - u64 flags; - u64 generation; - u64 logical; - u64 physical; - u64 physical_for_dev_replace; - atomic_t refs; - u8 mirror_num; - unsigned int have_csum: 1; - unsigned int io_error: 1; - u8 csum[32]; - struct scrub_recover *recover; + void *buf; + unsigned int size; }; -struct scrub_parity; +typedef struct elf32_hdr Elf32_Ehdr; -struct scrub_block { - struct scrub_page *pagev[16]; - int page_count; - atomic_t outstanding_pages; - refcount_t refs; - struct scrub_ctx *sctx; - struct scrub_parity *sparity; - struct { - unsigned int header_error: 1; - unsigned int checksum_error: 1; - unsigned int no_io_error_seen: 1; - unsigned int generation_error: 1; - unsigned int data_corrected: 1; - }; - struct btrfs_work work; -}; +typedef struct elf32_phdr Elf32_Phdr; -struct scrub_bio { - int index; - struct scrub_ctx *sctx; - struct btrfs_device *dev; - struct bio *bio; - blk_status_t status; - u64 logical; - u64 physical; - struct scrub_page *pagev[32]; - int page_count; - int next_free; - struct btrfs_work work; -}; +typedef struct elf32_note Elf32_Nhdr; -struct scrub_parity { - struct scrub_ctx *sctx; - struct btrfs_device *scrub_dev; - u64 logic_start; - u64 logic_end; - int nsectors; - u32 stripe_len; - refcount_t refs; - struct list_head spages; - struct btrfs_work work; - long unsigned int *dbitmap; - long unsigned int *ebitmap; - long unsigned int bitmap[0]; +struct vmcoredd_header { + __u32 n_namesz; + __u32 n_descsz; + __u32 n_type; + __u8 name[8]; + __u8 dump_name[44]; }; -struct scrub_warning { - struct btrfs_path *path; - u64 extent_item_size; - const char *errstr; - u64 physical; - u64 logical; - struct btrfs_device *dev; +struct vmcoredd_data { + char dump_name[44]; + unsigned int size; + int (*vmcoredd_callback)(struct vmcoredd_data *, void *); }; -struct full_stripe_lock { - struct rb_node node; - u64 logical; - u64 refs; - struct mutex mutex; +struct kernfs_iattrs { + kuid_t ia_uid; + kgid_t ia_gid; + struct timespec64 ia_atime; + struct timespec64 ia_mtime; + struct timespec64 ia_ctime; + struct simple_xattrs xattrs; + atomic_t nr_user_xattrs; + atomic_t user_xattr_size; }; -struct btrfs_raid_bio; - -struct extent_inode_elem { - u64 inum; - u64 offset; - struct extent_inode_elem *next; +struct kernfs_super_info { + struct super_block *sb; + struct kernfs_root *root; + const void *ns; + struct list_head node; }; -struct btrfs_seq_list { - struct list_head list; - u64 seq; +enum kernfs_node_flag { + KERNFS_ACTIVATED = 16, + KERNFS_NS = 32, + KERNFS_HAS_SEQ_SHOW = 64, + KERNFS_HAS_MMAP = 128, + KERNFS_LOCKDEP = 256, + KERNFS_SUICIDAL = 1024, + KERNFS_SUICIDED = 2048, + KERNFS_EMPTY_DIR = 4096, + KERNFS_HAS_RELEASE = 8192, }; -struct preftree { - struct rb_root_cached root; - unsigned int count; +struct kernfs_open_node { + atomic_t refcnt; + atomic_t event; + wait_queue_head_t poll; + struct list_head files; }; -struct preftrees { - struct preftree direct; - struct preftree indirect; - struct preftree indirect_missing_keys; +struct config_group; + +struct config_item_type; + +struct config_item { + char *ci_name; + char ci_namebuf[20]; + struct kref ci_kref; + struct list_head ci_entry; + struct config_item *ci_parent; + struct config_group *ci_group; + const struct config_item_type *ci_type; + struct dentry *ci_dentry; }; -struct share_check { - u64 root_objectid; - u64 inum; - int share_count; +struct configfs_subsystem; + +struct config_group { + struct config_item cg_item; + struct list_head cg_children; + struct configfs_subsystem *cg_subsys; + struct list_head default_groups; + struct list_head group_entry; }; -typedef int iterate_irefs_t(u64, u32, long unsigned int, struct extent_buffer *, void *); +struct configfs_item_operations; -struct btrfs_stream_header { - char magic[13]; - __le32 version; -} __attribute__((packed)); +struct configfs_group_operations; -struct btrfs_cmd_header { - __le32 len; - __le16 cmd; - __le32 crc; -} __attribute__((packed)); +struct configfs_attribute; -struct btrfs_tlv_header { - __le16 tlv_type; - __le16 tlv_len; -}; - -enum btrfs_send_cmd { - BTRFS_SEND_C_UNSPEC = 0, - BTRFS_SEND_C_SUBVOL = 1, - BTRFS_SEND_C_SNAPSHOT = 2, - BTRFS_SEND_C_MKFILE = 3, - BTRFS_SEND_C_MKDIR = 4, - BTRFS_SEND_C_MKNOD = 5, - BTRFS_SEND_C_MKFIFO = 6, - BTRFS_SEND_C_MKSOCK = 7, - BTRFS_SEND_C_SYMLINK = 8, - BTRFS_SEND_C_RENAME = 9, - BTRFS_SEND_C_LINK = 10, - BTRFS_SEND_C_UNLINK = 11, - BTRFS_SEND_C_RMDIR = 12, - BTRFS_SEND_C_SET_XATTR = 13, - BTRFS_SEND_C_REMOVE_XATTR = 14, - BTRFS_SEND_C_WRITE = 15, - BTRFS_SEND_C_CLONE = 16, - BTRFS_SEND_C_TRUNCATE = 17, - BTRFS_SEND_C_CHMOD = 18, - BTRFS_SEND_C_CHOWN = 19, - BTRFS_SEND_C_UTIMES = 20, - BTRFS_SEND_C_END = 21, - BTRFS_SEND_C_UPDATE_EXTENT = 22, - __BTRFS_SEND_C_MAX_V1 = 23, - __BTRFS_SEND_C_MAX_V2 = 24, - __BTRFS_SEND_C_MAX = 25, -}; - -enum { - BTRFS_SEND_A_UNSPEC = 0, - BTRFS_SEND_A_UUID = 1, - BTRFS_SEND_A_CTRANSID = 2, - BTRFS_SEND_A_INO = 3, - BTRFS_SEND_A_SIZE = 4, - BTRFS_SEND_A_MODE = 5, - BTRFS_SEND_A_UID = 6, - BTRFS_SEND_A_GID = 7, - BTRFS_SEND_A_RDEV = 8, - BTRFS_SEND_A_CTIME = 9, - BTRFS_SEND_A_MTIME = 10, - BTRFS_SEND_A_ATIME = 11, - BTRFS_SEND_A_OTIME = 12, - BTRFS_SEND_A_XATTR_NAME = 13, - BTRFS_SEND_A_XATTR_DATA = 14, - BTRFS_SEND_A_PATH = 15, - BTRFS_SEND_A_PATH_TO = 16, - BTRFS_SEND_A_PATH_LINK = 17, - BTRFS_SEND_A_FILE_OFFSET = 18, - BTRFS_SEND_A_DATA = 19, - BTRFS_SEND_A_CLONE_UUID = 20, - BTRFS_SEND_A_CLONE_CTRANSID = 21, - BTRFS_SEND_A_CLONE_PATH = 22, - BTRFS_SEND_A_CLONE_OFFSET = 23, - BTRFS_SEND_A_CLONE_LEN = 24, - __BTRFS_SEND_A_MAX = 25, -}; - -struct fs_path { - union { - struct { - char *start; - char *end; - char *buf; - short unsigned int buf_len: 15; - short unsigned int reversed: 1; - char inline_buf[0]; - }; - char pad[256]; - }; -}; +struct configfs_bin_attribute; -struct clone_root { - struct btrfs_root *root; - u64 ino; - u64 offset; - u64 found_refs; +struct config_item_type { + struct module *ct_owner; + struct configfs_item_operations *ct_item_ops; + struct configfs_group_operations *ct_group_ops; + struct configfs_attribute **ct_attrs; + struct configfs_bin_attribute **ct_bin_attrs; }; -struct send_ctx { - struct file *send_filp; - loff_t send_off; - char *send_buf; - u32 send_size; - u32 send_max_size; - u64 total_send_size; - u64 cmd_send_size[25]; - u64 flags; - u32 proto; - struct btrfs_root *send_root; - struct btrfs_root *parent_root; - struct clone_root *clone_roots; - int clone_roots_cnt; - struct btrfs_path *left_path; - struct btrfs_path *right_path; - struct btrfs_key *cmp_key; - u64 last_reloc_trans; - u64 cur_ino; - u64 cur_inode_gen; - int cur_inode_new; - int cur_inode_new_gen; - int cur_inode_deleted; - u64 cur_inode_size; - u64 cur_inode_mode; - u64 cur_inode_rdev; - u64 cur_inode_last_extent; - u64 cur_inode_next_write_offset; - bool ignore_cur_inode; - u64 send_progress; - struct list_head new_refs; - struct list_head deleted_refs; - struct xarray name_cache; - struct list_head name_cache_list; - int name_cache_size; - struct file_ra_state ra; - struct rb_root pending_dir_moves; - struct rb_root waiting_dir_moves; - struct rb_root orphan_dirs; -}; - -struct pending_dir_move { - struct rb_node node; - struct list_head list; - u64 parent_ino; - u64 ino; - u64 gen; - struct list_head update_refs; +struct configfs_item_operations { + void (*release)(struct config_item *); + int (*allow_link)(struct config_item *, struct config_item *); + void (*drop_link)(struct config_item *, struct config_item *); }; -struct waiting_dir_move { - struct rb_node node; - u64 ino; - u64 rmdir_ino; - u64 rmdir_gen; - bool orphanized; +struct configfs_group_operations { + struct config_item * (*make_item)(struct config_group *, const char *); + struct config_group * (*make_group)(struct config_group *, const char *); + int (*commit_item)(struct config_item *); + void (*disconnect_notify)(struct config_group *, struct config_item *); + void (*drop_item)(struct config_group *, struct config_item *); }; -struct orphan_dir_info { - struct rb_node node; - u64 ino; - u64 gen; - u64 last_dir_index_offset; +struct configfs_attribute { + const char *ca_name; + struct module *ca_owner; + umode_t ca_mode; + ssize_t (*show)(struct config_item *, char *); + ssize_t (*store)(struct config_item *, const char *, size_t); }; -struct name_cache_entry { - struct list_head list; - struct list_head radix_list; - u64 ino; - u64 gen; - u64 parent_ino; - u64 parent_gen; - int ret; - int need_later_update; - int name_len; - char name[0]; +struct configfs_bin_attribute { + struct configfs_attribute cb_attr; + void *cb_private; + size_t cb_max_size; + ssize_t (*read)(struct config_item *, void *, size_t); + ssize_t (*write)(struct config_item *, const void *, size_t); }; -enum btrfs_compare_tree_result { - BTRFS_COMPARE_TREE_NEW = 0, - BTRFS_COMPARE_TREE_DELETED = 1, - BTRFS_COMPARE_TREE_CHANGED = 2, - BTRFS_COMPARE_TREE_SAME = 3, +struct configfs_subsystem { + struct config_group su_group; + struct mutex su_mutex; }; -typedef int (*iterate_inode_ref_t)(int, u64, int, struct fs_path *, void *); - -typedef int (*iterate_dir_item_t)(int, struct btrfs_key *, const char *, int, const char *, int, void *); - -struct backref_ctx { - struct send_ctx *sctx; - u64 found; - u64 cur_objectid; - u64 cur_offset; - u64 extent_len; - int found_itself; +struct configfs_fragment { + atomic_t frag_count; + struct rw_semaphore frag_sem; + bool frag_dead; }; -enum inode_state { - inode_state_no_change = 0, - inode_state_will_create = 1, - inode_state_did_create = 2, - inode_state_will_delete = 3, - inode_state_did_delete = 4, +struct configfs_dirent { + atomic_t s_count; + int s_dependent_count; + struct list_head s_sibling; + struct list_head s_children; + int s_links; + void *s_element; + int s_type; + umode_t s_mode; + struct dentry *s_dentry; + struct iattr *s_iattr; + struct configfs_fragment *s_frag; }; -struct recorded_ref { - struct list_head list; - char *name; - struct fs_path *full_path; - u64 dir; - u64 dir_gen; - int name_len; +struct configfs_buffer { + size_t count; + loff_t pos; + char *page; + struct configfs_item_operations *ops; + struct mutex mutex; + int needs_read_fill; + bool read_in_progress; + bool write_in_progress; + char *bin_buffer; + int bin_buffer_size; + int cb_max_size; + struct config_item *item; + struct module *owner; + union { + struct configfs_attribute *attr; + struct configfs_bin_attribute *bin_attr; + }; }; -struct find_ref_ctx { - u64 dir; - u64 dir_gen; - struct btrfs_root *root; - struct fs_path *name; - int found_idx; +struct pts_mount_opts { + int setuid; + int setgid; + kuid_t uid; + kgid_t gid; + umode_t mode; + umode_t ptmxmode; + int reserve; + int max; }; -struct find_xattr_ctx { - const char *name; - int name_len; - int found_idx; - char *found_data; - int found_data_len; +enum { + Opt_uid___3 = 0, + Opt_gid___4 = 1, + Opt_mode___2 = 2, + Opt_ptmxmode = 3, + Opt_newinstance = 4, + Opt_max = 5, + Opt_err = 6, }; -struct parent_paths_ctx { - struct list_head *refs; - struct send_ctx *sctx; +struct pts_fs_info { + struct ida allocated_ptys; + struct pts_mount_opts mount_opts; + struct super_block *sb; + struct dentry *ptmx_dentry; }; -struct btrfs_qgroup_status_item { - __le64 version; - __le64 generation; - __le64 flags; - __le64 rescan; -}; +typedef unsigned int tid_t; -struct btrfs_qgroup_info_item { - __le64 generation; - __le64 rfer; - __le64 rfer_cmpr; - __le64 excl; - __le64 excl_cmpr; +struct transaction_chp_stats_s { + long unsigned int cs_chp_time; + __u32 cs_forced_to_close; + __u32 cs_written; + __u32 cs_dropped; }; -struct btrfs_qgroup_limit_item { - __le64 flags; - __le64 max_rfer; - __le64 max_excl; - __le64 rsv_rfer; - __le64 rsv_excl; -}; +struct journal_s; -struct btrfs_qgroup_swapped_block { - struct rb_node node; - int level; - bool trace_leaf; - u64 subvol_bytenr; - u64 subvol_generation; - u64 reloc_bytenr; - u64 reloc_generation; - u64 last_snapshot; - struct btrfs_key first_key; -}; - -struct btrfs_qgroup_list { - struct list_head next_group; - struct list_head next_member; - struct btrfs_qgroup *group; - struct btrfs_qgroup *member; -}; - -struct btrfs_dev_replace_item { - __le64 src_devid; - __le64 cursor_left; - __le64 cursor_right; - __le64 cont_reading_from_srcdev_mode; - __le64 replace_state; - __le64 time_started; - __le64 time_stopped; - __le64 num_write_errors; - __le64 num_uncorrectable_read_errors; -}; - -struct prop_handler { - struct hlist_node node; - const char *xattr_name; - int (*validate)(const struct btrfs_inode *, const char *, size_t); - int (*apply)(struct inode *, const char *, size_t); - const char * (*extract)(struct inode *); - bool (*ignore)(const struct btrfs_inode *); - int inheritable; -}; +typedef struct journal_s journal_t; -struct blk_plug_cb; +struct journal_head; -typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool); +struct transaction_s; -struct blk_plug_cb { - struct list_head list; - blk_plug_cb_fn callback; - void *data; -}; +typedef struct transaction_s transaction_t; -struct raid6_calls { - void (*gen_syndrome)(int, size_t, void **); - void (*xor_syndrome)(int, int, int, size_t, void **); - int (*valid)(); - const char *name; - int priority; +struct transaction_s { + journal_t *t_journal; + tid_t t_tid; + enum { + T_RUNNING = 0, + T_LOCKED = 1, + T_SWITCH = 2, + T_FLUSH = 3, + T_COMMIT = 4, + T_COMMIT_DFLUSH = 5, + T_COMMIT_JFLUSH = 6, + T_COMMIT_CALLBACK = 7, + T_FINISHED = 8, + } t_state; + long unsigned int t_log_start; + int t_nr_buffers; + struct journal_head *t_reserved_list; + struct journal_head *t_buffers; + struct journal_head *t_forget; + struct journal_head *t_checkpoint_list; + struct journal_head *t_checkpoint_io_list; + struct journal_head *t_shadow_list; + struct list_head t_inode_list; + spinlock_t t_handle_lock; + long unsigned int t_max_wait; + long unsigned int t_start; + long unsigned int t_requested; + struct transaction_chp_stats_s t_chp_stats; + atomic_t t_updates; + atomic_t t_outstanding_credits; + atomic_t t_outstanding_revokes; + atomic_t t_handle_count; + transaction_t *t_cpnext; + transaction_t *t_cpprev; + long unsigned int t_expires; + ktime_t t_start_time; + unsigned int t_synchronous_commit: 1; + int t_need_data_flush; + struct list_head t_private_list; }; -struct btrfs_stripe_hash { - struct list_head hash_list; - spinlock_t lock; -}; +struct jbd2_buffer_trigger_type; -struct btrfs_stripe_hash_table { - struct list_head stripe_cache; - spinlock_t cache_lock; - int cache_size; - struct btrfs_stripe_hash table[0]; +struct journal_head { + struct buffer_head *b_bh; + spinlock_t b_state_lock; + int b_jcount; + unsigned int b_jlist; + unsigned int b_modified; + char *b_frozen_data; + char *b_committed_data; + transaction_t *b_transaction; + transaction_t *b_next_transaction; + struct journal_head *b_tnext; + struct journal_head *b_tprev; + transaction_t *b_cp_transaction; + struct journal_head *b_cpnext; + struct journal_head *b_cpprev; + struct jbd2_buffer_trigger_type *b_triggers; + struct jbd2_buffer_trigger_type *b_frozen_triggers; }; -enum btrfs_rbio_ops { - BTRFS_RBIO_WRITE = 0, - BTRFS_RBIO_READ_REBUILD = 1, - BTRFS_RBIO_PARITY_SCRUB = 2, - BTRFS_RBIO_REBUILD_MISSING = 3, +struct jbd2_buffer_trigger_type { + void (*t_frozen)(struct jbd2_buffer_trigger_type *, struct buffer_head *, void *, size_t); + void (*t_abort)(struct jbd2_buffer_trigger_type *, struct buffer_head *); }; -struct btrfs_raid_bio { - struct btrfs_io_context *bioc; - struct list_head hash_list; - struct list_head stripe_cache; - struct btrfs_work work; - struct bio_list bio_list; - spinlock_t bio_list_lock; - struct list_head plug_list; - long unsigned int flags; - int stripe_len; - int nr_data; - int real_stripes; - int stripe_npages; - enum btrfs_rbio_ops operation; - int faila; - int failb; - int scrubp; - int nr_pages; - int bio_list_bytes; - int generic_bio_cnt; - refcount_t refs; - atomic_t stripes_pending; - atomic_t error; - struct page **stripe_pages; - struct page **bio_pages; - long unsigned int *dbitmap; - void **finish_pointers; - long unsigned int *finish_pbitmap; -}; +struct jbd2_journal_handle; -struct btrfs_plug_cb { - struct blk_plug_cb cb; - struct btrfs_fs_info *info; - struct list_head rbio_list; - struct btrfs_work work; -}; +typedef struct jbd2_journal_handle handle_t; -struct btrfs_free_space_info { - __le32 extent_count; - __le32 flags; +struct jbd2_journal_handle { + union { + transaction_t *h_transaction; + journal_t *h_journal; + }; + handle_t *h_rsv_handle; + int h_total_credits; + int h_revoke_credits; + int h_revoke_credits_requested; + int h_ref; + int h_err; + unsigned int h_sync: 1; + unsigned int h_jdata: 1; + unsigned int h_reserved: 1; + unsigned int h_aborted: 1; + unsigned int h_type: 8; + unsigned int h_line_no: 16; + long unsigned int h_start_jiffies; + unsigned int h_requested_credits; + unsigned int saved_alloc_context; }; -struct reserve_ticket { - u64 bytes; - int error; - bool steal; - struct list_head list; - wait_queue_head_t wait; +struct transaction_run_stats_s { + long unsigned int rs_wait; + long unsigned int rs_request_delay; + long unsigned int rs_running; + long unsigned int rs_locked; + long unsigned int rs_flushing; + long unsigned int rs_logging; + __u32 rs_handle_count; + __u32 rs_blocks; + __u32 rs_blocks_logged; }; -struct tree_mod_root { - u64 logical; - u8 level; +struct transaction_stats_s { + long unsigned int ts_tid; + long unsigned int ts_requested; + struct transaction_run_stats_s run; }; -struct tree_mod_elem { - struct rb_node node; - u64 logical; - u64 seq; - enum btrfs_mod_log_op op; - int slot; - u64 generation; - struct btrfs_disk_key key; - u64 blockptr; - struct { - int dst_slot; - int nr_items; - } move; - struct tree_mod_root old_root; +enum passtype { + PASS_SCAN = 0, + PASS_REVOKE = 1, + PASS_REPLAY = 2, }; -struct btrfs_verity_descriptor_item { - __le64 size; - __le64 reserved[2]; - __u8 encryption; -} __attribute__((packed)); +struct journal_superblock_s; -enum blk_zone_type { - BLK_ZONE_TYPE_CONVENTIONAL = 1, - BLK_ZONE_TYPE_SEQWRITE_REQ = 2, - BLK_ZONE_TYPE_SEQWRITE_PREF = 3, -}; +typedef struct journal_superblock_s journal_superblock_t; -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 jbd2_revoke_table_s; + +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; + journal_superblock_t *j_superblock; + int j_format_version; + rwlock_t j_state_lock; + int j_barrier_count; + struct mutex j_barrier; + transaction_t *j_running_transaction; + transaction_t *j_committing_transaction; + transaction_t *j_checkpoint_transactions; + wait_queue_head_t j_wait_transaction_locked; + wait_queue_head_t j_wait_done_commit; + wait_queue_head_t j_wait_commit; + wait_queue_head_t j_wait_updates; + wait_queue_head_t j_wait_reserved; + wait_queue_head_t j_fc_wait; + struct mutex j_checkpoint_mutex; + struct buffer_head *j_chkpt_bhs[64]; + struct shrinker j_shrinker; + struct percpu_counter j_checkpoint_jh_count; + transaction_t *j_shrink_transaction; + long unsigned int j_head; + long unsigned int j_tail; + long unsigned int j_free; + long unsigned int j_first; + long unsigned int j_last; + long unsigned int j_fc_first; + long unsigned int j_fc_off; + long unsigned int j_fc_last; + struct block_device *j_dev; + int j_blocksize; + long long unsigned int j_blk_offset; + char j_devname[56]; + struct block_device *j_fs_dev; + unsigned int j_total_len; + atomic_t j_reserved_credits; + spinlock_t j_list_lock; + struct inode *j_inode; + tid_t j_tail_sequence; + tid_t j_transaction_sequence; + tid_t j_commit_sequence; + tid_t j_commit_request; + __u8 j_uuid[16]; + struct task_struct *j_task; + int j_max_transaction_buffers; + int j_revoke_records_per_block; + long unsigned int j_commit_interval; + struct timer_list j_commit_timer; + spinlock_t j_revoke_lock; + struct jbd2_revoke_table_s *j_revoke; + struct jbd2_revoke_table_s *j_revoke_table[2]; + struct buffer_head **j_wbuf; + struct buffer_head **j_fc_wbuf; + int j_wbufsize; + int j_fc_wbufsize; + pid_t j_last_sync_writer; + u64 j_average_commit_time; + u32 j_min_batch_time; + u32 j_max_batch_time; + void (*j_commit_callback)(journal_t *, transaction_t *); + int (*j_submit_inode_data_buffers)(struct jbd2_inode *); + int (*j_finish_inode_data_buffers)(struct jbd2_inode *); + spinlock_t j_history_lock; + struct proc_dir_entry *j_proc_entry; + struct transaction_stats_s j_stats; + unsigned int j_failed_commit; + void *j_private; + struct crypto_shash *j_chksum_driver; + __u32 j_csum_seed; + void (*j_fc_cleanup_callback)(struct journal_s *, int, tid_t); + int (*j_fc_replay_callback)(struct journal_s *, struct buffer_head *, enum passtype, int, tid_t); }; -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 journal_header_s { + __be32 h_magic; + __be32 h_blocktype; + __be32 h_sequence; }; -struct pstore_info; +typedef struct journal_header_s journal_header_t; -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 journal_superblock_s { + journal_header_t s_header; + __be32 s_blocksize; + __be32 s_maxlen; + __be32 s_first; + __be32 s_sequence; + __be32 s_start; + __be32 s_errno; + __be32 s_feature_compat; + __be32 s_feature_incompat; + __be32 s_feature_ro_compat; + __u8 s_uuid[16]; + __be32 s_nr_users; + __be32 s_dynsuper; + __be32 s_max_transaction; + __be32 s_max_trans_data; + __u8 s_checksum_type; + __u8 s_padding2[3]; + __be32 s_num_fc_blks; + __u32 s_padding[41]; + __be32 s_checksum; + __u8 s_users[768]; }; -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 *); +enum jbd_state_bits { + BH_JBD = 16, + BH_JWrite = 17, + BH_Freed = 18, + BH_Revoked = 19, + BH_RevokeValid = 20, + BH_JBDDirty = 21, + BH_JournalHead = 22, + BH_Shadow = 23, + BH_Verified = 24, + BH_JBDPrivateStart = 25, }; -struct pstore_ftrace_record { - long unsigned int ip; - long unsigned int parent_ip; - u64 ts; +struct jbd2_inode { + transaction_t *i_transaction; + transaction_t *i_next_transaction; + struct list_head i_list; + struct inode *i_vfs_inode; + long unsigned int i_flags; + loff_t i_dirty_start; + loff_t i_dirty_end; }; -struct pstore_private { - struct list_head list; - struct dentry *dentry; - struct pstore_record *record; - size_t total_size; +struct bgl_lock { + spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 pstore_ftrace_seq_data { - const void *ptr; - size_t off; - size_t size; +struct blockgroup_lock { + struct bgl_lock locks[128]; }; -enum { - Opt_kmsg_bytes = 0, - Opt_err___6 = 1, -}; +typedef int ext4_grpblk_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; - short unsigned int __pad1; - short unsigned int seq; - long unsigned int __unused1; - long unsigned int __unused2; -}; +typedef long long unsigned int ext4_fsblk_t; -typedef s32 compat_key_t; +typedef __u32 ext4_lblk_t; -typedef u32 __compat_gid32_t; +typedef unsigned int ext4_group_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; - compat_mode_t mode; - short unsigned int __pad1; - short unsigned int seq; - short unsigned int __pad2; - unsigned int __unused1; - unsigned int __unused2; +struct ext4_allocation_request { + struct inode *inode; + unsigned int len; + ext4_lblk_t logical; + ext4_lblk_t lleft; + ext4_lblk_t lright; + ext4_fsblk_t goal; + ext4_fsblk_t pleft; + ext4_fsblk_t pright; + unsigned int flags; }; -struct 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 ext4_system_blocks { + struct rb_root root; + struct callback_head rcu; }; -struct crypto_comp { - struct crypto_tfm base; +struct ext4_group_desc { + __le32 bg_block_bitmap_lo; + __le32 bg_inode_bitmap_lo; + __le32 bg_inode_table_lo; + __le16 bg_free_blocks_count_lo; + __le16 bg_free_inodes_count_lo; + __le16 bg_used_dirs_count_lo; + __le16 bg_flags; + __le32 bg_exclude_bitmap_lo; + __le16 bg_block_bitmap_csum_lo; + __le16 bg_inode_bitmap_csum_lo; + __le16 bg_itable_unused_lo; + __le16 bg_checksum; + __le32 bg_block_bitmap_hi; + __le32 bg_inode_bitmap_hi; + __le32 bg_inode_table_hi; + __le16 bg_free_blocks_count_hi; + __le16 bg_free_inodes_count_hi; + __le16 bg_used_dirs_count_hi; + __le16 bg_itable_unused_hi; + __le32 bg_exclude_bitmap_hi; + __le16 bg_block_bitmap_csum_hi; + __le16 bg_inode_bitmap_csum_hi; + __u32 bg_reserved; }; -struct pstore_zbackend { - int (*zbufsize)(size_t); - const char *name; +struct flex_groups { + atomic64_t free_clusters; + atomic_t free_inodes; + atomic_t used_dirs; }; -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 extent_status { + struct rb_node rb_node; + ext4_lblk_t es_lblk; + ext4_lblk_t es_len; + ext4_fsblk_t es_pblk; }; -struct ipc_params { - key_t key; - int flg; - union { - size_t size; - int nsems; - } u; +struct ext4_es_tree { + struct rb_root root; + struct extent_status *cache_es; }; -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 ext4_es_stats { + long unsigned int es_stats_shrunk; + struct percpu_counter es_stats_cache_hits; + struct percpu_counter es_stats_cache_misses; + u64 es_stats_scan_time; + u64 es_stats_max_scan_time; + struct percpu_counter es_stats_all_cnt; + struct percpu_counter es_stats_shk_cnt; }; -struct ipc_proc_iface { - const char *path; - const char *header; - int ids; - int (*show)(struct seq_file *, void *); +struct ext4_pending_tree { + struct rb_root root; }; -struct ipc_proc_iter { - struct ipc_namespace *ns; - struct pid_namespace *pid_ns; - struct ipc_proc_iface *iface; +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 msg_msgseg; +struct ext4_fc_alloc_region { + ext4_lblk_t lblk; + ext4_fsblk_t pblk; + int ino; + int len; +}; -struct msg_msg { - struct list_head m_list; - long int m_type; - size_t m_ts; - struct msg_msgseg *next; - void *security; +struct ext4_fc_replay_state { + int fc_replay_num_tags; + int fc_replay_expected_off; + int fc_current_pass; + int fc_cur_tag; + int fc_crc; + struct ext4_fc_alloc_region *fc_regions; + int fc_regions_size; + int fc_regions_used; + int fc_regions_valid; + int *fc_modified_inodes; + int fc_modified_inodes_used; + int fc_modified_inodes_size; }; -struct msg_msgseg { - struct msg_msgseg *next; +struct ext4_inode_info { + __le32 i_data[15]; + __u32 i_dtime; + ext4_fsblk_t i_file_acl; + ext4_group_t i_block_group; + ext4_lblk_t i_dir_start_lookup; + long unsigned int i_flags; + struct rw_semaphore xattr_sem; + 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; + atomic_t i_fc_updates; + wait_queue_head_t i_fc_wait; + struct mutex i_fc_lock; + loff_t i_disksize; + struct rw_semaphore i_data_sem; + struct inode vfs_inode; + struct jbd2_inode *jinode; + spinlock_t i_raw_lock; + struct timespec64 i_crtime; + atomic_t i_prealloc_active; + struct list_head i_prealloc_list; + spinlock_t i_prealloc_lock; + struct ext4_es_tree i_es_tree; + rwlock_t i_es_lock; + struct list_head i_es_list; + unsigned int i_es_all_nr; + unsigned int i_es_shk_nr; + ext4_lblk_t i_es_shrink_lblk; + ext4_group_t i_last_alloc_group; + unsigned int i_reserved_data_blocks; + struct ext4_pending_tree i_pending_tree; + __u16 i_extra_isize; + u16 i_inline_off; + u16 i_inline_size; + qsize_t i_reserved_quota; + spinlock_t i_completed_io_lock; + struct list_head i_rsv_conversion_list; + struct work_struct i_rsv_conversion_work; + atomic_t i_unwritten; + spinlock_t i_block_reservation_lock; + tid_t i_sync_tid; + tid_t i_datasync_tid; + struct dquot *i_dquot[3]; + __u32 i_csum_seed; + kprojid_t i_projid; +}; + +struct ext4_super_block { + __le32 s_inodes_count; + __le32 s_blocks_count_lo; + __le32 s_r_blocks_count_lo; + __le32 s_free_blocks_count_lo; + __le32 s_free_inodes_count; + __le32 s_first_data_block; + __le32 s_log_block_size; + __le32 s_log_cluster_size; + __le32 s_blocks_per_group; + __le32 s_clusters_per_group; + __le32 s_inodes_per_group; + __le32 s_mtime; + __le32 s_wtime; + __le16 s_mnt_count; + __le16 s_max_mnt_count; + __le16 s_magic; + __le16 s_state; + __le16 s_errors; + __le16 s_minor_rev_level; + __le32 s_lastcheck; + __le32 s_checkinterval; + __le32 s_creator_os; + __le32 s_rev_level; + __le16 s_def_resuid; + __le16 s_def_resgid; + __le32 s_first_ino; + __le16 s_inode_size; + __le16 s_block_group_nr; + __le32 s_feature_compat; + __le32 s_feature_incompat; + __le32 s_feature_ro_compat; + __u8 s_uuid[16]; + char s_volume_name[16]; + char s_last_mounted[64]; + __le32 s_algorithm_usage_bitmap; + __u8 s_prealloc_blocks; + __u8 s_prealloc_dir_blocks; + __le16 s_reserved_gdt_blocks; + __u8 s_journal_uuid[16]; + __le32 s_journal_inum; + __le32 s_journal_dev; + __le32 s_last_orphan; + __le32 s_hash_seed[4]; + __u8 s_def_hash_version; + __u8 s_jnl_backup_type; + __le16 s_desc_size; + __le32 s_default_mount_opts; + __le32 s_first_meta_bg; + __le32 s_mkfs_time; + __le32 s_jnl_blocks[17]; + __le32 s_blocks_count_hi; + __le32 s_r_blocks_count_hi; + __le32 s_free_blocks_count_hi; + __le16 s_min_extra_isize; + __le16 s_want_extra_isize; + __le32 s_flags; + __le16 s_raid_stride; + __le16 s_mmp_update_interval; + __le64 s_mmp_block; + __le32 s_raid_stripe_width; + __u8 s_log_groups_per_flex; + __u8 s_checksum_type; + __u8 s_encryption_level; + __u8 s_reserved_pad; + __le64 s_kbytes_written; + __le32 s_snapshot_inum; + __le32 s_snapshot_id; + __le64 s_snapshot_r_blocks_count; + __le32 s_snapshot_list; + __le32 s_error_count; + __le32 s_first_error_time; + __le32 s_first_error_ino; + __le64 s_first_error_block; + __u8 s_first_error_func[32]; + __le32 s_first_error_line; + __le32 s_last_error_time; + __le32 s_last_error_ino; + __le32 s_last_error_line; + __le64 s_last_error_block; + __u8 s_last_error_func[32]; + __u8 s_mount_opts[64]; + __le32 s_usr_quota_inum; + __le32 s_grp_quota_inum; + __le32 s_overhead_clusters; + __le32 s_backup_bgs[2]; + __u8 s_encrypt_algos[4]; + __u8 s_encrypt_pw_salt[16]; + __le32 s_lpf_ino; + __le32 s_prj_quota_inum; + __le32 s_checksum_seed; + __u8 s_wtime_hi; + __u8 s_mtime_hi; + __u8 s_mkfs_time_hi; + __u8 s_lastcheck_hi; + __u8 s_first_error_time_hi; + __u8 s_last_error_time_hi; + __u8 s_first_error_errcode; + __u8 s_last_error_errcode; + __le16 s_encoding; + __le16 s_encoding_flags; + __le32 s_orphan_file_inum; + __le32 s_reserved[94]; + __le32 s_checksum; }; -typedef int __kernel_ipc_pid_t; - -struct msgbuf { - __kernel_long_t mtype; - char mtext[1]; +struct ext4_journal_trigger { + struct jbd2_buffer_trigger_type tr_triggers; + struct super_block *sb; }; -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; +struct ext4_orphan_block { + atomic_t ob_free_entries; + struct buffer_head *ob_bh; }; -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 ext4_orphan_info { + int of_blocks; + __u32 of_csum_seed; + struct ext4_orphan_block *of_binfo; }; -struct msginfo { - int msgpool; - int msgmap; - int msgmax; - int msgmnb; - int msgmni; - int msgssz; - int msgtql; - short unsigned int msgseg; -}; +struct ext4_group_info; -typedef u16 compat_ipc_pid_t; +struct ext4_locality_group; -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 __unused1; - compat_ulong_t __unused2; -}; +struct ext4_li_request; -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; +struct ext4_sb_info { + long unsigned int s_desc_size; + long unsigned int s_inodes_per_block; + long unsigned int s_blocks_per_group; + long unsigned int s_clusters_per_group; + long unsigned int s_inodes_per_group; + long unsigned int s_itb_per_group; + long unsigned int s_gdb_count; + long unsigned int s_desc_per_block; + ext4_group_t s_groups_count; + ext4_group_t s_blockfile_groups; + long unsigned int s_overhead; + unsigned int s_cluster_ratio; + unsigned int s_cluster_bits; + loff_t s_bitmap_maxbytes; + struct buffer_head *s_sbh; + struct ext4_super_block *s_es; + struct buffer_head **s_group_desc; + unsigned int s_mount_opt; + unsigned int s_mount_opt2; + long unsigned int s_mount_flags; + unsigned int s_def_mount_opt; + ext4_fsblk_t s_sb_block; + atomic64_t s_resv_clusters; + kuid_t s_resuid; + kgid_t s_resgid; + short unsigned int s_mount_state; + short unsigned int s_pad; + int s_addr_per_block_bits; + int s_desc_per_block_bits; + int s_inode_size; + int s_first_ino; + unsigned int s_inode_readahead_blks; + unsigned int s_inode_goal; + u32 s_hash_seed[4]; + int s_def_hash_version; + int s_hash_unsigned; + struct percpu_counter s_freeclusters_counter; + struct percpu_counter s_freeinodes_counter; + struct percpu_counter s_dirs_counter; + struct percpu_counter s_dirtyclusters_counter; + struct percpu_counter s_sra_exceeded_retry_limit; + struct blockgroup_lock *s_blockgroup_lock; + struct proc_dir_entry *s_proc; + struct kobject s_kobj; + struct completion s_kobj_unregister; + struct super_block *s_sb; + struct buffer_head *s_mmp_bh; + struct journal_s *s_journal; + 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; + struct block_device *s_journal_bdev; + char *s_qf_names[3]; + int s_jquota_fmt; + unsigned int s_want_extra_isize; + struct ext4_system_blocks *s_system_blks; + struct ext4_group_info ***s_group_info; + struct inode *s_buddy_cache; + spinlock_t s_md_lock; + short unsigned int *s_mb_offsets; + unsigned int *s_mb_maxs; + unsigned int s_group_info_size; + unsigned int s_mb_free_pending; + struct list_head s_freed_data_list; + struct list_head s_discard_list; + struct work_struct s_discard_work; + atomic_t s_retry_alloc_pending; + struct 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; + unsigned int s_mb_stats; + unsigned int s_mb_order2_reqs; + unsigned int s_mb_group_prealloc; + unsigned int s_mb_max_inode_prealloc; + unsigned int s_max_dir_size_kb; + long unsigned int s_mb_last_group; + long unsigned int s_mb_last_start; + unsigned int s_mb_prefetch; + unsigned int s_mb_prefetch_limit; + atomic_t s_bal_reqs; + atomic_t s_bal_success; + atomic_t s_bal_allocated; + atomic_t s_bal_ex_scanned; + atomic_t s_bal_groups_scanned; + atomic_t s_bal_goals; + atomic_t s_bal_breaks; + atomic_t s_bal_2orders; + 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; + atomic_t s_lock_busy; + struct ext4_locality_group *s_locality_groups; + long unsigned int s_sectors_written_start; + u64 s_kbytes_written; + unsigned int s_extent_max_zeroout_kb; + unsigned int s_log_groups_per_flex; + struct flex_groups **s_flex_groups; + ext4_group_t s_flex_groups_allocated; + struct workqueue_struct *rsv_conversion_wq; + struct timer_list s_err_report; + struct ext4_li_request *s_li_request; + unsigned int s_li_wait_mult; + struct task_struct *s_mmp_tsk; + atomic_t s_last_trim_minblks; + struct crypto_shash *s_chksum_driver; + __u32 s_csum_seed; + struct shrinker s_es_shrinker; + struct list_head s_es_list; + long int s_es_nr_inode; + struct ext4_es_stats s_es_stats; + struct mb_cache *s_ea_block_cache; + struct mb_cache *s_ea_inode_cache; long: 64; long: 64; + spinlock_t s_es_lock; + struct ext4_journal_trigger s_journal_triggers[1]; + struct ratelimit_state s_err_ratelimit_state; + struct ratelimit_state s_warning_ratelimit_state; + struct ratelimit_state s_msg_ratelimit_state; + atomic_t s_warning_count; + atomic_t s_msg_count; + struct fscrypt_dummy_policy s_dummy_enc_policy; + struct percpu_rw_semaphore s_writepages_rwsem; + struct dax_device *s_daxdev; + errseq_t s_bdev_wb_err; + spinlock_t s_bdev_wb_lock; + spinlock_t s_error_lock; + int s_add_error_count; + int s_first_error_code; + __u32 s_first_error_line; + __u32 s_first_error_ino; + __u64 s_first_error_block; + const char *s_first_error_func; + time64_t s_first_error_time; + int s_last_error_code; + __u32 s_last_error_line; + __u32 s_last_error_ino; + __u64 s_last_error_block; + const char *s_last_error_func; + time64_t s_last_error_time; + struct work_struct s_error_work; + atomic_t s_fc_subtid; + struct list_head s_fc_q[2]; + struct list_head s_fc_dentry_q[2]; + unsigned int s_fc_bytes; + spinlock_t s_fc_lock; + struct buffer_head *s_fc_bh; + struct ext4_fc_stats s_fc_stats; + tid_t s_fc_ineligible_tid; + struct ext4_fc_replay_state s_fc_replay_state; long: 64; long: 64; long: 64; @@ -55977,6399 +48267,5922 @@ struct msg_queue { long: 64; }; -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 msg_sender { - struct list_head list; - struct task_struct *tsk; - size_t msgsz; -}; - -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 compat_msgbuf { - compat_long_t mtype; - char mtext[1]; +struct ext4_group_info { + long unsigned int bb_state; + struct rb_root bb_free_root; + ext4_grpblk_t bb_first_free; + 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]; }; -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 ext4_locality_group { + struct mutex lg_mutex; + struct list_head lg_prealloc_list[10]; + spinlock_t lg_prealloc_lock; }; -struct shmid64_ds { - struct ipc64_perm shm_perm; - __kernel_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; +enum ext4_li_mode { + EXT4_LI_MODE_PREFETCH_BBITMAP = 0, + EXT4_LI_MODE_ITABLE = 1, }; -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 ext4_li_request { + struct super_block *lr_super; + enum ext4_li_mode lr_mode; + ext4_group_t lr_first_not_zeroed; + ext4_group_t lr_next_group; + struct list_head lr_request; + long unsigned int lr_next_sched; + long unsigned int lr_timeout; }; -struct shminfo { - int shmmax; - int shmmin; - int shmmni; - int shmseg; - int shmall; +struct ext4_map_blocks { + ext4_fsblk_t m_pblk; + ext4_lblk_t m_lblk; + unsigned int m_len; + unsigned int m_flags; }; -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; -}; +typedef enum { + EXT4_IGET_NORMAL = 0, + EXT4_IGET_SPECIAL = 1, + EXT4_IGET_HANDLE = 2, + EXT4_IGET_BAD = 4, + EXT4_IGET_EA_INODE = 8, +} ext4_iget_flags; -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 __unused1; - compat_ulong_t __unused2; +struct ext4_system_zone { + struct rb_node node; + ext4_fsblk_t start_blk; + unsigned int count; + u32 ino; }; -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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; +enum { + EXT4_INODE_SECRM = 0, + EXT4_INODE_UNRM = 1, + EXT4_INODE_COMPR = 2, + EXT4_INODE_SYNC = 3, + EXT4_INODE_IMMUTABLE = 4, + EXT4_INODE_APPEND = 5, + EXT4_INODE_NODUMP = 6, + EXT4_INODE_NOATIME = 7, + EXT4_INODE_DIRTY = 8, + EXT4_INODE_COMPRBLK = 9, + EXT4_INODE_NOCOMPR = 10, + EXT4_INODE_ENCRYPT = 11, + EXT4_INODE_INDEX = 12, + EXT4_INODE_IMAGIC = 13, + EXT4_INODE_JOURNAL_DATA = 14, + EXT4_INODE_NOTAIL = 15, + EXT4_INODE_DIRSYNC = 16, + EXT4_INODE_TOPDIR = 17, + EXT4_INODE_HUGE_FILE = 18, + EXT4_INODE_EXTENTS = 19, + EXT4_INODE_VERITY = 20, + EXT4_INODE_EA_INODE = 21, + EXT4_INODE_DAX = 25, + EXT4_INODE_INLINE_DATA = 28, + EXT4_INODE_PROJINHERIT = 29, + EXT4_INODE_CASEFOLD = 30, + EXT4_INODE_RESERVED = 31, }; -struct shm_file_data { - int id; - struct ipc_namespace *ns; - struct file *file; - const struct vm_operations_struct *vm_ops; +enum { + EXT4_FC_REASON_XATTR = 0, + EXT4_FC_REASON_CROSS_RENAME = 1, + EXT4_FC_REASON_JOURNAL_FLAG_CHANGE = 2, + EXT4_FC_REASON_NOMEM = 3, + EXT4_FC_REASON_SWAP_BOOT = 4, + EXT4_FC_REASON_RESIZE = 5, + EXT4_FC_REASON_RENAME_DIR = 6, + EXT4_FC_REASON_FALLOC_RANGE = 7, + EXT4_FC_REASON_INODE_JOURNAL_DATA = 8, + EXT4_FC_REASON_ENCRYPTED_FILENAME = 9, + EXT4_FC_REASON_MAX = 10, }; -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; +enum ext4_journal_trigger_type { + EXT4_JTR_ORPHAN_FILE = 0, + EXT4_JTR_NONE = 1, }; -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 ext4_dir_entry_hash { + __le32 hash; + __le32 minor_hash; }; -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 ext4_dir_entry_2 { + __le32 inode; + __le16 rec_len; + __u8 name_len; + __u8 file_type; + char name[255]; }; -struct sem; +struct fname; -struct sem_queue; +struct dir_private_info { + struct rb_root root; + struct rb_node *curr_node; + struct fname *extra_fname; + loff_t last_pos; + __u32 curr_hash; + __u32 curr_minor_hash; + __u32 next_hash; +}; -struct sem_undo; +struct fname { + __u32 hash; + __u32 minor_hash; + struct rb_node rb_hash; + struct fname *next; + __u32 inode; + __u8 name_len; + __u8 file_type; + char name[0]; +}; -struct 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; +enum SHIFT_DIRECTION { + SHIFT_LEFT = 0, + SHIFT_RIGHT = 1, }; -struct sem { - int semval; - struct pid *sempid; - spinlock_t lock; - struct list_head pending_alter; - struct list_head pending_const; - time64_t sem_otime; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 ext4_io_end_vec { + struct list_head list; + loff_t offset; + ssize_t size; }; -struct sem_queue { +struct ext4_io_end { 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; + handle_t *handle; + struct inode *inode; + struct bio *bio; + unsigned int flag; + atomic_t count; + struct list_head list_vec; }; -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; +typedef struct ext4_io_end ext4_io_end_t; + +enum { + ES_WRITTEN_B = 0, + ES_UNWRITTEN_B = 1, + ES_DELAYED_B = 2, + ES_HOLE_B = 3, + ES_REFERENCED_B = 4, + ES_FLAGS = 5, }; -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; +enum { + EXT4_STATE_JDATA = 0, + EXT4_STATE_NEW = 1, + EXT4_STATE_XATTR = 2, + EXT4_STATE_NO_EXPAND = 3, + EXT4_STATE_DA_ALLOC_CLOSE = 4, + EXT4_STATE_EXT_MIGRATE = 5, + EXT4_STATE_NEWENTRY = 6, + EXT4_STATE_MAY_INLINE_DATA = 7, + EXT4_STATE_EXT_PRECACHED = 8, + EXT4_STATE_LUSTRE_EA_INODE = 9, + EXT4_STATE_VERITY_IN_PROGRESS = 10, + EXT4_STATE_FC_COMMITTING = 11, + EXT4_STATE_ORPHAN_FILE = 12, }; -struct seminfo { - int semmap; - int semmni; - int semmns; - int semmnu; - int semmsl; - int semopm; - int semume; - int semusz; - int semvmx; - int semaem; +struct ext4_iloc { + struct buffer_head *bh; + long unsigned int offset; + ext4_group_t block_group; }; -struct sem_undo_list { - refcount_t refcnt; - spinlock_t lock; - struct list_head list_proc; +struct ext4_extent_tail { + __le32 et_checksum; }; -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 __unused1; - compat_ulong_t __unused2; +struct ext4_extent { + __le32 ee_block; + __le16 ee_len; + __le16 ee_start_hi; + __le32 ee_start_lo; }; -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; - long: 64; - long: 64; - long: 64; - long: 64; - 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 sem sems[0]; +struct ext4_extent_idx { + __le32 ei_block; + __le32 ei_leaf_lo; + __le16 ei_leaf_hi; + __u16 ei_unused; }; -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 ext4_extent_header { + __le16 eh_magic; + __le16 eh_entries; + __le16 eh_max; + __le16 eh_depth; + __le32 eh_generation; }; -struct msgbuf; +struct ext4_ext_path { + ext4_fsblk_t p_block; + __u16 p_depth; + __u16 p_maxdepth; + struct ext4_extent *p_ext; + struct ext4_extent_idx *p_idx; + struct ext4_extent_header *p_hdr; + struct buffer_head *p_bh; +}; -struct ipc_kludge { - struct msgbuf *msgp; - long int msgtyp; +struct partial_cluster { + ext4_fsblk_t pclu; + ext4_lblk_t lblk; + enum { + initial = 0, + tofree = 1, + nofree = 2, + } state; }; -struct compat_ipc_kludge { - compat_uptr_t msgp; - compat_long_t msgtyp; +struct pending_reservation { + struct rb_node rb_node; + ext4_lblk_t lclu; +}; + +struct rsvd_count { + int ndelonly; + bool first_do_lblk_found; + ext4_lblk_t first_do_lblk; + ext4_lblk_t last_do_lblk; + struct extent_status *left_es; + bool partial; + ext4_lblk_t lclu; }; -struct msqid_ds; +enum { + EXT4_MF_MNTDIR_SAMPLED = 0, + EXT4_MF_FS_ABORTED = 1, + EXT4_MF_FC_INELIGIBLE = 2, +}; -struct mqueue_fs_context { - struct ipc_namespace *ipc_ns; - bool newns; +struct fsmap { + __u32 fmr_device; + __u32 fmr_flags; + __u64 fmr_physical; + __u64 fmr_owner; + __u64 fmr_offset; + __u64 fmr_length; + __u64 fmr_reserved[3]; }; -struct posix_msg_tree_node { - struct rb_node rb_node; - struct list_head msg_list; - int priority; +struct ext4_fsmap { + struct list_head fmr_list; + dev_t fmr_device; + uint32_t fmr_flags; + uint64_t fmr_physical; + uint64_t fmr_owner; + uint64_t fmr_length; }; -struct ext_wait_queue { - struct task_struct *task; - struct list_head list; - struct msg_msg *msg; - int state; +struct ext4_fsmap_head { + uint32_t fmh_iflags; + uint32_t fmh_oflags; + unsigned int fmh_count; + unsigned int fmh_entries; + struct ext4_fsmap fmh_keys[2]; }; -struct 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; +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; + void *gfi_format_arg; + ext4_fsblk_t gfi_next_fsblk; + u32 gfi_dev; + ext4_group_t gfi_agno; + struct ext4_fsmap gfi_low; + struct ext4_fsmap gfi_high; + struct ext4_fsmap gfi_lastfree; + struct list_head gfi_meta_list; + bool gfi_last; }; -struct 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 ext4_getfsmap_dev { + int (*gfd_fn)(struct super_block *, struct ext4_fsmap *, struct ext4_getfsmap_info *); + u32 gfd_dev; }; -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 dx_hash_info { + u32 hash; + u32 minor_hash; + int hash_version; + u32 *seed; }; -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, +typedef unsigned int __kernel_mode_t; + +typedef __kernel_mode_t mode_t; + +struct ext4_inode { + __le16 i_mode; + __le16 i_uid; + __le32 i_size_lo; + __le32 i_atime; + __le32 i_ctime; + __le32 i_mtime; + __le32 i_dtime; + __le16 i_gid; + __le16 i_links_count; + __le32 i_blocks_lo; + __le32 i_flags; + union { + struct { + __le32 l_i_version; + } linux1; + struct { + __u32 h_i_translator; + } hurd1; + struct { + __u32 m_i_reserved1; + } masix1; + } osd1; + __le32 i_block[15]; + __le32 i_generation; + __le32 i_file_acl_lo; + __le32 i_size_high; + __le32 i_obso_faddr; + union { + struct { + __le16 l_i_blocks_high; + __le16 l_i_file_acl_high; + __le16 l_i_uid_high; + __le16 l_i_gid_high; + __le16 l_i_checksum_lo; + __le16 l_i_reserved; + } linux2; + struct { + __le16 h_i_reserved1; + __u16 h_i_mode_high; + __u16 h_i_uid_high; + __u16 h_i_gid_high; + __u32 h_i_author; + } hurd2; + struct { + __le16 h_i_reserved1; + __le16 m_i_file_acl_high; + __u32 m_i_reserved2[2]; + } masix2; + } osd2; + __le16 i_extra_isize; + __le16 i_checksum_hi; + __le32 i_ctime_extra; + __le32 i_mtime_extra; + __le32 i_atime_extra; + __le32 i_crtime; + __le32 i_crtime_extra; + __le32 i_version_hi; + __le32 i_projid; }; -struct key_notification { - struct watch_notification watch; - __u32 key_id; - __u32 aux; +struct orlov_stats { + __u64 free_clusters; + __u32 free_inodes; + __u32 used_dirs; }; -struct assoc_array_edit; +typedef struct { + __le32 *p; + __le32 key; + struct buffer_head *bh; +} Indirect; -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 ext4_filename { + const struct qstr *usr_fname; + struct fscrypt_str disk_name; + struct dx_hash_info hinfo; + struct fscrypt_str crypto_buf; + struct fscrypt_str cf_name; }; -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 ext4_xattr_ibody_header { + __le32 h_magic; }; -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 ext4_xattr_entry { + __u8 e_name_len; + __u8 e_name_index; + __le16 e_value_offs; + __le32 e_value_inum; + __le32 e_value_size; + __le32 e_hash; + char e_name[0]; }; -struct 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 ext4_xattr_info { + const char *name; + const void *value; + size_t value_len; + int name_index; + int in_inode; +}; + +struct ext4_xattr_search { + struct ext4_xattr_entry *first; + void *base; + void *end; + struct ext4_xattr_entry *here; + int not_found; }; -struct 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 ext4_xattr_ibody_find { + struct ext4_xattr_search s; + struct ext4_iloc iloc; }; -struct keyring_read_iterator_context { - size_t buflen; - size_t count; - key_serial_t *buffer; -}; +typedef short unsigned int __kernel_uid16_t; -struct keyctl_dh_params { - union { - __s32 private; - __s32 priv; - }; - __s32 prime; - __s32 base; +typedef short unsigned int __kernel_gid16_t; + +typedef __kernel_uid16_t uid16_t; + +typedef __kernel_gid16_t gid16_t; + +struct ext4_io_submit { + struct writeback_control *io_wbc; + struct bio *io_bio; + ext4_io_end_t *io_end; + sector_t io_next_block; }; -struct keyctl_kdf_params { - char *hashname; - char *otherinfo; - __u32 otherinfolen; - __u32 __spare[8]; +struct ext4_xattr_inode_array { + unsigned int count; + struct inode *inodes[0]; }; -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 mpage_da_data { + struct inode *inode; + struct writeback_control *wbc; + long unsigned int first_page; + long unsigned int next_page; + long unsigned int last_page; + struct ext4_map_blocks map; + struct ext4_io_submit io_submit; + unsigned int do_map: 1; + unsigned int scanned_until_end: 1; }; -struct keyctl_pkey_params { - __s32 key_id; - __u32 in_len; - union { - __u32 out_len; - __u32 in2_len; - }; - __u32 __spare[7]; +struct fstrim_range { + __u64 start; + __u64 len; + __u64 minlen; }; -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 ext4_new_group_input { + __u32 group; + __u64 block_bitmap; + __u64 inode_bitmap; + __u64 inode_table; + __u32 blocks_count; + __u16 reserved_blocks; + __u16 unused; }; -struct compat_keyctl_kdf_params { - compat_uptr_t hashname; - compat_uptr_t otherinfo; - __u32 otherinfolen; - __u32 __spare[8]; +struct compat_ext4_new_group_input { + u32 group; + compat_u64 block_bitmap; + compat_u64 inode_bitmap; + compat_u64 inode_table; + u32 blocks_count; + u16 reserved_blocks; + u16 unused; }; -struct kpp_request { - struct crypto_async_request base; - struct scatterlist *src; - struct scatterlist *dst; - unsigned int src_len; - unsigned int dst_len; - void *__ctx[0]; +struct ext4_new_group_data { + __u32 group; + __u64 block_bitmap; + __u64 inode_bitmap; + __u64 inode_table; + __u32 blocks_count; + __u16 reserved_blocks; + __u16 mdata_blocks; + __u32 free_clusters_count; }; -struct crypto_kpp { - struct crypto_tfm base; +struct move_extent { + __u32 reserved; + __u32 donor_fd; + __u64 orig_start; + __u64 donor_start; + __u64 len; + __u64 moved_len; }; -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; - struct crypto_alg base; +struct fsmap_head { + __u32 fmh_iflags; + __u32 fmh_oflags; + __u32 fmh_count; + __u32 fmh_entries; + __u64 fmh_reserved[6]; + struct fsmap fmh_keys[2]; + struct fsmap fmh_recs[0]; }; -struct dh { - const void *key; - const void *p; - const void *g; - unsigned int key_size; - unsigned int p_size; - unsigned int g_size; +struct getfsmap_info { + struct super_block *gi_sb; + struct fsmap_head *gi_data; + unsigned int gi_idx; + __u32 gi_last_flags; }; -struct dh_completion { - struct completion completion; - int err; +enum blk_default_limits { + BLK_MAX_SEGMENTS = 128, + BLK_SAFE_MAX_SECTORS = 255, + BLK_DEF_MAX_SECTORS = 2560, + BLK_MAX_SEGMENT_SIZE = 65536, + BLK_SEG_BOUNDARY_MASK = 4294967295, }; -enum { - Opt_err___7 = 0, - Opt_enc = 1, - Opt_hash = 2, +struct ext4_free_data { + struct list_head efd_list; + struct rb_node efd_node; + ext4_group_t efd_group; + ext4_grpblk_t efd_start_cluster; + ext4_grpblk_t efd_count; + tid_t efd_tid; }; -enum chacha20poly1305_lengths { - XCHACHA20POLY1305_NONCE_SIZE = 24, - CHACHA20POLY1305_KEY_SIZE = 32, - CHACHA20POLY1305_AUTHTAG_SIZE = 16, +struct ext4_prealloc_space { + struct list_head pa_inode_list; + struct list_head pa_group_list; + union { + struct list_head pa_tmp_list; + struct callback_head pa_rcu; + } u; + spinlock_t pa_lock; + atomic_t pa_count; + unsigned int pa_deleted; + ext4_fsblk_t pa_pstart; + ext4_lblk_t pa_lstart; + ext4_grpblk_t pa_len; + ext4_grpblk_t pa_free; + short unsigned int pa_type; + spinlock_t *pa_obj_lock; + struct inode *pa_inode; }; enum { - big_key_data = 0, - big_key_path = 1, - big_key_path_2nd_part = 2, - big_key_len = 3, + MB_INODE_PA = 0, + MB_GROUP_PA = 1, }; -enum tpm_duration { - TPM_SHORT = 0, - TPM_MEDIUM = 1, - TPM_LONG = 2, - TPM_LONG_LONG = 3, - TPM_UNDEFINED = 4, - TPM_NUM_DURATIONS = 4, +struct ext4_free_extent { + ext4_lblk_t fe_logical; + ext4_grpblk_t fe_start; + ext4_group_t fe_group; + ext4_grpblk_t fe_len; }; -struct 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 ext4_allocation_context { + struct inode *ac_inode; + struct super_block *ac_sb; + struct ext4_free_extent ac_o_ex; + struct ext4_free_extent ac_g_ex; + struct ext4_free_extent ac_b_ex; + struct ext4_free_extent ac_f_ex; + ext4_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; + __u8 ac_status; + __u8 ac_criteria; + __u8 ac_2order; + __u8 ac_op; + struct page *ac_bitmap_page; + struct page *ac_buddy_page; + struct ext4_prealloc_space *ac_pa; + struct ext4_locality_group *ac_lg; }; -struct 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 ext4_buddy { + struct page *bd_buddy_page; + void *bd_buddy; + struct page *bd_bitmap_page; + void *bd_bitmap; + struct ext4_group_info *bd_info; + struct super_block *bd_sb; + __u16 bd_blkbits; + ext4_group_t bd_group; }; -struct trusted_key_source { - char *name; - struct trusted_key_ops *ops; +struct sg { + struct ext4_group_info info; + ext4_grpblk_t counters[18]; }; -enum { - Opt_err___8 = 0, - Opt_new = 1, - Opt_load = 2, - Opt_update = 3, +struct migrate_struct { + ext4_lblk_t first_block; + ext4_lblk_t last_block; + ext4_lblk_t curr_block; + ext4_fsblk_t first_pblock; + ext4_fsblk_t last_pblock; }; -struct 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 mmp_struct { + __le32 mmp_magic; + __le32 mmp_seq; + __le64 mmp_time; + char mmp_nodename[64]; + char mmp_bdevname[32]; + __le16 mmp_check_interval; + __le16 mmp_pad1; + __le32 mmp_pad2[226]; + __le32 mmp_checksum; }; -struct tpm_digest { - u16 alg_id; - u8 digest[64]; +struct ext4_dir_entry { + __le32 inode; + __le16 rec_len; + __le16 name_len; + char name[255]; }; -struct tpm_bank_info { - u16 alg_id; - u16 digest_size; - u16 crypto_id; +struct ext4_dir_entry_tail { + __le32 det_reserved_zero1; + __le16 det_rec_len; + __u8 det_reserved_zero2; + __u8 det_reserved_ft; + __le32 det_checksum; }; -struct tpm_chip; +typedef enum { + EITHER = 0, + INDEX = 1, + DIRENT = 2, + DIRENT_HTREE = 3, +} dirblock_type_t; -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 fake_dirent { + __le32 inode; + __le16 rec_len; + u8 name_len; + u8 file_type; }; -struct tpm_bios_log { - void *bios_event_log; - void *bios_event_log_end; +struct dx_countlimit { + __le16 limit; + __le16 count; }; -struct tpm_chip_seqops { - struct tpm_chip *chip; - const struct seq_operations *seqops; +struct dx_entry { + __le32 hash; + __le32 block; }; -struct tpm_space { - u32 context_tbl[3]; - u8 *context_buf; - u32 session_tbl[3]; - u8 *session_buf; - u32 buf_size; +struct dx_root_info { + __le32 reserved_zero; + u8 hash_version; + u8 info_length; + u8 indirect_levels; + u8 unused_flags; }; -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; - struct tpm_space work_space; - u32 last_cc; - u32 nr_commands; - u32 *cc_attrs_tbl; - int locality; +struct dx_root { + struct fake_dirent dot; + char dot_name[4]; + struct fake_dirent dotdot; + char dotdot_name[4]; + struct dx_root_info info; + struct dx_entry entries[0]; }; -struct tpm_header { - __be16 tag; - __be32 length; - union { - __be32 ordinal; - __be32 return_code; - }; -} __attribute__((packed)); +struct dx_node { + struct fake_dirent fake; + struct dx_entry entries[0]; +}; -enum tpm_buf_flags { - TPM_BUF_OVERFLOW = 1, +struct dx_frame { + struct buffer_head *bh; + struct dx_entry *entries; + struct dx_entry *at; }; -struct tpm_buf { - unsigned int flags; - u8 *data; +struct dx_map_entry { + u32 hash; + u16 offs; + u16 size; }; -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 dx_tail { + u32 dt_reserved; + __le32 dt_checksum; }; -struct osapsess { - uint32_t handle; - unsigned char secret[20]; - unsigned char enonce[20]; +struct ext4_renament { + struct inode *dir; + struct dentry *dentry; + struct inode *inode; + bool is_dir; + int dir_nlink_delta; + struct buffer_head *bh; + struct ext4_dir_entry_2 *de; + int inlined; + struct buffer_head *dir_bh; + struct ext4_dir_entry_2 *parent_de; + int dir_inlined; +}; + +enum bio_post_read_step { + STEP_INITIAL = 0, + STEP_DECRYPT = 1, + STEP_VERITY = 2, + STEP_MAX = 3, +}; + +struct bio_post_read_ctx { + struct bio *bio; + struct work_struct work; + unsigned int cur_step; + unsigned int enabled_steps; }; enum { - SEAL_keytype = 1, - SRK_keytype = 4, + BLOCK_BITMAP = 0, + INODE_BITMAP = 1, + INODE_TABLE = 2, + GROUP_TABLE_COUNT = 3, }; -struct sdesc { - struct shash_desc shash; - char ctx[0]; +struct ext4_rcu_ptr { + struct callback_head rcu; + void *ptr; }; -struct tpm_digests { - unsigned char encauth[20]; - unsigned char pubauth[20]; - unsigned char xorwork[40]; - unsigned char xorhash[20]; - unsigned char nonceodd[20]; +struct ext4_new_flex_group_data { + struct ext4_new_group_data *groups; + __u16 *bg_flags; + 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, + I_DATA_SEM_QUOTA = 2, + I_DATA_SEM_EA = 3, }; -enum { - Opt_err___9 = 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 ext4_lazy_init { + long unsigned int li_state; + struct list_head li_request_list; + struct mutex li_list_mtx; }; -enum asn1_class { - ASN1_UNIV = 0, - ASN1_APPL = 1, - ASN1_CONT = 2, - ASN1_PRIV = 3, +struct ext4_journal_cb_entry { + struct list_head jce_list; + void (*jce_func)(struct super_block *, struct ext4_journal_cb_entry *, int); }; -enum asn1_method { - ASN1_PRIM = 0, - ASN1_CONS = 1, +struct trace_event_raw_ext4_other_inode_update_time { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ino_t orig_ino; + uid_t uid; + gid_t gid; + __u16 mode; + char __data[0]; }; -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 trace_event_raw_ext4_free_inode { + struct trace_entry ent; + dev_t dev; + ino_t ino; + uid_t uid; + gid_t gid; + __u64 blocks; + __u16 mode; + char __data[0]; }; -typedef int (*asn1_action_t)(void *, size_t, unsigned char, const void *, size_t); - -struct asn1_decoder { - const unsigned char *machine; - size_t machlen; - const asn1_action_t *actions; +struct trace_event_raw_ext4_request_inode { + struct trace_entry ent; + dev_t dev; + ino_t dir; + __u16 mode; + char __data[0]; }; -enum asn1_opcode { - ASN1_OP_MATCH = 0, - ASN1_OP_MATCH_OR_SKIP = 1, - ASN1_OP_MATCH_ACT = 2, - ASN1_OP_MATCH_ACT_OR_SKIP = 3, - ASN1_OP_MATCH_JUMP = 4, - ASN1_OP_MATCH_JUMP_OR_SKIP = 5, - ASN1_OP_MATCH_ANY = 8, - ASN1_OP_MATCH_ANY_OR_SKIP = 9, - ASN1_OP_MATCH_ANY_ACT = 10, - ASN1_OP_MATCH_ANY_ACT_OR_SKIP = 11, - ASN1_OP_COND_MATCH_OR_SKIP = 17, - ASN1_OP_COND_MATCH_ACT_OR_SKIP = 19, - ASN1_OP_COND_MATCH_JUMP_OR_SKIP = 21, - ASN1_OP_COND_MATCH_ANY = 24, - ASN1_OP_COND_MATCH_ANY_OR_SKIP = 25, - ASN1_OP_COND_MATCH_ANY_ACT = 26, - ASN1_OP_COND_MATCH_ANY_ACT_OR_SKIP = 27, - ASN1_OP_COND_FAIL = 28, - ASN1_OP_COMPLETE = 29, - ASN1_OP_ACT = 30, - ASN1_OP_MAYBE_ACT = 31, - ASN1_OP_END_SEQ = 32, - ASN1_OP_END_SET = 33, - ASN1_OP_END_SEQ_OF = 34, - ASN1_OP_END_SET_OF = 35, - ASN1_OP_END_SEQ_ACT = 36, - ASN1_OP_END_SET_ACT = 37, - ASN1_OP_END_SEQ_OF_ACT = 38, - ASN1_OP_END_SET_OF_ACT = 39, - ASN1_OP_RETURN = 40, - ASN1_OP__NR = 41, +struct trace_event_raw_ext4_allocate_inode { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ino_t dir; + __u16 mode; + char __data[0]; }; -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 trace_event_raw_ext4_evict_inode { + struct trace_entry ent; + dev_t dev; + ino_t ino; + int nlink; + char __data[0]; }; -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 trace_event_raw_ext4_drop_inode { + struct trace_entry ent; + dev_t dev; + ino_t ino; + int drop; + char __data[0]; }; -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 trace_event_raw_ext4_nfs_commit_metadata { + struct trace_entry ent; + dev_t dev; + ino_t ino; + char __data[0]; }; -enum tpm2_structures { - TPM2_ST_NO_SESSIONS = 32769, - TPM2_ST_SESSIONS = 32770, +struct trace_event_raw_ext4_mark_inode_dirty { + struct trace_entry ent; + dev_t dev; + ino_t ino; + long unsigned int ip; + char __data[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_UPGRADE = 301, - TPM2_RC_COMMAND_CODE = 323, - TPM2_RC_TESTING = 2314, - TPM2_RC_REFERENCE_H0 = 2320, - TPM2_RC_RETRY = 2338, +struct trace_event_raw_ext4_begin_ordered_truncate { + struct trace_entry ent; + dev_t dev; + ino_t ino; + loff_t new_size; + char __data[0]; }; -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 trace_event_raw_ext4__write_begin { + struct trace_entry ent; + dev_t dev; + ino_t ino; + loff_t pos; + unsigned int len; + unsigned int flags; + char __data[0]; }; -enum tpm2_permanent_handles { - TPM2_RS_PW = 1073741833, +struct trace_event_raw_ext4__write_end { + struct trace_entry ent; + dev_t dev; + ino_t ino; + loff_t pos; + unsigned int len; + unsigned int copied; + char __data[0]; }; -enum tpm2_object_attributes { - TPM2_OA_FIXED_TPM = 2, - TPM2_OA_FIXED_PARENT = 16, - TPM2_OA_USER_WITH_AUTH = 64, +struct trace_event_raw_ext4_writepages { + struct trace_entry ent; + dev_t dev; + ino_t ino; + long int nr_to_write; + long int pages_skipped; + loff_t range_start; + loff_t range_end; + long unsigned int writeback_index; + int sync_mode; + char for_kupdate; + char range_cyclic; + char __data[0]; }; -enum tpm2_session_attributes { - TPM2_SA_CONTINUE_SESSION = 1, +struct trace_event_raw_ext4_da_write_pages { + struct trace_entry ent; + dev_t dev; + ino_t ino; + long unsigned int first_page; + long int nr_to_write; + int sync_mode; + char __data[0]; }; -struct tpm2_hash { - unsigned int crypto_id; - unsigned int tpm_id; +struct trace_event_raw_ext4_da_write_pages_extent { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u64 lblk; + __u32 len; + __u32 flags; + char __data[0]; }; -struct tpm2_key_context { - u32 parent; - const u8 *pub; - u32 pub_len; - const u8 *priv; - u32 priv_len; +struct trace_event_raw_ext4_writepages_result { + struct trace_entry ent; + dev_t dev; + ino_t ino; + int ret; + int pages_written; + long int pages_skipped; + long unsigned int writeback_index; + int sync_mode; + 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_ext4__page_op { + struct trace_entry ent; + dev_t dev; + ino_t ino; + long unsigned int index; + 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_ext4_invalidatepage_op { + struct trace_entry ent; + dev_t dev; + ino_t ino; + long unsigned int index; + unsigned int offset; + unsigned int length; + char __data[0]; }; -enum ecryptfs_token_types { - ECRYPTFS_PASSWORD = 0, - ECRYPTFS_PRIVATE_KEY = 1, +struct trace_event_raw_ext4_discard_blocks { + struct trace_entry ent; + dev_t dev; + __u64 blk; + __u64 count; + 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_ext4__mb_new_pa { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u64 pa_pstart; + __u64 pa_lstart; + __u32 pa_len; + char __data[0]; }; -struct 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_ext4_mb_release_inode_pa { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u64 block; + __u32 count; + char __data[0]; }; -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_raw_ext4_mb_release_group_pa { + struct trace_entry ent; + dev_t dev; + __u64 pa_pstart; + __u32 pa_len; + char __data[0]; }; -enum { - Opt_new___2 = 0, - Opt_load___2 = 1, - Opt_update___2 = 2, - Opt_err___10 = 3, +struct trace_event_raw_ext4_discard_preallocations { + struct trace_entry ent; + dev_t dev; + ino_t ino; + unsigned int len; + unsigned int needed; + char __data[0]; }; -enum { - Opt_default = 0, - Opt_ecryptfs = 1, - Opt_enc32 = 2, - Opt_error = 3, +struct trace_event_raw_ext4_mb_discard_preallocations { + struct trace_entry ent; + dev_t dev; + int needed; + char __data[0]; }; -enum derived_key_type { - ENC_KEY = 0, - AUTH_KEY = 1, +struct trace_event_raw_ext4_request_blocks { + struct trace_entry ent; + dev_t dev; + ino_t ino; + unsigned int len; + __u32 logical; + __u32 lleft; + __u32 lright; + __u64 goal; + __u64 pleft; + __u64 pright; + unsigned int flags; + char __data[0]; }; -struct vfs_cap_data { - __le32 magic_etc; - struct { - __le32 permitted; - __le32 inheritable; - } data[2]; +struct trace_event_raw_ext4_allocate_blocks { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u64 block; + unsigned int len; + __u32 logical; + __u32 lleft; + __u32 lright; + __u64 goal; + __u64 pleft; + __u64 pright; + unsigned int flags; + char __data[0]; }; -struct vfs_ns_cap_data { - __le32 magic_etc; - struct { - __le32 permitted; - __le32 inheritable; - } data[2]; - __le32 rootid; +struct trace_event_raw_ext4_free_blocks { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u64 block; + long unsigned int count; + int flags; + __u16 mode; + char __data[0]; }; -struct sctp_association; - -union security_list_options { - int (*binder_set_context_mgr)(const struct cred *); - int (*binder_transaction)(const struct cred *, const struct cred *); - int (*binder_transfer_binder)(const struct cred *, const struct cred *); - int (*binder_transfer_file)(const struct cred *, const struct cred *, 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 (*move_mount)(const struct path *, const struct path *); - int (*dentry_init_security)(struct dentry *, int, const struct qstr *, const char **, void **, u32 *); - int (*dentry_create_files_as)(struct dentry *, int, struct qstr *, const struct cred *, struct cred *); - int (*path_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 (*current_getsecid_subj)(u32 *); - void (*task_getsecid_obj)(struct task_struct *, u32 *); - int (*task_setnice)(struct task_struct *, int); - int (*task_setioprio)(struct task_struct *, int); - int (*task_getioprio)(struct task_struct *); - int (*task_prlimit)(const struct cred *, const struct cred *, unsigned int); - int (*task_setrlimit)(struct task_struct *, unsigned int, struct rlimit *); - int (*task_setscheduler)(struct task_struct *); - int (*task_getscheduler)(struct task_struct *); - int (*task_movememory)(struct task_struct *); - int (*task_kill)(struct task_struct *, struct kernel_siginfo *, int, const struct cred *); - int (*task_prctl)(int, 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_association *, struct sk_buff *); - int (*sctp_bind_connect)(struct sock *, int, struct sockaddr *, int); - void (*sctp_sk_clone)(struct sctp_association *, struct sock *, struct sock *); - int (*sctp_assoc_established)(struct sctp_association *, struct sk_buff *); - int (*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 *); - int (*uring_override_creds)(const struct cred *); - int (*uring_sqpoll)(); +struct trace_event_raw_ext4_sync_file_enter { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ino_t parent; + int datasync; + char __data[0]; }; -struct 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 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 current_getsecid_subj; - struct hlist_head task_getsecid_obj; - struct hlist_head task_setnice; - struct hlist_head task_setioprio; - struct hlist_head task_getioprio; - struct hlist_head task_prlimit; - struct hlist_head task_setrlimit; - struct hlist_head task_setscheduler; - struct hlist_head task_getscheduler; - struct hlist_head task_movememory; - struct hlist_head task_kill; - struct hlist_head task_prctl; - struct hlist_head task_to_inode; - struct hlist_head 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 sctp_assoc_established; - 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 hlist_head uring_override_creds; - struct hlist_head uring_sqpoll; +struct trace_event_raw_ext4_sync_file_exit { + struct trace_entry ent; + dev_t dev; + ino_t ino; + int ret; + char __data[0]; }; -struct security_hook_list { - struct hlist_node list; - struct hlist_head *head; - union security_list_options hook; - char *lsm; +struct trace_event_raw_ext4_sync_fs { + struct trace_entry ent; + dev_t dev; + int wait; + char __data[0]; }; -enum lsm_order { - LSM_ORDER_FIRST = 4294967295, - LSM_ORDER_MUTABLE = 0, +struct trace_event_raw_ext4_alloc_da_blocks { + struct trace_entry ent; + dev_t dev; + ino_t ino; + unsigned int data_blocks; + char __data[0]; }; -struct lsm_info { - const char *name; - enum lsm_order order; - long unsigned int flags; - int *enabled; - int (*init)(); - struct lsm_blob_sizes *blobs; +struct trace_event_raw_ext4_mballoc_alloc { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u32 orig_logical; + int orig_start; + __u32 orig_group; + int orig_len; + __u32 goal_logical; + int goal_start; + __u32 goal_group; + int goal_len; + __u32 result_logical; + int result_start; + __u32 result_group; + int result_len; + __u16 found; + __u16 groups; + __u16 buddy; + __u16 flags; + __u16 tail; + __u8 cr; + char __data[0]; }; -enum lsm_event { - LSM_POLICY_CHANGE = 0, +struct trace_event_raw_ext4_mballoc_prealloc { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u32 orig_logical; + int orig_start; + __u32 orig_group; + int orig_len; + __u32 result_logical; + int result_start; + __u32 result_group; + int result_len; + char __data[0]; }; -struct ethhdr { - unsigned char h_dest[6]; - unsigned char h_source[6]; - __be16 h_proto; +struct trace_event_raw_ext4__mballoc { + struct trace_entry ent; + dev_t dev; + ino_t ino; + int result_start; + __u32 result_group; + int result_len; + char __data[0]; }; -struct 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 trace_event_raw_ext4_forget { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u64 block; + int is_metadata; + __u16 mode; + char __data[0]; }; -struct ethtool_wolinfo { - __u32 cmd; - __u32 supported; - __u32 wolopts; - __u8 sopass[6]; +struct trace_event_raw_ext4_da_update_reserve_space { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u64 i_blocks; + int used_blocks; + int reserved_data_blocks; + int quota_claim; + __u16 mode; + char __data[0]; }; -struct ethtool_tunable { - __u32 cmd; - __u32 id; - __u32 type_id; - __u32 len; - void *data[0]; +struct trace_event_raw_ext4_da_reserve_space { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u64 i_blocks; + int reserved_data_blocks; + __u16 mode; + char __data[0]; }; -struct ethtool_regs { - __u32 cmd; - __u32 version; - __u32 len; - __u8 data[0]; +struct trace_event_raw_ext4_da_release_space { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u64 i_blocks; + int freed_blocks; + int reserved_data_blocks; + __u16 mode; + char __data[0]; }; -struct ethtool_eeprom { - __u32 cmd; - __u32 magic; - __u32 offset; - __u32 len; - __u8 data[0]; +struct trace_event_raw_ext4__bitmap_load { + struct trace_entry ent; + dev_t dev; + __u32 group; + char __data[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 trace_event_raw_ext4_read_block_bitmap_load { + struct trace_entry ent; + dev_t dev; + __u32 group; + bool prefetch; + char __data[0]; }; -struct ethtool_modinfo { - __u32 cmd; - __u32 type; - __u32 eeprom_len; - __u32 reserved[8]; +struct trace_event_raw_ext4__fallocate_mode { + struct trace_entry ent; + dev_t dev; + ino_t ino; + loff_t offset; + loff_t len; + int mode; + char __data[0]; }; -struct 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 trace_event_raw_ext4_fallocate_exit { + struct trace_entry ent; + dev_t dev; + ino_t ino; + loff_t pos; + unsigned int blocks; + int ret; + char __data[0]; }; -struct 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 trace_event_raw_ext4_unlink_enter { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ino_t parent; + loff_t size; + char __data[0]; }; -struct 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 trace_event_raw_ext4_unlink_exit { + struct trace_entry ent; + dev_t dev; + ino_t ino; + int ret; + char __data[0]; }; -struct ethtool_pauseparam { - __u32 cmd; - __u32 autoneg; - __u32 rx_pause; - __u32 tx_pause; +struct trace_event_raw_ext4__truncate { + struct trace_entry ent; + dev_t dev; + ino_t ino; + __u64 blocks; + char __data[0]; }; -enum ethtool_link_ext_state { - ETHTOOL_LINK_EXT_STATE_AUTONEG = 0, - ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE = 1, - ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH = 2, - ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY = 3, - ETHTOOL_LINK_EXT_STATE_NO_CABLE = 4, - ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE = 5, - ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE = 6, - ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE = 7, - ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED = 8, - ETHTOOL_LINK_EXT_STATE_OVERHEAT = 9, - ETHTOOL_LINK_EXT_STATE_MODULE = 10, +struct trace_event_raw_ext4_ext_convert_to_initialized_enter { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t m_lblk; + unsigned int m_len; + ext4_lblk_t u_lblk; + unsigned int u_len; + ext4_fsblk_t u_pblk; + char __data[0]; }; -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 trace_event_raw_ext4_ext_convert_to_initialized_fastpath { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t m_lblk; + unsigned int m_len; + ext4_lblk_t u_lblk; + unsigned int u_len; + ext4_fsblk_t u_pblk; + ext4_lblk_t i_lblk; + unsigned int i_len; + ext4_fsblk_t i_pblk; + char __data[0]; }; -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, +struct trace_event_raw_ext4__map_blocks_enter { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t lblk; + unsigned int len; + unsigned int flags; + char __data[0]; +}; + +struct trace_event_raw_ext4__map_blocks_exit { + struct trace_entry ent; + dev_t dev; + ino_t ino; + unsigned int flags; + ext4_fsblk_t pblk; + ext4_lblk_t lblk; + unsigned int len; + unsigned int mflags; + int ret; + char __data[0]; +}; + +struct trace_event_raw_ext4_ext_load_extent { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_fsblk_t pblk; + ext4_lblk_t lblk; + char __data[0]; +}; + +struct trace_event_raw_ext4_load_inode { + struct trace_entry ent; + dev_t dev; + ino_t ino; + char __data[0]; +}; + +struct trace_event_raw_ext4_journal_start { + struct trace_entry ent; + dev_t dev; + long unsigned int ip; + int blocks; + int rsv_blocks; + int revoke_creds; + char __data[0]; +}; + +struct trace_event_raw_ext4_journal_start_reserved { + struct trace_entry ent; + dev_t dev; + long unsigned int ip; + int blocks; + char __data[0]; +}; + +struct trace_event_raw_ext4__trim { + struct trace_entry ent; + int dev_major; + int dev_minor; + __u32 group; + int start; + int len; + char __data[0]; +}; + +struct trace_event_raw_ext4_ext_handle_unwritten_extents { + struct trace_entry ent; + dev_t dev; + ino_t ino; + int flags; + ext4_lblk_t lblk; + ext4_fsblk_t pblk; + unsigned int len; + unsigned int allocated; + ext4_fsblk_t newblk; + char __data[0]; +}; + +struct trace_event_raw_ext4_get_implied_cluster_alloc_exit { + struct trace_entry ent; + dev_t dev; + unsigned int flags; + ext4_lblk_t lblk; + ext4_fsblk_t pblk; + unsigned int len; + int ret; + char __data[0]; +}; + +struct trace_event_raw_ext4_ext_show_extent { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_fsblk_t pblk; + ext4_lblk_t lblk; + short unsigned int len; + char __data[0]; +}; + +struct trace_event_raw_ext4_remove_blocks { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t from; + ext4_lblk_t to; + ext4_fsblk_t ee_pblk; + ext4_lblk_t ee_lblk; + short unsigned int ee_len; + ext4_fsblk_t pc_pclu; + ext4_lblk_t pc_lblk; + int pc_state; + char __data[0]; +}; + +struct trace_event_raw_ext4_ext_rm_leaf { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t start; + ext4_lblk_t ee_lblk; + ext4_fsblk_t ee_pblk; + short int ee_len; + ext4_fsblk_t pc_pclu; + ext4_lblk_t pc_lblk; + int pc_state; + char __data[0]; +}; + +struct trace_event_raw_ext4_ext_rm_idx { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_fsblk_t pblk; + char __data[0]; +}; + +struct trace_event_raw_ext4_ext_remove_space { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t start; + ext4_lblk_t end; + int depth; + char __data[0]; +}; + +struct trace_event_raw_ext4_ext_remove_space_done { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t start; + ext4_lblk_t end; + int depth; + ext4_fsblk_t pc_pclu; + ext4_lblk_t pc_lblk; + int pc_state; + short unsigned int eh_entries; + char __data[0]; +}; + +struct trace_event_raw_ext4__es_extent { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t lblk; + ext4_lblk_t len; + ext4_fsblk_t pblk; + char status; + char __data[0]; +}; + +struct trace_event_raw_ext4_es_remove_extent { + struct trace_entry ent; + dev_t dev; + ino_t ino; + loff_t lblk; + loff_t len; + char __data[0]; +}; + +struct trace_event_raw_ext4_es_find_extent_range_enter { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t lblk; + char __data[0]; +}; + +struct trace_event_raw_ext4_es_find_extent_range_exit { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t lblk; + ext4_lblk_t len; + ext4_fsblk_t pblk; + char status; + char __data[0]; +}; + +struct trace_event_raw_ext4_es_lookup_extent_enter { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t lblk; + char __data[0]; }; -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 trace_event_raw_ext4_es_lookup_extent_exit { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t lblk; + ext4_lblk_t len; + ext4_fsblk_t pblk; + char status; + int found; + char __data[0]; }; -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 trace_event_raw_ext4__es_shrink_enter { + struct trace_entry ent; + dev_t dev; + int nr_to_scan; + int cache_cnt; + char __data[0]; }; -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 trace_event_raw_ext4_es_shrink_scan_exit { + struct trace_entry ent; + dev_t dev; + int nr_shrunk; + int cache_cnt; + char __data[0]; }; -enum ethtool_link_ext_substate_module { - ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY = 1, +struct trace_event_raw_ext4_collapse_range { + struct trace_entry ent; + dev_t dev; + ino_t ino; + loff_t offset; + loff_t len; + char __data[0]; }; -enum ethtool_module_power_mode_policy { - ETHTOOL_MODULE_POWER_MODE_POLICY_HIGH = 1, - ETHTOOL_MODULE_POWER_MODE_POLICY_AUTO = 2, +struct trace_event_raw_ext4_insert_range { + struct trace_entry ent; + dev_t dev; + ino_t ino; + loff_t offset; + loff_t len; + char __data[0]; }; -enum ethtool_module_power_mode { - ETHTOOL_MODULE_POWER_MODE_LOW = 1, - ETHTOOL_MODULE_POWER_MODE_HIGH = 2, +struct trace_event_raw_ext4_es_shrink { + struct trace_entry ent; + dev_t dev; + int nr_shrunk; + long long unsigned int scan_time; + int nr_skipped; + int retried; + char __data[0]; }; -struct ethtool_test { - __u32 cmd; - __u32 flags; - __u32 reserved; - __u32 len; - __u64 data[0]; +struct trace_event_raw_ext4_es_insert_delayed_block { + struct trace_entry ent; + dev_t dev; + ino_t ino; + ext4_lblk_t lblk; + ext4_lblk_t len; + ext4_fsblk_t pblk; + char status; + bool allocated; + char __data[0]; }; -struct ethtool_stats { - __u32 cmd; - __u32 n_stats; - __u64 data[0]; +struct trace_event_raw_ext4_fsmap_class { + struct trace_entry ent; + dev_t dev; + dev_t keydev; + u32 agno; + u64 bno; + u64 len; + u64 owner; + char __data[0]; }; -struct ethtool_tcpip4_spec { - __be32 ip4src; - __be32 ip4dst; - __be16 psrc; - __be16 pdst; - __u8 tos; +struct trace_event_raw_ext4_getfsmap_class { + struct trace_entry ent; + dev_t dev; + dev_t keydev; + u64 block; + u64 len; + u64 owner; + u64 flags; + char __data[0]; }; -struct ethtool_ah_espip4_spec { - __be32 ip4src; - __be32 ip4dst; - __be32 spi; - __u8 tos; +struct trace_event_raw_ext4_shutdown { + struct trace_entry ent; + dev_t dev; + unsigned int flags; + char __data[0]; }; -struct ethtool_usrip4_spec { - __be32 ip4src; - __be32 ip4dst; - __be32 l4_4_bytes; - __u8 tos; - __u8 ip_ver; - __u8 proto; +struct trace_event_raw_ext4_error { + struct trace_entry ent; + dev_t dev; + const char *function; + unsigned int line; + char __data[0]; }; -struct ethtool_tcpip6_spec { - __be32 ip6src[4]; - __be32 ip6dst[4]; - __be16 psrc; - __be16 pdst; - __u8 tclass; +struct trace_event_raw_ext4_prefetch_bitmaps { + struct trace_entry ent; + dev_t dev; + __u32 group; + __u32 next; + __u32 ios; + char __data[0]; }; -struct ethtool_ah_espip6_spec { - __be32 ip6src[4]; - __be32 ip6dst[4]; - __be32 spi; - __u8 tclass; +struct trace_event_raw_ext4_lazy_itable_init { + struct trace_entry ent; + dev_t dev; + __u32 group; + char __data[0]; }; -struct ethtool_usrip6_spec { - __be32 ip6src[4]; - __be32 ip6dst[4]; - __be32 l4_4_bytes; - __u8 tclass; - __u8 l4_proto; +struct trace_event_raw_ext4_fc_replay_scan { + struct trace_entry ent; + dev_t dev; + int error; + int off; + char __data[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 trace_event_raw_ext4_fc_replay { + struct trace_entry ent; + dev_t dev; + int tag; + int ino; + int priv1; + int priv2; + char __data[0]; }; -struct ethtool_flow_ext { - __u8 padding[2]; - unsigned char h_dest[6]; - __be16 vlan_etype; - __be16 vlan_tci; - __be32 data[2]; +struct trace_event_raw_ext4_fc_commit_start { + struct trace_entry ent; + dev_t dev; + char __data[0]; }; -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 trace_event_raw_ext4_fc_commit_stop { + struct trace_entry ent; + dev_t dev; + int nblks; + int reason; + int num_fc; + int num_fc_ineligible; + int nblks_agg; + char __data[0]; }; -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 trace_event_raw_ext4_fc_stats { + struct trace_entry ent; + dev_t dev; + 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]; }; -struct ethtool_flash { - __u32 cmd; - __u32 region; - char data[128]; +struct trace_event_raw_ext4_fc_track_create { + struct trace_entry ent; + dev_t dev; + int ino; + int error; + char __data[0]; }; -struct ethtool_dump { - __u32 cmd; - __u32 version; - __u32 flag; - __u32 len; - __u8 data[0]; +struct trace_event_raw_ext4_fc_track_link { + struct trace_entry ent; + dev_t dev; + int ino; + int error; + char __data[0]; }; -struct ethtool_ts_info { - __u32 cmd; - __u32 so_timestamping; - __s32 phc_index; - __u32 tx_types; - __u32 tx_reserved[3]; - __u32 rx_filters; - __u32 rx_reserved[3]; +struct trace_event_raw_ext4_fc_track_unlink { + struct trace_entry ent; + dev_t dev; + int ino; + int error; + char __data[0]; }; -struct ethtool_fecparam { - __u32 cmd; - __u32 active_fec; - __u32 fec; - __u32 reserved; +struct trace_event_raw_ext4_fc_track_inode { + struct trace_entry ent; + dev_t dev; + int ino; + int error; + char __data[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 trace_event_raw_ext4_fc_track_range { + struct trace_entry ent; + dev_t dev; + int ino; + long int start; + long int end; + int error; + char __data[0]; }; -struct ethtool_link_settings { - __u32 cmd; - __u32 speed; - __u8 duplex; - __u8 port; - __u8 phy_address; - __u8 autoneg; - __u8 mdio_support; - __u8 eth_tp_mdix; - __u8 eth_tp_mdix_ctrl; - __s8 link_mode_masks_nwords; - __u8 transceiver; - __u8 master_slave_cfg; - __u8 master_slave_state; - __u8 reserved1[1]; - __u32 reserved[7]; - __u32 link_mode_masks[0]; -}; +struct trace_event_data_offsets_ext4_other_inode_update_time {}; + +struct trace_event_data_offsets_ext4_free_inode {}; + +struct trace_event_data_offsets_ext4_request_inode {}; + +struct trace_event_data_offsets_ext4_allocate_inode {}; + +struct trace_event_data_offsets_ext4_evict_inode {}; + +struct trace_event_data_offsets_ext4_drop_inode {}; + +struct trace_event_data_offsets_ext4_nfs_commit_metadata {}; + +struct trace_event_data_offsets_ext4_mark_inode_dirty {}; + +struct trace_event_data_offsets_ext4_begin_ordered_truncate {}; + +struct trace_event_data_offsets_ext4__write_begin {}; + +struct trace_event_data_offsets_ext4__write_end {}; + +struct trace_event_data_offsets_ext4_writepages {}; + +struct trace_event_data_offsets_ext4_da_write_pages {}; + +struct trace_event_data_offsets_ext4_da_write_pages_extent {}; + +struct trace_event_data_offsets_ext4_writepages_result {}; + +struct trace_event_data_offsets_ext4__page_op {}; + +struct trace_event_data_offsets_ext4_invalidatepage_op {}; + +struct trace_event_data_offsets_ext4_discard_blocks {}; + +struct trace_event_data_offsets_ext4__mb_new_pa {}; + +struct trace_event_data_offsets_ext4_mb_release_inode_pa {}; + +struct trace_event_data_offsets_ext4_mb_release_group_pa {}; + +struct trace_event_data_offsets_ext4_discard_preallocations {}; + +struct trace_event_data_offsets_ext4_mb_discard_preallocations {}; + +struct trace_event_data_offsets_ext4_request_blocks {}; + +struct trace_event_data_offsets_ext4_allocate_blocks {}; + +struct trace_event_data_offsets_ext4_free_blocks {}; + +struct trace_event_data_offsets_ext4_sync_file_enter {}; + +struct trace_event_data_offsets_ext4_sync_file_exit {}; + +struct trace_event_data_offsets_ext4_sync_fs {}; + +struct trace_event_data_offsets_ext4_alloc_da_blocks {}; + +struct trace_event_data_offsets_ext4_mballoc_alloc {}; + +struct trace_event_data_offsets_ext4_mballoc_prealloc {}; + +struct trace_event_data_offsets_ext4__mballoc {}; + +struct trace_event_data_offsets_ext4_forget {}; + +struct trace_event_data_offsets_ext4_da_update_reserve_space {}; + +struct trace_event_data_offsets_ext4_da_reserve_space {}; + +struct trace_event_data_offsets_ext4_da_release_space {}; + +struct trace_event_data_offsets_ext4__bitmap_load {}; + +struct trace_event_data_offsets_ext4_read_block_bitmap_load {}; + +struct trace_event_data_offsets_ext4__fallocate_mode {}; + +struct trace_event_data_offsets_ext4_fallocate_exit {}; + +struct trace_event_data_offsets_ext4_unlink_enter {}; + +struct trace_event_data_offsets_ext4_unlink_exit {}; + +struct trace_event_data_offsets_ext4__truncate {}; + +struct trace_event_data_offsets_ext4_ext_convert_to_initialized_enter {}; + +struct trace_event_data_offsets_ext4_ext_convert_to_initialized_fastpath {}; + +struct trace_event_data_offsets_ext4__map_blocks_enter {}; + +struct trace_event_data_offsets_ext4__map_blocks_exit {}; + +struct trace_event_data_offsets_ext4_ext_load_extent {}; + +struct trace_event_data_offsets_ext4_load_inode {}; + +struct trace_event_data_offsets_ext4_journal_start {}; + +struct trace_event_data_offsets_ext4_journal_start_reserved {}; + +struct trace_event_data_offsets_ext4__trim {}; + +struct trace_event_data_offsets_ext4_ext_handle_unwritten_extents {}; + +struct trace_event_data_offsets_ext4_get_implied_cluster_alloc_exit {}; + +struct trace_event_data_offsets_ext4_ext_show_extent {}; + +struct trace_event_data_offsets_ext4_remove_blocks {}; + +struct trace_event_data_offsets_ext4_ext_rm_leaf {}; + +struct trace_event_data_offsets_ext4_ext_rm_idx {}; + +struct trace_event_data_offsets_ext4_ext_remove_space {}; + +struct trace_event_data_offsets_ext4_ext_remove_space_done {}; + +struct trace_event_data_offsets_ext4__es_extent {}; + +struct trace_event_data_offsets_ext4_es_remove_extent {}; + +struct trace_event_data_offsets_ext4_es_find_extent_range_enter {}; + +struct trace_event_data_offsets_ext4_es_find_extent_range_exit {}; + +struct trace_event_data_offsets_ext4_es_lookup_extent_enter {}; + +struct trace_event_data_offsets_ext4_es_lookup_extent_exit {}; + +struct trace_event_data_offsets_ext4__es_shrink_enter {}; + +struct trace_event_data_offsets_ext4_es_shrink_scan_exit {}; + +struct trace_event_data_offsets_ext4_collapse_range {}; + +struct trace_event_data_offsets_ext4_insert_range {}; -struct kernel_ethtool_ringparam { - u32 rx_buf_len; - u8 tcp_data_split; - u32 cqe_size; -}; +struct trace_event_data_offsets_ext4_es_shrink {}; -struct ethtool_link_ext_state_info { - enum ethtool_link_ext_state link_ext_state; - union { - enum ethtool_link_ext_substate_autoneg autoneg; - enum ethtool_link_ext_substate_link_training link_training; - enum ethtool_link_ext_substate_link_logical_mismatch link_logical_mismatch; - enum ethtool_link_ext_substate_bad_signal_integrity bad_signal_integrity; - enum ethtool_link_ext_substate_cable_issue cable_issue; - enum ethtool_link_ext_substate_module module; - u32 __link_ext_substate; - }; -}; +struct trace_event_data_offsets_ext4_es_insert_delayed_block {}; -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 trace_event_data_offsets_ext4_fsmap_class {}; -struct kernel_ethtool_coalesce { - u8 use_cqe_mode_tx; - u8 use_cqe_mode_rx; -}; +struct trace_event_data_offsets_ext4_getfsmap_class {}; -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 trace_event_data_offsets_ext4_shutdown {}; -struct ethtool_eth_phy_stats { - u64 SymbolErrorDuringCarrier; -}; +struct trace_event_data_offsets_ext4_error {}; -struct ethtool_eth_ctrl_stats { - u64 MACControlFramesTransmitted; - u64 MACControlFramesReceived; - u64 UnsupportedOpcodesReceived; -}; +struct trace_event_data_offsets_ext4_prefetch_bitmaps {}; -struct ethtool_pause_stats { - u64 tx_pause_frames; - u64 rx_pause_frames; -}; +struct trace_event_data_offsets_ext4_lazy_itable_init {}; -struct ethtool_fec_stat { - u64 total; - u64 lanes[8]; -}; +struct trace_event_data_offsets_ext4_fc_replay_scan {}; -struct ethtool_fec_stats { - struct ethtool_fec_stat corrected_blocks; - struct ethtool_fec_stat uncorrectable_blocks; - struct ethtool_fec_stat corrected_bits; -}; +struct trace_event_data_offsets_ext4_fc_replay {}; -struct ethtool_rmon_hist_range { - u16 low; - u16 high; -}; +struct trace_event_data_offsets_ext4_fc_commit_start {}; -struct ethtool_rmon_stats { - u64 undersize_pkts; - u64 oversize_pkts; - u64 fragments; - u64 jabbers; - u64 hist[10]; - u64 hist_tx[10]; -}; +struct trace_event_data_offsets_ext4_fc_commit_stop {}; -struct ethtool_module_eeprom { - u32 offset; - u32 length; - u8 page; - u8 bank; - u8 i2c_address; - u8 *data; -}; +struct trace_event_data_offsets_ext4_fc_stats {}; -struct ethtool_module_power_mode_params { - enum ethtool_module_power_mode_policy policy; - enum ethtool_module_power_mode mode; -}; +struct trace_event_data_offsets_ext4_fc_track_create {}; -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 trace_event_data_offsets_ext4_fc_track_link {}; -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 trace_event_data_offsets_ext4_fc_track_unlink {}; -enum ib_uverbs_create_qp_mask { - IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1, -}; +struct trace_event_data_offsets_ext4_fc_track_inode {}; -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 trace_event_data_offsets_ext4_fc_track_range {}; -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, -}; +typedef void (*btf_trace_ext4_other_inode_update_time)(void *, struct inode *, ino_t); -enum ib_uverbs_srq_type { - IB_UVERBS_SRQT_BASIC = 0, - IB_UVERBS_SRQT_XRC = 1, - IB_UVERBS_SRQT_TM = 2, -}; +typedef void (*btf_trace_ext4_free_inode)(void *, struct inode *); -enum ib_uverbs_wq_type { - IB_UVERBS_WQT_RQ = 0, -}; +typedef void (*btf_trace_ext4_request_inode)(void *, struct inode *, int); -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, -}; +typedef void (*btf_trace_ext4_allocate_inode)(void *, struct inode *, struct inode *, int); -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, -}; +typedef void (*btf_trace_ext4_evict_inode)(void *, struct inode *); -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, -}; +typedef void (*btf_trace_ext4_drop_inode)(void *, struct inode *, int); -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, -}; +typedef void (*btf_trace_ext4_nfs_commit_metadata)(void *, struct inode *); -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, -}; +typedef void (*btf_trace_ext4_mark_inode_dirty)(void *, struct inode *, long unsigned int); -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; -}; +typedef void (*btf_trace_ext4_begin_ordered_truncate)(void *, struct inode *, loff_t); -struct lsm_ioctlop_audit { - struct path path; - u16 cmd; -}; +typedef void (*btf_trace_ext4_write_begin)(void *, struct inode *, loff_t, unsigned int, unsigned int); -struct lsm_ibpkey_audit { - u64 subnet_prefix; - u16 pkey; -}; +typedef void (*btf_trace_ext4_da_write_begin)(void *, struct inode *, loff_t, unsigned int, unsigned int); -struct lsm_ibendport_audit { - const char *dev_name; - u8 port; -}; +typedef void (*btf_trace_ext4_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int); -struct selinux_state; +typedef void (*btf_trace_ext4_journalled_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int); -struct selinux_audit_data { - u32 ssid; - u32 tsid; - u16 tclass; - u32 requested; - u32 audited; - u32 denied; - int result; - struct selinux_state *state; -}; +typedef void (*btf_trace_ext4_da_write_end)(void *, struct inode *, loff_t, unsigned int, unsigned int); -struct common_audit_data { - char type; - union { - struct path path; - struct dentry *dentry; - struct inode *inode; - struct lsm_network_audit *net; - int cap; - int ipc_id; - struct task_struct *tsk; - struct { - key_serial_t key; - char *key_desc; - } key_struct; - char *kmod_name; - struct lsm_ioctlop_audit *op; - struct file *file; - struct lsm_ibpkey_audit *ibpkey; - struct lsm_ibendport_audit *ibendport; - int reason; - } u; - union { - struct selinux_audit_data *selinux_audit_data; - }; -}; +typedef void (*btf_trace_ext4_writepages)(void *, struct inode *, struct writeback_control *); -enum { - POLICYDB_CAP_NETPEER = 0, - POLICYDB_CAP_OPENPERM = 1, - POLICYDB_CAP_EXTSOCKCLASS = 2, - POLICYDB_CAP_ALWAYSNETWORK = 3, - POLICYDB_CAP_CGROUPSECLABEL = 4, - POLICYDB_CAP_NNP_NOSUID_TRANSITION = 5, - POLICYDB_CAP_GENFS_SECLABEL_SYMLINKS = 6, - POLICYDB_CAP_IOCTL_SKIP_CLOEXEC = 7, - __POLICYDB_CAP_MAX = 8, -}; +typedef void (*btf_trace_ext4_da_write_pages)(void *, struct inode *, long unsigned int, struct writeback_control *); -struct selinux_avc; +typedef void (*btf_trace_ext4_da_write_pages_extent)(void *, struct inode *, struct ext4_map_blocks *); -struct selinux_policy; +typedef void (*btf_trace_ext4_writepages_result)(void *, struct inode *, struct writeback_control *, int, int); -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; -}; +typedef void (*btf_trace_ext4_writepage)(void *, struct page *); -struct avc_cache { - struct hlist_head slots[512]; - spinlock_t slots_lock[512]; - atomic_t lru_hint; - atomic_t active_nodes; - u32 latest_notif; -}; +typedef void (*btf_trace_ext4_readpage)(void *, struct page *); -struct selinux_avc { - unsigned int avc_cache_threshold; - struct avc_cache avc_cache; -}; +typedef void (*btf_trace_ext4_releasepage)(void *, struct page *); -struct av_decision { - u32 allowed; - u32 auditallow; - u32 auditdeny; - u32 seqno; - u32 flags; -}; +typedef void (*btf_trace_ext4_invalidatepage)(void *, struct page *, unsigned int, unsigned int); -struct extended_perms_data { - u32 p[8]; -}; +typedef void (*btf_trace_ext4_journalled_invalidatepage)(void *, struct page *, unsigned int, unsigned int); -struct extended_perms_decision { - u8 used; - u8 driver; - struct extended_perms_data *allowed; - struct extended_perms_data *auditallow; - struct extended_perms_data *dontaudit; -}; +typedef void (*btf_trace_ext4_discard_blocks)(void *, struct super_block *, long long unsigned int, long long unsigned int); -struct extended_perms { - u16 len; - struct extended_perms_data drivers; -}; +typedef void (*btf_trace_ext4_mb_new_inode_pa)(void *, struct ext4_allocation_context *, struct ext4_prealloc_space *); -struct avc_cache_stats { - unsigned int lookups; - unsigned int misses; - unsigned int allocations; - unsigned int reclaims; - unsigned int frees; -}; +typedef void (*btf_trace_ext4_mb_new_group_pa)(void *, struct ext4_allocation_context *, struct ext4_prealloc_space *); -struct security_class_mapping { - const char *name; - const char *perms[33]; -}; +typedef void (*btf_trace_ext4_mb_release_inode_pa)(void *, struct ext4_prealloc_space *, long long unsigned int, unsigned int); -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]; -}; +typedef void (*btf_trace_ext4_mb_release_group_pa)(void *, struct super_block *, struct ext4_prealloc_space *); -struct trace_event_data_offsets_selinux_audited { - u32 scontext; - u32 tcontext; - u32 tclass; -}; +typedef void (*btf_trace_ext4_discard_preallocations)(void *, struct inode *, unsigned int, unsigned int); -typedef void (*btf_trace_selinux_audited)(void *, struct selinux_audit_data *, char *, char *, const char *); +typedef void (*btf_trace_ext4_mb_discard_preallocations)(void *, struct super_block *, int); -struct avc_xperms_node; +typedef void (*btf_trace_ext4_request_blocks)(void *, struct ext4_allocation_request *); -struct avc_entry { - u32 ssid; - u32 tsid; - u16 tclass; - struct av_decision avd; - struct avc_xperms_node *xp_node; -}; +typedef void (*btf_trace_ext4_allocate_blocks)(void *, struct ext4_allocation_request *, long long unsigned int); -struct avc_xperms_node { - struct extended_perms xp; - struct list_head xpd_head; -}; +typedef void (*btf_trace_ext4_free_blocks)(void *, struct inode *, __u64, long unsigned int, int); -struct avc_node { - struct avc_entry ae; - struct hlist_node list; - struct callback_head rhead; -}; +typedef void (*btf_trace_ext4_sync_file_enter)(void *, struct file *, int); -struct avc_xperms_decision_node { - struct extended_perms_decision xpd; - struct list_head xpd_list; -}; +typedef void (*btf_trace_ext4_sync_file_exit)(void *, struct inode *, int); -struct avc_callback_node { - int (*callback)(u32); - u32 events; - struct avc_callback_node *next; -}; +typedef void (*btf_trace_ext4_sync_fs)(void *, struct super_block *, int); -typedef __u16 __sum16; +typedef void (*btf_trace_ext4_alloc_da_blocks)(void *, struct inode *); -enum sctp_endpoint_type { - SCTP_EP_TYPE_SOCKET = 0, - SCTP_EP_TYPE_ASSOCIATION = 1, -}; +typedef void (*btf_trace_ext4_mballoc_alloc)(void *, struct ext4_allocation_context *); -struct sctp_chunk; +typedef void (*btf_trace_ext4_mballoc_prealloc)(void *, struct ext4_allocation_context *); -struct sctp_inq { - struct list_head in_chunk_list; - struct sctp_chunk *in_progress; - struct work_struct immediate; -}; +typedef void (*btf_trace_ext4_mballoc_discard)(void *, struct super_block *, struct inode *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t); -struct sctp_bind_addr { - __u16 port; - struct list_head address_list; -}; +typedef void (*btf_trace_ext4_mballoc_free)(void *, struct super_block *, struct inode *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t); -struct sctp_ep_common { - enum sctp_endpoint_type type; - refcount_t refcnt; - bool dead; - struct sock *sk; - struct net *net; - struct sctp_inq inqueue; - struct sctp_bind_addr bind_addr; -}; +typedef void (*btf_trace_ext4_forget)(void *, struct inode *, int, __u64); -typedef __s32 sctp_assoc_t; +typedef void (*btf_trace_ext4_da_update_reserve_space)(void *, struct inode *, int, int); -struct in_addr { - __be32 s_addr; -}; +typedef void (*btf_trace_ext4_da_reserve_space)(void *, struct inode *); -struct sockaddr_in { - __kernel_sa_family_t sin_family; - __be16 sin_port; - struct in_addr sin_addr; - unsigned char __pad[8]; -}; +typedef void (*btf_trace_ext4_da_release_space)(void *, struct inode *, int); -struct sockaddr_in6 { - short unsigned int sin6_family; - __be16 sin6_port; - __be32 sin6_flowinfo; - struct in6_addr sin6_addr; - __u32 sin6_scope_id; -}; +typedef void (*btf_trace_ext4_mb_bitmap_load)(void *, struct super_block *, long unsigned int); + +typedef void (*btf_trace_ext4_mb_buddy_bitmap_load)(void *, struct super_block *, long unsigned int); + +typedef void (*btf_trace_ext4_load_inode_bitmap)(void *, struct super_block *, long unsigned int); + +typedef void (*btf_trace_ext4_read_block_bitmap_load)(void *, struct super_block *, long unsigned int, bool); + +typedef void (*btf_trace_ext4_fallocate_enter)(void *, struct inode *, loff_t, loff_t, int); + +typedef void (*btf_trace_ext4_punch_hole)(void *, struct inode *, loff_t, loff_t, int); -union sctp_addr { - struct sockaddr_in v4; - struct sockaddr_in6 v6; - struct sockaddr sa; -}; +typedef void (*btf_trace_ext4_zero_range)(void *, struct inode *, loff_t, loff_t, int); -struct sctp_chunkhdr { - __u8 type; - __u8 flags; - __be16 length; -}; +typedef void (*btf_trace_ext4_fallocate_exit)(void *, struct inode *, loff_t, unsigned int, int); -struct sctp_inithdr { - __be32 init_tag; - __be32 a_rwnd; - __be16 num_outbound_streams; - __be16 num_inbound_streams; - __be32 initial_tsn; - __u8 params[0]; -}; +typedef void (*btf_trace_ext4_unlink_enter)(void *, struct inode *, struct dentry *); -struct sctp_init_chunk { - struct sctp_chunkhdr chunk_hdr; - struct sctp_inithdr init_hdr; -}; +typedef void (*btf_trace_ext4_unlink_exit)(void *, struct dentry *, int); -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]; -}; +typedef void (*btf_trace_ext4_truncate_enter)(void *, struct inode *); -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]; -}; +typedef void (*btf_trace_ext4_truncate_exit)(void *, struct inode *); -struct sctp_inithdr_host { - __u32 init_tag; - __u32 a_rwnd; - __u16 num_outbound_streams; - __u16 num_inbound_streams; - __u32 initial_tsn; -}; +typedef void (*btf_trace_ext4_ext_convert_to_initialized_enter)(void *, struct inode *, struct ext4_map_blocks *, struct ext4_extent *); -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, -}; +typedef void (*btf_trace_ext4_ext_convert_to_initialized_fastpath)(void *, struct inode *, struct ext4_map_blocks *, struct ext4_extent *, struct ext4_extent *); -struct sctp_stream_out_ext; +typedef void (*btf_trace_ext4_ext_map_blocks_enter)(void *, struct inode *, ext4_lblk_t, unsigned int, unsigned int); -struct sctp_stream_out { - union { - __u32 mid; - __u16 ssn; - }; - __u32 mid_uo; - struct sctp_stream_out_ext *ext; - __u8 state; -}; +typedef void (*btf_trace_ext4_ind_map_blocks_enter)(void *, struct inode *, ext4_lblk_t, unsigned int, unsigned int); -struct sctp_stream_in { - union { - __u32 mid; - __u16 ssn; - }; - __u32 mid_uo; - __u32 fsn; - __u32 fsn_uo; - char pd_mode; - char pd_mode_uo; -}; +typedef void (*btf_trace_ext4_ext_map_blocks_exit)(void *, struct inode *, unsigned int, struct ext4_map_blocks *, int); -struct sctp_stream_interleave; +typedef void (*btf_trace_ext4_ind_map_blocks_exit)(void *, struct inode *, unsigned int, struct ext4_map_blocks *, int); -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; -}; +typedef void (*btf_trace_ext4_ext_load_extent)(void *, struct inode *, ext4_lblk_t, ext4_fsblk_t); -struct sctp_sched_ops; +typedef void (*btf_trace_ext4_load_inode)(void *, struct super_block *, long unsigned int); -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; -}; +typedef void (*btf_trace_ext4_journal_start)(void *, struct super_block *, int, int, int, long unsigned int); -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; -}; +typedef void (*btf_trace_ext4_journal_start_reserved)(void *, struct super_block *, int, long unsigned int); -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; -}; +typedef void (*btf_trace_ext4_trim_extent)(void *, struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t); -struct sctp_endpoint; +typedef void (*btf_trace_ext4_trim_all_free)(void *, struct super_block *, ext4_group_t, ext4_grpblk_t, ext4_grpblk_t); -struct sctp_transport; +typedef void (*btf_trace_ext4_ext_handle_unwritten_extents)(void *, struct inode *, struct ext4_map_blocks *, int, unsigned int, ext4_fsblk_t); -struct sctp_random_param; +typedef void (*btf_trace_ext4_get_implied_cluster_alloc_exit)(void *, struct super_block *, struct ext4_map_blocks *, int); -struct sctp_chunks_param; +typedef void (*btf_trace_ext4_ext_show_extent)(void *, struct inode *, ext4_lblk_t, ext4_fsblk_t, short unsigned int); -struct sctp_hmac_algo_param; +typedef void (*btf_trace_ext4_remove_blocks)(void *, struct inode *, struct ext4_extent *, ext4_lblk_t, ext4_fsblk_t, struct partial_cluster *); -struct sctp_auth_bytes; +typedef void (*btf_trace_ext4_ext_rm_leaf)(void *, struct inode *, ext4_lblk_t, struct ext4_extent *, struct partial_cluster *); -struct sctp_shared_key; +typedef void (*btf_trace_ext4_ext_rm_idx)(void *, struct inode *, ext4_fsblk_t); -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]; - u32 secid; - u32 peer_secid; - struct callback_head rcu; -}; +typedef void (*btf_trace_ext4_ext_remove_space)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int); -struct nf_hook_state; +typedef void (*btf_trace_ext4_ext_remove_space_done)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t, int, struct partial_cluster *, __le16); -typedef unsigned int nf_hookfn(void *, struct sk_buff *, const struct nf_hook_state *); +typedef void (*btf_trace_ext4_es_insert_extent)(void *, struct inode *, struct extent_status *); -struct nf_hook_entry { - nf_hookfn *hook; - void *priv; -}; +typedef void (*btf_trace_ext4_es_cache_extent)(void *, struct inode *, struct extent_status *); -struct nf_hook_entries { - u16 num_hook_entries; - struct nf_hook_entry hooks[0]; -}; +typedef void (*btf_trace_ext4_es_remove_extent)(void *, struct inode *, ext4_lblk_t, ext4_lblk_t); -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 *); -}; +typedef void (*btf_trace_ext4_es_find_extent_range_enter)(void *, struct inode *, ext4_lblk_t); -enum nf_hook_ops_type { - NF_HOOK_OP_UNDEFINED = 0, - NF_HOOK_OP_NF_TABLES = 1, -}; +typedef void (*btf_trace_ext4_es_find_extent_range_exit)(void *, struct inode *, struct extent_status *); -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; -}; +typedef void (*btf_trace_ext4_es_lookup_extent_enter)(void *, struct inode *, ext4_lblk_t); -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, -}; +typedef void (*btf_trace_ext4_es_lookup_extent_exit)(void *, struct inode *, struct extent_status *, int); -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, -}; +typedef void (*btf_trace_ext4_es_shrink_count)(void *, struct super_block *, int, int); -struct socket_alloc { - struct socket socket; - struct inode vfs_inode; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; -}; +typedef void (*btf_trace_ext4_es_shrink_scan_enter)(void *, struct super_block *, int, int); -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]; -}; +typedef void (*btf_trace_ext4_es_shrink_scan_exit)(void *, struct super_block *, int, int); -struct ip_options_rcu { - struct callback_head rcu; - struct ip_options opt; -}; +typedef void (*btf_trace_ext4_collapse_range)(void *, struct inode *, loff_t, loff_t); -struct ipv6_opt_hdr; +typedef void (*btf_trace_ext4_insert_range)(void *, struct inode *, loff_t, loff_t); -struct ipv6_rt_hdr; +typedef void (*btf_trace_ext4_es_shrink)(void *, struct super_block *, int, u64, int, int); -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; -}; +typedef void (*btf_trace_ext4_es_insert_delayed_block)(void *, struct inode *, struct extent_status *, bool); -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; -}; +typedef void (*btf_trace_ext4_fsmap_low_key)(void *, struct super_block *, u32, u32, u64, u64, u64); -struct inet_cork_full { - struct inet_cork base; - struct flowi fl; -}; +typedef void (*btf_trace_ext4_fsmap_high_key)(void *, struct super_block *, u32, u32, u64, u64, u64); -struct ipv6_pinfo; +typedef void (*btf_trace_ext4_fsmap_mapping)(void *, struct super_block *, u32, u32, u64, u64, u64); -struct ip_mc_socklist; +typedef void (*btf_trace_ext4_getfsmap_low_key)(void *, struct super_block *, struct ext4_fsmap *); -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; -}; +typedef void (*btf_trace_ext4_getfsmap_high_key)(void *, struct super_block *, struct ext4_fsmap *); -struct in6_pktinfo { - struct in6_addr ipi6_addr; - int ipi6_ifindex; -}; +typedef void (*btf_trace_ext4_getfsmap_mapping)(void *, struct super_block *, struct ext4_fsmap *); -struct inet6_cork { - struct ipv6_txoptions *opt; - u8 hop_limit; - u8 tclass; -}; +typedef void (*btf_trace_ext4_shutdown)(void *, struct super_block *, long unsigned int); -struct ipv6_mc_socklist; +typedef void (*btf_trace_ext4_error)(void *, struct super_block *, const char *, unsigned int); -struct ipv6_ac_socklist; +typedef void (*btf_trace_ext4_prefetch_bitmaps)(void *, struct super_block *, ext4_group_t, ext4_group_t, unsigned int); -struct ipv6_fl_socklist; +typedef void (*btf_trace_ext4_lazy_itable_init)(void *, struct super_block *, ext4_group_t); -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; - __s16 hop_limit: 9; - __u16 __unused_1: 7; - __s16 mcast_hops: 9; - __u16 __unused_2: 6; - __u16 mc_loop: 1; - 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; -}; +typedef void (*btf_trace_ext4_fc_replay_scan)(void *, struct super_block *, int, int); -struct tcphdr { - __be16 source; - __be16 dest; - __be32 seq; - __be32 ack_seq; - __u16 doff: 4; - __u16 res1: 4; - __u16 cwr: 1; - __u16 ece: 1; - __u16 urg: 1; - __u16 ack: 1; - __u16 psh: 1; - __u16 rst: 1; - __u16 syn: 1; - __u16 fin: 1; - __be16 window; - __sum16 check; - __be16 urg_ptr; -}; +typedef void (*btf_trace_ext4_fc_replay)(void *, struct super_block *, int, int, int, int); -struct iphdr { - __u8 version: 4; - __u8 ihl: 4; - __u8 tos; - __be16 tot_len; - __be16 id; - __be16 frag_off; - __u8 ttl; - __u8 protocol; - __sum16 check; - __be32 saddr; - __be32 daddr; -}; +typedef void (*btf_trace_ext4_fc_commit_start)(void *, struct super_block *); -struct ipv6_rt_hdr { - __u8 nexthdr; - __u8 hdrlen; - __u8 type; - __u8 segments_left; -}; +typedef void (*btf_trace_ext4_fc_commit_stop)(void *, struct super_block *, int, int); -struct ipv6_opt_hdr { - __u8 nexthdr; - __u8 hdrlen; -}; +typedef void (*btf_trace_ext4_fc_stats)(void *, struct super_block *); -struct ipv6hdr { - __u8 version: 4; - __u8 priority: 4; - __u8 flow_lbl[3]; - __be16 payload_len; - __u8 nexthdr; - __u8 hop_limit; - struct in6_addr saddr; - struct in6_addr daddr; -}; +typedef void (*btf_trace_ext4_fc_track_create)(void *, struct inode *, struct dentry *, int); -struct udphdr { - __be16 source; - __be16 dest; - __be16 len; - __sum16 check; +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; }; -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; +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 ip6_sf_socklist; +struct mount_opts { + int token; + int mount_opt; + int flags; +}; -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 ext4_sb_encodings { + __u16 magic; + char *name; + char *version; }; -struct ipv6_ac_socklist { - struct in6_addr acl_addr; - int acl_ifindex; - struct ipv6_ac_socklist *acl_next; +struct ext4_parsed_options { + long unsigned int journal_devnum; + unsigned int journal_ioprio; + int mb_optimize_scan; }; -struct ip6_flowlabel; +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 ipv6_fl_socklist { - struct ipv6_fl_socklist *next; - struct ip6_flowlabel *fl; - struct callback_head rcu; +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 ip6_sf_socklist { - unsigned int sl_max; - unsigned int sl_count; - struct callback_head rcu; - struct in6_addr sl_addr[0]; +enum { + ptr_explicit = 0, + ptr_ext4_sb_info_offset = 1, + ptr_ext4_super_block_offset = 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; +struct ext4_attr { + struct attribute attr; + short int attr_id; + short int attr_ptr; + short unsigned int attr_size; union { - struct pid *pid; - kuid_t uid; - } owner; - long unsigned int lastuse; - long unsigned int expires; - struct net *fl_net; + int offset; + void *explicit_ptr; + } u; }; -struct inet_skb_parm { - int iif; - struct ip_options opt; - u16 flags; - u16 frag_max_size; +struct ext4_xattr_header { + __le32 h_magic; + __le32 h_refcount; + __le32 h_blocks; + __le32 h_hash; + __le32 h_checksum; + __u32 h_reserved[3]; }; -struct tty_file_private { - struct tty_struct *tty; - struct file *file; - struct list_head list; +struct ext4_xattr_block_find { + struct ext4_xattr_search s; + struct buffer_head *bh; }; -struct netlbl_lsm_cache { - refcount_t refcount; - void (*free)(const void *); - void *data; +struct ext4_fc_tl { + __le16 fc_tag; + __le16 fc_len; }; -struct netlbl_lsm_catmap { - u32 startbit; - u64 bitmap[4]; - struct netlbl_lsm_catmap *next; +struct ext4_fc_head { + __le32 fc_features; + __le32 fc_tid; }; -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; - u32 secid; - } attr; +struct ext4_fc_add_range { + __le32 fc_ino; + __u8 fc_ex[12]; }; -struct dccp_hdr { - __be16 dccph_sport; - __be16 dccph_dport; - __u8 dccph_doff; - __u8 dccph_ccval: 4; - __u8 dccph_cscov: 4; - __sum16 dccph_checksum; - __u8 dccph_reserved: 3; - __u8 dccph_type: 4; - __u8 dccph_x: 1; - __u8 dccph_seq2; - __be16 dccph_seq; +struct ext4_fc_del_range { + __le32 fc_ino; + __le32 fc_lblk; + __le32 fc_len; }; -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 ext4_fc_dentry_info { + __le32 fc_parent_ino; + __le32 fc_ino; + __u8 fc_dname[0]; }; -enum sctp_msg_flags { - MSG_NOTIFICATION = 32768, +struct ext4_fc_inode { + __le32 fc_ino; + __u8 fc_raw_inode[0]; }; -struct sctp_initmsg { - __u16 sinit_num_ostreams; - __u16 sinit_max_instreams; - __u16 sinit_max_attempts; - __u16 sinit_max_init_timeo; +struct ext4_fc_tail { + __le32 fc_tid; + __le32 fc_crc; }; -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 { + EXT4_FC_STATUS_OK = 0, + EXT4_FC_STATUS_INELIGIBLE = 1, + EXT4_FC_STATUS_SKIPPED = 2, + EXT4_FC_STATUS_FAILED = 3, }; -struct sctp_rtoinfo { - sctp_assoc_t srto_assoc_id; - __u32 srto_initial; - __u32 srto_max; - __u32 srto_min; +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 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 __track_dentry_update_args { + struct dentry *dentry; + int op; }; -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 __track_range_args { + ext4_lblk_t start; + ext4_lblk_t end; +}; -struct sctphdr { - __be16 source; - __be16 dest; - __be32 vtag; - __le32 checksum; +struct dentry_info_args { + int parent_ino; + int dname_len; + int ino; + int inode_len; + char *dname; }; -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 ext4_fc_tl_mem { + u16 fc_tag; + u16 fc_len; }; -struct sctp_paramhdr { - __be16 type; - __be16 length; +struct ext4_orphan_block_tail { + __le32 ob_magic; + __le32 ob_checksum; }; -enum sctp_param { - SCTP_PARAM_HEARTBEAT_INFO = 1, - SCTP_PARAM_IPV4_ADDRESS = 5, - SCTP_PARAM_IPV6_ADDRESS = 6, - SCTP_PARAM_STATE_COOKIE = 7, - SCTP_PARAM_UNRECOGNIZED_PARAMETERS = 8, - SCTP_PARAM_COOKIE_PRESERVATIVE = 9, - SCTP_PARAM_HOST_NAME_ADDRESS = 11, - SCTP_PARAM_SUPPORTED_ADDRESS_TYPES = 12, - SCTP_PARAM_ECN_CAPABLE = 32768, - SCTP_PARAM_RANDOM = 32770, - SCTP_PARAM_CHUNKS = 32771, - SCTP_PARAM_HMAC_ALGO = 32772, - SCTP_PARAM_SUPPORTED_EXT = 32776, - SCTP_PARAM_FWD_TSN_SUPPORT = 49152, - SCTP_PARAM_ADD_IP = 49153, - SCTP_PARAM_DEL_IP = 49154, - SCTP_PARAM_ERR_CAUSE = 49155, - SCTP_PARAM_SET_PRIMARY = 49156, - SCTP_PARAM_SUCCESS_REPORT = 49157, - SCTP_PARAM_ADAPTATION_LAYER_IND = 49158, - SCTP_PARAM_RESET_OUT_REQUEST = 13, - SCTP_PARAM_RESET_IN_REQUEST = 14, - SCTP_PARAM_RESET_TSN_REQUEST = 15, - SCTP_PARAM_RESET_RESPONSE = 16, - SCTP_PARAM_RESET_ADD_OUT_STREAMS = 17, - SCTP_PARAM_RESET_ADD_IN_STREAMS = 18, +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 sctp_datahdr { - __be32 tsn; - __be16 stream; - __be16 ssn; - __u32 ppid; - __u8 payload[0]; +struct journal_block_tag3_s { + __be32 t_blocknr; + __be32 t_flags; + __be32 t_blocknr_high; + __be32 t_checksum; }; -struct sctp_idatahdr { - __be32 tsn; - __be16 stream; - __be16 reserved; - __be32 mid; - union { - __u32 ppid; - __be32 fsn; - }; - __u8 payload[0]; +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; }; -struct sctp_ipv4addr_param { - struct sctp_paramhdr param_hdr; - struct in_addr addr; -}; +typedef struct journal_block_tag_s journal_block_tag_t; -struct sctp_ipv6addr_param { - struct sctp_paramhdr param_hdr; - struct in6_addr addr; +struct jbd2_journal_block_tail { + __be32 t_checksum; }; -struct sctp_cookie_preserve_param { - struct sctp_paramhdr param_hdr; - __be32 lifespan_increment; +struct jbd2_journal_revoke_header_s { + journal_header_t r_header; + __be32 r_count; }; -struct sctp_hostname_param { - struct sctp_paramhdr param_hdr; - uint8_t hostname[0]; -}; +typedef struct jbd2_journal_revoke_header_s jbd2_journal_revoke_header_t; -struct sctp_supported_addrs_param { - struct sctp_paramhdr param_hdr; - __be16 types[0]; +struct recovery_info { + tid_t start_transaction; + tid_t end_transaction; + int nr_replays; + int nr_revokes; + int nr_revoke_hits; }; -struct sctp_adaptation_ind_param { - struct sctp_paramhdr param_hdr; - __be32 adaptation_ind; +struct jbd2_revoke_table_s { + int hash_size; + int hash_shift; + struct list_head *hash_table; }; -struct sctp_supported_ext_param { - struct sctp_paramhdr param_hdr; - __u8 chunks[0]; +struct jbd2_revoke_record_s { + struct list_head hash; + tid_t sequence; + long long unsigned int blocknr; }; -struct sctp_random_param { - struct sctp_paramhdr param_hdr; - __u8 random_val[0]; +struct trace_event_raw_jbd2_checkpoint { + struct trace_entry ent; + dev_t dev; + int result; + char __data[0]; }; -struct sctp_chunks_param { - struct sctp_paramhdr param_hdr; - __u8 chunks[0]; +struct trace_event_raw_jbd2_commit { + struct trace_entry ent; + dev_t dev; + char sync_commit; + tid_t transaction; + char __data[0]; }; -struct sctp_hmac_algo_param { - struct sctp_paramhdr param_hdr; - __be16 hmac_ids[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 sctp_cookie_param { - struct sctp_paramhdr p; - __u8 body[0]; +struct trace_event_raw_jbd2_submit_inode_data { + struct trace_entry ent; + dev_t dev; + ino_t ino; + char __data[0]; }; -struct sctp_gap_ack_block { - __be16 start; - __be16 end; +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]; }; -union sctp_sack_variable { - struct sctp_gap_ack_block gab; - __be32 dup; +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 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 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 sctp_heartbeathdr { - struct sctp_paramhdr info; +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 sctp_shutdownhdr { - __be32 cum_tsn_ack; +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 sctp_errhdr { - __be16 cause; - __be16 length; - __u8 variable[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 sctp_ecnehdr { - __be32 lowest_tsn; +struct trace_event_raw_jbd2_write_superblock { + struct trace_entry ent; + dev_t dev; + int write_op; + char __data[0]; }; -struct sctp_cwrhdr { - __be32 lowest_tsn; +struct trace_event_raw_jbd2_lock_buffer_stall { + struct trace_entry ent; + dev_t dev; + long unsigned int stall_ms; + char __data[0]; }; -struct sctp_fwdtsn_skip { - __be16 stream; - __be16 ssn; +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 sctp_fwdtsn_hdr { - __be32 new_cum_tsn; - struct sctp_fwdtsn_skip skip[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 sctp_ifwdtsn_skip { - __be16 stream; - __u8 reserved; - __u8 flags; - __be32 mid; +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 sctp_ifwdtsn_hdr { - __be32 new_cum_tsn; - struct sctp_ifwdtsn_skip skip[0]; -}; +struct trace_event_data_offsets_jbd2_checkpoint {}; -struct sctp_addip_param { - struct sctp_paramhdr param_hdr; - __be32 crr_id; -}; +struct trace_event_data_offsets_jbd2_commit {}; -struct sctp_addiphdr { - __be32 serial; - __u8 params[0]; -}; +struct trace_event_data_offsets_jbd2_end_commit {}; -struct sctp_authhdr { - __be16 shkey_id; - __be16 hmac_id; - __u8 hmac[0]; -}; +struct trace_event_data_offsets_jbd2_submit_inode_data {}; -struct sctp_auth_bytes { - refcount_t refcnt; - __u32 len; - __u8 data[0]; -}; +struct trace_event_data_offsets_jbd2_handle_start_class {}; -struct sctp_shared_key { - struct list_head key_list; - struct sctp_auth_bytes *key; - refcount_t refcnt; - __u16 key_id; - __u8 deactivated; -}; +struct trace_event_data_offsets_jbd2_handle_extend {}; -enum { - SCTP_MAX_STREAM = 65535, -}; +struct trace_event_data_offsets_jbd2_handle_stats {}; -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 trace_event_data_offsets_jbd2_run_stats {}; -enum { - SCTP_MAX_DUP_TSNS = 16, -}; +struct trace_event_data_offsets_jbd2_checkpoint_stats {}; -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_data_offsets_jbd2_update_log_tail {}; -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_jbd2_write_superblock {}; -struct sctp_ulpevent { - struct sctp_association *asoc; - struct sctp_chunk *chunk; - unsigned int rmem_len; - union { - __u32 mid; - __u16 ssn; - }; - union { - __u32 ppid; - __u32 fsn; - }; - __u32 tsn; - __u32 cumtsn; - __u16 stream; - __u16 flags; - __u16 msg_flags; -} __attribute__((packed)); +struct trace_event_data_offsets_jbd2_lock_buffer_stall {}; -union sctp_addr_param; +struct trace_event_data_offsets_jbd2_journal_shrink {}; -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 trace_event_data_offsets_jbd2_shrink_scan_exit {}; -struct sctp_sender_hb_info; +struct trace_event_data_offsets_jbd2_shrink_checkpoint_list {}; -struct sctp_signed_cookie; +typedef void (*btf_trace_jbd2_checkpoint)(void *, journal_t *, int); -struct sctp_datamsg; +typedef void (*btf_trace_jbd2_start_commit)(void *, journal_t *, transaction_t *); -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; -}; +typedef void (*btf_trace_jbd2_commit_locking)(void *, journal_t *, transaction_t *); -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 *); -}; +typedef void (*btf_trace_jbd2_commit_flushing)(void *, journal_t *, transaction_t *); -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; -}; +typedef void (*btf_trace_jbd2_commit_logging)(void *, journal_t *, transaction_t *); -enum sctp_socket_type { - SCTP_SOCKET_UDP = 0, - SCTP_SOCKET_UDP_HIGH_BANDWIDTH = 1, - SCTP_SOCKET_TCP = 2, -}; +typedef void (*btf_trace_jbd2_drop_transaction)(void *, journal_t *, transaction_t *); -struct sctp_pf; +typedef void (*btf_trace_jbd2_end_commit)(void *, journal_t *, transaction_t *); -struct sctp_sock { - struct inet_sock inet; - enum sctp_socket_type type; - int: 32; - 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; - short: 16; - __u32 default_ppid; - __u16 default_flags; - short: 16; - __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; - short: 16; - __u32 flowlabel; - __u8 dscp; - char: 8; - __u16 pf_retrans; - __u16 ps_retrans; - short: 16; - __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; - short: 16; - 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; - int: 22; - atomic_t pd_mode; - struct sk_buff_head pd_lobby; - struct list_head auto_asconf_list; - int do_auto_asconf; - int: 32; -} __attribute__((packed)); +typedef void (*btf_trace_jbd2_submit_inode_data)(void *, struct inode *); -struct sctp_af; +typedef void (*btf_trace_jbd2_handle_start)(void *, dev_t, tid_t, unsigned int, unsigned int, int); -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; -}; +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); -struct sctp_endpoint { - struct sctp_ep_common base; - struct hlist_node node; - int hashent; - struct list_head asocs; - __u8 secret_key[32]; - __u8 *digest; - __u32 sndbuf_policy; - __u32 rcvbuf_policy; - struct crypto_shash **auth_hmacs; - struct sctp_hmac_algo_param *auth_hmacs_list; - struct sctp_chunks_param *auth_chunk_list; - struct list_head endpoint_shared_keys; - __u16 active_key_id; - __u8 ecn_enable: 1; - __u8 auth_enable: 1; - __u8 intl_enable: 1; - __u8 prsctp_enable: 1; - __u8 asconf_enable: 1; - __u8 reconf_enable: 1; - __u8 strreset_enable; - struct callback_head rcu; +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 sctp_signed_cookie { - __u8 signature[32]; - __u32 __pad; - struct sctp_cookie c; -} __attribute__((packed)); +struct meta_entry { + u64 data_block; + unsigned int index_block; + short unsigned int offset; + short unsigned int pad; +}; -union sctp_addr_param { - struct sctp_paramhdr p; - struct sctp_ipv4addr_param v4; - struct sctp_ipv6addr_param v6; +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 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 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 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 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 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 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; }; -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 { - __u16 pmtu; - __u16 probe_size; - __u16 probe_high; - __u8 probe_count; - __u8 state; - } pl; - __u64 hb_nonce; - struct callback_head rcu; +struct squashfs_dir_index { + __le32 index; + __le32 start_block; + __le32 size; + unsigned char name[0]; }; -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; +struct squashfs_dir_entry { + __le16 offset; + __le16 inode_number; + __le16 type; + __le16 size; + char name[0]; }; -struct sctp_stream_priorities { - struct list_head prio_sched; - struct list_head active; - struct sctp_stream_out_ext *next; - __u16 prio; +struct squashfs_dir_header { + __le32 count; + __le32 start_block; + __le32 inode_number; }; -struct sctp_stream_out_ext { - __u64 abandoned_unsent[3]; - __u64 abandoned_sent[3]; - struct list_head outq; +struct squashfs_inode_info { + u64 start; + int offset; + u64 xattr; + unsigned int xattr_size; + int xattr_count; union { struct { - struct list_head prio_list; - struct sctp_stream_priorities *prio_head; + u64 fragment_block; + int fragment_size; + int fragment_offset; + u64 block_list_start; }; struct { - struct list_head rr_list; + u64 dir_idx_start; + int dir_idx_offset; + int dir_idx_cnt; + int parent; }; }; + struct inode vfs_inode; }; -struct task_security_struct { - u32 osid; - u32 sid; - u32 exec_sid; - u32 create_sid; - u32 keycreate_sid; - u32 sockcreate_sid; +struct squashfs_fragment_entry { + __le64 start_block; + __le32 size; + unsigned int unused; }; -enum label_initialized { - LABEL_INVALID = 0, - LABEL_INITIALIZED = 1, - LABEL_PENDING = 2, +struct squashfs_base_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; }; -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 squashfs_ipc_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 nlink; }; -struct file_security_struct { - u32 sid; - u32 fown_sid; - u32 isid; - u32 pseqno; +struct squashfs_lipc_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 nlink; + __le32 xattr; }; -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 squashfs_dev_inode { + __le16 inode_type; + __le16 mode; + __le16 uid; + __le16 guid; + __le32 mtime; + __le32 inode_number; + __le32 nlink; + __le32 rdev; }; -struct msg_security_struct { - u32 sid; +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 ipc_security_struct { - u16 sclass; - u32 sid; +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 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 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 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 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]; +}; + +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 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 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 Opt_errors { + Opt_errors_continue = 0, + Opt_errors_panic = 1, }; -struct tun_security_struct { - u32 sid; +enum squashfs_param { + Opt_errors = 0, }; -struct key_security_struct { - u32 sid; +struct squashfs_mount_opts { + enum Opt_errors errors; }; -struct ib_security_struct { - u32 sid; +struct squashfs_stream { + void *stream; + struct mutex mutex; }; -struct bpf_security_struct { - u32 sid; +struct squashfs_xattr_entry { + __le16 type; + __le16 size; + char data[0]; }; -struct perf_event_security_struct { - u32 sid; +struct squashfs_xattr_val { + __le32 vsize; + char value[0]; }; -struct selinux_mnt_opts { - u32 fscontext_sid; - u32 context_sid; - u32 rootcontext_sid; - u32 defcontext_sid; +struct squashfs_xattr_id { + __le64 xattr; + __le32 count; + __le32 size; }; -enum { - Opt_error___2 = 4294967295, - Opt_context = 0, - Opt_defcontext = 1, - Opt_fscontext = 2, - Opt_rootcontext = 3, - Opt_seclabel = 4, +struct squashfs_xattr_id_table { + __le64 xattr_table_start; + __le32 xattr_ids; + __le32 unused; }; -enum { - SELNL_MSG_SETENFORCE = 16, - SELNL_MSG_POLICYLOAD = 17, - SELNL_MSG_MAX = 18, +struct lz4_comp_opts { + __le32 version; + __le32 flags; }; -enum selinux_nlgroups { - SELNLGRP_NONE = 0, - SELNLGRP_AVC = 1, - __SELNLGRP_MAX = 2, +struct squashfs_lz4 { + void *input; + void *output; }; -struct selnl_msg_setenforce { - __s32 val; +struct squashfs_lzo { + void *input; + void *output; }; -struct selnl_msg_policyload { - __u32 seqno; +enum xz_mode { + XZ_SINGLE = 0, + XZ_PREALLOC = 1, + XZ_DYNALLOC = 2, }; -enum { - XFRM_MSG_BASE = 16, - XFRM_MSG_NEWSA = 16, - XFRM_MSG_DELSA = 17, - XFRM_MSG_GETSA = 18, - XFRM_MSG_NEWPOLICY = 19, - XFRM_MSG_DELPOLICY = 20, - XFRM_MSG_GETPOLICY = 21, - XFRM_MSG_ALLOCSPI = 22, - XFRM_MSG_ACQUIRE = 23, - XFRM_MSG_EXPIRE = 24, - XFRM_MSG_UPDPOLICY = 25, - XFRM_MSG_UPDSA = 26, - XFRM_MSG_POLEXPIRE = 27, - XFRM_MSG_FLUSHSA = 28, - XFRM_MSG_FLUSHPOLICY = 29, - XFRM_MSG_NEWAE = 30, - XFRM_MSG_GETAE = 31, - XFRM_MSG_REPORT = 32, - XFRM_MSG_MIGRATE = 33, - XFRM_MSG_NEWSADINFO = 34, - XFRM_MSG_GETSADINFO = 35, - XFRM_MSG_NEWSPDINFO = 36, - XFRM_MSG_GETSPDINFO = 37, - XFRM_MSG_MAPPING = 38, - XFRM_MSG_SETDEFAULT = 39, - XFRM_MSG_GETDEFAULT = 40, - __XFRM_MSG_MAX = 41, +enum 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, }; -enum { - RTM_BASE = 16, - RTM_NEWLINK = 16, - RTM_DELLINK = 17, - RTM_GETLINK = 18, - RTM_SETLINK = 19, - RTM_NEWADDR = 20, - RTM_DELADDR = 21, - RTM_GETADDR = 22, - RTM_NEWROUTE = 24, - RTM_DELROUTE = 25, - RTM_GETROUTE = 26, - RTM_NEWNEIGH = 28, - RTM_DELNEIGH = 29, - RTM_GETNEIGH = 30, - RTM_NEWRULE = 32, - RTM_DELRULE = 33, - RTM_GETRULE = 34, - RTM_NEWQDISC = 36, - RTM_DELQDISC = 37, - RTM_GETQDISC = 38, - RTM_NEWTCLASS = 40, - RTM_DELTCLASS = 41, - RTM_GETTCLASS = 42, - RTM_NEWTFILTER = 44, - RTM_DELTFILTER = 45, - RTM_GETTFILTER = 46, - RTM_NEWACTION = 48, - RTM_DELACTION = 49, - RTM_GETACTION = 50, - RTM_NEWPREFIX = 52, - RTM_GETMULTICAST = 58, - RTM_GETANYCAST = 62, - RTM_NEWNEIGHTBL = 64, - RTM_GETNEIGHTBL = 66, - RTM_SETNEIGHTBL = 67, - RTM_NEWNDUSEROPT = 68, - RTM_NEWADDRLABEL = 72, - RTM_DELADDRLABEL = 73, - RTM_GETADDRLABEL = 74, - RTM_GETDCB = 78, - RTM_SETDCB = 79, - RTM_NEWNETCONF = 80, - RTM_DELNETCONF = 81, - RTM_GETNETCONF = 82, - RTM_NEWMDB = 84, - RTM_DELMDB = 85, - RTM_GETMDB = 86, - RTM_NEWNSID = 88, - RTM_DELNSID = 89, - RTM_GETNSID = 90, - RTM_NEWSTATS = 92, - RTM_GETSTATS = 94, - RTM_SETSTATS = 95, - RTM_NEWCACHEREPORT = 96, - RTM_NEWCHAIN = 100, - RTM_DELCHAIN = 101, - RTM_GETCHAIN = 102, - RTM_NEWNEXTHOP = 104, - RTM_DELNEXTHOP = 105, - RTM_GETNEXTHOP = 106, - RTM_NEWLINKPROP = 108, - RTM_DELLINKPROP = 109, - RTM_GETLINKPROP = 110, - RTM_NEWVLAN = 112, - RTM_DELVLAN = 113, - RTM_GETVLAN = 114, - RTM_NEWNEXTHOPBUCKET = 116, - RTM_DELNEXTHOPBUCKET = 117, - RTM_GETNEXTHOPBUCKET = 118, - RTM_NEWTUNNEL = 120, - RTM_DELTUNNEL = 121, - RTM_GETTUNNEL = 122, - __RTM_MAX = 123, +struct 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 xz_dec; + +struct squashfs_xz { + struct xz_dec *state; + struct xz_buf buf; +}; + +struct disk_comp_opts { + __le32 dictionary_size; + __le32 flags; +}; + +struct comp_opts { + int dict_size; +}; + +typedef unsigned char Byte; + +typedef long unsigned int uLong; + +struct internal_state; + +struct z_stream_s { + const Byte *next_in; + uLong avail_in; + uLong total_in; + Byte *next_out; + uLong avail_out; + uLong total_out; + char *msg; + struct internal_state *state; + void *workspace; + int data_type; + uLong adler; + uLong reserved; +}; + +struct internal_state { + int dummy; +}; + +typedef struct z_stream_s z_stream; + +typedef z_stream *z_streamp; + +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 ZSTD_inBuffer_s { + const void *src; + size_t size; + size_t pos; +}; + +typedef struct ZSTD_inBuffer_s ZSTD_inBuffer; + +struct ZSTD_outBuffer_s { + void *dst; + size_t size; + size_t pos; }; -enum { - INET_DIAG_REQ_NONE = 0, - INET_DIAG_REQ_BYTECODE = 1, - INET_DIAG_REQ_SK_BPF_STORAGES = 2, - INET_DIAG_REQ_PROTOCOL = 3, - __INET_DIAG_REQ_MAX = 4, -}; +typedef struct ZSTD_outBuffer_s ZSTD_outBuffer; + +typedef struct { + long long unsigned int frameContentSize; + unsigned int windowSize; + unsigned int dictID; + unsigned int checksumFlag; +} ZSTD_frameParams; + +typedef enum { + zdss_init = 0, + zdss_loadHeader = 1, + zdss_read = 2, + zdss_load = 3, + zdss_flush = 4, +} ZSTD_dStreamStage; + +typedef uint8_t BYTE; + +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 uint32_t U32; + +struct ZSTD_DCtx_s; -struct nlmsg_perm { - u16 nlmsg_type; - u32 perm; -}; +typedef struct ZSTD_DCtx_s ZSTD_DCtx; -struct selinux_policy_convert_data; +struct ZSTD_DDict_s; -struct selinux_load_state { - struct selinux_policy *policy; - struct selinux_policy_convert_data *convert_data; -}; +typedef struct ZSTD_DDict_s ZSTD_DDict; -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 ZSTD_DStream_s { + ZSTD_DCtx *dctx; + ZSTD_DDict *ddictLocal; + const ZSTD_DDict *ddict; + ZSTD_frameParams fParams; + ZSTD_dStreamStage stage; + char *inBuff; + size_t inBuffSize; + size_t inPos; + size_t maxWindowSize; + char *outBuff; + size_t outBuffSize; + size_t outStart; + size_t outEnd; + size_t blockSize; + BYTE headerBuffer[18]; + size_t lhSize; + ZSTD_customMem customMem; + void *legacyContext; + U32 previousLegacyVersion; + U32 legacyVersion; + U32 hostageByte; }; -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; -}; +typedef struct ZSTD_DStream_s ZSTD_DStream; -struct policy_load_memory { - size_t len; - void *data; +struct workspace { + void *mem; + size_t mem_size; + size_t window_size; }; -struct netif_security_struct { - struct net *ns; - int ifindex; - u32 sid; +struct ramfs_mount_opts { + umode_t mode; }; -struct sel_netif { - struct list_head list; - struct netif_security_struct nsec; - struct callback_head callback_head; +struct ramfs_fs_info { + struct ramfs_mount_opts mount_opts; }; -struct netnode_security_struct { - union { - __be32 ipv4; - struct in6_addr ipv6; - } addr; - u32 sid; - u16 family; +enum ramfs_param { + Opt_mode___3 = 0, }; -struct sel_netnode_bkt { - unsigned int size; - struct list_head list; +enum hugetlbfs_size_type { + NO_SIZE = 0, + SIZE_STD = 1, + SIZE_PERCENT = 2, }; -struct sel_netnode { - struct netnode_security_struct nsec; - struct list_head list; - struct callback_head rcu; +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 netport_security_struct { - u32 sid; - u16 port; - u8 protocol; +enum hugetlb_param { + Opt_gid___5 = 0, + Opt_min_size = 1, + Opt_mode___4 = 2, + Opt_nr_inodes___2 = 3, + Opt_pagesize = 4, + Opt_size___2 = 5, + Opt_uid___4 = 6, }; -struct sel_netport_bkt { - int size; - struct list_head list; +typedef u16 wchar_t; + +struct nls_table { + const char *charset; + const char *alias; + int (*uni2char)(wchar_t, unsigned char *, int); + int (*char2uni)(const unsigned char *, int, wchar_t *); + const unsigned char *charset2lower; + const unsigned char *charset2upper; + struct module *owner; + struct nls_table *next; }; -struct sel_netport { - struct netport_security_struct psec; - struct list_head list; +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 fatent_operations; + +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 ebitmap_node { - struct ebitmap_node *next; - long unsigned int maps[6]; - u32 startbit; +struct fat_entry; + +struct fatent_operations { + void (*ent_blocknr)(struct super_block *, int, int *, sector_t *); + void (*ent_set_ptr)(struct fat_entry *, int); + int (*ent_bread)(struct super_block *, struct fat_entry *, int, sector_t); + int (*ent_get)(struct fat_entry *); + void (*ent_put)(struct fat_entry *, int); + int (*ent_next)(struct fat_entry *); +}; + +struct 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 ebitmap { - struct ebitmap_node *node; - u32 highbit; +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 policy_file { - char *data; - size_t len; +struct fat_cache { + struct list_head cache_list; + int nr_contig; + int fcluster; + int dcluster; }; -struct hashtab_node { - void *key; - void *datum; - struct hashtab_node *next; +struct fat_cache_id { + unsigned int id; + int nr_contig; + int fcluster; + int dcluster; }; -struct hashtab { - struct hashtab_node **htable; - u32 size; - u32 nel; +struct compat_dirent { + u32 d_ino; + compat_off_t d_off; + u16 d_reclen; + char d_name[256]; }; -struct hashtab_info { - u32 slots_used; - u32 max_chain_len; +enum utf16_endian { + UTF16_HOST_ENDIAN = 0, + UTF16_LITTLE_ENDIAN = 1, + UTF16_BIG_ENDIAN = 2, }; -struct selinux_kernel_status { - u32 version; - u32 sequence; - u32 enforcing; - u32 policyload; - u32 deny_unknown; +struct __fat_dirent { + long int d_ino; + __kernel_off_t d_off; + short unsigned int d_reclen; + char d_name[256]; +}; + +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 hashtab_key_params { - u32 (*hash)(const void *); - int (*cmp)(const void *, const void *); +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 symtab { - struct hashtab table; - u32 nprim; +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 avtab_key { - u16 source_type; - u16 target_type; - u16 target_class; - u16 specified; +typedef long long unsigned int llu; + +enum { + PARSE_INVALID = 1, + PARSE_NOT_LONGNAME = 2, + PARSE_EOF = 3, }; -struct avtab_extended_perms { - u8 specified; - u8 driver; - struct extended_perms_data perms; +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 avtab_datum { +struct fatent_ra { + sector_t cur; + sector_t limit; + unsigned int ra_blocks; + sector_t ra_advance; + sector_t ra_next; + sector_t ra_limit; +}; + +struct fat_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 { - u32 data; - struct avtab_extended_perms *xperms; - } u; + 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 avtab_node { - struct avtab_key key; - struct avtab_datum datum; - struct avtab_node *next; +struct fat_boot_fsinfo { + __le32 signature1; + __le32 reserved1[120]; + __le32 signature2; + __le32 free_clusters; + __le32 next_cluster; + __le32 reserved2[4]; +}; + +struct fat_bios_param_block { + u16 fat_sector_size; + u8 fat_sec_per_clus; + u16 fat_reserved; + u8 fat_fats; + u16 fat_dir_entries; + u16 fat_sectors; + u16 fat_fat_length; + u32 fat_total_sect; + u8 fat16_state; + u32 fat16_vol_id; + u32 fat32_length; + u32 fat32_root_cluster; + u16 fat32_info_sector; + u8 fat32_state; + u32 fat32_vol_id; +}; + +struct fat_floppy_defaults { + unsigned int nr_sectors; + unsigned int sec_per_clus; + unsigned int dir_entries; + unsigned int media; + unsigned int fat_length; +}; + +enum { + Opt_check_n = 0, + Opt_check_r = 1, + Opt_check_s = 2, + Opt_uid___5 = 3, + Opt_gid___6 = 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 fat_fid { + u32 i_gen; + u32 i_pos_low; + u16 i_pos_hi; + u16 parent_i_pos_hi; + u32 parent_i_pos_low; + u32 parent_i_gen; +}; + +struct shortname_info { + unsigned char lower: 1; + unsigned char upper: 1; + unsigned char valid: 1; +}; + +struct ecryptfs_mount_crypt_stat; + +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 avtab { - struct avtab_node **htable; - u32 nel; - u32 nslot; - u32 mask; +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 mls_level { - u32 sens; - struct ebitmap cat; +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 mls_range { - struct mls_level level[2]; +struct ecryptfs_dentry_info { + struct path lower_path; + struct callback_head rcu; }; -struct context { - u32 user; - u32 role; - u32 type; - u32 len; - struct mls_range range; - char *str; +struct ecryptfs_sb_info { + struct super_block *wsi_sb; + struct ecryptfs_mount_crypt_stat mount_crypt_stat; }; -struct type_set; +struct ecryptfs_file_info { + struct file *wfi_file; + struct ecryptfs_crypt_stat *crypt_stat; +}; -struct constraint_expr { - u32 expr_type; - u32 attr; - u32 op; - struct ebitmap names; - struct type_set *type_names; - struct constraint_expr *next; +struct ecryptfs_getdents_callback { + struct dir_context ctx; + struct dir_context *caller; + struct super_block *sb; + int filldir_called; + int entries_written; }; -struct type_set { - struct ebitmap types; - struct ebitmap negset; +struct ecryptfs_session_key { u32 flags; + u32 encrypted_key_size; + u32 decrypted_key_size; + u8 encrypted_key[512]; + u8 decrypted_key[64]; }; -struct constraint_node { - u32 permissions; - struct constraint_expr *expr; - struct constraint_node *next; +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 common_datum { - u32 value; - struct symtab permissions; +struct ecryptfs_private_key { + u32 key_size; + u32 data_len; + u8 signature[17]; + char pki_type[17]; + u8 data[0]; }; -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 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 role_datum { - u32 value; - u32 bounds; - struct ebitmap dominates; - struct ebitmap types; +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 role_allow { - u32 role; - u32 new_role; - struct role_allow *next; +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]; +}; + +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 ecryptfs_cache_info { + struct kmem_cache **cache; + const char *name; + size_t size; + slab_flags_t flags; + void (*ctor)(void *); }; -struct type_datum { - u32 value; - u32 bounds; - unsigned char primary; - unsigned char attribute; +struct ecryptfs_key_sig { + struct list_head crypt_stat_list; + char keysig[17]; }; -struct user_datum { - u32 value; - u32 bounds; - struct ebitmap roles; - struct mls_range range; - struct mls_level dfltlevel; +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 cond_bool_datum { - __u32 value; - int state; +struct extent_crypt_result { + struct completion completion; + int rc; }; -struct ocontext { - union { - char *name; - struct { - u8 protocol; - u16 low_port; - u16 high_port; - } port; - struct { - u32 addr; - u32 mask; - } node; - struct { - u32 addr[4]; - u32 mask[4]; - } node6; - struct { - u64 subnet_prefix; - u16 low_pkey; - u16 high_pkey; - } ibpkey; - struct { - char *dev_name; - u8 port; - } ibendport; - } u; - union { - u32 sclass; - u32 behavior; - } v; - struct context context[2]; - u32 sid[2]; - struct ocontext *next; +struct ecryptfs_flag_map_elem { + u32 file_flag; + u32 local_flag; }; -struct genfs { - char *fstype; - struct ocontext *head; - struct genfs *next; +struct ecryptfs_cipher_code_str_map_elem { + char cipher_str[16]; + u8 cipher_code; }; -struct cond_node; +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 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 ecryptfs_token_types { + ECRYPTFS_PASSWORD = 0, + ECRYPTFS_PRIVATE_KEY = 1, }; -struct sidtab_str_cache; +struct ecryptfs_key_record { + unsigned char type; + size_t enc_key_size; + unsigned char sig[8]; + unsigned char enc_key[512]; +}; -struct sidtab_entry { - u32 sid; - u32 hash; - struct context context; - struct sidtab_str_cache *cache; - struct hlist_node list; +struct ecryptfs_auth_tok_list_item { + unsigned char encrypted_session_key[64]; + struct list_head list; + struct ecryptfs_auth_tok auth_tok; }; -struct sidtab_str_cache { - struct callback_head rcu_member; - struct list_head lru_member; - struct sidtab_entry *parent; - u32 len; - char str[0]; +struct ecryptfs_message { + u32 index; + u32 data_len; + u8 data[0]; }; -struct sidtab_node_inner; +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 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 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 ecryptfs_open_req { + struct file **lower_file; + struct path path; + struct completion done; + struct list_head kthread_ctl_list; +}; -struct sidtab_node_leaf; +struct ecryptfs_kthread_ctl { + u32 flags; + struct mutex mux; + struct list_head req_list; + wait_queue_head_t wait; +}; -union sidtab_entry_inner { - struct sidtab_node_inner *ptr_inner; - struct sidtab_node_leaf *ptr_leaf; +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 sidtab_node_inner { - union sidtab_entry_inner entries[512]; +struct getdents_callback___2 { + struct dir_context ctx; + char *name; + u64 ino; + int found; + int sequence; }; -struct sidtab_node_leaf { - struct sidtab_entry entries[39]; -}; +typedef u32 unicode_t; -struct sidtab_isid_entry { - int set; - struct sidtab_entry entry; +struct utf8_table { + int cmask; + int cval; + int shift; + long int lmask; + long int lval; }; -struct sidtab; +struct utf8data; -struct sidtab_convert_params { - int (*func)(struct context *, struct context *, void *); - void *args; - struct sidtab *target; +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 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 utf8data { + unsigned int maxage; + unsigned int offset; }; -struct perm_datum { - u32 value; -}; +typedef const unsigned char utf8trie_t; -struct role_trans_key { - u32 role; - u32 type; - u32 tclass; -}; +typedef const unsigned char utf8leaf_t; -struct role_trans_datum { - u32 new_role; -}; +typedef unsigned int autofs_wqt_t; -struct filename_trans_key { - u32 ttype; - u16 tclass; - const char *name; -}; +struct autofs_sb_info; -struct filename_trans_datum { - struct ebitmap stypes; - u32 otype; - struct filename_trans_datum *next; +struct autofs_info { + struct dentry *dentry; + struct inode *inode; + int flags; + struct completion expire_complete; + struct list_head active; + struct list_head expiring; + struct autofs_sb_info *sbi; + long unsigned int last_used; + int count; + kuid_t uid; + kgid_t gid; + struct callback_head rcu; }; -struct level_datum { - struct mls_level *level; - unsigned char isalias; -}; +struct autofs_wait_queue; -struct cat_datum { - u32 value; - unsigned char isalias; +struct autofs_sb_info { + u32 magic; + int pipefd; + struct file *pipe; + struct pid *oz_pgrp; + int version; + int sub_version; + int min_proto; + int max_proto; + unsigned int flags; + long unsigned int exp_timeout; + unsigned int type; + struct super_block *sb; + struct mutex wq_mutex; + struct mutex pipe_mutex; + spinlock_t fs_lock; + struct autofs_wait_queue *queues; + spinlock_t lookup_lock; + struct list_head active_list; + struct list_head expiring_list; + struct callback_head rcu; }; -struct range_trans { - u32 source_type; - u32 target_type; - u32 target_class; +struct autofs_wait_queue { + wait_queue_head_t queue; + struct autofs_wait_queue *next; + autofs_wqt_t wait_queue_token; + struct qstr name; + u32 offset; + u32 dev; + u64 ino; + kuid_t uid; + kgid_t gid; + pid_t pid; + pid_t tgid; + int status; + unsigned int wait_ctr; }; -struct cond_expr_node; - -struct cond_expr { - struct cond_expr_node *nodes; - u32 len; +enum { + Opt_err___4 = 0, + Opt_fd = 1, + Opt_uid___6 = 2, + Opt_gid___7 = 3, + Opt_pgrp = 4, + Opt_minproto = 5, + Opt_maxproto = 6, + Opt_indirect = 7, + Opt_direct = 8, + Opt_offset = 9, + Opt_strictexpire = 10, + Opt_ignore = 11, }; -struct cond_av_list { - struct avtab_node **nodes; - u32 len; +struct autofs_packet_hdr { + int proto_version; + int type; }; -struct cond_node { - int cur_state; - struct cond_expr expr; - struct cond_av_list true_list; - struct cond_av_list false_list; +struct autofs_packet_expire { + struct autofs_packet_hdr hdr; + int len; + char name[256]; }; -struct policy_data { - struct policydb *p; - void *fp; +enum { + AUTOFS_IOC_READY_CMD = 96, + AUTOFS_IOC_FAIL_CMD = 97, + AUTOFS_IOC_CATATONIC_CMD = 98, + AUTOFS_IOC_PROTOVER_CMD = 99, + AUTOFS_IOC_SETTIMEOUT_CMD = 100, + AUTOFS_IOC_EXPIRE_CMD = 101, }; -struct cond_expr_node { - u32 expr_type; - u32 bool; +enum autofs_notify { + NFY_NONE = 0, + NFY_MOUNT = 1, + NFY_EXPIRE = 2, }; -struct policydb_compat_info { - int version; - int sym_num; - int ocon_num; +enum { + AUTOFS_IOC_EXPIRE_MULTI_CMD = 102, + AUTOFS_IOC_PROTOSUBVER_CMD = 103, + AUTOFS_IOC_ASKUMOUNT_CMD = 112, }; -struct cond_insertf_data { - struct policydb *p; - struct avtab_node **dst; - struct cond_av_list *other; +struct autofs_packet_missing { + struct autofs_packet_hdr hdr; + autofs_wqt_t wait_queue_token; + int len; + char name[256]; }; -struct rt6key { - struct in6_addr addr; - int plen; +struct autofs_packet_expire_multi { + struct autofs_packet_hdr hdr; + autofs_wqt_t wait_queue_token; + int len; + char name[256]; }; -struct rtable; - -struct fnhe_hash_bucket; +union autofs_packet_union { + struct autofs_packet_hdr hdr; + struct autofs_packet_missing missing; + struct autofs_packet_expire expire; + struct autofs_packet_expire_multi expire_multi; +}; -struct fib_nh_common { - struct net_device *nhc_dev; - netdevice_tracker nhc_dev_tracker; - int nhc_oif; - unsigned char nhc_scope; - u8 nhc_family; - u8 nhc_gw_family; - unsigned char nhc_flags; - struct lwtunnel_state *nhc_lwtstate; - union { - __be32 ipv4; - struct in6_addr ipv6; - } nhc_gw; - int nhc_weight; - atomic_t nhc_upper_bound; - struct rtable **nhc_pcpu_rth_output; - struct rtable *nhc_rth_input; - struct fnhe_hash_bucket *nhc_exceptions; +struct autofs_v5_packet { + struct autofs_packet_hdr hdr; + autofs_wqt_t wait_queue_token; + __u32 dev; + __u64 ino; + __u32 uid; + __u32 gid; + __u32 pid; + __u32 tgid; + __u32 len; + char name[256]; }; -struct rt6_exception_bucket; +typedef struct autofs_v5_packet autofs_packet_missing_indirect_t; -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; -}; +typedef struct autofs_v5_packet autofs_packet_expire_indirect_t; -struct fib6_node; +typedef struct autofs_v5_packet autofs_packet_missing_direct_t; -struct dst_metrics; +typedef struct autofs_v5_packet autofs_packet_expire_direct_t; -struct nexthop; +union autofs_v5_packet_union { + struct autofs_packet_hdr hdr; + struct autofs_v5_packet v5_packet; + autofs_packet_missing_indirect_t missing_indirect; + autofs_packet_expire_indirect_t expire_indirect; + autofs_packet_missing_direct_t missing_direct; + autofs_packet_expire_direct_t expire_direct; +}; -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 args_protover { + __u32 version; }; -struct uncached_list; +struct args_protosubver { + __u32 sub_version; +}; -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; +struct args_openmount { + __u32 devid; }; -struct rt6_statistics { - __u32 fib_nodes; - __u32 fib_route_nodes; - __u32 fib_rt_entries; - __u32 fib_rt_cache; - __u32 fib_discarded_routes; - atomic_t fib_rt_alloc; +struct args_ready { + __u32 token; }; -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 args_fail { + __u32 token; + __s32 status; }; -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 args_setpipefd { + __s32 pipefd; }; -typedef union { - __be32 a4; - __be32 a6[4]; - struct in6_addr in6; -} xfrm_address_t; +struct args_timeout { + __u64 timeout; +}; -struct xfrm_id { - xfrm_address_t daddr; - __be32 spi; - __u8 proto; +struct args_requester { + __u32 uid; + __u32 gid; }; -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 args_expire { + __u32 how; }; -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 args_askumount { + __u32 may_umount; }; -struct xfrm_lifetime_cur { - __u64 bytes; - __u64 packets; - __u64 add_time; - __u64 use_time; +struct args_in { + __u32 type; }; -struct xfrm_replay_state { - __u32 oseq; - __u32 seq; - __u32 bitmap; +struct args_out { + __u32 devid; + __u32 magic; }; -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 args_ismountpoint { + union { + struct args_in in; + struct args_out out; + }; }; -struct xfrm_algo { - char alg_name[64]; - unsigned int alg_key_len; - char alg_key[0]; +struct autofs_dev_ioctl { + __u32 ver_major; + __u32 ver_minor; + __u32 size; + __s32 ioctlfd; + union { + struct args_protover protover; + struct args_protosubver protosubver; + struct args_openmount openmount; + struct args_ready ready; + struct args_fail fail; + struct args_setpipefd setpipefd; + struct args_timeout timeout; + struct args_requester requester; + struct args_expire expire; + struct args_askumount askumount; + struct args_ismountpoint ismountpoint; + }; + char path[0]; }; -struct xfrm_algo_auth { - char alg_name[64]; - unsigned int alg_key_len; - unsigned int alg_trunc_len; - char alg_key[0]; +enum { + AUTOFS_DEV_IOCTL_VERSION_CMD = 113, + AUTOFS_DEV_IOCTL_PROTOVER_CMD = 114, + AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD = 115, + AUTOFS_DEV_IOCTL_OPENMOUNT_CMD = 116, + AUTOFS_DEV_IOCTL_CLOSEMOUNT_CMD = 117, + AUTOFS_DEV_IOCTL_READY_CMD = 118, + AUTOFS_DEV_IOCTL_FAIL_CMD = 119, + AUTOFS_DEV_IOCTL_SETPIPEFD_CMD = 120, + AUTOFS_DEV_IOCTL_CATATONIC_CMD = 121, + AUTOFS_DEV_IOCTL_TIMEOUT_CMD = 122, + AUTOFS_DEV_IOCTL_REQUESTER_CMD = 123, + AUTOFS_DEV_IOCTL_EXPIRE_CMD = 124, + AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD = 125, + AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD = 126, }; -struct xfrm_algo_aead { - char alg_name[64]; - unsigned int alg_key_len; - unsigned int alg_icv_len; - char alg_key[0]; +typedef int (*ioctl_fn)(struct file *, struct autofs_sb_info *, struct autofs_dev_ioctl *); + +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, +}; + +enum fuse_notify_code { + FUSE_NOTIFY_POLL = 1, + FUSE_NOTIFY_INVAL_INODE = 2, + FUSE_NOTIFY_INVAL_ENTRY = 3, + FUSE_NOTIFY_STORE = 4, + FUSE_NOTIFY_RETRIEVE = 5, + FUSE_NOTIFY_DELETE = 6, + FUSE_NOTIFY_CODE_MAX = 7, +}; + +struct fuse_forget_in { + uint64_t nlookup; +}; + +struct fuse_forget_one { + uint64_t nodeid; + uint64_t nlookup; +}; + +struct fuse_batch_forget_in { + uint32_t count; + uint32_t dummy; +}; + +struct fuse_interrupt_in { + uint64_t unique; +}; + +struct fuse_notify_poll_wakeup_out { + uint64_t kh; +}; + +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 xfrm_stats { - __u32 replay_window; - __u32 replay; - __u32 integrity_failed; +struct fuse_out_header { + uint32_t len; + int32_t error; + uint64_t unique; }; -enum { - XFRM_POLICY_TYPE_MAIN = 0, - XFRM_POLICY_TYPE_SUB = 1, - XFRM_POLICY_TYPE_MAX = 2, - XFRM_POLICY_TYPE_ANY = 255, +struct fuse_notify_inval_inode_out { + uint64_t ino; + int64_t off; + int64_t len; }; -struct xfrm_encap_tmpl { - __u16 encap_type; - __be16 encap_sport; - __be16 encap_dport; - xfrm_address_t encap_oa; +struct fuse_notify_inval_entry_out { + uint64_t parent; + uint32_t namelen; + uint32_t padding; }; -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 fuse_notify_delete_out { + uint64_t parent; + uint64_t child; + uint32_t namelen; + uint32_t padding; +}; + +struct fuse_notify_store_out { + uint64_t nodeid; + uint64_t offset; + uint32_t size; + uint32_t padding; }; -struct xfrm_mark { - __u32 v; - __u32 m; +struct fuse_notify_retrieve_out { + uint64_t notify_unique; + uint64_t nodeid; + uint64_t offset; + uint32_t size; + uint32_t padding; }; -struct xfrm_address_filter { - xfrm_address_t saddr; - xfrm_address_t daddr; - __u16 family; - __u8 splen; - __u8 dplen; +struct fuse_notify_retrieve_in { + uint64_t dummy1; + uint64_t offset; + uint32_t size; + uint32_t dummy2; + uint64_t dummy3; + uint64_t dummy4; }; -struct xfrm_state_walk { - struct list_head all; - u8 state; - u8 dying; - u8 proto; - u32 seq; - struct xfrm_address_filter *filter; +struct fuse_forget_link { + struct fuse_forget_one forget_one; + struct fuse_forget_link *next; }; -enum xfrm_replay_mode { - XFRM_REPLAY_MODE_LEGACY = 0, - XFRM_REPLAY_MODE_BMP = 1, - XFRM_REPLAY_MODE_ESN = 2, +struct fuse_mount; + +struct fuse_release_args; + +struct fuse_file { + struct fuse_mount *fm; + struct fuse_release_args *release_args; + u64 kh; + u64 fh; + u64 nodeid; + refcount_t count; + u32 open_flags; + struct list_head write_entry; + struct { + struct mutex lock; + loff_t pos; + loff_t cache_off; + u64 version; + } readdir; + struct rb_node polled_node; + wait_queue_head_t poll_wait; + bool flock: 1; }; -struct xfrm_state_offload { - struct net_device *dev; - netdevice_tracker dev_tracker; - struct net_device *real_dev; - long unsigned int offload_handle; - unsigned int num_exthdrs; - u8 flags; +struct fuse_conn; + +struct fuse_mount { + struct fuse_conn *fc; + struct super_block *sb; + struct list_head fc_entry; }; -struct xfrm_mode { - u8 encap; - u8 family; - u8 flags; +struct fuse_in_arg { + unsigned int size; + const void *value; }; -struct xfrm_type; +struct fuse_arg { + unsigned int size; + void *value; +}; -struct xfrm_type_offload; +struct fuse_page_desc { + unsigned int length; + unsigned int offset; +}; -struct xfrm_state { - possible_net_t xs_net; - union { - struct hlist_node gclist; - struct hlist_node bydst; - }; - struct hlist_node bysrc; - struct hlist_node byspi; - struct hlist_node byseq; - refcount_t refcnt; - spinlock_t lock; - struct xfrm_id id; - struct xfrm_selector sel; - struct xfrm_mark mark; - u32 if_id; - u32 tfcpad; - u32 genid; - struct xfrm_state_walk km; +struct 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 fuse_args_pages { + struct fuse_args args; + struct page **pages; + struct fuse_page_desc *descs; + unsigned int num_pages; +}; + +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 fuse_req { + struct list_head list; + struct list_head intr_entry; + struct fuse_args *args; + refcount_t count; + long unsigned int flags; 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 fuse_in_header h; + } in; + struct { + struct fuse_out_header h; + } out; + wait_queue_head_t waitq; + void *argbuf; + struct fuse_mount *fm; }; -struct dst_metrics { - u32 metrics[17]; - refcount_t refcnt; +struct fuse_iqueue; + +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 xfrm_policy_walk_entry { - struct list_head all; - u8 dead; +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 xfrm_policy_queue { - struct sk_buff_head hold_queue; - struct timer_list hold_timer; - long unsigned int timeout; +struct fuse_pqueue { + unsigned int connected; + spinlock_t lock; + struct list_head *processing; + struct list_head io; }; -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 fuse_dev { + struct fuse_conn *fc; + struct fuse_pqueue pq; + struct list_head entry; }; -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 fuse_conn_dax; + +struct fuse_sync_bucket; + +struct fuse_conn { + spinlock_t lock; + refcount_t count; + atomic_t dev_count; struct callback_head rcu; + kuid_t user_id; + kgid_t group_id; + struct pid_namespace *pid_ns; + struct user_namespace *user_ns; + unsigned int max_read; + unsigned int max_write; + unsigned int max_pages; + unsigned int max_pages_limit; + struct fuse_iqueue iq; + atomic64_t khctr; + struct rb_root polled_files; + unsigned int max_background; + unsigned int congestion_threshold; + unsigned int num_background; + unsigned int active_background; + struct list_head bg_queue; + spinlock_t bg_lock; + int initialized; + int blocked; + wait_queue_head_t blocked_waitq; + unsigned int connected; + bool aborted; + unsigned int conn_error: 1; + unsigned int conn_init: 1; + unsigned int async_read: 1; + unsigned int abort_err: 1; + unsigned int atomic_o_trunc: 1; + unsigned int export_support: 1; + unsigned int writeback_cache: 1; + unsigned int parallel_dirops: 1; + unsigned int handle_killpriv: 1; + unsigned int cache_symlinks: 1; + unsigned int legacy_opts_show: 1; + unsigned int handle_killpriv_v2: 1; + unsigned int no_open: 1; + unsigned int no_opendir: 1; + unsigned int no_fsync: 1; + unsigned int no_fsyncdir: 1; + unsigned int no_flush: 1; + unsigned int no_setxattr: 1; + unsigned int setxattr_ext: 1; + unsigned int no_getxattr: 1; + unsigned int no_listxattr: 1; + unsigned int no_removexattr: 1; + unsigned int no_lock: 1; + unsigned int no_access: 1; + unsigned int no_create: 1; + unsigned int no_interrupt: 1; + unsigned int no_bmap: 1; + unsigned int no_poll: 1; + unsigned int big_writes: 1; + unsigned int dont_mask: 1; + unsigned int no_flock: 1; + unsigned int no_fallocate: 1; + unsigned int no_rename2: 1; + unsigned int auto_inval_data: 1; + unsigned int explicit_inval_data: 1; + unsigned int do_readdirplus: 1; + unsigned int readdirplus_auto: 1; + unsigned int async_dio: 1; + unsigned int no_lseek: 1; + unsigned int posix_acl: 1; + unsigned int default_permissions: 1; + unsigned int allow_other: 1; + unsigned int no_copy_file_range: 1; + unsigned int destroy: 1; + unsigned int delete_stale: 1; + unsigned int no_control: 1; + unsigned int no_force_umount: 1; + unsigned int auto_submounts: 1; + unsigned int 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 udp_hslot; +struct fuse_sync_bucket { + atomic_t count; + wait_queue_head_t waitq; + struct callback_head rcu; +}; -struct udp_table { - struct udp_hslot *hash; - struct udp_hslot *hash2; - unsigned int mask; - unsigned int log; +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 fuse_retrieve_args { + struct fuse_args_pages ap; + struct fuse_notify_retrieve_in inarg; +}; + +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 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; +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 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; +struct fuse_getattr_in { + uint32_t getattr_flags; + uint32_t dummy; + uint64_t fh; }; -struct fnhe_hash_bucket { - struct fib_nh_exception *chain; +struct fuse_attr_out { + uint64_t attr_valid; + uint32_t attr_valid_nsec; + uint32_t dummy; + struct fuse_attr attr; }; -struct rt6_exception_bucket { - struct hlist_head chain; - int depth; +struct fuse_mknod_in { + uint32_t mode; + uint32_t rdev; + uint32_t umask; + uint32_t padding; }; -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 *); +struct fuse_mkdir_in { + uint32_t mode; + uint32_t umask; }; -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 fuse_rename2_in { + uint64_t newdir; + uint32_t flags; + uint32_t padding; }; -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 fuse_link_in { + uint64_t oldnodeid; }; -struct xfrm_offload { - struct { - __u32 low; - __u32 hi; - } seq; - __u32 flags; - __u32 status; - __u8 proto; - __u8 inner_ipproto; +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 sec_path { - int len; - int olen; - struct xfrm_state *xvec[6]; - struct xfrm_offload ovec[1]; +struct fuse_create_in { + uint32_t flags; + uint32_t mode; + uint32_t umask; + uint32_t open_flags; }; -struct udp_hslot { - struct hlist_head head; - int count; - spinlock_t lock; +struct fuse_open_out { + uint64_t fh; + uint32_t open_flags; + uint32_t padding; }; -struct selinux_mapping; +struct fuse_access_in { + uint32_t mask; + uint32_t padding; +}; -struct selinux_map { - struct selinux_mapping *mapping; - u16 size; +struct fuse_inode_dax; + +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 selinux_policy { - struct sidtab *sidtab; - struct policydb policydb; - struct selinux_map map; - u32 latest_granting; +enum { + FUSE_I_ADVISE_RDPLUS = 0, + FUSE_I_INIT_RDPLUS = 1, + FUSE_I_SIZE_UNSTABLE = 2, + FUSE_I_BAD = 3, }; -struct convert_context_args { - struct selinux_state *state; - struct policydb *oldp; - struct policydb *newp; +struct fuse_file_lock { + uint64_t start; + uint64_t end; + uint32_t type; + uint32_t pid; }; -struct selinux_policy_convert_data { - struct convert_context_args args; - struct sidtab_convert_params sidtab_params; +struct fuse_open_in { + uint32_t flags; + uint32_t open_flags; }; -struct selinux_mapping { - u16 value; - unsigned int num_perms; - u32 perms[32]; +struct fuse_release_in { + uint64_t fh; + uint32_t flags; + uint32_t release_flags; + uint64_t lock_owner; }; -struct selinux_audit_rule { - u32 au_seqno; - struct context au_ctxt; +struct fuse_flush_in { + uint64_t fh; + uint32_t unused; + uint32_t padding; + uint64_t lock_owner; }; -struct pkey_security_struct { - u64 subnet_prefix; - u16 pkey; - u32 sid; +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 sel_ib_pkey_bkt { - int size; - struct list_head list; +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 sel_ib_pkey { - struct pkey_security_struct psec; - struct list_head list; - struct callback_head rcu; +struct fuse_write_out { + uint32_t size; + uint32_t padding; }; -struct sockaddr_un { - __kernel_sa_family_t sun_family; - char sun_path[108]; +struct fuse_fsync_in { + uint64_t fh; + uint32_t fsync_flags; + uint32_t padding; }; -struct unix_address { - refcount_t refcnt; - int len; - struct sockaddr_un name[0]; +struct fuse_lk_in { + uint64_t fh; + uint64_t owner; + struct fuse_file_lock lk; + uint32_t lk_flags; + uint32_t padding; }; -struct scm_stat { - atomic_t nr_fds; +struct fuse_lk_out { + struct fuse_file_lock lk; }; -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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 fuse_bmap_in { + uint64_t block; + uint32_t blocksize; + uint32_t padding; }; -struct ptrace_relation { - struct task_struct *tracer; - struct task_struct *tracee; - bool invalid; - struct list_head node; - struct callback_head rcu; +struct fuse_bmap_out { + uint64_t block; }; -struct access_report_info { - struct callback_head work; - const char *access; - struct task_struct *target; - struct task_struct *agent; +struct fuse_poll_in { + uint64_t fh; + uint64_t kh; + uint32_t flags; + uint32_t events; }; -enum devcg_behavior { - DEVCG_DEFAULT_NONE = 0, - DEVCG_DEFAULT_ALLOW = 1, - DEVCG_DEFAULT_DENY = 2, +struct fuse_poll_out { + uint32_t revents; + uint32_t padding; }; -struct dev_exception_item { - u32 major; - u32 minor; - short int type; - short int access; - struct list_head list; - struct callback_head rcu; +struct fuse_fallocate_in { + uint64_t fh; + uint64_t offset; + uint64_t length; + uint32_t mode; + uint32_t padding; }; -struct dev_cgroup { - struct cgroup_subsys_state css; - struct list_head exceptions; - enum devcg_behavior behavior; +struct fuse_lseek_in { + uint64_t fh; + uint64_t offset; + uint32_t whence; + uint32_t padding; }; -struct landlock_object; +struct fuse_lseek_out { + uint64_t offset; +}; -struct landlock_object_underops { - void (*release)(struct landlock_object * const); +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 landlock_object { - refcount_t usage; +struct fuse_release_args { + struct fuse_args args; + struct fuse_release_in inarg; + struct inode *inode; +}; + +struct fuse_io_priv { + struct kref refcnt; + int async; spinlock_t lock; - void *underobj; + unsigned int reqs; + ssize_t bytes; + size_t size; + __u64 offset; + bool write; + bool should_dirty; + int err; + struct kiocb *iocb; + struct completion *done; + bool blocking; +}; + +struct fuse_io_args { union { - struct callback_head rcu_free; - const struct landlock_object_underops *underops; + 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; }; -typedef u16 access_mask_t; +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 landlock_layer { - u16 level; - access_mask_t access; +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 landlock_rule { - struct rb_node node; - struct landlock_object *object; - u32 num_layers; - struct landlock_layer layers[0]; +struct fuse_kstatfs { + uint64_t blocks; + uint64_t bfree; + uint64_t bavail; + uint64_t files; + uint64_t ffree; + uint32_t bsize; + uint32_t namelen; + uint32_t frsize; + uint32_t padding; + uint32_t spare[6]; +}; + +struct fuse_statfs_out { + struct fuse_kstatfs st; +}; + +struct fuse_init_in { + uint32_t major; + uint32_t minor; + uint32_t max_readahead; + uint32_t flags; +}; + +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 fuse_syncfs_in { + uint64_t padding; +}; + +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 { + 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 fuse_inode_handle { + u64 nodeid; + u32 generation; +}; + +struct fuse_init_args { + struct fuse_args args; + struct fuse_init_in in; + struct fuse_init_out out; +}; + +struct fuse_setxattr_in { + uint32_t size; + uint32_t flags; + uint32_t setxattr_flags; + uint32_t padding; +}; + +struct fuse_getxattr_in { + uint32_t size; + uint32_t padding; }; -struct landlock_hierarchy { - struct landlock_hierarchy *parent; - refcount_t usage; +struct fuse_getxattr_out { + uint32_t size; + uint32_t padding; }; -struct landlock_ruleset { - struct rb_root root; - struct landlock_hierarchy *hierarchy; - union { - 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 fuse_dirent { + uint64_t ino; + uint64_t off; + uint32_t namelen; + uint32_t type; + char name[0]; }; -struct landlock_cred_security { - struct landlock_ruleset *domain; +struct fuse_direntplus { + struct fuse_entry_out entry_out; + struct fuse_dirent dirent; }; -struct landlock_ruleset_attr { - __u64 handled_access_fs; +enum fuse_parse_result { + FOUND_ERR = 4294967295, + FOUND_NONE = 0, + FOUND_SOME = 1, + FOUND_ALL = 2, }; -enum landlock_rule_type { - LANDLOCK_RULE_PATH_BENEATH = 1, +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 landlock_path_beneath_attr { - __u64 allowed_access; - __s32 parent_fd; -} __attribute__((packed)); +struct fuse_ioctl_iovec { + uint64_t base; + uint64_t len; +}; -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 fuse_ioctl_out { + int32_t result; + uint32_t flags; + uint32_t in_iovs; + uint32_t out_iovs; }; -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 fuse_setupmapping_in { + uint64_t fh; + uint64_t foffset; + uint64_t len; + uint64_t flags; + uint64_t moffset; }; -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 fuse_removemapping_in { + uint32_t count; }; -struct modsig; +struct fuse_removemapping_one { + uint64_t moffset; + uint64_t len; +}; -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 fuse_inode_dax { + struct rw_semaphore sem; + struct rb_root_cached tree; + long unsigned int nr; }; -struct asymmetric_key_id; +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 public_key_signature { - struct asymmetric_key_id *auth_ids[3]; - u8 *s; - u8 *digest; - u32 s_size; - u32 digest_size; - const char *pkey_algo; - const char *hash_algo; - const char *encoding; - const void *data; - unsigned int data_size; +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 asymmetric_key_id { - short unsigned int len; - unsigned char data[0]; +struct debugfs_fsdata { + const struct file_operations *real_fops; + refcount_t active_users; + struct completion active_users_drained; }; -enum asymmetric_payload_bits { - asym_crypto = 0, - asym_subtype = 1, - asym_key_ids = 2, - asym_auth = 3, +struct debugfs_mount_opts { + kuid_t uid; + kgid_t gid; + umode_t mode; }; -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)); +enum { + Opt_uid___7 = 0, + Opt_gid___8 = 1, + Opt_mode___5 = 2, + Opt_err___5 = 3, +}; -struct evm_ima_xattr_data { - u8 type; - u8 data[0]; +struct debugfs_fs_info { + struct debugfs_mount_opts mount_opts; }; -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 debugfs_blob_wrapper { + void *data; + long unsigned int size; }; -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 debugfs_reg32 { + char *name; + long unsigned int offset; }; -struct ima_field_data { - u8 *data; - u32 len; +struct debugfs_regset32 { + const struct debugfs_reg32 *regs; + int nregs; + void *base; + struct device *dev; }; -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 debugfs_u32_array { + u32 *array; + u32 n_elements; }; -struct ima_template_desc { - struct list_head list; - char *name; - char *fmt; - int num_fields; - const struct ima_template_field **fields; +struct debugfs_devm_entry { + int (*read)(struct seq_file *, void *); + struct device *dev; }; -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 tracefs_dir_ops { + int (*mkdir)(const char *); + int (*rmdir)(const char *); }; -struct ima_queue_entry { - struct hlist_node hnext; - struct list_head later; - struct ima_template_entry *entry; +struct tracefs_mount_opts { + kuid_t uid; + kgid_t gid; + umode_t mode; + unsigned int opts; }; -struct ima_h_table { - atomic_long_t len; - atomic_long_t violations; - struct hlist_head queue[1024]; +struct tracefs_fs_info { + struct tracefs_mount_opts mount_opts; }; -enum ima_fs_flags { - IMA_FS_BUSY = 0, +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; + short unsigned int __pad1; + short unsigned int seq; + long unsigned int __unused1; + long unsigned int __unused2; }; -typedef u16 layer_mask_t; +typedef s32 compat_key_t; -struct landlock_inode_security { - struct landlock_object *object; -}; +typedef u32 __compat_gid32_t; -struct landlock_superblock_security { - atomic_long_t inode_refs; +struct compat_ipc64_perm { + compat_key_t key; + __compat_uid32_t uid; + __compat_gid32_t gid; + __compat_uid32_t cuid; + __compat_gid32_t cgid; + compat_mode_t mode; + short unsigned int __pad1; + short unsigned int seq; + short unsigned int __pad2; + unsigned int __unused1; + unsigned int __unused2; }; -struct ima_max_digest_data { - struct ima_digest_data hdr; - u8 digest[64]; +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; }; -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 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; }; -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 ipc_params { + key_t key; + int flg; + union { + size_t size; + int nsems; + } u; }; -enum tpm_pcrs { - TPM_PCR0 = 0, - TPM_PCR8 = 8, - TPM_PCR10 = 10, +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 ima_algo_desc { - struct crypto_shash *tfm; - enum hash_algo algo; +struct ipc_proc_iface { + const char *path; + const char *header; + int ids; + int (*show)(struct seq_file *, void *); }; -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 ipc_proc_iter { + struct ipc_namespace *ns; + struct pid_namespace *pid_ns; + struct ipc_proc_iface *iface; }; -enum policy_types { - ORIGINAL_TCB = 1, - DEFAULT_TCB = 2, +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 policy_rule_list { - IMA_DEFAULT_POLICY = 1, - IMA_CUSTOM_POLICY = 2, +struct msg_msgseg { + struct msg_msgseg *next; }; -struct ima_rule_opt_list { - size_t count; - char *items[0]; +typedef int __kernel_ipc_pid_t; + +struct msgbuf { + __kernel_long_t mtype; + char mtext[1]; }; -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; - kgid_t gid; - kuid_t fowner; - kgid_t fgroup; - bool (*uid_op)(kuid_t, kuid_t); - bool (*gid_op)(kgid_t, kgid_t); - bool (*fowner_op)(kuid_t, kuid_t); - bool (*fgroup_op)(kgid_t, kgid_t); - int pcr; - unsigned int allowed_algos; - struct { - void *rule; - 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 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 policy_opt { - 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_gid_eq = 20, - Opt_egid_eq = 21, - Opt_fowner_eq = 22, - Opt_fgroup_eq = 23, - Opt_uid_gt = 24, - Opt_euid_gt = 25, - Opt_gid_gt = 26, - Opt_egid_gt = 27, - Opt_fowner_gt = 28, - Opt_fgroup_gt = 29, - Opt_uid_lt = 30, - Opt_euid_lt = 31, - Opt_gid_lt = 32, - Opt_egid_lt = 33, - Opt_fowner_lt = 34, - Opt_fgroup_lt = 35, - Opt_appraise_type = 36, - Opt_appraise_flag = 37, - Opt_appraise_algos = 38, - Opt_permit_directio = 39, - Opt_pcr = 40, - Opt_template = 41, - Opt_keyrings = 42, - Opt_label = 43, - Opt_err___11 = 44, -}; - -enum { - mask_exec = 0, - mask_write = 1, - mask_read = 2, - mask_append = 3, +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 ima_kexec_hdr { - u16 version; - u16 _reserved0; - u32 _reserved1; - u64 buffer_size; - u64 count; +struct msginfo { + int msgpool; + int msgmap; + int msgmax; + int msgmnb; + int msgmni; + int msgssz; + int msgtql; + short unsigned int msgseg; }; -enum header_fields { - HDR_PCR = 0, - HDR_DIGEST = 1, - HDR_TEMPLATE_NAME = 2, - HDR_TEMPLATE_DATA = 3, - HDR__LAST = 4, +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 __unused1; + compat_ulong_t __unused2; }; -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, +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; + long: 64; + long: 64; + long: 64; + long: 64; + 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 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]; +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 ima_key_entry { +struct msg_sender { struct list_head list; - void *payload; - size_t payload_len; - char *keyring_name; + struct task_struct *tsk; + size_t msgsz; +}; + +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 xattr_list { - struct list_head list; - char *name; - bool enabled; +struct compat_msgbuf { + compat_long_t mtype; + char mtext[1]; }; -struct evm_digest { - struct ima_digest_data hdr; - char digest[64]; +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 h_misc { - long unsigned int ino; - __u32 generation; - uid_t uid; - gid_t gid; - umode_t mode; +struct sem { + int semval; + struct pid *sempid; + spinlock_t lock; + struct list_head pending_alter; + struct list_head pending_const; + time64_t sem_otime; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 evm_xattr { - struct evm_ima_xattr_data data; - u8 digest[20]; +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; }; -enum { - CRYPTO_MSG_ALG_REQUEST = 0, - CRYPTO_MSG_ALG_REGISTER = 1, - CRYPTO_MSG_ALG_LOADED = 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 crypto_larval { - struct crypto_alg alg; - struct crypto_alg *adult; - struct completion completion; - u32 mask; - bool test_started; +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 crypto_cipher { - struct crypto_tfm base; +struct seminfo { + int semmap; + int semmni; + int semmns; + int semmnu; + int semmsl; + int semopm; + int semume; + int semusz; + int semvmx; + int semaem; }; -struct scatter_walk { - struct scatterlist *sg; - unsigned int offset; +struct sem_undo_list { + refcount_t refcnt; + spinlock_t lock; + struct list_head list_proc; }; -struct rtattr { - short unsigned int rta_len; - short unsigned int rta_type; +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 __unused1; + compat_ulong_t __unused2; }; -struct crypto_queue { - struct list_head list; - struct list_head *backlog; - unsigned int qlen; - unsigned int max_qlen; +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; + long: 64; + long: 64; + long: 64; + long: 64; + 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 sem sems[0]; }; -struct crypto_attr_alg { - char name[128]; +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 crypto_attr_type { - u32 type; - u32 mask; +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 { - CRYPTOA_UNSPEC = 0, - CRYPTOA_ALG = 1, - CRYPTOA_TYPE = 2, - __CRYPTOA_MAX = 3, +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 aead_request { - struct crypto_async_request base; - unsigned int assoclen; - unsigned int cryptlen; - u8 *iv; - struct scatterlist *src; - struct scatterlist *dst; - void *__ctx[0]; +struct 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 crypto_aead; +struct shminfo { + int shmmax; + int shmmin; + int shmmni; + int shmseg; + int shmall; +}; -struct aead_alg { - int (*setkey)(struct crypto_aead *, const u8 *, unsigned int); - int (*setauthsize)(struct crypto_aead *, unsigned int); - int (*encrypt)(struct aead_request *); - int (*decrypt)(struct aead_request *); - int (*init)(struct crypto_aead *); - void (*exit)(struct crypto_aead *); - unsigned int ivsize; - unsigned int maxauthsize; - unsigned int chunksize; - struct crypto_alg base; +struct 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 crypto_aead { - unsigned int authsize; - unsigned int reqsize; - struct crypto_tfm base; +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 __unused1; + compat_ulong_t __unused2; }; -struct aead_instance { - void (*free)(struct aead_instance *); - union { - struct { - char head[64]; - struct crypto_instance base; - } s; - struct aead_alg alg; - }; +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; + long: 64; + long: 64; + long: 64; + long: 64; + 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_aead_spawn { - struct crypto_spawn base; +struct shm_file_data { + int id; + struct ipc_namespace *ns; + struct file *file; + const struct vm_operations_struct *vm_ops; }; -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 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 crypto_report_aead { - char type[64]; - char geniv[64]; - unsigned int blocksize; - unsigned int maxauthsize; - unsigned int ivsize; +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 crypto_sync_skcipher; +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 aead_geniv_ctx { - spinlock_t lock; - struct crypto_aead *child; - struct crypto_sync_skcipher *sknull; - u8 salt[0]; +struct ipc_kludge { + struct msgbuf *msgp; + long int msgtyp; }; -struct crypto_rng; +struct compat_ipc_kludge { + compat_uptr_t msgp; + compat_long_t msgtyp; +}; -struct rng_alg { - int (*generate)(struct crypto_rng *, const u8 *, unsigned int, u8 *, unsigned int); - int (*seed)(struct crypto_rng *, const u8 *, unsigned int); - void (*set_ent)(struct crypto_rng *, const u8 *, unsigned int); - unsigned int seedsize; - struct crypto_alg base; +struct mqueue_fs_context { + struct ipc_namespace *ipc_ns; + bool newns; }; -struct crypto_rng { - struct crypto_tfm base; +struct posix_msg_tree_node { + struct rb_node rb_node; + struct list_head msg_list; + int priority; }; -struct crypto_cipher_spawn { - struct crypto_spawn base; +struct ext_wait_queue { + struct task_struct *task; + struct list_head list; + struct msg_msg *msg; + int state; }; -struct crypto_sync_skcipher { - struct crypto_skcipher base; +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 skcipher_instance { - void (*free)(struct skcipher_instance *); - union { - struct { - char head[64]; - struct crypto_instance base; - } s; - struct skcipher_alg alg; - }; +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 crypto_skcipher_spawn { - struct crypto_spawn base; +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 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 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 skcipher_ctx_simple { - struct crypto_cipher *cipher; +struct key_notification { + struct watch_notification watch; + __u32 key_id; + __u32 aux; }; -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 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 { - SKCIPHER_WALK_PHYS = 1, - SKCIPHER_WALK_SLOW = 2, - SKCIPHER_WALK_COPY = 4, - SKCIPHER_WALK_DIFF = 8, - SKCIPHER_WALK_SLEEP = 16, +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 skcipher_walk_buffer { - struct list_head entry; - struct scatter_walk dst; - unsigned int len; - u8 *data; - u8 buffer[0]; +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 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 *); - struct hash_alg_common halg; +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 crypto_hash_walk { - char *data; - unsigned int offset; - unsigned int alignmask; - struct page *pg; - unsigned int entrylen; - unsigned int total; - struct scatterlist *sg; +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 ahash_instance { - void (*free)(struct ahash_instance *); +struct keyring_read_iterator_context { + size_t buflen; + size_t count; + key_serial_t *buffer; +}; + +struct keyctl_dh_params { union { - struct { - char head[88]; - struct crypto_instance base; - } s; - struct ahash_alg alg; + __s32 private; + __s32 priv; }; + __s32 prime; + __s32 base; }; -struct crypto_ahash_spawn { - struct crypto_spawn base; +struct keyctl_kdf_params { + char *hashname; + char *otherinfo; + __u32 otherinfolen; + __u32 __spare[8]; }; -struct crypto_report_hash { - char type[64]; - unsigned int blocksize; - unsigned int digestsize; +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 ahash_request_priv { - crypto_completion_t complete; - void *data; - u8 *result; - u32 flags; - void *ubuf[0]; +struct keyctl_pkey_params { + __s32 key_id; + __u32 in_len; + union { + __u32 out_len; + __u32 in2_len; + }; + __u32 __spare[7]; }; -struct crypto_report_akcipher { - char type[64]; +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 akcipher_request { +struct compat_keyctl_kdf_params { + compat_uptr_t hashname; + compat_uptr_t otherinfo; + __u32 otherinfolen; + __u32 __spare[8]; +}; + +struct kpp_request { struct crypto_async_request base; struct scatterlist *src; struct scatterlist *dst; @@ -62378,1493 +54191,2023 @@ struct akcipher_request { void *__ctx[0]; }; -struct crypto_akcipher { +struct crypto_kpp { struct crypto_tfm base; }; -struct akcipher_alg { - int (*sign)(struct akcipher_request *); - int (*verify)(struct akcipher_request *); - int (*encrypt)(struct akcipher_request *); - int (*decrypt)(struct akcipher_request *); - int (*set_pub_key)(struct crypto_akcipher *, const void *, unsigned int); - int (*set_priv_key)(struct crypto_akcipher *, const void *, unsigned int); - unsigned int (*max_size)(struct crypto_akcipher *); - int (*init)(struct crypto_akcipher *); - void (*exit)(struct crypto_akcipher *); +struct 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; struct crypto_alg base; }; -struct akcipher_instance { - void (*free)(struct akcipher_instance *); - union { - struct { - char head[80]; - struct crypto_instance base; - } s; - struct akcipher_alg alg; - }; -}; - -struct crypto_akcipher_spawn { - struct crypto_spawn base; -}; - -struct crypto_report_kpp { - char type[64]; +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 kpp_instance { - void (*free)(struct kpp_instance *); - union { - struct { - char head[56]; - struct crypto_instance base; - } s; - struct kpp_alg alg; - }; +struct dh_completion { + struct completion completion; + int err; }; -struct crypto_kpp_spawn { - struct crypto_spawn base; +struct kdf_sdesc { + struct shash_desc shash; + char ctx[0]; }; -struct shash_instance { - void (*free)(struct shash_instance *); - union { - struct { - char head[96]; - struct crypto_instance base; - } s; - struct shash_alg alg; - }; +enum { + Opt_err___6 = 0, + Opt_enc = 1, + Opt_hash = 2, }; -struct crypto_shash_spawn { - struct crypto_spawn base; +enum tpm_duration { + TPM_SHORT = 0, + TPM_MEDIUM = 1, + TPM_LONG = 2, + TPM_LONG_LONG = 3, + TPM_UNDEFINED = 4, + TPM_NUM_DURATIONS = 4, }; -enum { - CRYPTO_KPP_SECRET_TYPE_UNKNOWN = 0, - CRYPTO_KPP_SECRET_TYPE_DH = 1, - CRYPTO_KPP_SECRET_TYPE_ECDH = 2, +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 kpp_secret { - short unsigned int type; - short unsigned int 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)(); }; -enum rsapubkey_actions { - ACT_rsa_get_e = 0, - ACT_rsa_get_n = 1, - NR__rsapubkey_actions = 2, +struct trusted_key_source { + char *name; + struct trusted_key_ops *ops; }; -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, +enum { + Opt_err___7 = 0, + Opt_new = 1, + Opt_load = 2, + Opt_update = 3, }; -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 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; }; -typedef struct gcry_mpi *MPI; - -struct dh_ctx { - MPI p; - MPI g; - MPI xa; +struct tpm_digest { + u16 alg_id; + u8 digest[64]; }; -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 tpm_bank_info { + u16 alg_id; + u16 digest_size; + u16 crypto_id; }; -struct asn1_decoder; +struct tpm_chip; -struct rsa_mpi_key { - MPI n; - MPI e; - MPI d; +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 rsa_asn1_template { - const char *name; - const u8 *data; - size_t size; +struct tpm_bios_log { + void *bios_event_log; + void *bios_event_log_end; }; -struct pkcs1pad_ctx { - struct crypto_akcipher *child; - unsigned int key_size; +struct tpm_chip_seqops { + struct tpm_chip *chip; + const struct seq_operations *seqops; }; -struct pkcs1pad_inst_ctx { - struct crypto_akcipher_spawn spawn; - const struct rsa_asn1_template *digest_info; +struct tpm_space { + u32 context_tbl[3]; + u8 *context_buf; + u32 session_tbl[3]; + u8 *session_buf; + u32 buf_size; }; -struct pkcs1pad_request { - struct scatterlist in_sg[2]; - struct scatterlist out_sg[1]; - uint8_t *in_buf; - uint8_t *out_buf; - struct akcipher_request child_req; +struct 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; + struct tpm_space work_space; + u32 last_cc; + u32 nr_commands; + u32 *cc_attrs_tbl; + int locality; }; -enum ecdsasignature_actions { - ACT_ecdsa_get_signature_r = 0, - ACT_ecdsa_get_signature_s = 1, - NR__ecdsasignature_actions = 2, -}; +struct tpm_header { + __be16 tag; + __be32 length; + union { + __be32 ordinal; + __be32 return_code; + }; +} __attribute__((packed)); -struct ecc_point { - u64 *x; - u64 *y; - u8 ndigits; +enum tpm_buf_flags { + TPM_BUF_OVERFLOW = 1, }; -struct ecc_curve { - char *name; - struct ecc_point g; - u64 *p; - u64 *n; - u64 *a; - u64 *b; +struct tpm_buf { + unsigned int flags; + u8 *data; }; -struct ecc_ctx { - unsigned int curve_id; - const struct ecc_curve *curve; - bool pub_key_set; - u64 x[8]; - u64 y[8]; - struct ecc_point pub_key; +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 ecdsa_signature_ctx { - const struct ecc_curve *curve; - u64 r[8]; - u64 s[8]; +struct osapsess { + uint32_t handle; + unsigned char secret[20]; + unsigned char enonce[20]; }; -struct crypto_report_acomp { - char type[64]; +enum { + SEAL_keytype = 1, + SRK_keytype = 4, }; -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; - struct crypto_alg base; +struct sdesc { + struct shash_desc shash; + char ctx[0]; }; -struct crypto_report_comp { - char type[64]; +struct tpm_digests { + unsigned char encauth[20]; + unsigned char pubauth[20]; + unsigned char xorwork[40]; + unsigned char xorhash[20]; + unsigned char nonceodd[20]; }; -struct crypto_scomp { - struct crypto_tfm base; +enum { + 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 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 *); - struct crypto_alg base; -}; +typedef int (*asn1_action_t)(void *, size_t, unsigned char, const void *, size_t); -struct scomp_scratch { - spinlock_t lock; - void *src; - void *dst; +struct asn1_decoder { + const unsigned char *machine; + size_t machlen; + const asn1_action_t *actions; }; -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 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 crypto_test_param { - char driver[128]; - char alg[128]; - u32 type; +enum tpm2_structures { + TPM2_ST_NO_SESSIONS = 32769, + TPM2_ST_SESSIONS = 32770, }; -struct cmac_tfm_ctx { - struct crypto_cipher *child; - u8 ctx[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 cmac_desc_ctx { - unsigned int len; - u8 ctx[0]; +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 drbg_string { - const unsigned char *buf; - size_t len; - struct list_head list; +enum tpm2_permanent_handles { + TPM2_RS_PW = 1073741833, }; -struct drbg_test_data { - struct drbg_string *testentropy; +enum tpm2_object_attributes { + TPM2_OA_FIXED_TPM = 2, + TPM2_OA_FIXED_PARENT = 16, + TPM2_OA_USER_WITH_AUTH = 64, }; -struct hash_testvec { - const char *key; - const char *plaintext; - const char *digest; - unsigned int psize; - short unsigned int ksize; - int setkey_error; - int digest_error; - bool fips_skip; +enum tpm2_session_attributes { + TPM2_SA_CONTINUE_SESSION = 1, }; -struct cipher_testvec { - const char *key; - const char *iv; - const char *iv_out; - const char *ptext; - const char *ctext; - unsigned char wk; - short unsigned int klen; - unsigned int len; - bool fips_skip; - bool generates_iv; - int setkey_error; - int crypt_error; +struct tpm2_hash { + unsigned int crypto_id; + unsigned int tpm_id; }; -struct aead_testvec { - const char *key; - const char *iv; - const char *ptext; - const char *assoc; - const char *ctext; - unsigned char novrfy; - unsigned char wk; - unsigned char klen; - unsigned int plen; - unsigned int clen; - unsigned int alen; - int setkey_error; - int setauthsize_error; - int crypt_error; +struct tpm2_key_context { + u32 parent; + const u8 *pub; + u32 pub_len; + const u8 *priv; + u32 priv_len; }; -struct cprng_testvec { - const char *key; - const char *dt; - const char *v; - const char *result; - unsigned char klen; - short unsigned int dtlen; - short unsigned int vlen; - short unsigned int rlen; - short unsigned int loops; -}; - -struct drbg_testvec { - const unsigned char *entropy; - size_t entropylen; - const unsigned char *entpra; - const unsigned char *entprb; - size_t entprlen; - const unsigned char *addtla; - const unsigned char *addtlb; - size_t addtllen; - const unsigned char *pers; - size_t perslen; - const unsigned char *expected; - size_t expectedlen; -}; - -struct akcipher_testvec { - const unsigned char *key; - const unsigned char *params; - const unsigned char *m; - const unsigned char *c; - unsigned int key_len; - unsigned int param_len; - unsigned int m_size; - unsigned int c_size; - bool public_key_vec; - bool siggen_sigver_test; - enum OID algo; +enum asn1_class { + ASN1_UNIV = 0, + ASN1_APPL = 1, + ASN1_CONT = 2, + ASN1_PRIV = 3, }; -struct kpp_testvec { - const unsigned char *secret; - const unsigned char *b_secret; - const unsigned char *b_public; - const unsigned char *expected_a_public; - const unsigned char *expected_ss; - short unsigned int secret_size; - short unsigned int b_secret_size; - short unsigned int b_public_size; - short unsigned int expected_a_public_size; - short unsigned int expected_ss_size; - bool genkey; +enum asn1_method { + ASN1_PRIM = 0, + ASN1_CONS = 1, }; -struct comp_testvec { - int inlen; - int outlen; - char input[512]; - char output[512]; +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 aead_test_suite { - const struct aead_testvec *vecs; - unsigned int count; - unsigned int einval_allowed: 1; - unsigned int aad_iv: 1; +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 cipher_test_suite { - const struct cipher_testvec *vecs; - unsigned int count; +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 comp_test_suite { - struct { - const struct comp_testvec *vecs; - unsigned int count; - } comp; - struct { - const struct comp_testvec *vecs; - unsigned int count; - } decomp; +enum { + Opt_new___2 = 0, + Opt_load___2 = 1, + Opt_update___2 = 2, + Opt_err___9 = 3, }; -struct hash_test_suite { - const struct hash_testvec *vecs; - unsigned int count; +enum { + Opt_default = 0, + Opt_ecryptfs = 1, + Opt_enc32 = 2, + Opt_error = 3, }; -struct cprng_test_suite { - const struct cprng_testvec *vecs; - unsigned int count; +enum derived_key_type { + ENC_KEY = 0, + AUTH_KEY = 1, }; -struct drbg_test_suite { - const struct drbg_testvec *vecs; - unsigned int count; +struct vfs_cap_data { + __le32 magic_etc; + struct { + __le32 permitted; + __le32 inheritable; + } data[2]; }; -struct akcipher_test_suite { - const struct akcipher_testvec *vecs; - unsigned int count; +struct vfs_ns_cap_data { + __le32 magic_etc; + struct { + __le32 permitted; + __le32 inheritable; + } data[2]; + __le32 rootid; }; -struct kpp_test_suite { - const struct kpp_testvec *vecs; - unsigned int count; +struct sctp_endpoint; + +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 alg_test_desc { - const char *alg; - const char *generic_driver; - int (*test)(const struct alg_test_desc *, const char *, u32, u32); - int fips_allowed; - union { - struct aead_test_suite aead; - struct cipher_test_suite cipher; - struct comp_test_suite comp; - struct hash_test_suite hash; - struct cprng_test_suite cprng; - struct drbg_test_suite drbg; - struct akcipher_test_suite akcipher; - struct kpp_test_suite kpp; - } suite; +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; }; -enum flush_type { - FLUSH_TYPE_NONE = 0, - FLUSH_TYPE_FLUSH = 1, - FLUSH_TYPE_REIMPORT = 2, +struct lsm_id { + const char *lsm; + int slot; }; -enum finalization_type { - FINALIZATION_TYPE_FINAL = 0, - FINALIZATION_TYPE_FINUP = 1, - FINALIZATION_TYPE_DIGEST = 2, +struct security_hook_list { + struct hlist_node list; + struct hlist_head *head; + union security_list_options hook; + struct lsm_id *lsmid; }; -struct test_sg_division { - unsigned int proportion_of_total; - unsigned int offset; - bool offset_relative_to_alignmask; - enum flush_type flush_type; - bool nosimd; +enum lsm_order { + LSM_ORDER_FIRST = 4294967295, + LSM_ORDER_MUTABLE = 0, }; -struct testvec_config { +struct lsm_info { const char *name; - bool inplace; - u32 req_flags; - struct test_sg_division src_divs[8]; - struct test_sg_division dst_divs[8]; - unsigned int iv_offset; - unsigned int key_offset; - bool iv_offset_relative_to_alignmask; - bool key_offset_relative_to_alignmask; - enum finalization_type finalization_type; - bool nosimd; -}; - -struct test_sglist { - char *bufs[8]; - struct scatterlist sgl[8]; - struct scatterlist sgl_saved[8]; - struct scatterlist *sgl_ptr; - unsigned int nents; -}; - -struct cipher_test_sglists { - struct test_sglist src; - struct test_sglist dst; -}; - -struct hmac_ctx { - struct crypto_shash *hash; -}; - -struct md5_state { - u32 hash[4]; - u32 block[16]; - u64 byte_count; -}; - -struct sha1_state { - u32 state[5]; - u64 count; - u8 buffer[64]; + enum lsm_order order; + long unsigned int flags; + int *enabled; + int (*init)(); + struct lsm_blob_sizes *blobs; }; -typedef void sha1_block_fn(struct sha1_state *, const u8 *, int); - -struct sha256_state { - u32 state[8]; - u64 count; - u8 buf[64]; +enum lsm_event { + LSM_POLICY_CHANGE = 0, }; -struct sha3_state { - u64 st[25]; - unsigned int rsiz; - unsigned int rsizw; - unsigned int partial; - u8 buf[144]; +struct ethhdr { + unsigned char h_dest[6]; + unsigned char h_source[6]; + __be16 h_proto; }; -enum blake2b_lengths { - BLAKE2B_BLOCK_SIZE = 128, - BLAKE2B_HASH_SIZE = 64, - BLAKE2B_KEY_SIZE = 64, - BLAKE2B_160_HASH_SIZE = 20, - BLAKE2B_256_HASH_SIZE = 32, - BLAKE2B_384_HASH_SIZE = 48, - BLAKE2B_512_HASH_SIZE = 64, +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 blake2b_state { - u64 h[8]; - u64 t[2]; - u64 f[2]; - u8 buf[128]; - unsigned int buflen; - unsigned int outlen; +struct ethtool_wolinfo { + __u32 cmd; + __u32 supported; + __u32 wolopts; + __u8 sopass[6]; }; -enum blake2b_iv { - BLAKE2B_IV0 = 4089235720, - BLAKE2B_IV1 = 2227873595, - BLAKE2B_IV2 = 4271175723, - BLAKE2B_IV3 = 1595750129, - BLAKE2B_IV4 = 2917565137, - BLAKE2B_IV5 = 725511199, - BLAKE2B_IV6 = 4215389547, - BLAKE2B_IV7 = 327033209, +struct ethtool_tunable { + __u32 cmd; + __u32 id; + __u32 type_id; + __u32 len; + void *data[0]; }; -typedef void (*blake2b_compress_t)(struct blake2b_state *, const u8 *, size_t, u32); - -struct blake2b_tfm_ctx { - u8 key[64]; - unsigned int keylen; +struct ethtool_regs { + __u32 cmd; + __u32 version; + __u32 len; + __u8 data[0]; }; -typedef struct { - u64 a; - u64 b; -} u128; - -typedef struct { - __be64 a; - __be64 b; -} be128; - -typedef struct { - __le64 b; - __le64 a; -} le128; - -struct gf128mul_4k { - be128 t[256]; +struct ethtool_eeprom { + __u32 cmd; + __u32 magic; + __u32 offset; + __u32 len; + __u8 data[0]; }; -struct gf128mul_64k { - struct gf128mul_4k *t[16]; +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 sha512_state { - u64 state[8]; - u64 count[2]; - u8 buf[128]; +struct ethtool_modinfo { + __u32 cmd; + __u32 type; + __u32 eeprom_len; + __u32 reserved[8]; }; -typedef void sha512_block_fn(struct sha512_state *, const u8 *, int); - -struct crypto_cts_ctx { - struct crypto_skcipher *child; +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 crypto_cts_reqctx { - struct scatterlist sg[2]; - unsigned int offset; - struct skcipher_request subreq; +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 xts_tfm_ctx { - struct crypto_skcipher *child; - struct crypto_cipher *tweak; +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 xts_instance_ctx { - struct crypto_skcipher_spawn spawn; - char name[128]; +struct ethtool_pauseparam { + __u32 cmd; + __u32 autoneg; + __u32 rx_pause; + __u32 tx_pause; }; -struct xts_request_ctx { - le128 t; - struct scatterlist *tail; - struct scatterlist sg[2]; - struct skcipher_request subreq; +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 crypto_rfc3686_ctx { - struct crypto_skcipher *child; - u8 nonce[4]; +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 crypto_rfc3686_req_ctx { - u8 iv[16]; - struct skcipher_request subreq; +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, }; -struct gcm_instance_ctx { - struct crypto_skcipher_spawn ctr; - struct crypto_ahash_spawn ghash; +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 crypto_gcm_ctx { - struct crypto_skcipher *ctr; - struct crypto_ahash *ghash; +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 crypto_rfc4106_ctx { - struct crypto_aead *child; - u8 nonce[4]; +enum ethtool_link_ext_substate_cable_issue { + ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE = 1, + ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE = 2, }; -struct crypto_rfc4106_req_ctx { - struct scatterlist src[3]; - struct scatterlist dst[3]; - struct aead_request subreq; +struct ethtool_test { + __u32 cmd; + __u32 flags; + __u32 reserved; + __u32 len; + __u64 data[0]; }; -struct crypto_rfc4543_instance_ctx { - struct crypto_aead_spawn aead; +struct ethtool_stats { + __u32 cmd; + __u32 n_stats; + __u64 data[0]; }; -struct crypto_rfc4543_ctx { - struct crypto_aead *child; - struct crypto_sync_skcipher *null; - u8 nonce[4]; +struct ethtool_tcpip4_spec { + __be32 ip4src; + __be32 ip4dst; + __be16 psrc; + __be16 pdst; + __u8 tos; }; -struct crypto_rfc4543_req_ctx { - struct aead_request subreq; +struct ethtool_ah_espip4_spec { + __be32 ip4src; + __be32 ip4dst; + __be32 spi; + __u8 tos; }; -struct crypto_gcm_ghash_ctx { - unsigned int cryptlen; - struct scatterlist *src; - int (*complete)(struct aead_request *, u32); +struct ethtool_usrip4_spec { + __be32 ip4src; + __be32 ip4dst; + __be32 l4_4_bytes; + __u8 tos; + __u8 ip_ver; + __u8 proto; }; -struct crypto_gcm_req_priv_ctx { - u8 iv[16]; - u8 auth_tag[16]; - u8 iauth_tag[16]; - struct scatterlist src[3]; - struct scatterlist dst[3]; - struct scatterlist sg; - struct crypto_gcm_ghash_ctx ghash_ctx; - union { - struct ahash_request ahreq; - struct skcipher_request skreq; - } u; +struct ethtool_tcpip6_spec { + __be32 ip6src[4]; + __be32 ip6dst[4]; + __be16 psrc; + __be16 pdst; + __u8 tclass; }; -struct ccm_instance_ctx { - struct crypto_skcipher_spawn ctr; - struct crypto_ahash_spawn mac; +struct ethtool_ah_espip6_spec { + __be32 ip6src[4]; + __be32 ip6dst[4]; + __be32 spi; + __u8 tclass; }; -struct crypto_ccm_ctx { - struct crypto_ahash *mac; - struct crypto_skcipher *ctr; +struct ethtool_usrip6_spec { + __be32 ip6src[4]; + __be32 ip6dst[4]; + __be32 l4_4_bytes; + __u8 tclass; + __u8 l4_proto; }; -struct crypto_rfc4309_ctx { - struct crypto_aead *child; - u8 nonce[3]; +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 crypto_rfc4309_req_ctx { - struct scatterlist src[3]; - struct scatterlist dst[3]; - struct aead_request subreq; +struct ethtool_flow_ext { + __u8 padding[2]; + unsigned char h_dest[6]; + __be16 vlan_etype; + __be16 vlan_tci; + __be32 data[2]; }; -struct crypto_ccm_req_priv_ctx { - u8 odata[16]; - u8 idata[16]; - u8 auth_tag[16]; - u32 flags; - struct scatterlist src[3]; - struct scatterlist dst[3]; +struct ethtool_rx_flow_spec { + __u32 flow_type; + union ethtool_flow_union h_u; + struct ethtool_flow_ext h_ext; + union ethtool_flow_union m_u; + struct ethtool_flow_ext m_ext; + __u64 ring_cookie; + __u32 location; +}; + +struct ethtool_rxnfc { + __u32 cmd; + __u32 flow_type; + __u64 data; + struct ethtool_rx_flow_spec fs; union { - struct ahash_request ahreq; - struct skcipher_request skreq; + __u32 rule_cnt; + __u32 rss_context; }; + __u32 rule_locs[0]; }; -struct cbcmac_tfm_ctx { - struct crypto_cipher *child; +struct ethtool_flash { + __u32 cmd; + __u32 region; + char data[128]; }; -struct cbcmac_desc_ctx { - unsigned int len; +struct ethtool_dump { + __u32 cmd; + __u32 version; + __u32 flag; + __u32 len; + __u8 data[0]; }; -struct crypto_aes_ctx { - u32 key_enc[60]; - u32 key_dec[60]; - u32 key_length; +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 deflate_ctx { - struct z_stream_s comp_stream; - struct z_stream_s decomp_stream; +struct ethtool_fecparam { + __u32 cmd; + __u32 active_fec; + __u32 fec; + __u32 reserved; }; -struct chksum_ctx { - u32 key; +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 chksum_desc_ctx { - u32 crc; +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 chksum_desc_ctx___2 { - __u16 crc; +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; + }; }; -enum { - CRYPTO_AUTHENC_KEYA_UNSPEC = 0, - CRYPTO_AUTHENC_KEYA_PARAM = 1, +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 crypto_authenc_key_param { - __be32 enckeylen; +struct kernel_ethtool_coalesce { + u8 use_cqe_mode_tx; + u8 use_cqe_mode_rx; }; -struct crypto_authenc_keys { - const u8 *authkey; - const u8 *enckey; - unsigned int authkeylen; - unsigned int enckeylen; +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 authenc_instance_ctx { - struct crypto_ahash_spawn auth; - struct crypto_skcipher_spawn enc; - unsigned int reqoff; +struct ethtool_eth_phy_stats { + u64 SymbolErrorDuringCarrier; }; -struct crypto_authenc_ctx { - struct crypto_ahash *auth; - struct crypto_skcipher *enc; - struct crypto_sync_skcipher *null; +struct ethtool_eth_ctrl_stats { + u64 MACControlFramesTransmitted; + u64 MACControlFramesReceived; + u64 UnsupportedOpcodesReceived; }; -struct authenc_request_ctx { - struct scatterlist src[2]; - struct scatterlist dst[2]; - char tail[0]; +struct ethtool_pause_stats { + u64 tx_pause_frames; + u64 rx_pause_frames; }; -struct authenc_esn_instance_ctx { - struct crypto_ahash_spawn auth; - struct crypto_skcipher_spawn enc; +struct ethtool_fec_stat { + u64 total; + u64 lanes[8]; }; -struct crypto_authenc_esn_ctx { - unsigned int reqoff; - struct crypto_ahash *auth; - struct crypto_skcipher *enc; - struct crypto_sync_skcipher *null; +struct ethtool_fec_stats { + struct ethtool_fec_stat corrected_blocks; + struct ethtool_fec_stat uncorrectable_blocks; + struct ethtool_fec_stat corrected_bits; }; -struct authenc_esn_request_ctx { - struct scatterlist src[2]; - struct scatterlist dst[2]; - char tail[0]; +struct ethtool_rmon_hist_range { + u16 low; + u16 high; }; -struct lzo_ctx { - void *lzo_comp_mem; +struct ethtool_rmon_stats { + u64 undersize_pkts; + u64 oversize_pkts; + u64 fragments; + u64 jabbers; + u64 hist[10]; + u64 hist_tx[10]; }; -struct lzorle_ctx { - void *lzorle_comp_mem; +struct ethtool_module_eeprom { + u32 offset; + u32 length; + u8 page; + u8 bank; + u8 i2c_address; + u8 *data; }; -struct xxh64_state { - uint64_t total_len; - uint64_t v1; - uint64_t v2; - uint64_t v3; - uint64_t v4; - uint64_t mem64[4]; - uint32_t memsize; +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 xxhash64_tfm_ctx { - u64 seed; +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 xxhash64_desc_ctx { - struct xxh64_state xxhstate; +enum ib_uverbs_create_qp_mask { + IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1, }; -struct crypto842_ctx { - void *wmem; +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 crypto_report_rng { - char type[64]; - unsigned int seedsize; +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 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 ib_uverbs_srq_type { + IB_UVERBS_SRQT_BASIC = 0, + IB_UVERBS_SRQT_XRC = 1, + IB_UVERBS_SRQT_TM = 2, }; -typedef uint32_t drbg_flag_t; - -struct drbg_core { - drbg_flag_t flags; - __u8 statelen; - __u8 blocklen_bytes; - char cra_name[128]; - char backend_cra_name[128]; +enum ib_uverbs_wq_type { + IB_UVERBS_WQT_RQ = 0, }; -struct drbg_state; - -struct drbg_state_ops { - int (*update)(struct drbg_state *, struct list_head *, int); - int (*generate)(struct drbg_state *, unsigned char *, unsigned int, struct list_head *); - int (*crypto_init)(struct drbg_state *); - int (*crypto_fini)(struct drbg_state *); +enum 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, }; -enum drbg_seed_state { - DRBG_SEED_STATE_UNSEEDED = 0, - DRBG_SEED_STATE_PARTIAL = 1, - DRBG_SEED_STATE_FULL = 2, +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 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; - long unsigned int last_seed_time; - bool pr; - bool fips_primed; - unsigned char *prev; - struct crypto_rng *jent; - const struct drbg_state_ops *d_ops; - const struct drbg_core *core; - struct drbg_string test_data; +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, }; -enum drbg_prefixes { - DRBG_PREFIX0 = 0, - DRBG_PREFIX1 = 1, - DRBG_PREFIX2 = 2, - DRBG_PREFIX3 = 3, +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 s { - __be32 conv; +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 rand_data; - -struct jitterentropy { - spinlock_t jent_lock; - struct rand_data *entropy_collector; - unsigned int reset_cnt; +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 ghash_ctx { - struct gf128mul_4k *gf128; +struct lsm_ioctlop_audit { + struct path path; + u16 cmd; }; -struct ghash_desc_ctx { - u8 buffer[16]; - u32 bytes; +struct lsm_ibpkey_audit { + u64 subnet_prefix; + u16 pkey; }; -struct sockaddr_alg_new { - __u16 salg_family; - __u8 salg_type[14]; - __u32 salg_feat; - __u32 salg_mask; - __u8 salg_name[0]; +struct lsm_ibendport_audit { + const char *dev_name; + u8 port; }; -struct af_alg_iv { - __u32 ivlen; - __u8 iv[0]; -}; +struct selinux_state; -struct cmsghdr { - __kernel_size_t cmsg_len; - int cmsg_level; - int cmsg_type; +struct selinux_audit_data { + u32 ssid; + u32 tsid; + u16 tclass; + u32 requested; + u32 audited; + u32 denied; + int result; + struct selinux_state *state; }; -struct net_proto_family { - int family; - int (*create)(struct net *, struct socket *, int, int); - struct module *owner; +struct smack_audit_data; + +struct apparmor_audit_data; + +struct common_audit_data { + char type; + union { + struct path path; + struct dentry *dentry; + struct inode *inode; + struct lsm_network_audit *net; + int cap; + int ipc_id; + struct task_struct *tsk; + struct { + key_serial_t key; + char *key_desc; + } key_struct; + char *kmod_name; + struct lsm_ioctlop_audit *op; + struct file *file; + struct lsm_ibpkey_audit *ibpkey; + struct lsm_ibendport_audit *ibendport; + int reason; + } u; + union { + struct smack_audit_data *smack_audit_data; + struct selinux_audit_data *selinux_audit_data; + struct apparmor_audit_data *apparmor_audit_data; + }; }; enum { - SOCK_WAKE_IO = 0, - SOCK_WAKE_WAITD = 1, - SOCK_WAKE_SPACE = 2, - SOCK_WAKE_URG = 3, + 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 af_alg_type; - -struct alg_sock { - struct sock sk; - struct sock *parent; - atomic_t refcnt; - atomic_t nokey_refcnt; - const struct af_alg_type *type; - void *private; -}; +struct selinux_avc; -struct af_alg_type { - void * (*bind)(const char *, u32, u32); - void (*release)(void *); - int (*setkey)(void *, const u8 *, unsigned int); - int (*setentropy)(void *, sockptr_t, unsigned int); - int (*accept)(void *, struct sock *); - int (*accept_nokey)(void *, struct sock *); - int (*setauthsize)(void *, unsigned int); - struct proto_ops *ops; - struct proto_ops *ops_nokey; - struct module *owner; - char name[14]; -}; +struct selinux_policy; -struct af_alg_control { - struct af_alg_iv *iv; - int op; - unsigned int aead_assoclen; +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 af_alg_sgl { - struct scatterlist sg[17]; - struct page *pages[16]; - unsigned int npages; +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 af_alg_tsgl { - struct list_head list; - unsigned int cur; - struct scatterlist sg[0]; +struct selinux_avc { + unsigned int avc_cache_threshold; + struct avc_cache avc_cache; }; -struct af_alg_rsgl { - struct af_alg_sgl sgl; - struct list_head list; - size_t sg_num_bytes; +struct av_decision { + u32 allowed; + u32 auditallow; + u32 auditdeny; + u32 seqno; + u32 flags; }; -struct af_alg_async_req { - struct kiocb *iocb; - struct sock *sk; - struct af_alg_rsgl first_rsgl; - struct af_alg_rsgl *last_rsgl; - struct list_head rsgl_list; - struct scatterlist *tsgl; - unsigned int tsgl_entries; - unsigned int outlen; - unsigned int areqlen; - union { - struct aead_request aead_req; - struct skcipher_request skcipher_req; - } cra_u; +struct extended_perms_data { + u32 p[8]; }; -struct af_alg_ctx { - struct list_head tsgl_list; - void *iv; - size_t aead_assoclen; - struct crypto_wait wait; - size_t used; - atomic_t rcvused; - bool more; - bool merge; - bool enc; - bool init; - unsigned int len; +struct extended_perms_decision { + u8 used; + u8 driver; + struct extended_perms_data *allowed; + struct extended_perms_data *auditallow; + struct extended_perms_data *dontaudit; }; -struct alg_type_list { - const struct af_alg_type *type; - struct list_head list; +struct extended_perms { + u16 len; + struct extended_perms_data drivers; }; -struct hash_ctx { - struct af_alg_sgl sgl; - u8 *result; - struct crypto_wait wait; - unsigned int len; - bool more; - struct ahash_request req; +struct avc_cache_stats { + unsigned int lookups; + unsigned int misses; + unsigned int allocations; + unsigned int reclaims; + unsigned int frees; }; -struct rng_ctx { - unsigned int len; - struct crypto_rng *drng; - u8 *addtl; - size_t addtl_len; +struct security_class_mapping { + const char *name; + const char *perms[33]; }; -struct rng_parent_ctx { - struct crypto_rng *drng; - u8 *entropy; +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 aead_tfm { - struct crypto_aead *aead; - struct crypto_sync_skcipher *null_tfm; +struct trace_event_data_offsets_selinux_audited { + u32 scontext; + u32 tcontext; + u32 tclass; }; -struct xor_block_template { - struct xor_block_template *next; - const char *name; - int speed; - void (*do_2)(long unsigned int, long unsigned int * restrict, const long unsigned int * restrict); - void (*do_3)(long unsigned int, long unsigned int * restrict, const long unsigned int * restrict, const long unsigned int * restrict); - void (*do_4)(long unsigned int, long unsigned int * restrict, const long unsigned int * restrict, const long unsigned int * restrict, const long unsigned int * restrict); - void (*do_5)(long unsigned int, long unsigned int * restrict, const long unsigned int * restrict, const long unsigned int * restrict, const long unsigned int * restrict, const long unsigned int * restrict); -}; +typedef void (*btf_trace_selinux_audited)(void *, struct selinux_audit_data *, char *, char *, const char *); -typedef struct { - u64 m_low; - u64 m_high; -} uint128_t; +struct avc_xperms_node; -struct asymmetric_key_ids { - void *id[3]; +struct avc_entry { + u32 ssid; + u32 tsid; + u16 tclass; + struct av_decision avd; + struct avc_xperms_node *xp_node; }; -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 avc_xperms_node { + struct extended_perms xp; + struct list_head xpd_head; }; -struct asymmetric_key_parser { - struct list_head link; - struct module *owner; - const char *name; - int (*parse)(struct key_preparsed_payload *); +struct avc_node { + struct avc_entry ae; + struct hlist_node list; + struct callback_head rhead; }; -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_serial = 7, - ACT_x509_note_sig_algo = 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, +struct avc_xperms_decision_node { + struct extended_perms_decision xpd; + struct list_head xpd_list; }; -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, +struct avc_callback_node { + int (*callback)(u32); + u32 events; + struct avc_callback_node *next; }; -struct x509_certificate { - struct x509_certificate *next; - struct x509_certificate *signer; - struct public_key *pub; - struct public_key_signature *sig; - char *issuer; - char *subject; - struct asymmetric_key_id *id; - struct asymmetric_key_id *skid; - time64_t valid_from; - time64_t valid_to; - const void *tbs; - unsigned int tbs_size; - unsigned int raw_sig_size; - const void *raw_sig; - const void *raw_serial; - unsigned int raw_serial_size; - unsigned int raw_issuer_size; - const void *raw_issuer; - const void *raw_subject; - unsigned int raw_subject_size; - unsigned int raw_skid_size; - const void *raw_skid; - unsigned int index; - bool seen; - bool verified; - bool self_signed; - bool unsupported_sig; - bool blacklisted; -}; +typedef __u16 __sum16; -struct x509_parse_context { - struct x509_certificate *cert; - long unsigned int data; - const void *key; - size_t key_size; - const void *params; - size_t params_size; - enum OID key_algo; - enum OID last_oid; - enum OID sig_algo; - u8 o_size; - u8 cn_size; - u8 email_size; - u16 o_offset; - u16 cn_offset; - u16 email_offset; - unsigned int raw_akid_size; - const void *raw_akid; - const void *akid_raw_issuer; - unsigned int akid_raw_issuer_size; +enum sctp_endpoint_type { + SCTP_EP_TYPE_SOCKET = 0, + SCTP_EP_TYPE_ASSOCIATION = 1, }; -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 sctp_chunk; -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; +struct sctp_inq { + struct list_head in_chunk_list; + struct sctp_chunk *in_progress; + struct work_struct immediate; }; -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 sctp_bind_addr { + __u16 port; + struct list_head address_list; }; -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 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 section_header; +struct sctp_hmac_algo_param; -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 sctp_chunks_param; -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 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 mscode_actions { - ACT_mscode_note_content_type = 0, - ACT_mscode_note_digest = 1, - ACT_mscode_note_digest_algo = 2, - NR__mscode_actions = 3, +struct sockaddr_in6 { + short unsigned int sin6_family; + __be16 sin6_port; + __be32 sin6_flowinfo; + struct in6_addr sin6_addr; + __u32 sin6_scope_id; }; -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]; +struct in_addr { + __be32 s_addr; }; -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 sockaddr_in { + __kernel_sa_family_t sin_family; + __be16 sin_port; + struct in_addr sin_addr; + unsigned char __pad[8]; }; -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 nf_hook_state; + +typedef unsigned int nf_hookfn(void *, struct sk_buff *, const struct nf_hook_state *); + +struct nf_hook_entry { + nf_hookfn *hook; + void *priv; }; -struct 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 nf_hook_entries { + u16 num_hook_entries; + struct nf_hook_entry hooks[0]; }; -struct data_dirent { - uint32_t virtual_address; - uint32_t size; +struct nf_hook_state { + u8 hook; + u8 pf; + struct net_device *in; + struct net_device *out; + struct sock *sk; + struct net *net; + int (*okfn)(struct net *, struct sock *, struct sk_buff *); }; -struct 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 nf_hook_ops_type { + NF_HOOK_OP_UNDEFINED = 0, + NF_HOOK_OP_NF_TABLES = 1, }; -struct win_certificate { - uint32_t length; - uint16_t revision; - uint16_t cert_type; +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; }; -struct kdf_testvec { - unsigned char *key; - size_t keylen; - unsigned char *ikm; - size_t ikmlen; - struct kvec info; - unsigned char *expected; - size_t expectedlen; +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 { - DIO_SHOULD_DIRTY = 1, - DIO_IS_SYNC = 2, +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 blkdev_dio { - union { - struct kiocb *iocb; - struct task_struct *waiter; - }; - size_t size; - atomic_t ref; - unsigned int flags; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 socket_alloc { + struct socket socket; + struct inode vfs_inode; long: 64; long: 64; - struct bio bio; long: 64; long: 64; long: 64; @@ -63882,23560 +56225,22405 @@ struct blkdev_dio { long: 64; }; -enum { - DISK_EVENT_MEDIA_CHANGE = 1, - DISK_EVENT_EJECT_REQUEST = 2, +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 { - DISK_EVENT_FLAG_POLL = 1, - DISK_EVENT_FLAG_UEVENT = 2, - DISK_EVENT_FLAG_BLOCK_ON_EXCL_WRITE = 4, +struct ip_options_rcu { + struct callback_head rcu; + struct ip_options opt; }; -struct blk_integrity_iter { - void *prot_buf; - void *data_buf; - sector_t seed; - unsigned int data_size; - short unsigned int interval; - unsigned char tuple_size; - const char *disk_name; +struct ipv6_opt_hdr; + +struct ipv6_rt_hdr; + +struct ipv6_txoptions { + refcount_t refcnt; + int tot_len; + __u16 opt_flen; + __u16 opt_nflen; + struct ipv6_opt_hdr *hopopt; + struct ipv6_opt_hdr *dst0opt; + struct ipv6_rt_hdr *srcrt; + struct ipv6_opt_hdr *dst1opt; + struct callback_head rcu; }; -struct bdev_inode { - struct block_device bdev; - struct inode vfs_inode; +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 elevator_type; +struct inet_cork_full { + struct inet_cork base; + struct flowi fl; +}; -struct elevator_queue { - struct elevator_type *type; - void *elevator_data; - struct kobject kobj; - struct mutex sysfs_lock; - unsigned int registered: 1; - struct hlist_head hash[64]; +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; }; -enum rq_qos_id { - RQ_QOS_WBT = 0, - RQ_QOS_LATENCY = 1, - RQ_QOS_COST = 2, - RQ_QOS_IOPRIO = 3, +struct in6_pktinfo { + struct in6_addr ipi6_addr; + int ipi6_ifindex; }; -struct rq_qos_ops; +struct inet6_cork { + struct ipv6_txoptions *opt; + u8 hop_limit; + u8 tclass; +}; -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 ipv6_mc_socklist; + +struct ipv6_ac_socklist; + +struct ipv6_fl_socklist; + +struct ipv6_pinfo { + struct in6_addr saddr; + struct in6_pktinfo sticky_pktinfo; + const struct in6_addr *daddr_cache; + const struct in6_addr *saddr_cache; + __be32 flow_label; + __u32 frag_size; + __s16 hop_limit: 9; + __u16 __unused_1: 7; + __s16 mcast_hops: 9; + __u16 __unused_2: 6; + __u16 mc_loop: 1; + 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 blk_mq_ctxs; +struct tcphdr { + __be16 source; + __be16 dest; + __be32 seq; + __be32 ack_seq; + __u16 doff: 4; + __u16 res1: 4; + __u16 cwr: 1; + __u16 ece: 1; + __u16 urg: 1; + __u16 ack: 1; + __u16 psh: 1; + __u16 rst: 1; + __u16 syn: 1; + __u16 fin: 1; + __be16 window; + __sum16 check; + __be16 urg_ptr; +}; -struct blk_mq_ctx { - struct { - spinlock_t lock; - struct list_head rq_lists[3]; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 iphdr { + __u8 version: 4; + __u8 ihl: 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; }; - unsigned int cpu; - short unsigned int index_hw[3]; - struct blk_mq_hw_ctx *hctxs[3]; - struct request_queue *queue; - struct blk_mq_ctxs *ctxs; - struct kobject kobj; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 blk_stat_callback { - struct list_head list; - struct timer_list timer; - struct blk_rq_stat *cpu_stat; - int (*bucket_fn)(const struct request *); - unsigned int buckets; - struct blk_rq_stat *stat; - void (*timer_fn)(struct blk_stat_callback *); - void *data; - struct callback_head rcu; +struct ipv6_rt_hdr { + __u8 nexthdr; + __u8 hdrlen; + __u8 type; + __u8 segments_left; }; -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, +struct ipv6_opt_hdr { + __u8 nexthdr; + __u8 hdrlen; }; -enum elv_merge { - ELEVATOR_NO_MERGE = 0, - ELEVATOR_FRONT_MERGE = 1, - ELEVATOR_BACK_MERGE = 2, - ELEVATOR_DISCARD_MERGE = 3, +struct ipv6hdr { + __u8 version: 4; + __u8 priority: 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 blk_mq_alloc_data; +struct udphdr { + __be16 source; + __be16 dest; + __be16 len; + __sum16 check; +}; -struct elevator_mq_ops { - int (*init_sched)(struct request_queue *, struct elevator_type *); - void (*exit_sched)(struct elevator_queue *); - int (*init_hctx)(struct blk_mq_hw_ctx *, unsigned int); - void (*exit_hctx)(struct blk_mq_hw_ctx *, unsigned int); - void (*depth_updated)(struct blk_mq_hw_ctx *); - bool (*allow_merge)(struct request_queue *, struct request *, struct bio *); - bool (*bio_merge)(struct request_queue *, struct bio *, unsigned int); - int (*request_merge)(struct request_queue *, struct request **, struct bio *); - void (*request_merged)(struct request_queue *, struct request *, enum elv_merge); - void (*requests_merged)(struct request_queue *, struct request *, struct request *); - void (*limit_depth)(unsigned int, struct blk_mq_alloc_data *); - void (*prepare_request)(struct request *); - void (*finish_request)(struct request *); - void (*insert_requests)(struct blk_mq_hw_ctx *, struct list_head *, bool); - struct request * (*dispatch_request)(struct blk_mq_hw_ctx *); - bool (*has_work)(struct blk_mq_hw_ctx *); - void (*completed_request)(struct request *, u64); - void (*requeue_request)(struct request *); - struct request * (*former_request)(struct request_queue *, struct request *); - struct request * (*next_request)(struct request_queue *, struct request *); - void (*init_icq)(struct io_cq *); - void (*exit_icq)(struct io_cq *); +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 elv_fs_entry; +struct ip6_sf_socklist; -struct blk_mq_debugfs_attr; +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 elevator_type { - struct kmem_cache *icq_cache; - struct elevator_mq_ops ops; - size_t icq_size; - size_t icq_align; - struct elv_fs_entry *elevator_attrs; - const char *elevator_name; - const char *elevator_alias; - const unsigned int elevator_features; - struct module *elevator_owner; - const struct blk_mq_debugfs_attr *queue_debugfs_attrs; - const struct blk_mq_debugfs_attr *hctx_debugfs_attrs; - char icq_cache_name[22]; - struct list_head list; +struct ipv6_ac_socklist { + struct in6_addr acl_addr; + int acl_ifindex; + struct ipv6_ac_socklist *acl_next; }; -struct blk_mq_alloc_data { - struct request_queue *q; - blk_mq_req_flags_t flags; - unsigned int shallow_depth; - unsigned int cmd_flags; - req_flags_t rq_flags; - unsigned int nr_tags; - struct request **cached_rq; - struct blk_mq_ctx *ctx; - struct blk_mq_hw_ctx *hctx; +struct ip6_flowlabel; + +struct ipv6_fl_socklist { + struct ipv6_fl_socklist *next; + struct ip6_flowlabel *fl; + struct callback_head rcu; +}; + +struct ip6_sf_socklist { + unsigned int sl_max; + unsigned int sl_count; + struct callback_head rcu; + struct in6_addr sl_addr[0]; +}; + +struct 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 elv_fs_entry { - struct attribute attr; - ssize_t (*show)(struct elevator_queue *, char *); - ssize_t (*store)(struct elevator_queue *, const char *, size_t); +struct inet_skb_parm { + int iif; + struct ip_options opt; + u16 flags; + u16 frag_max_size; }; -struct blk_mq_debugfs_attr { - const char *name; - umode_t mode; - int (*show)(void *, struct seq_file *); - ssize_t (*write)(void *, const char *, size_t, loff_t *); - const struct seq_operations *seq_ops; +struct tty_file_private { + struct tty_struct *tty; + struct file *file; + struct list_head list; }; -struct blk_mq_ctxs { - struct kobject kobj; - struct blk_mq_ctx *queue_ctx; +struct netlbl_lsm_cache { + refcount_t refcount; + void (*free)(const void *); + void *data; }; -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 netlbl_lsm_catmap { + u32 startbit; + u64 bitmap[4]; + struct netlbl_lsm_catmap *next; }; -enum { - WBT_RWQ_BG = 0, - WBT_RWQ_KSWAPD = 1, - WBT_RWQ_DISCARD = 2, - WBT_NUM_RWQ = 3, +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; }; -struct blkcg_policy_data { - struct blkcg *blkcg; - int plid; +struct dccp_hdr { + __be16 dccph_sport; + __be16 dccph_dport; + __u8 dccph_doff; + __u8 dccph_ccval: 4; + __u8 dccph_cscov: 4; + __sum16 dccph_checksum; + __u8 dccph_reserved: 3; + __u8 dccph_type: 4; + __u8 dccph_x: 1; + __u8 dccph_seq2; + __be16 dccph_seq; }; -struct blkg_policy_data { - struct blkcg_gq *blkg; - int plid; +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 bio_alloc_cache { - struct bio *free_list; - unsigned int nr; -}; +typedef __s32 sctp_assoc_t; -enum { - sysctl_hung_task_timeout_secs = 0, +enum sctp_msg_flags { + MSG_NOTIFICATION = 32768, }; -enum xen_domain_type { - XEN_NATIVE = 0, - XEN_PV_DOMAIN = 1, - XEN_HVM_DOMAIN = 2, +struct sctp_initmsg { + __u16 sinit_num_ostreams; + __u16 sinit_max_instreams; + __u16 sinit_max_attempts; + __u16 sinit_max_init_timeo; }; -struct biovec_slab { - int nr_vecs; - char *name; - struct kmem_cache *slab; +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 bio_slab { - struct kmem_cache *slab; - unsigned int slab_ref; - unsigned int slab_size; - char name[8]; +struct sctp_rtoinfo { + sctp_assoc_t srto_assoc_id; + __u32 srto_initial; + __u32 srto_max; + __u32 srto_min; }; -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 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; }; -enum { - LIMIT_LOW = 0, - LIMIT_MAX = 1, - LIMIT_CNT = 2, -}; +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 queue_sysfs_entry { - struct attribute attr; - ssize_t (*show)(struct request_queue *, char *); - ssize_t (*store)(struct request_queue *, const char *, size_t); +struct sctphdr { + __be16 source; + __be16 dest; + __be32 vtag; + __le32 checksum; }; -enum rpm_status { - RPM_INVALID = 4294967295, - RPM_ACTIVE = 0, - RPM_RESUMING = 1, - RPM_SUSPENDED = 2, - RPM_SUSPENDING = 3, +struct sctp_chunkhdr { + __u8 type; + __u8 flags; + __be16 length; }; -enum { - BLK_MQ_REQ_NOWAIT = 1, - BLK_MQ_REQ_RESERVED = 2, - BLK_MQ_REQ_PM = 4, +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 trace_event_raw_block_buffer { - struct trace_entry ent; - dev_t dev; - sector_t sector; - size_t size; - char __data[0]; +struct sctp_paramhdr { + __be16 type; + __be16 length; }; -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 sctp_param { + SCTP_PARAM_HEARTBEAT_INFO = 1, + SCTP_PARAM_IPV4_ADDRESS = 5, + SCTP_PARAM_IPV6_ADDRESS = 6, + SCTP_PARAM_STATE_COOKIE = 7, + SCTP_PARAM_UNRECOGNIZED_PARAMETERS = 8, + SCTP_PARAM_COOKIE_PRESERVATIVE = 9, + SCTP_PARAM_HOST_NAME_ADDRESS = 11, + SCTP_PARAM_SUPPORTED_ADDRESS_TYPES = 12, + SCTP_PARAM_ECN_CAPABLE = 32768, + SCTP_PARAM_RANDOM = 32770, + SCTP_PARAM_CHUNKS = 32771, + SCTP_PARAM_HMAC_ALGO = 32772, + SCTP_PARAM_SUPPORTED_EXT = 32776, + SCTP_PARAM_FWD_TSN_SUPPORT = 49152, + SCTP_PARAM_ADD_IP = 49153, + SCTP_PARAM_DEL_IP = 49154, + SCTP_PARAM_ERR_CAUSE = 49155, + SCTP_PARAM_SET_PRIMARY = 49156, + SCTP_PARAM_SUCCESS_REPORT = 49157, + SCTP_PARAM_ADAPTATION_LAYER_IND = 49158, + SCTP_PARAM_RESET_OUT_REQUEST = 13, + SCTP_PARAM_RESET_IN_REQUEST = 14, + SCTP_PARAM_RESET_TSN_REQUEST = 15, + SCTP_PARAM_RESET_RESPONSE = 16, + SCTP_PARAM_RESET_ADD_OUT_STREAMS = 17, + SCTP_PARAM_RESET_ADD_IN_STREAMS = 18, }; -struct trace_event_raw_block_rq_completion { - 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 sctp_datahdr { + __be32 tsn; + __be16 stream; + __be16 ssn; + __u32 ppid; + __u8 payload[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 sctp_idatahdr { + __be32 tsn; + __be16 stream; + __be16 reserved; + __be32 mid; + union { + __u32 ppid; + __be32 fsn; + }; + __u8 payload[0]; }; -struct trace_event_raw_block_bio_complete { - struct trace_entry ent; - dev_t dev; - sector_t sector; - unsigned int nr_sector; - int error; - char rwbs[8]; - char __data[0]; +struct sctp_inithdr { + __be32 init_tag; + __be32 a_rwnd; + __be16 num_outbound_streams; + __be16 num_inbound_streams; + __be32 initial_tsn; + __u8 params[0]; }; -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 sctp_init_chunk { + struct sctp_chunkhdr chunk_hdr; + struct sctp_inithdr init_hdr; }; -struct trace_event_raw_block_plug { - struct trace_entry ent; - char comm[16]; - char __data[0]; +struct sctp_ipv4addr_param { + struct sctp_paramhdr param_hdr; + struct in_addr addr; }; -struct trace_event_raw_block_unplug { - struct trace_entry ent; - int nr_rq; - char comm[16]; - char __data[0]; +struct sctp_ipv6addr_param { + struct sctp_paramhdr param_hdr; + struct in6_addr addr; }; -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 sctp_cookie_preserve_param { + struct sctp_paramhdr param_hdr; + __be32 lifespan_increment; }; -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 sctp_hostname_param { + struct sctp_paramhdr param_hdr; + uint8_t hostname[0]; }; -struct trace_event_raw_block_rq_remap { - struct trace_entry ent; - dev_t dev; - sector_t sector; - unsigned int nr_sector; - dev_t old_dev; - sector_t old_sector; - unsigned int nr_bios; - char rwbs[8]; - char __data[0]; +struct sctp_supported_addrs_param { + struct sctp_paramhdr param_hdr; + __be16 types[0]; }; -struct trace_event_data_offsets_block_buffer {}; - -struct trace_event_data_offsets_block_rq_requeue { - u32 cmd; +struct sctp_adaptation_ind_param { + struct sctp_paramhdr param_hdr; + __be32 adaptation_ind; }; -struct trace_event_data_offsets_block_rq_completion { - u32 cmd; +struct sctp_supported_ext_param { + struct sctp_paramhdr param_hdr; + __u8 chunks[0]; }; -struct trace_event_data_offsets_block_rq { - u32 cmd; +struct sctp_random_param { + struct sctp_paramhdr param_hdr; + __u8 random_val[0]; }; -struct trace_event_data_offsets_block_bio_complete {}; - -struct trace_event_data_offsets_block_bio {}; - -struct trace_event_data_offsets_block_plug {}; - -struct trace_event_data_offsets_block_unplug {}; - -struct trace_event_data_offsets_block_split {}; - -struct trace_event_data_offsets_block_bio_remap {}; - -struct trace_event_data_offsets_block_rq_remap {}; +struct sctp_chunks_param { + struct sctp_paramhdr param_hdr; + __u8 chunks[0]; +}; -typedef void (*btf_trace_block_touch_buffer)(void *, struct buffer_head *); +struct sctp_hmac_algo_param { + struct sctp_paramhdr param_hdr; + __be16 hmac_ids[0]; +}; -typedef void (*btf_trace_block_dirty_buffer)(void *, struct buffer_head *); +struct sctp_cookie_param { + struct sctp_paramhdr p; + __u8 body[0]; +}; -typedef void (*btf_trace_block_rq_requeue)(void *, struct request *); +struct sctp_gap_ack_block { + __be16 start; + __be16 end; +}; -typedef void (*btf_trace_block_rq_complete)(void *, struct request *, blk_status_t, unsigned int); +union sctp_sack_variable { + struct sctp_gap_ack_block gab; + __be32 dup; +}; -typedef void (*btf_trace_block_rq_error)(void *, struct request *, blk_status_t, unsigned int); +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]; +}; -typedef void (*btf_trace_block_rq_insert)(void *, struct request *); +struct sctp_heartbeathdr { + struct sctp_paramhdr info; +}; -typedef void (*btf_trace_block_rq_issue)(void *, struct request *); +struct sctp_shutdownhdr { + __be32 cum_tsn_ack; +}; -typedef void (*btf_trace_block_rq_merge)(void *, struct request *); +struct sctp_errhdr { + __be16 cause; + __be16 length; + __u8 variable[0]; +}; -typedef void (*btf_trace_block_bio_complete)(void *, struct request_queue *, struct bio *); +struct sctp_ecnehdr { + __be32 lowest_tsn; +}; -typedef void (*btf_trace_block_bio_bounce)(void *, struct bio *); +struct sctp_cwrhdr { + __be32 lowest_tsn; +}; -typedef void (*btf_trace_block_bio_backmerge)(void *, struct bio *); +struct sctp_fwdtsn_skip { + __be16 stream; + __be16 ssn; +}; -typedef void (*btf_trace_block_bio_frontmerge)(void *, struct bio *); +struct sctp_fwdtsn_hdr { + __be32 new_cum_tsn; + struct sctp_fwdtsn_skip skip[0]; +}; -typedef void (*btf_trace_block_bio_queue)(void *, struct bio *); +struct sctp_ifwdtsn_skip { + __be16 stream; + __u8 reserved; + __u8 flags; + __be32 mid; +}; -typedef void (*btf_trace_block_getrq)(void *, struct bio *); +struct sctp_ifwdtsn_hdr { + __be32 new_cum_tsn; + struct sctp_ifwdtsn_skip skip[0]; +}; -typedef void (*btf_trace_block_plug)(void *, struct request_queue *); +struct sctp_addip_param { + struct sctp_paramhdr param_hdr; + __be32 crr_id; +}; -typedef void (*btf_trace_block_unplug)(void *, struct request_queue *, unsigned int, bool); +struct sctp_addiphdr { + __be32 serial; + __u8 params[0]; +}; -typedef void (*btf_trace_block_split)(void *, struct bio *, unsigned int); +struct sctp_authhdr { + __be16 shkey_id; + __be16 hmac_id; + __u8 hmac[0]; +}; -typedef void (*btf_trace_block_bio_remap)(void *, struct bio *, dev_t, sector_t); +union sctp_addr { + struct sockaddr_in v4; + struct sockaddr_in6 v6; + struct sockaddr sa; +}; -typedef void (*btf_trace_block_rq_remap)(void *, struct request *, dev_t, sector_t); +struct sctp_cookie { + __u32 my_vtag; + __u32 peer_vtag; + __u32 my_ttag; + __u32 peer_ttag; + ktime_t expiration; + __u16 sinit_num_ostreams; + __u16 sinit_max_instreams; + __u32 initial_tsn; + union sctp_addr peer_addr; + __u16 my_port; + __u8 prsctp_capable; + __u8 padding; + __u32 adaptation_ind; + __u8 auth_random[36]; + __u8 auth_hmacs[10]; + __u8 auth_chunks[20]; + __u32 raw_addr_list_len; + struct sctp_init_chunk peer_init[0]; +}; -typedef struct blkcg_policy_data *blkcg_pol_alloc_cpd_fn(gfp_t); +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]; +}; -typedef void blkcg_pol_init_cpd_fn(struct blkcg_policy_data *); +struct sctp_inithdr_host { + __u32 init_tag; + __u32 a_rwnd; + __u16 num_outbound_streams; + __u16 num_inbound_streams; + __u32 initial_tsn; +}; -typedef void blkcg_pol_free_cpd_fn(struct blkcg_policy_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, +}; -typedef void blkcg_pol_bind_cpd_fn(struct blkcg_policy_data *); +struct sctp_stream_out_ext; -typedef struct blkg_policy_data *blkcg_pol_alloc_pd_fn(gfp_t, struct request_queue *, struct blkcg *); +struct sctp_stream_out { + union { + __u32 mid; + __u16 ssn; + }; + __u32 mid_uo; + struct sctp_stream_out_ext *ext; + __u8 state; +}; -typedef void blkcg_pol_init_pd_fn(struct blkg_policy_data *); +struct sctp_stream_in { + union { + __u32 mid; + __u16 ssn; + }; + __u32 mid_uo; + __u32 fsn; + __u32 fsn_uo; + char pd_mode; + char pd_mode_uo; +}; -typedef void blkcg_pol_online_pd_fn(struct blkg_policy_data *); +struct sctp_stream_interleave; -typedef void blkcg_pol_offline_pd_fn(struct blkg_policy_data *); +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; +}; -typedef void blkcg_pol_free_pd_fn(struct blkg_policy_data *); +struct sctp_sched_ops; -typedef void blkcg_pol_reset_pd_stats_fn(struct blkg_policy_data *); +struct sctp_association; -typedef void blkcg_pol_stat_pd_fn(struct blkg_policy_data *, struct seq_file *); +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 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 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 blkg_rwstat { - struct percpu_counter cpu_cnt[5]; - atomic64_t aux_cnt[5]; +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 throtl_grp; +struct sctp_transport; -struct throtl_qnode { - struct list_head node; - struct bio_list bios; - struct throtl_grp *tg; -}; +struct sctp_auth_bytes; -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 sctp_shared_key; -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; - struct blkg_rwstat stat_bytes; - struct blkg_rwstat stat_ios; +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; }; -enum tg_state_flags { - THROTL_TG_PENDING = 1, - THROTL_TG_WAS_EMPTY = 2, - THROTL_TG_HAS_IOPS_LIMIT = 4, - THROTL_TG_CANCELING = 8, +struct sctp_auth_bytes { + refcount_t refcnt; + __u32 len; + __u8 data[0]; }; -enum { - BLK_MQ_NO_TAG = 4294967295, - BLK_MQ_TAG_MIN = 1, - BLK_MQ_TAG_MAX = 4294967294, +struct sctp_shared_key { + struct list_head key_list; + struct sctp_auth_bytes *key; + refcount_t refcnt; + __u16 key_id; + __u8 deactivated; }; enum { - REQ_FSEQ_PREFLUSH = 1, - REQ_FSEQ_DATA = 2, - REQ_FSEQ_POSTFLUSH = 4, - REQ_FSEQ_DONE = 8, - REQ_FSEQ_ACTIONS = 7, - FLUSH_PENDING_TIMEOUT = 500, + SCTP_MAX_STREAM = 65535, }; -enum { - ICQ_EXITED = 4, - ICQ_DESTROYED = 8, +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 rq_map_data { - struct page **pages; - int page_order; - int nr_entries; - long unsigned int offset; - int null_mapped; - int from_user; +enum { + SCTP_MAX_DUP_TSNS = 16, }; -struct bio_map_data { - bool is_our_pages: 1; - bool is_null_mapped: 1; - struct iov_iter iter; - struct iovec iov[0]; +enum sctp_scope { + SCTP_SCOPE_GLOBAL = 0, + SCTP_SCOPE_PRIVATE = 1, + SCTP_SCOPE_LINK = 2, + SCTP_SCOPE_LOOPBACK = 3, + SCTP_SCOPE_UNUSABLE = 4, }; -struct req_iterator { - struct bvec_iter iter; - struct bio *bio; +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, }; -enum bio_merge_status { - BIO_MERGE_OK = 0, - BIO_MERGE_NONE = 1, - BIO_MERGE_FAILED = 2, -}; +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)); -typedef bool (*sb_for_each_fn)(struct sbitmap *, unsigned int, void *); +union sctp_addr_param; -struct sbq_wait { - struct sbitmap_queue *sbq; - struct wait_queue_entry wait; +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 bool busy_tag_iter_fn(struct request *, void *, bool); - -enum { - BLK_MQ_UNIQUE_TAG_BITS = 16, - BLK_MQ_UNIQUE_TAG_MASK = 65535, -}; +struct sctp_sender_hb_info; -struct bt_iter_data { - struct blk_mq_hw_ctx *hctx; - struct request_queue *q; - busy_tag_iter_fn *fn; - void *data; - bool reserved; -}; +struct sctp_signed_cookie; -struct bt_tags_iter_data { - struct blk_mq_tags *tags; - busy_tag_iter_fn *fn; - void *data; - unsigned int flags; -}; +struct sctp_datamsg; -struct mq_inflight { - struct block_device *part; - unsigned int inflight[2]; +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 flush_busy_ctx_data { - struct blk_mq_hw_ctx *hctx; - struct list_head *list; +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 dispatch_rq_data { - struct blk_mq_hw_ctx *hctx; - struct request *rq; +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; }; -enum prep_dispatch { - PREP_DISPATCH_OK = 0, - PREP_DISPATCH_NO_TAG = 1, - PREP_DISPATCH_NO_BUDGET = 2, +enum sctp_socket_type { + SCTP_SOCKET_UDP = 0, + SCTP_SOCKET_UDP_HIGH_BANDWIDTH = 1, + SCTP_SOCKET_TCP = 2, }; -struct rq_iter_data { - struct blk_mq_hw_ctx *hctx; - bool has_rq; -}; +struct sctp_pf; -struct blk_mq_qe_pair { - struct list_head node; - struct request_queue *q; - struct elevator_type *type; +struct sctp_sock { + struct inet_sock inet; + enum sctp_socket_type type; + struct sctp_pf *pf; + struct crypto_shash *hmac; + char *sctp_hmac_alg; + struct sctp_endpoint *ep; + struct sctp_bind_bucket *bind_hash; + __u16 default_stream; + __u32 default_ppid; + __u16 default_flags; + __u32 default_context; + __u32 default_timetolive; + __u32 default_rcv_context; + int max_burst; + __u32 hbinterval; + __u32 probe_interval; + __be16 udp_port; + __be16 encap_port; + __u16 pathmaxrxt; + __u32 flowlabel; + __u8 dscp; + __u16 pf_retrans; + __u16 ps_retrans; + __u32 pathmtu; + __u32 sackdelay; + __u32 sackfreq; + __u32 param_flags; + __u32 default_ss; + struct sctp_rtoinfo rtoinfo; + struct sctp_paddrparams paddrparam; + struct sctp_assocparams assocparams; + __u16 subscribe; + struct sctp_initmsg initmsg; + int user_frag; + __u32 autoclose; + __u32 adaptation_ind; + __u32 pd_point; + __u16 nodelay: 1; + __u16 pf_expose: 2; + __u16 reuse: 1; + __u16 disable_fragments: 1; + __u16 v4mapped: 1; + __u16 frag_interleave: 1; + __u16 recvrcvinfo: 1; + __u16 recvnxtinfo: 1; + __u16 data_ready_signalled: 1; + atomic_t pd_mode; + struct sk_buff_head pd_lobby; + struct list_head auto_asconf_list; + int do_auto_asconf; }; -struct blk_queue_stats { - struct list_head callbacks; - spinlock_t lock; - int accounting; -}; +struct sctp_af; -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 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; }; -typedef u32 compat_caddr_t; +struct sctp_signed_cookie { + __u8 signature[32]; + __u32 __pad; + struct sctp_cookie c; +} __attribute__((packed)); -struct hd_geometry { - unsigned char heads; - unsigned char sectors; - short unsigned int cylinders; - long unsigned int start; +union sctp_addr_param { + struct sctp_paramhdr p; + struct sctp_ipv4addr_param v4; + struct sctp_ipv6addr_param v6; }; -struct blkpg_ioctl_arg { - int op; - int flags; - int datalen; - void *data; +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 blkpg_partition { - long long int start; - long long int length; - int pno; - char devname[64]; - char volname[64]; +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 pr_reservation { - __u64 key; - __u32 type; - __u32 flags; +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 pr_registration { - __u64 old_key; - __u64 new_key; - __u32 flags; - __u32 __pad; +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 pr_preempt { - __u64 old_key; - __u64 new_key; - __u32 type; - __u32 flags; +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; }; -struct pr_clear { - __u64 key; - __u32 flags; - __u32 __pad; +struct sctp_stream_priorities { + struct list_head prio_sched; + struct list_head active; + struct sctp_stream_out_ext *next; + __u16 prio; + __u16 users; }; -struct compat_blkpg_ioctl_arg { - compat_int_t op; - compat_int_t flags; - compat_int_t datalen; - compat_caddr_t data; +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 compat_hd_geometry { - unsigned char heads; - unsigned char sectors; - short unsigned int cylinders; - u32 start; +struct task_security_struct { + u32 osid; + u32 sid; + u32 exec_sid; + u32 create_sid; + u32 keycreate_sid; + u32 sockcreate_sid; }; -struct klist_node; - -struct klist { - spinlock_t k_lock; - struct list_head k_list; - void (*get)(struct klist_node *); - void (*put)(struct klist_node *); +enum label_initialized { + LABEL_INVALID = 0, + LABEL_INITIALIZED = 1, + LABEL_PENDING = 2, }; -struct klist_node { - void *n_klist; - struct list_head n_node; - struct kref n_ref; +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 klist_iter { - struct klist *i_klist; - struct klist_node *i_cur; +struct file_security_struct { + u32 sid; + u32 fown_sid; + u32 isid; + u32 pseqno; }; -struct class_dev_iter { - struct klist_iter ki; - const struct device_type *type; +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 { - GENHD_FL_REMOVABLE = 1, - GENHD_FL_HIDDEN = 2, - GENHD_FL_NO_PART = 4, +struct msg_security_struct { + u32 sid; }; -struct badblocks { - struct device *dev; - int count; - int unacked_exist; - int shift; - u64 *page; - int changed; - seqlock_t lock; - sector_t sector; - sector_t size; +struct ipc_security_struct { + u16 sclass; + u32 sid; }; -struct blk_major_name { - struct blk_major_name *next; - int major; - char name[16]; - void (*probe)(dev_t); +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 { - IOPRIO_WHO_PROCESS = 1, - IOPRIO_WHO_PGRP = 2, - IOPRIO_WHO_USER = 3, +struct tun_security_struct { + u32 sid; }; -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; +struct key_security_struct { + u32 sid; }; -typedef struct { - struct page *v; -} Sector; - -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 vgda { - __be32 secs; - __be32 usec; - char reserved8[16]; - __be16 numlvs; - __be16 maxlvs; - __be16 pp_size; - __be16 numpvs; - __be16 total_vgdas; - __be16 vgda_size; -}; - -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 lvname { - char name[64]; +struct ib_security_struct { + u32 sid; }; -struct ppe { - __be16 lv_ix; - short unsigned int res2; - short unsigned int res4; - __be16 lp_ix; - short unsigned int res8[12]; +struct bpf_security_struct { + u32 sid; }; -struct pvd { - char reserved0[16]; - __be16 pp_count; - char reserved18[2]; - __be32 psn_part1; - char reserved24[8]; - struct ppe ppe[1016]; +struct perf_event_security_struct { + u32 sid; }; -struct lv_info { - short unsigned int pps_per_lv; - short unsigned int pps_found; - unsigned char lv_is_contiguous; +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; }; -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; +enum { + Opt_error___2 = 4294967295, + Opt_context = 0, + Opt_defcontext = 1, + Opt_fscontext = 2, + Opt_rootcontext = 3, + Opt_seclabel = 4, }; -struct frag { - struct list_head list; - u32 group; - u8 num; - u8 rec; - u8 map; - u8 data[0]; -}; +struct selinux_policy_convert_data; -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 selinux_load_state { + struct selinux_policy *policy; + struct selinux_policy_convert_data *convert_data; }; -struct tocblock { - u8 bitmap1_name[16]; - u64 bitmap1_start; - u64 bitmap1_size; - u8 bitmap2_name[16]; - u64 bitmap2_start; - u64 bitmap2_size; +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 vmdb { - u16 ver_major; - u16 ver_minor; - u32 vblk_size; - u32 vblk_offset; - u32 last_vblk_seq; +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 vblk_comp { - u8 state[16]; - u64 parent_id; - u8 type; - u8 children; - u16 chunksize; +struct policy_load_memory { + size_t len; + void *data; }; -struct vblk_dgrp { - u8 disk_id[64]; +enum { + SELNL_MSG_SETENFORCE = 16, + SELNL_MSG_POLICYLOAD = 17, + SELNL_MSG_MAX = 18, }; -struct vblk_disk { - uuid_t disk_id; - u8 alt_name[128]; +enum selinux_nlgroups { + SELNLGRP_NONE = 0, + SELNLGRP_AVC = 1, + __SELNLGRP_MAX = 2, }; -struct vblk_part { - u64 start; - u64 size; - u64 volume_offset; - u64 parent_id; - u64 disk_id; - u8 partnum; +struct selnl_msg_setenforce { + __s32 val; }; -struct vblk_volu { - u8 volume_type[16]; - u8 volume_state[16]; - u8 guid[16]; - u8 drive_hint[4]; - u64 size; - u8 partition_type; +struct selnl_msg_policyload { + __u32 seqno; }; -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; +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 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; +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 dasd_information2_t { - unsigned int devno; - unsigned int real_devno; - unsigned int schid; - unsigned int cu_type: 16; - unsigned int cu_model: 8; - char: 8; - unsigned int dev_type: 16; - unsigned int dev_model: 8; - unsigned int open_count; - unsigned int req_queue_len; - unsigned int chanq_len; - char type[4]; - unsigned int status; - unsigned int label_block; - unsigned int FBA_layout; - unsigned int characteristics_size; - unsigned int confdata_size; - char characteristics[64]; - char configuration_data[256]; - unsigned int format; - unsigned int features; - unsigned int reserved0; - unsigned int reserved1; - unsigned int reserved2; - unsigned int reserved3; - unsigned int reserved4; - unsigned int reserved5; - unsigned int reserved6; - unsigned int reserved7; +struct nlmsg_perm { + u16 nlmsg_type; + u32 perm; }; -typedef struct dasd_information2_t dasd_information2_t; - -struct vtoc_ttr { - __u16 tt; - __u8 r; -} __attribute__((packed)); - -struct vtoc_cchhb { - __u16 cc; - __u16 hh; - __u8 b; -} __attribute__((packed)); - -struct vtoc_cchh { - __u16 cc; - __u16 hh; +struct netif_security_struct { + struct net *ns; + int ifindex; + u32 sid; }; -struct vtoc_labeldate { - __u8 year; - __u16 day; -} __attribute__((packed)); - -struct vtoc_volume_label_cdl { - char volkey[4]; - char vollbl[4]; - char volid[6]; - __u8 security; - struct vtoc_cchhb vtoc; - char res1[5]; - char cisize[4]; - char blkperci[4]; - char labperci[4]; - char res2[4]; - char lvtoc[14]; - char res3[29]; -} __attribute__((packed)); - -struct vtoc_volume_label_ldl { - char vollbl[4]; - char volid[6]; - char res3[69]; - char ldl_version; - __u64 formatted_blocks; +struct sel_netif { + struct list_head list; + struct netif_security_struct nsec; + struct callback_head callback_head; }; -struct vtoc_extent { - __u8 typeind; - __u8 seqno; - struct vtoc_cchh llimit; - struct vtoc_cchh ulimit; +struct netnode_security_struct { + union { + __be32 ipv4; + struct in6_addr ipv6; + } addr; + u32 sid; + u16 family; }; -struct vtoc_format1_label { - char DS1DSNAM[44]; - __u8 DS1FMTID; - char DS1DSSN[6]; - __u16 DS1VOLSQ; - struct vtoc_labeldate DS1CREDT; - struct vtoc_labeldate DS1EXPDT; - __u8 DS1NOEPV; - __u8 DS1NOBDB; - __u8 DS1FLAG1; - char DS1SYSCD[13]; - struct vtoc_labeldate DS1REFD; - __u8 DS1SMSFG; - __u8 DS1SCXTF; - __u16 DS1SCXTV; - __u8 DS1DSRG1; - __u8 DS1DSRG2; - __u8 DS1RECFM; - __u8 DS1OPTCD; - __u16 DS1BLKL; - __u16 DS1LRECL; - __u8 DS1KEYL; - __u16 DS1RKP; - __u8 DS1DSIND; - __u8 DS1SCAL1; - char DS1SCAL3[3]; - struct vtoc_ttr DS1LSTAR; - __u16 DS1TRBAL; - __u16 res1; - struct vtoc_extent DS1EXT1; - struct vtoc_extent DS1EXT2; - struct vtoc_extent DS1EXT3; - struct vtoc_cchhb DS1PTRDS; -} __attribute__((packed)); - -struct vtoc_cms_label { - __u8 label_id[4]; - __u8 vol_id[6]; - __u16 version_id; - __u32 block_size; - __u32 origin_ptr; - __u32 usable_count; - __u32 formatted_count; - __u32 block_count; - __u32 used_count; - __u32 fst_size; - __u32 fst_count; - __u8 format_date[6]; - __u8 reserved1[2]; - __u32 disk_offset; - __u32 map_block; - __u32 hblk_disp; - __u32 user_disp; - __u8 reserved2[4]; - __u8 segment_name[8]; +struct sel_netnode_bkt { + unsigned int size; + struct list_head list; }; -union label_t { - struct vtoc_volume_label_cdl vol; - struct vtoc_volume_label_ldl lnx; - struct vtoc_cms_label cms; +struct sel_netnode { + struct netnode_security_struct nsec; + struct list_head list; + struct callback_head rcu; }; -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 netport_security_struct { + u32 sid; + u16 port; + u8 protocol; }; -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 sel_netport_bkt { + int size; + struct list_head list; }; -struct solaris_x86_slice { - __le16 s_tag; - __le16 s_flag; - __le32 s_start; - __le32 s_size; -}; - -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 bsd_partition { - __le32 p_size; - __le32 p_offset; - __le32 p_fsize; - __u8 p_fstype; - __u8 p_frag; - __le16 p_cpg; -}; - -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 unixware_slice { - __le16 s_label; - __le16 s_flags; - __le32 start_sect; - __le32 nr_sects; +struct sel_netport { + struct netport_security_struct psec; + struct list_head list; + struct callback_head rcu; }; -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 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 selinux_kernel_status { + u32 version; + u32 sequence; + u32 enforcing; + u32 policyload; + u32 deny_unknown; }; -typedef guid_t efi_guid_t; - -struct _gpt_header { - __le64 signature; - __le32 revision; - __le32 header_size; - __le32 header_crc32; - __le32 reserved1; - __le64 my_lba; - __le64 alternate_lba; - __le64 first_usable_lba; - __le64 last_usable_lba; - efi_guid_t disk_guid; - __le64 partition_entry_lba; - __le32 num_partition_entries; - __le32 sizeof_partition_entry; - __le32 partition_entry_array_crc32; -} __attribute__((packed)); - -typedef struct _gpt_header gpt_header; - -struct _gpt_entry_attributes { - u64 required_to_function: 1; - u64 reserved: 47; - u64 type_guid_specific: 16; +struct ebitmap_node { + struct ebitmap_node *next; + long unsigned int maps[6]; + u32 startbit; }; -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 ebitmap { + struct ebitmap_node *node; + u32 highbit; }; -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 policy_file { + char *data; + size_t len; }; -typedef struct _gpt_mbr_record gpt_mbr_record; - -struct _legacy_mbr { - u8 boot_code[440]; - __le32 unique_mbr_signature; - __le16 unknown; - gpt_mbr_record partition_record[4]; - __le16 signature; -} __attribute__((packed)); - -typedef struct _legacy_mbr legacy_mbr; - -struct rq_wait { - wait_queue_head_t wait; - atomic_t inflight; +struct hashtab_node { + void *key; + void *datum; + struct hashtab_node *next; }; -struct rq_depth { - unsigned int max_depth; - int scale_step; - bool scaled_max; - unsigned int queue_depth; - unsigned int default_depth; +struct hashtab { + struct hashtab_node **htable; + u32 size; + u32 nel; }; -typedef bool acquire_inflight_cb_t(struct rq_wait *, void *); +struct hashtab_info { + u32 slots_used; + u32 max_chain_len; +}; -typedef void cleanup_cb_t(struct rq_wait *, void *); +struct hashtab_key_params { + u32 (*hash)(const void *); + int (*cmp)(const void *, const void *); +}; -struct rq_qos_wait_data { - struct wait_queue_entry wq; - struct task_struct *task; - struct rq_wait *rqw; - acquire_inflight_cb_t *cb; - void *private_data; - bool got_token; +struct symtab { + struct hashtab table; + u32 nprim; }; -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 mls_level { + u32 sens; + struct ebitmap cat; }; -struct blk_ia_range_sysfs_entry { - struct attribute attr; - ssize_t (*show)(struct blk_independent_access_range *, char *); +struct mls_range { + struct mls_level level[2]; }; -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 context { + u32 user; + u32 role; + u32 type; + u32 len; + struct mls_range range; + char *str; }; -typedef int bsg_sg_io_fn(struct request_queue *, struct sg_io_v4 *, fmode_t, unsigned int); +struct sidtab_str_cache; -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 sidtab_entry { + u32 sid; + u32 hash; + struct context context; + struct sidtab_str_cache *cache; + struct hlist_node list; }; -struct bsg_job; +struct sidtab_str_cache { + struct callback_head rcu_member; + struct list_head lru_member; + struct sidtab_entry *parent; + u32 len; + char str[0]; +}; -typedef int bsg_job_fn(struct bsg_job *); +struct sidtab_node_inner; -struct bsg_buffer { - unsigned int payload_len; - int sg_cnt; - struct scatterlist *sg_list; +struct sidtab_node_leaf; + +union sidtab_entry_inner { + struct sidtab_node_inner *ptr_inner; + struct sidtab_node_leaf *ptr_leaf; }; -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 sidtab_node_inner { + union sidtab_entry_inner entries[512]; }; -typedef enum blk_eh_timer_return bsg_timeout_fn(struct request *); +struct sidtab_node_leaf { + struct sidtab_entry entries[39]; +}; -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 sidtab_isid_entry { + int set; + struct sidtab_entry entry; }; -struct bsg_device; +struct sidtab; -struct bsg_set { - struct blk_mq_tag_set tag_set; - struct bsg_device *bd; - bsg_job_fn *job_fn; - bsg_timeout_fn *timeout_fn; +struct sidtab_convert_params { + int (*func)(struct context *, struct context *, void *, gfp_t); + void *args; + struct sidtab *target; }; -struct blkg_conf_ctx { - struct block_device *bdev; - struct blkcg_gq *blkg; - char *body; +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 blkg_rwstat_sample { - u64 cnt[5]; +struct avtab_key { + u16 source_type; + u16 target_type; + u16 target_class; + u16 specified; }; -enum prio_policy { - POLICY_NO_CHANGE = 0, - POLICY_NONE_TO_RT = 1, - POLICY_RESTRICT_TO_BE = 2, - POLICY_ALL_TO_IDLE = 3, +struct avtab_extended_perms { + u8 specified; + u8 driver; + struct extended_perms_data perms; }; -struct ioprio_blkg { - struct blkg_policy_data pd; +struct avtab_datum { + union { + u32 data; + struct avtab_extended_perms *xperms; + } u; }; -struct ioprio_blkcg { - struct blkcg_policy_data cpd; - enum prio_policy prio_policy; - bool prio_set; +struct avtab_node { + struct avtab_key key; + struct avtab_datum datum; + struct avtab_node *next; }; -struct blk_ioprio { - struct rq_qos rqos; +struct avtab { + struct avtab_node **htable; + u32 nel; + u32 nslot; + u32 mask; }; -struct latency_bucket { - long unsigned int total_latency; - int samples; -}; +struct type_set; -struct avg_latency_bucket { - long unsigned int latency; - bool valid; +struct constraint_expr { + u32 expr_type; + u32 attr; + u32 op; + struct ebitmap names; + struct type_set *type_names; + struct constraint_expr *next; }; -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 type_set { + struct ebitmap types; + struct ebitmap negset; + u32 flags; }; -struct blk_iolatency { - struct rq_qos rqos; - struct timer_list timer; - bool enabled; - atomic_t enable_cnt; - struct work_struct enable_work; +struct constraint_node { + u32 permissions; + struct constraint_expr *expr; + struct constraint_node *next; }; -struct iolatency_grp; - -struct child_latency_info { - spinlock_t lock; - u64 last_scale_event; - u64 scale_lat; - u64 nr_samples; - struct iolatency_grp *scale_grp; - atomic_t scale_cookie; +struct common_datum { + u32 value; + struct symtab permissions; }; -struct percentile_stats { - u64 total; - u64 missed; +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 latency_stat { - union { - struct percentile_stats ps; - struct blk_rq_stat rqs; - }; +struct role_datum { + u32 value; + u32 bounds; + struct ebitmap dominates; + struct ebitmap types; }; -struct iolatency_grp { - struct blkg_policy_data pd; - struct latency_stat *stats; - struct latency_stat cur_stat; - struct blk_iolatency *blkiolat; - struct rq_depth rq_depth; - struct rq_wait rq_wait; - atomic64_t window_start; - atomic_t scale_cookie; - u64 min_lat_nsec; - u64 cur_win_nsec; - u64 lat_avg; - u64 nr_samples; - bool ssd; - struct child_latency_info child_lat; +struct role_allow { + u32 role; + u32 new_role; + struct role_allow *next; }; -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 type_datum { + u32 value; + u32 bounds; + unsigned char primary; + unsigned char attribute; }; -enum ioc_running { - IOC_IDLE = 0, - IOC_RUNNING = 1, - IOC_STOP = 2, +struct user_datum { + u32 value; + u32 bounds; + struct ebitmap roles; + struct mls_range range; + struct mls_level dfltlevel; }; -enum { - QOS_ENABLE = 0, - QOS_CTRL = 1, - NR_QOS_CTRL_PARAMS = 2, +struct cond_bool_datum { + __u32 value; + int state; }; -enum { - QOS_RPPM = 0, - QOS_RLAT = 1, - QOS_WPPM = 2, - QOS_WLAT = 3, - QOS_MIN = 4, - QOS_MAX = 5, - NR_QOS_PARAMS = 6, +struct ocontext { + union { + char *name; + struct { + u8 protocol; + u16 low_port; + u16 high_port; + } port; + struct { + u32 addr; + u32 mask; + } node; + struct { + u32 addr[4]; + u32 mask[4]; + } node6; + struct { + u64 subnet_prefix; + u16 low_pkey; + u16 high_pkey; + } ibpkey; + struct { + char *dev_name; + u8 port; + } ibendport; + } u; + union { + u32 sclass; + u32 behavior; + } v; + struct context context[2]; + u32 sid[2]; + struct ocontext *next; }; -enum { - COST_CTRL = 0, - COST_MODEL = 1, - NR_COST_CTRL_PARAMS = 2, +struct genfs { + char *fstype; + struct ocontext *head; + struct genfs *next; }; -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 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 { - LCOEF_RPAGE = 0, - LCOEF_RSEQIO = 1, - LCOEF_RRANDIO = 2, - LCOEF_WPAGE = 3, - LCOEF_WSEQIO = 4, - LCOEF_WRANDIO = 5, - NR_LCOEFS = 6, +struct perm_datum { + u32 value; }; -enum { - AUTOP_INVALID = 0, - AUTOP_HDD = 1, - AUTOP_SSD_QD1 = 2, - AUTOP_SSD_DFL = 3, - AUTOP_SSD_FAST = 4, +struct role_trans_key { + u32 role; + u32 type; + u32 tclass; }; -struct ioc_params { - u32 qos[6]; - u64 i_lcoefs[6]; - u64 lcoefs[6]; - u32 too_fast_vrate_pct; - u32 too_slow_vrate_pct; +struct role_trans_datum { + u32 new_role; }; -struct ioc_margins { - s64 min; - s64 low; - s64 target; +struct filename_trans_key { + u32 ttype; + u16 tclass; + const char *name; }; -struct ioc_missed { - local_t nr_met; - local_t nr_missed; - u32 last_met; - u32 last_missed; +struct filename_trans_datum { + struct ebitmap stypes; + u32 otype; + struct filename_trans_datum *next; }; -struct ioc_pcpu_stat { - struct ioc_missed missed[2]; - local64_t rq_wait_ns; - u64 last_rq_wait_ns; +struct level_datum { + struct mls_level *level; + unsigned char isalias; }; -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 cat_datum { + u32 value; + unsigned char isalias; }; -struct iocg_pcpu_stat { - local64_t abs_vusage; +struct range_trans { + u32 source_type; + u32 target_type; + u32 target_class; }; -struct iocg_stat { - u64 usage_us; - u64 wait_us; - u64 indebt_us; - u64 indelay_us; +struct cond_expr_node; + +struct cond_expr { + struct cond_expr_node *nodes; + u32 len; }; -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 cond_av_list { + struct avtab_node **nodes; + u32 len; }; -struct ioc_cgrp { - struct blkcg_policy_data cpd; - unsigned int dfl_weight; +struct cond_node { + int cur_state; + struct cond_expr expr; + struct cond_av_list true_list; + struct cond_av_list false_list; }; -struct ioc_now { - u64 now_ns; - u64 now; - u64 vnow; - u64 vrate; +struct policy_data { + struct policydb *p; + void *fp; }; -struct iocg_wait { - struct wait_queue_entry wait; - struct bio *bio; - u64 abs_cost; - bool committed; +struct cond_expr_node { + u32 expr_type; + u32 bool; }; -struct iocg_wake_ctx { - struct ioc_gq *iocg; - u32 hw_inuse; - s64 vbudget; +struct policydb_compat_info { + int version; + int sym_num; + int ocon_num; }; -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 selinux_mapping; + +struct selinux_map { + struct selinux_mapping *mapping; + u16 size; }; -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 selinux_policy { + struct sidtab *sidtab; + struct policydb policydb; + struct selinux_map map; + u32 latest_granting; }; -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 convert_context_args { + struct selinux_state *state; + struct policydb *oldp; + struct policydb *newp; }; -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 selinux_policy_convert_data { + struct convert_context_args args; + struct sidtab_convert_params sidtab_params; }; -struct trace_event_data_offsets_iocost_iocg_state { - u32 devname; - u32 cgroup; +struct selinux_mapping { + u16 value; + unsigned int num_perms; + u32 perms[32]; }; -struct trace_event_data_offsets_iocg_inuse_update { - u32 devname; - u32 cgroup; +struct selinux_audit_rule { + u32 au_seqno; + struct context au_ctxt; }; -struct trace_event_data_offsets_iocost_ioc_vrate_adj { - u32 devname; +struct cond_insertf_data { + struct policydb *p; + struct avtab_node **dst; + struct cond_av_list *other; }; -struct trace_event_data_offsets_iocost_iocg_forgive_debt { - u32 devname; - u32 cgroup; +struct rt6key { + struct in6_addr addr; + int plen; }; -typedef void (*btf_trace_iocost_iocg_activate)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64); +struct rtable; -typedef void (*btf_trace_iocost_iocg_idle)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64); +struct fnhe_hash_bucket; -typedef void (*btf_trace_iocost_inuse_shortage)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); +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; +}; -typedef void (*btf_trace_iocost_inuse_transfer)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); +struct rt6_exception_bucket; -typedef void (*btf_trace_iocost_inuse_adjust)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); +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; +}; -typedef void (*btf_trace_iocost_ioc_vrate_adj)(void *, struct ioc *, u64, u32 *, u32, int, int); +struct fib6_node; -typedef void (*btf_trace_iocost_iocg_forgive_debt)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u64, u64, u64, u64); +struct dst_metrics; -enum dd_data_dir { - DD_READ = 0, - DD_WRITE = 1, -}; +struct nexthop; -enum { - DD_DIR_COUNT = 2, +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]; }; -enum dd_prio { - DD_RT_PRIO = 0, - DD_BE_PRIO = 1, - DD_IDLE_PRIO = 2, - DD_PRIO_MAX = 2, +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 { - DD_PRIO_COUNT = 3, +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 io_stats_per_prio { - uint32_t inserted; - uint32_t merged; - uint32_t dispatched; - atomic_t completed; +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 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 io_stats_per_prio stats; +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 deadline_data { - struct dd_per_prio per_prio[3]; - enum dd_data_dir last_dir; - unsigned int batching; - unsigned int starved; - int fifo_expire[2]; - int fifo_batch; - int writes_starved; - int front_merges; - u32 async_depth; - int prio_aging_expire; - spinlock_t lock; - spinlock_t zone_lock; +typedef 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 trace_event_raw_kyber_latency { - struct trace_entry ent; - dev_t dev; - char domain[16]; - char type[8]; - u8 percentile; - u8 numerator; - u8 denominator; - unsigned int samples; - char __data[0]; +struct 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 trace_event_raw_kyber_adjust { - struct trace_entry ent; - dev_t dev; - char domain[16]; - unsigned int depth; - char __data[0]; +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 trace_event_raw_kyber_throttled { - struct trace_entry ent; - dev_t dev; - char domain[16]; - char __data[0]; +struct xfrm_lifetime_cur { + __u64 bytes; + __u64 packets; + __u64 add_time; + __u64 use_time; }; -struct trace_event_data_offsets_kyber_latency {}; +struct xfrm_replay_state { + __u32 oseq; + __u32 seq; + __u32 bitmap; +}; -struct trace_event_data_offsets_kyber_adjust {}; +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 trace_event_data_offsets_kyber_throttled {}; +struct xfrm_algo { + char alg_name[64]; + unsigned int alg_key_len; + char alg_key[0]; +}; -typedef void (*btf_trace_kyber_latency)(void *, dev_t, const char *, const char *, unsigned int, unsigned int, unsigned int, unsigned int); +struct xfrm_algo_auth { + char alg_name[64]; + unsigned int alg_key_len; + unsigned int alg_trunc_len; + char alg_key[0]; +}; -typedef void (*btf_trace_kyber_adjust)(void *, dev_t, const char *, unsigned int); +struct xfrm_algo_aead { + char alg_name[64]; + unsigned int alg_key_len; + unsigned int alg_icv_len; + char alg_key[0]; +}; -typedef void (*btf_trace_kyber_throttled)(void *, dev_t, const char *); +struct xfrm_stats { + __u32 replay_window; + __u32 replay; + __u32 integrity_failed; +}; enum { - KYBER_READ = 0, - KYBER_WRITE = 1, - KYBER_DISCARD = 2, - KYBER_OTHER = 3, - KYBER_NUM_DOMAINS = 4, + XFRM_POLICY_TYPE_MAIN = 0, + XFRM_POLICY_TYPE_SUB = 1, + XFRM_POLICY_TYPE_MAX = 2, + XFRM_POLICY_TYPE_ANY = 255, }; -enum { - KYBER_ASYNC_PERCENT = 75, +struct xfrm_encap_tmpl { + __u16 encap_type; + __be16 encap_sport; + __be16 encap_dport; + xfrm_address_t encap_oa; }; -enum { - KYBER_LATENCY_SHIFT = 2, - KYBER_GOOD_BUCKETS = 4, - KYBER_LATENCY_BUCKETS = 8, +enum xfrm_attr_type_t { + XFRMA_UNSPEC = 0, + XFRMA_ALG_AUTH = 1, + XFRMA_ALG_CRYPT = 2, + XFRMA_ALG_COMP = 3, + XFRMA_ENCAP = 4, + XFRMA_TMPL = 5, + XFRMA_SA = 6, + XFRMA_POLICY = 7, + XFRMA_SEC_CTX = 8, + XFRMA_LTIME_VAL = 9, + XFRMA_REPLAY_VAL = 10, + XFRMA_REPLAY_THRESH = 11, + XFRMA_ETIMER_THRESH = 12, + XFRMA_SRCADDR = 13, + XFRMA_COADDR = 14, + XFRMA_LASTUSED = 15, + XFRMA_POLICY_TYPE = 16, + XFRMA_MIGRATE = 17, + XFRMA_ALG_AEAD = 18, + XFRMA_KMADDRESS = 19, + XFRMA_ALG_AUTH_TRUNC = 20, + XFRMA_MARK = 21, + XFRMA_TFCPAD = 22, + XFRMA_REPLAY_ESN_VAL = 23, + XFRMA_SA_EXTRA_FLAGS = 24, + XFRMA_PROTO = 25, + XFRMA_ADDRESS_FILTER = 26, + XFRMA_PAD = 27, + XFRMA_OFFLOAD_DEV = 28, + XFRMA_SET_MARK = 29, + XFRMA_SET_MARK_MASK = 30, + XFRMA_IF_ID = 31, + XFRMA_MTIMER_THRESH = 32, + __XFRMA_MAX = 33, }; -enum { - KYBER_TOTAL_LATENCY = 0, - KYBER_IO_LATENCY = 1, +struct xfrm_mark { + __u32 v; + __u32 m; }; -struct kyber_cpu_latency { - atomic_t buckets[48]; +struct xfrm_address_filter { + xfrm_address_t saddr; + xfrm_address_t daddr; + __u16 family; + __u8 splen; + __u8 dplen; }; -struct kyber_ctx_queue { - spinlock_t lock; - struct list_head rq_list[4]; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 xfrm_state_walk { + struct list_head all; + u8 state; + u8 dying; + u8 proto; + u32 seq; + struct xfrm_address_filter *filter; }; -struct kyber_queue_data { - struct request_queue *q; - dev_t dev; - struct sbitmap_queue domain_tokens[4]; - unsigned int async_depth; - struct kyber_cpu_latency *cpu_latency; - struct timer_list timer; - unsigned int latency_buckets[48]; - long unsigned int latency_timeout[3]; - int domain_p99[3]; - u64 latency_targets[3]; +enum xfrm_replay_mode { + XFRM_REPLAY_MODE_LEGACY = 0, + XFRM_REPLAY_MODE_BMP = 1, + XFRM_REPLAY_MODE_ESN = 2, }; -struct kyber_hctx_data { - spinlock_t lock; - struct list_head rqs[4]; - unsigned int cur_domain; - unsigned int batching; - struct kyber_ctx_queue *kcqs; - struct sbitmap kcq_map[4]; - struct sbq_wait domain_wait[4]; - struct sbq_wait_state *domain_ws[4]; - atomic_t wait_index[4]; +struct xfrm_state_offload { + struct net_device *dev; + struct net_device *real_dev; + long unsigned int offload_handle; + unsigned int num_exthdrs; + u8 flags; }; -struct flush_kcq_data { - struct kyber_hctx_data *khd; - unsigned int sched_domain; - struct list_head *list; +struct xfrm_mode { + u8 encap; + u8 family; + u8 flags; }; -struct bfq_entity; +struct xfrm_type; + +struct xfrm_type_offload; -struct bfq_service_tree { - struct rb_root active; - struct rb_root idle; - struct bfq_entity *first_idle; - struct bfq_entity *last_idle; - u64 vtime; - long unsigned int wsum; +struct xfrm_state { + possible_net_t xs_net; + union { + struct hlist_node gclist; + struct hlist_node bydst; + }; + struct hlist_node bysrc; + struct hlist_node byspi; + struct hlist_node byseq; + refcount_t refcnt; + spinlock_t lock; + struct xfrm_id id; + struct xfrm_selector sel; + struct xfrm_mark mark; + u32 if_id; + u32 tfcpad; + u32 genid; + struct xfrm_state_walk km; + struct { + u32 reqid; + u8 mode; + u8 replay_window; + u8 aalgo; + u8 ealgo; + u8 calgo; + u8 flags; + u16 family; + xfrm_address_t saddr; + int header_len; + int trailer_len; + u32 extra_flags; + struct xfrm_mark smark; + } props; + struct xfrm_lifetime_cfg lft; + struct xfrm_algo_auth *aalg; + struct xfrm_algo *ealg; + struct xfrm_algo *calg; + struct xfrm_algo_aead *aead; + const char *geniv; + __be16 new_mapping_sport; + u32 new_mapping; + u32 mapping_maxage; + struct xfrm_encap_tmpl *encap; + struct sock *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 bfq_sched_data; - -struct bfq_queue; - -struct bfq_entity { - struct rb_node rb_node; - bool on_st_or_in_serv; - u64 start; - u64 finish; - struct rb_root *tree; - u64 min_start; - int service; - int budget; - int allocated; - int dev_weight; - int weight; - int new_weight; - int orig_weight; - struct bfq_entity *parent; - struct bfq_sched_data *my_sched_data; - struct bfq_sched_data *sched_data; - int prio_changed; - bool in_groups_with_pending_reqs; - struct bfq_queue *last_bfqq_created; +struct dst_metrics { + u32 metrics[17]; + refcount_t refcnt; }; -struct bfq_sched_data { - struct bfq_entity *in_service_entity; - struct bfq_entity *next_in_service; - struct bfq_service_tree service_tree[3]; - long unsigned int bfq_class_idle_last_service; +struct xfrm_policy_walk_entry { + struct list_head all; + u8 dead; }; -struct bfq_weight_counter { - unsigned int weight; - unsigned int num_active; - struct rb_node weights_node; +struct xfrm_policy_queue { + struct sk_buff_head hold_queue; + struct timer_list hold_timer; + long unsigned int timeout; }; -struct bfq_ttime { - u64 last_end_request; - u64 ttime_total; - long unsigned int ttime_samples; - u64 ttime_mean; +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 bfq_data; - -struct bfq_io_cq; - -struct bfq_queue { - int ref; - int stable_ref; - struct bfq_data *bfqd; - short unsigned int ioprio; - short unsigned int ioprio_class; - short unsigned int new_ioprio; - short unsigned int new_ioprio_class; - u64 last_serv_time_ns; - unsigned int inject_limit; - long unsigned int decrease_time_jif; - struct bfq_queue *new_bfqq; - struct rb_node pos_node; - struct rb_root *pos_root; - struct rb_root sort_list; - struct request *next_rq; - int queued[2]; - int meta_pending; - struct list_head fifo; - struct bfq_entity entity; - struct bfq_weight_counter *weight_counter; - int max_budget; - long unsigned int budget_timeout; - int dispatched; - long unsigned int flags; - struct list_head bfqq_list; - struct bfq_ttime ttime; - u64 io_start_time; - u64 tot_idle_time; - u32 seek_history; - struct hlist_node burst_list_node; - sector_t last_request_pos; - unsigned int requests_within_timer; - pid_t pid; - struct bfq_io_cq *bic; - long unsigned int wr_cur_max_time; - long unsigned int soft_rt_next_start; - long unsigned int last_wr_start_finish; - unsigned int wr_coeff; - long unsigned int last_idle_bklogged; - long unsigned int service_from_backlogged; - long unsigned int service_from_wr; - long unsigned int wr_start_at_switch_to_srt; - long unsigned int split_time; - long unsigned int first_IO_time; - long unsigned int creation_time; - u32 max_service_rate; - struct bfq_queue *waker_bfqq; - struct bfq_queue *tentative_waker_bfqq; - unsigned int num_waker_detections; - u64 waker_detection_started; - struct hlist_node woken_list_node; - struct hlist_head woken_list; -}; - -struct bfq_group; - -struct bfq_data { - struct request_queue *queue; - struct list_head dispatch; - struct bfq_group *root_group; - struct rb_root_cached queue_weights_tree; - unsigned int num_groups_with_pending_reqs; - unsigned int busy_queues[3]; - int wr_busy_queues; - int queued; - int rq_in_driver; - bool nonrot_with_queueing; - int max_rq_in_driver; - int hw_tag_samples; - int hw_tag; - int budgets_assigned; - struct hrtimer idle_slice_timer; - struct bfq_queue *in_service_queue; - sector_t last_position; - sector_t in_serv_last_pos; - u64 last_completion; - struct bfq_queue *last_completed_rq_bfqq; - struct bfq_queue *last_bfqq_created; - u64 last_empty_occupied_ns; - bool wait_dispatch; - struct request *waited_rq; - bool rqs_injected; - u64 first_dispatch; - u64 last_dispatch; - ktime_t last_budget_start; - ktime_t last_idling_start; - long unsigned int last_idling_start_jiffies; - int peak_rate_samples; - u32 sequential_samples; - u64 tot_sectors_dispatched; - u32 last_rq_max_size; - u64 delta_from_first; - u32 peak_rate; - int bfq_max_budget; - struct list_head active_list; - struct list_head idle_list; - u64 bfq_fifo_expire[2]; - unsigned int bfq_back_penalty; - unsigned int bfq_back_max; - u32 bfq_slice_idle; - int bfq_user_max_budget; - unsigned int bfq_timeout; - bool strict_guarantees; - long unsigned int last_ins_in_burst; - long unsigned int bfq_burst_interval; - int burst_size; - struct bfq_entity *burst_parent_entity; - long unsigned int bfq_large_burst_thresh; - bool large_burst; - struct hlist_head burst_list; - bool low_latency; - unsigned int bfq_wr_coeff; - unsigned int bfq_wr_max_time; - unsigned int bfq_wr_rt_max_time; - unsigned int bfq_wr_min_idle_time; - long unsigned int bfq_wr_min_inter_arr_async; - unsigned int bfq_wr_max_softrt_rate; - u64 rate_dur_prod; - struct bfq_queue oom_bfqq; - spinlock_t lock; - struct bfq_io_cq *bio_bic; - struct bfq_queue *bio_bfqq; - unsigned int word_depths[4]; - unsigned int full_depth_shift; -}; - -struct bfq_io_cq { - struct io_cq icq; - struct bfq_queue *bfqq[2]; - int ioprio; - uint64_t blkcg_serial_nr; - bool saved_has_short_ttime; - bool saved_IO_bound; - u64 saved_io_start_time; - u64 saved_tot_idle_time; - bool saved_in_large_burst; - bool was_in_burst_list; - unsigned int saved_weight; - long unsigned int saved_wr_coeff; - long unsigned int saved_last_wr_start_finish; - long unsigned int saved_service_from_wr; - long unsigned int saved_wr_start_at_switch_to_srt; - unsigned int saved_wr_cur_max_time; - struct bfq_ttime saved_ttime; - u64 saved_last_serv_time_ns; - unsigned int saved_inject_limit; - long unsigned int saved_decrease_time_jif; - struct bfq_queue *stable_merge_bfqq; - bool stably_merged; - unsigned int requests; -}; - -struct bfqg_stats { - struct blkg_rwstat bytes; - struct blkg_rwstat ios; -}; - -struct bfq_group { - struct blkg_policy_data pd; - char blkg_path[128]; - int ref; - bool online; - struct bfq_entity entity; - struct bfq_sched_data sched_data; - void *bfqd; - struct bfq_queue *async_bfqq[16]; - struct bfq_queue *async_idle_bfqq; - struct bfq_entity *my_entity; - int active_entities; - struct rb_root rq_pos_tree; - struct bfqg_stats stats; -}; - -enum bfqq_state_flags { - BFQQF_just_created = 0, - BFQQF_busy = 1, - BFQQF_wait_request = 2, - BFQQF_non_blocking_wait_rq = 3, - BFQQF_fifo_expire = 4, - BFQQF_has_short_ttime = 5, - BFQQF_sync = 6, - BFQQF_IO_bound = 7, - BFQQF_in_large_burst = 8, - BFQQF_softrt_update = 9, - BFQQF_coop = 10, - BFQQF_split_coop = 11, -}; - -enum bfqq_expiration { - BFQQE_TOO_IDLE = 0, - BFQQE_BUDGET_TIMEOUT = 1, - BFQQE_BUDGET_EXHAUSTED = 2, - BFQQE_NO_MORE_REQUESTS = 3, - BFQQE_PREEMPTED = 4, -}; - -struct bfq_group_data { - struct blkcg_policy_data pd; - unsigned int weight; +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; }; -enum bip_flags { - BIP_BLOCK_INTEGRITY = 1, - BIP_MAPPED_INTEGRITY = 2, - BIP_CTRL_NOCHECK = 4, - BIP_DISK_NOCHECK = 8, - BIP_IP_CHECKSUM = 16, -}; +struct udp_hslot; -enum blk_integrity_flags { - BLK_INTEGRITY_VERIFY = 1, - BLK_INTEGRITY_GENERATE = 2, - BLK_INTEGRITY_DEVICE_CAPABLE = 4, - BLK_INTEGRITY_IP_CHECKSUM = 8, +struct udp_table { + struct udp_hslot *hash; + struct udp_hslot *hash2; + unsigned int mask; + unsigned int log; }; -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 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 t10_dif_type { - T10_PI_TYPE0_PROTECTION = 0, - T10_PI_TYPE1_PROTECTION = 1, - T10_PI_TYPE2_PROTECTION = 2, - T10_PI_TYPE3_PROTECTION = 3, +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; }; -struct t10_pi_tuple { - __be16 guard_tag; - __be16 app_tag; - __be32 ref_tag; +struct fnhe_hash_bucket { + struct fib_nh_exception *chain; }; -struct crc64_pi_tuple { - __be64 guard_tag; - __be16 app_tag; - __u8 ref_tag[6]; +struct rt6_exception_bucket { + struct hlist_head chain; + int depth; }; -typedef __be16 csum_fn(void *, unsigned int); - -struct virtio_device_id { - __u32 device; - __u32 vendor; +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 *); }; -struct virtio_device; - -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 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 vringh_config_ops; - -struct virtio_config_ops; - -struct virtio_device { - int index; - bool failed; - bool config_enabled; - bool config_change_pending; - spinlock_t config_lock; - spinlock_t vqs_list_lock; - struct device dev; - struct virtio_device_id id; - const struct virtio_config_ops *config; - const struct vringh_config_ops *vringh_config; - struct list_head vqs; - u64 features; - void *priv; +struct 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; }; -typedef void vq_callback_t(struct virtqueue *); - -struct virtio_shm_region; - -struct virtio_config_ops { - void (*get)(struct virtio_device *, unsigned int, void *, unsigned int); - void (*set)(struct virtio_device *, unsigned int, const void *, unsigned int); - u32 (*generation)(struct virtio_device *); - u8 (*get_status)(struct virtio_device *); - void (*set_status)(struct virtio_device *, u8); - void (*reset)(struct virtio_device *); - int (*find_vqs)(struct virtio_device *, unsigned int, struct virtqueue **, vq_callback_t **, const char * const *, const bool *, struct irq_affinity *); - void (*del_vqs)(struct virtio_device *); - 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 xfrm_offload { + struct { + __u32 low; + __u32 hi; + } seq; + __u32 flags; + __u32 status; + __u8 proto; + __u8 inner_ipproto; }; -struct virtio_shm_region { - u64 addr; - u64 len; +struct sec_path { + int len; + int olen; + int verified_cnt; + struct xfrm_state *xvec[6]; + struct xfrm_offload ovec[1]; }; -enum blk_zone_report_flags { - BLK_ZONE_REP_CAPACITY = 1, +struct udp_hslot { + struct hlist_head head; + int count; + spinlock_t lock; }; -struct blk_zone_report { - __u64 sector; - __u32 nr_zones; - __u32 flags; - struct blk_zone zones[0]; +struct pkey_security_struct { + u64 subnet_prefix; + u16 pkey; + u32 sid; }; -struct blk_zone_range { - __u64 sector; - __u64 nr_sectors; +struct sel_ib_pkey_bkt { + int size; + struct list_head list; }; -struct zone_report_args { - struct blk_zone *zones; +struct sel_ib_pkey { + struct pkey_security_struct psec; + struct list_head list; + struct callback_head rcu; }; -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 smack_audit_data { + const char *function; + char *subject; + char *object; + char *request; + int result; }; -struct irq_poll; - -typedef int irq_poll_fn(struct irq_poll *, int); - -struct irq_poll { +struct smack_known { struct list_head list; - long unsigned int state; - int weight; - irq_poll_fn *poll; + 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 dim_sample { - ktime_t time; - u32 pkt_ctr; - u32 byte_ctr; - u16 event_ctr; - u32 comp_ctr; +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 dim_stats { - int ppms; - int bpms; - int epms; - int cpms; - int cpe_ratio; +struct socket_smack { + struct smack_known *smk_out; + struct smack_known *smk_in; + struct smack_known *smk_packet; + int smk_state; }; -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 inode_smack { + struct smack_known *smk_inode; + struct smack_known *smk_task; + struct smack_known *smk_mmap; + int smk_flags; }; -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 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; }; -enum rdma_nl_counter_mask { - RDMA_COUNTER_MASK_QP_TYPE = 1, - RDMA_COUNTER_MASK_PID = 2, +struct smack_rule { + struct list_head list; + struct smack_known *smk_subject; + struct smack_known *smk_object; + int smk_access; }; -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 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 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 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 rdma_link_ops { +struct smack_known_list_elem { struct list_head list; - const char *type; - int (*newlink)(const char *, struct net_device *); + struct smack_known *smk_label; }; -struct auto_mode_param { - int qp_type; +enum { + Opt_error___3 = 4294967295, + Opt_fsdefault = 0, + Opt_fsfloor = 1, + Opt_fshat = 2, + Opt_fsroot = 3, + Opt_fstransmute = 4, }; -struct rdma_counter_mode { - enum rdma_nl_counter_mode mode; - enum rdma_nl_counter_mask mask; - struct auto_mode_param param; +struct smk_audit_info { + struct common_audit_data a; + struct smack_audit_data sad; }; -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 smack_mnt_opts { + const char *fsdefault; + const char *fsfloor; + const char *fshat; + const char *fsroot; + const char *fstransmute; }; -struct rdma_stat_desc; - -struct rdma_hw_stats { - struct mutex lock; - long unsigned int timestamp; - long unsigned int lifespan; - const struct rdma_stat_desc *descs; - long unsigned int *is_disabled; - int num_counters; - u64 value[0]; +struct netlbl_audit { + struct lsmblob lsmdata; + kuid_t loginuid; + unsigned int sessionid; }; -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; - u32 port; +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 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 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 ib_cq_notify_flags { - IB_CQ_SOLICITED = 1, - IB_CQ_NEXT_COMP = 2, - IB_CQ_SOLICITED_MASK = 3, - IB_CQ_REPORT_MISSED_EVENTS = 4, +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 smack_parsed_rule { + struct smack_known *smk_subject; + struct smack_known *smk_object; + int smk_access1; + int smk_access2; }; -struct ib_mad; - -enum rdma_link_layer { - IB_LINK_LAYER_UNSPECIFIED = 0, - IB_LINK_LAYER_INFINIBAND = 1, - IB_LINK_LAYER_ETHERNET = 2, +struct sockaddr_un { + __kernel_sa_family_t sun_family; + char sun_path[108]; }; -enum rdma_netdev_t { - RDMA_NETDEV_OPA_VNIC = 0, - RDMA_NETDEV_IPOIB = 1, +struct unix_address { + refcount_t refcnt; + int len; + unsigned int hash; + struct sockaddr_un name[0]; }; -enum ib_srq_attr_mask { - IB_SRQ_MAX_WR = 1, - IB_SRQ_LIMIT = 2, +struct scm_stat { + atomic_t nr_fds; }; -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 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; + long: 64; + long: 64; + long: 64; + 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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -enum 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, +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 uverbs_attr_bundle; +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 rdma_cm_id; +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, +}; + +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, +}; + +enum tomoyo_domain_info_flags_index { + TOMOYO_DIF_QUOTA_WARNED = 0, + TOMOYO_DIF_TRANSITION_FAILED = 1, + TOMOYO_MAX_DOMAIN_INFO_FLAGS = 2, +}; + +enum tomoyo_grant_log { + TOMOYO_GRANTLOG_AUTO = 0, + TOMOYO_GRANTLOG_NO = 1, + TOMOYO_GRANTLOG_YES = 2, +}; + +enum tomoyo_group_id { + TOMOYO_PATH_GROUP = 0, + TOMOYO_NUMBER_GROUP = 1, + TOMOYO_ADDRESS_GROUP = 2, + TOMOYO_MAX_GROUP = 3, +}; + +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, +}; + +enum tomoyo_memory_stat_type { + TOMOYO_MEMORY_POLICY = 0, + TOMOYO_MEMORY_AUDIT = 1, + TOMOYO_MEMORY_QUERY = 2, + TOMOYO_MAX_MEMORY_STAT = 3, +}; + +enum tomoyo_mkdev_acl_index { + TOMOYO_TYPE_MKBLOCK = 0, + TOMOYO_TYPE_MKCHAR = 1, + TOMOYO_MAX_MKDEV_OPERATION = 2, +}; + +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 tomoyo_path2_acl_index { + TOMOYO_TYPE_LINK = 0, + TOMOYO_TYPE_RENAME = 1, + TOMOYO_TYPE_PIVOT_ROOT = 2, + TOMOYO_MAX_PATH2_OPERATION = 3, +}; + +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 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 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 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 tomoyo_pref_index { + TOMOYO_PREF_MAX_AUDIT_LOG = 0, + TOMOYO_PREF_MAX_LEARNING_ENTRY = 1, + TOMOYO_MAX_PREF = 2, +}; + +struct tomoyo_shared_acl_head { + struct list_head list; + atomic_t users; +} __attribute__((packed)); -struct iw_cm_id; +struct tomoyo_path_info { + const char *name; + u32 hash; + u16 const_len; + bool is_dir; + bool is_patterned; +}; -struct iw_cm_conn_param; +struct tomoyo_obj_info; -struct ib_qp; +struct tomoyo_execve; -struct ib_send_wr; +struct tomoyo_domain_info; -struct ib_recv_wr; +struct tomoyo_acl_info; -struct ib_cq; +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; +}; -struct ib_wc; +struct tomoyo_mini_stat { + kuid_t uid; + kgid_t gid; + ino_t ino; + umode_t mode; + dev_t dev; + dev_t rdev; +}; -struct ib_srq; +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 ib_grh; +struct tomoyo_page_dump { + struct page *page; + char *data; +}; -struct ib_device_attr; +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 ib_udata; +struct tomoyo_policy_namespace; -struct ib_device_modify; +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 ib_port_attr; +struct tomoyo_condition; -struct ib_port_modify; +struct tomoyo_acl_info { + struct list_head list; + struct tomoyo_condition *cond; + s8 is_deleted; + u8 type; +} __attribute__((packed)); -struct ib_port_immutable; +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 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 rdma_netdev_alloc_params; +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; +}; -union ib_gid; +struct tomoyo_preference { + unsigned int learning_max_entry; + bool enforcing_verbose; + bool learning_verbose; + bool permissive_verbose; +}; -struct ib_gid_attr; +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 ib_ucontext; +struct tomoyo_time { + u16 year; + u8 month; + u8 day; + u8 hour; + u8 min; + u8 sec; +}; -struct rdma_user_mmap_entry; +struct tomoyo_log { + struct list_head list; + char *log; + int size; +}; -struct ib_pd; +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 ib_ah; +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 rdma_ah_init_attr; +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 rdma_ah_attr; +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 ib_srq_init_attr; +struct tomoyo_acl_head { + struct list_head list; + s8 is_deleted; +} __attribute__((packed)); -struct ib_srq_attr; +struct tomoyo_name { + struct tomoyo_shared_acl_head head; + struct tomoyo_path_info entry; +}; -struct ib_qp_init_attr; +struct tomoyo_group; -struct ib_qp_attr; +struct tomoyo_name_union { + const struct tomoyo_path_info *filename; + struct tomoyo_group *group; +}; -struct ib_cq_init_attr; +struct tomoyo_group { + struct tomoyo_shared_acl_head head; + const struct tomoyo_path_info *group_name; + struct list_head member_list; +}; -struct ib_mr; +struct tomoyo_number_union { + long unsigned int values[2]; + struct tomoyo_group *group; + u8 value_type[2]; +}; -struct ib_sge; +struct tomoyo_ipaddr_union { + struct in6_addr ip[2]; + struct tomoyo_group *group; + bool is_ipv6; +}; -struct ib_mr_status; +struct tomoyo_path_group { + struct tomoyo_acl_head head; + const struct tomoyo_path_info *member_name; +}; -struct ib_mw; +struct tomoyo_number_group { + struct tomoyo_acl_head head; + struct tomoyo_number_union number; +}; -struct ib_xrcd; +struct tomoyo_address_group { + struct tomoyo_acl_head head; + struct tomoyo_ipaddr_union address; +}; -struct ib_flow; +struct tomoyo_argv { + long unsigned int index; + const struct tomoyo_path_info *value; + bool is_not; +}; -struct ib_flow_attr; +struct tomoyo_envp { + const struct tomoyo_path_info *name; + const struct tomoyo_path_info *value; + bool is_not; +}; -struct ib_flow_action; +struct tomoyo_condition_element { + u8 left; + u8 right; + bool equals; +}; -struct ib_flow_action_attrs_esp; +struct tomoyo_task_acl { + struct tomoyo_acl_info head; + const struct tomoyo_path_info *domainname; +}; -struct ib_wq; +struct tomoyo_path_acl { + struct tomoyo_acl_info head; + u16 perm; + struct tomoyo_name_union name; +}; -struct ib_wq_init_attr; +struct tomoyo_path_number_acl { + struct tomoyo_acl_info head; + u8 perm; + struct tomoyo_name_union name; + struct tomoyo_number_union number; +}; -struct ib_wq_attr; +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 ib_rwq_ind_table; +struct tomoyo_path2_acl { + struct tomoyo_acl_info head; + u8 perm; + struct tomoyo_name_union name1; + struct tomoyo_name_union name2; +}; -struct ib_rwq_ind_table_init_attr; +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 ib_dm; +struct tomoyo_env_acl { + struct tomoyo_acl_info head; + const struct tomoyo_path_info *env; +}; -struct ib_dm_alloc_attr; +struct tomoyo_inet_acl { + struct tomoyo_acl_info head; + u8 protocol; + u8 perm; + struct tomoyo_ipaddr_union address; + struct tomoyo_number_union port; +}; -struct ib_dm_mr_attr; +struct tomoyo_unix_acl { + struct tomoyo_acl_info head; + u8 protocol; + u8 perm; + struct tomoyo_name_union name; +}; -struct ib_counters; +struct tomoyo_acl_param { + char *data; + struct list_head *list; + struct tomoyo_policy_namespace *ns; + bool is_delete; +}; -struct ib_counters_read_attr; +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 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 (*modify_hw_stat)(struct ib_device *, u32, unsigned int, bool); - int (*fill_res_mr_entry)(struct sk_buff *, struct ib_mr *); - int (*fill_res_mr_entry_raw)(struct sk_buff *, struct ib_mr *); - int (*fill_res_cq_entry)(struct sk_buff *, struct ib_cq *); - int (*fill_res_cq_entry_raw)(struct sk_buff *, struct ib_cq *); - int (*fill_res_qp_entry)(struct sk_buff *, struct ib_qp *); - int (*fill_res_qp_entry_raw)(struct sk_buff *, struct ib_qp *); - int (*fill_res_cm_id_entry)(struct sk_buff *, struct rdma_cm_id *); - int (*enable_driver)(struct ib_device *); - void (*dealloc_driver)(struct ib_device *); - void (*iw_add_ref)(struct ib_qp *); - void (*iw_rem_ref)(struct ib_qp *); - struct ib_qp * (*iw_get_qp)(struct ib_device *, int); - int (*iw_connect)(struct iw_cm_id *, struct iw_cm_conn_param *); - int (*iw_accept)(struct iw_cm_id *, struct iw_cm_conn_param *); - int (*iw_reject)(struct iw_cm_id *, const void *, u8); - int (*iw_create_listen)(struct iw_cm_id *, int); - int (*iw_destroy_listen)(struct iw_cm_id *); - int (*counter_bind_qp)(struct rdma_counter *, struct ib_qp *); - int (*counter_unbind_qp)(struct ib_qp *); - int (*counter_dealloc)(struct rdma_counter *); - struct rdma_hw_stats * (*counter_alloc_stats)(struct rdma_counter *); - int (*counter_update_stats)(struct rdma_counter *); - int (*fill_stat_mr_entry)(struct sk_buff *, struct ib_mr *); - int (*query_ucontext)(struct ib_ucontext *, struct uverbs_attr_bundle *); - int (*get_numa_node)(struct ib_device *); - size_t size_ib_ah; - size_t size_ib_counters; - size_t size_ib_cq; - size_t size_ib_mw; - size_t size_ib_pd; - size_t size_ib_qp; - size_t size_ib_rwq_ind_table; - size_t size_ib_srq; - size_t size_ib_ucontext; - size_t size_ib_xrcd; +struct tomoyo_aggregator { + struct tomoyo_acl_head head; + const struct tomoyo_path_info *original_name; + const struct tomoyo_path_info *aggregated_name; }; -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 tomoyo_manager { + struct tomoyo_acl_head head; + const struct tomoyo_path_info *manager; }; -enum ib_atomic_cap { - IB_ATOMIC_NONE = 0, - IB_ATOMIC_HCA = 1, - IB_ATOMIC_GLOB = 2, +struct tomoyo_task { + struct tomoyo_domain_info *domain_info; + struct tomoyo_domain_info *old_domain_info; }; -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 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 ib_rss_caps { - u32 supported_qpts; - u32 max_rwq_indirection_tables; - u32 max_rwq_indirection_table_size; +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 ib_tm_caps { - u32 max_rndv_hdr_size; - u32 max_num_tags; - u32 flags; - u32 max_ops; - u32 max_sge; +struct tomoyo_inet_addr_info { + __be16 port; + const __be32 *address; + bool is_ipv6; }; -struct ib_cq_caps { - u16 max_cq_moderation_count; - u16 max_cq_moderation_period; +struct tomoyo_unix_addr_info { + u8 *addr; + unsigned int addr_len; }; -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 tomoyo_addr_info { + u8 protocol; + u8 operation; + struct tomoyo_inet_addr_info inet; + struct tomoyo_unix_addr_info unix0; }; -struct hw_stats_device_data; +enum audit_mode { + AUDIT_NORMAL = 0, + AUDIT_QUIET_DENIED = 1, + AUDIT_QUIET = 2, + AUDIT_NOQUIET = 3, + AUDIT_ALL = 4, +}; -struct rdma_restrack_root; +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 uapi_definition; +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 ib_port_data; +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, +}; + +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 table_header { + u16 td_id; + u16 td_flags; + u32 td_hilen; + u32 td_lolen; + char td_data[0]; +}; + +struct aa_dfa { + struct kref count; + u16 flags; + u32 max_oob; + struct table_header *tables[8]; +}; -struct ib_device { - struct device *dma_device; - struct ib_device_ops ops; - char name[64]; - struct callback_head callback_head; - struct list_head event_handler_list; - struct rw_semaphore event_handler_rwsem; - spinlock_t qp_open_list_lock; - struct rw_semaphore client_data_rwsem; - struct xarray client_data; - struct mutex unregistration_lock; - rwlock_t cache_lock; - struct ib_port_data *port_data; - int num_comp_vectors; - union { - struct device dev; - struct ib_core_device coredev; - }; - const struct attribute_group *groups[4]; - u64 uverbs_cmd_mask; - char node_desc[64]; - __be64 node_guid; - u32 local_dma_lkey; - u16 is_switch: 1; - u16 kverbs_provider: 1; - u16 use_cq_dim: 1; - u8 node_type; - u32 phys_port_cnt; - struct ib_device_attr attrs; - struct hw_stats_device_data *hw_stats_data; - u32 index; - spinlock_t cq_pools_lock; - struct list_head cq_pools[3]; - struct rdma_restrack_root *res; - const struct uapi_definition *driver_def; - refcount_t refcount; - struct completion unreg_completion; - struct work_struct unregistration_work; - const struct rdma_link_ops *link_ops; - struct mutex compat_devs_mutex; - struct xarray compat_devs; - char iw_ifname[16]; - u32 iw_driver_flags; - u32 lag_flags; +struct aa_policy { + const char *name; + char *hname; + struct list_head list; + struct list_head profiles; }; -enum ib_signature_type { - IB_SIG_TYPE_NONE = 0, - IB_SIG_TYPE_T10_DIF = 1, +struct aa_labelset { + rwlock_t lock; + struct rb_root root; }; -enum ib_t10_dif_bg_type { - IB_T10DIF_CRC = 0, - IB_T10DIF_CSUM = 1, +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 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 aa_label; + +struct aa_proxy { + struct kref count; + struct aa_label *label; }; -struct ib_sig_domain { - enum ib_signature_type sig_type; - union { - struct ib_t10_dif_domain dif; - } sig; +struct aa_profile; + +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 ib_sig_attrs { - u8 check_mask; - struct ib_sig_domain mem; - struct ib_sig_domain wire; - int meta_length; +struct label_it { + int i; + int j; }; -enum ib_sig_err_type { - IB_SIG_BAD_GUARD = 0, - IB_SIG_BAD_REFTAG = 1, - IB_SIG_BAD_APPTAG = 2, +struct aa_policydb { + struct aa_dfa *dfa; + unsigned int start[18]; }; -struct ib_sig_err { - enum ib_sig_err_type err_type; - u32 expected; - u32 actual; - u64 sig_err_offset; - u32 key; +struct aa_domain { + int size; + char **table; }; -enum ib_uverbs_flow_action_esp_keymat { - IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM = 0, +struct aa_file_rules { + unsigned int start; + struct aa_dfa *dfa; + struct aa_domain trans; }; -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 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; }; -enum ib_uverbs_flow_action_esp_replay { - IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE = 0, - IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP = 1, +struct aa_rlimit { + unsigned int mask; + struct rlimit limits[16]; }; -struct ib_uverbs_flow_action_esp_replay_bmp { - __u32 size; +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 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 path_cond { + kuid_t uid; + umode_t mode; }; -union ib_gid { - u8 raw[16]; - struct { - __be64 subnet_prefix; - __be64 interface_id; - } global; +struct aa_net_compat { + u16 allow[46]; + u16 audit[46]; + u16 quiet[46]; +}; + +struct aa_secmark { + u8 audit; + u8 deny; + u32 secid; + char *label; +}; + +enum profile_mode { + APPARMOR_ENFORCE = 0, + APPARMOR_COMPLAIN = 1, + APPARMOR_KILL = 2, + APPARMOR_UNCONFINED = 3, }; -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 aa_data { + char *key; + u32 size; + char *data; + struct rhash_head head; }; -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; +struct aa_ns_acct { + int max_size; + int max_count; + int size; + int count; }; -struct ib_cq_init_attr { - unsigned int cqe; - u32 comp_vector; - u32 flags; +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 ib_dm_mr_attr { - u64 length; - u64 offset; - u32 access_flags; +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 ib_dm_alloc_attr { - u64 length; - u32 alignment; - u32 flags; +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, }; -enum ib_mtu { - IB_MTU_256 = 1, - IB_MTU_512 = 2, - IB_MTU_1024 = 3, - IB_MTU_2048 = 4, - IB_MTU_4096 = 5, +struct rawdata_f_data { + struct aa_loaddata *loaddata; }; -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 aa_revision { + struct aa_ns *ns; + long int last_read; }; -struct rdma_stat_desc { - const char *name; - unsigned int flags; - const void *priv; +struct multi_transaction { + struct kref count; + ssize_t size; + char data[0]; }; -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 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 ib_device_modify { - u64 sys_image_guid; - char node_desc[64]; +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 ib_port_modify { - u32 set_port_cap_mask; - u32 clr_port_cap_mask; - u8 init_type; +struct aa_audit_rule { + struct aa_label *label; }; -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 audit_cache { + struct aa_profile *profile; + kernel_cap_t caps; }; -struct ib_ucq_object; +struct aa_task_ctx { + struct aa_label *nnp; + struct aa_label *onexec; + struct aa_label *previous; + u64 token; +}; -typedef void (*ib_comp_handler)(struct ib_cq *, void *); +struct counted_str { + struct kref count; + char name[0]; +}; -struct ib_event; +struct match_workbuf { + unsigned int count; + unsigned int pos; + unsigned int len; + unsigned int size; + unsigned int history[24]; +}; -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 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 ib_uqp_object; +struct aa_load_ent { + struct list_head list; + struct aa_profile *new; + struct aa_profile *old; + struct aa_profile *rename; + const char *ns_name; +}; + +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 aa_ext { + void *start; + void *end; + void *pos; + u32 version; +}; -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 aa_file_ctx { + spinlock_t lock; + struct aa_label *label; + u32 allow; }; -struct ib_qp_security; +struct aa_sk_ctx { + struct aa_label *label; + struct aa_label *peer; + struct path path; +}; -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; +union aa_buffer { + struct list_head list; + char buffer[1]; }; -struct ib_usrq_object; +struct ptrace_relation { + struct task_struct *tracer; + struct task_struct *tracee; + bool invalid; + struct list_head node; + struct callback_head rcu; +}; -enum ib_srq_type { - IB_SRQT_BASIC = 0, - IB_SRQT_XRC = 1, - IB_SRQT_TM = 2, +struct access_report_info { + struct callback_head work; + const char *access; + struct task_struct *target; + struct task_struct *agent; }; -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 sid_policy_type { + SIDPOL_DEFAULT = 0, + SIDPOL_CONSTRAINED = 1, + SIDPOL_ALLOWED = 2, }; -struct ib_uwq_object; +typedef union { + kuid_t uid; + kgid_t gid; +} kid_t; -enum ib_wq_state { - IB_WQS_RESET = 0, - IB_WQS_RDY = 1, - IB_WQS_ERR = 2, +enum setid_type { + UID = 0, + GID = 1, }; -enum ib_wq_type { - IB_WQT_RQ = 0, +struct setid_rule { + struct hlist_node next; + kid_t src_id; + kid_t dst_id; + enum setid_type type; }; -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 setid_ruleset { + struct hlist_head rules[256]; + char *policy_str; + struct callback_head rcu; + enum setid_type type; }; -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; +enum devcg_behavior { + DEVCG_DEFAULT_NONE = 0, + DEVCG_DEFAULT_ALLOW = 1, + DEVCG_DEFAULT_DENY = 2, }; -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 dev_exception_item { + u32 major; + u32 minor; + short int type; + short int access; + struct list_head list; + struct callback_head rcu; }; -struct ib_grh { - __be32 version_tclass_flow; - __be16 paylen; - u8 next_hdr; - u8 hop_limit; - union ib_gid sgid; - union ib_gid dgid; +struct dev_cgroup { + struct cgroup_subsys_state css; + struct list_head exceptions; + enum devcg_behavior behavior; }; -struct ib_mr_status { - u32 fail_status; - struct ib_sig_err sig_err; +struct landlock_ruleset_attr { + __u64 handled_access_fs; }; -struct rdma_ah_init_attr { - struct rdma_ah_attr *ah_attr; - u32 flags; - struct net_device *xmit_slave; +enum landlock_rule_type { + LANDLOCK_RULE_PATH_BENEATH = 1, }; -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 landlock_path_beneath_attr { + __u64 allowed_access; + __s32 parent_fd; +} __attribute__((packed)); + +typedef u16 access_mask_t; + +struct landlock_hierarchy { + struct landlock_hierarchy *parent; + refcount_t usage; }; -struct ib_ah_attr { - u16 dlid; - u8 src_path_bits; +struct landlock_ruleset { + struct rb_root root; + struct landlock_hierarchy *hierarchy; + union { + 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 roce_ah_attr { - u8 dmac[6]; +struct landlock_cred_security { + struct landlock_ruleset *domain; }; -struct opa_ah_attr { - u32 dlid; - u8 src_path_bits; - bool make_grd; +struct landlock_object; + +struct landlock_object_underops { + void (*release)(struct landlock_object * const); }; -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; +struct landlock_object { + refcount_t usage; + spinlock_t lock; + void *underobj; union { - struct ib_ah_attr ib; - struct roce_ah_attr roce; - struct opa_ah_attr opa; + struct callback_head rcu_free; + const struct landlock_object_underops *underops; }; }; -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 landlock_layer { + u16 level; + access_mask_t access; }; -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 landlock_rule { + struct rb_node node; + struct landlock_object *object; + u32 num_layers; + struct landlock_layer layers[0]; }; -struct ib_cqe { - void (*done)(struct ib_cq *, struct ib_wc *); +typedef u16 layer_mask_t; + +struct landlock_inode_security { + struct landlock_object *object; }; -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; +struct landlock_superblock_security { + atomic_long_t inode_refs; +}; + +enum integrity_status { + INTEGRITY_PASS = 0, + INTEGRITY_PASS_IMMUTABLE = 1, + INTEGRITY_FAIL = 2, + INTEGRITY_FAIL_IMMUTABLE = 3, + INTEGRITY_NOLABEL = 4, + INTEGRITY_NOXATTRS = 5, + INTEGRITY_UNKNOWN = 6, +}; + +struct ima_digest_data { + u8 algo; + u8 length; 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 { + u8 unused; + u8 type; + } sha1; + struct { + u8 type; + u8 algo; + } ng; + u8 data[2]; + } xattr; + u8 digest[0]; }; -struct ib_srq_attr { - u32 max_wr; - u32 max_sge; - u32 srq_limit; +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 ib_xrcd { - struct ib_device *device; - atomic_t usecnt; - struct inode *inode; - struct rw_semaphore tgt_qps_rwsem; - struct xarray tgt_qps; +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]; }; -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 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 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 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; }; -enum ib_sig_type { - IB_SIGNAL_ALL_WR = 0, - IB_SIGNAL_REQ_WR = 1, +struct asymmetric_key_id { + short unsigned int len; + unsigned char data[0]; }; -struct ib_qp_init_attr { - void (*event_handler)(struct ib_event *, void *); - void *qp_context; - struct ib_cq *send_cq; - struct ib_cq *recv_cq; - struct ib_srq *srq; - struct ib_xrcd *xrcd; - struct ib_qp_cap cap; - enum ib_sig_type sq_sig_type; - enum ib_qp_type qp_type; - u32 create_flags; - u32 port_num; - struct ib_rwq_ind_table *rwq_ind_tbl; - u32 source_qpn; +enum asymmetric_payload_bits { + asym_crypto = 0, + asym_subtype = 1, + asym_key_ids = 2, + asym_auth = 3, }; -struct ib_uobject; +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)); -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 evm_ima_xattr_data { + u8 type; + u8 data[0]; }; -enum ib_qp_state { - IB_QPS_RESET = 0, - IB_QPS_INIT = 1, - IB_QPS_RTR = 2, - IB_QPS_RTS = 3, - IB_QPS_SQD = 4, - IB_QPS_SQE = 5, - IB_QPS_ERR = 6, +enum 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, }; -enum ib_mig_state { - IB_MIG_MIGRATED = 0, - IB_MIG_REARM = 1, - IB_MIG_ARMED = 2, +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 ib_mw_type { - IB_MW_TYPE_1 = 1, - IB_MW_TYPE_2 = 2, +struct ima_field_data { + u8 *data; + u32 len; }; -struct ib_qp_attr { - enum ib_qp_state qp_state; - enum ib_qp_state cur_qp_state; - enum ib_mtu path_mtu; - enum ib_mig_state path_mig_state; - u32 qkey; - u32 rq_psn; - u32 sq_psn; - u32 dest_qp_num; - int qp_access_flags; - struct ib_qp_cap cap; - struct rdma_ah_attr ah_attr; - struct rdma_ah_attr alt_ah_attr; - u16 pkey_index; - u16 alt_pkey_index; - u8 en_sqd_async_notify; - u8 sq_draining; - u8 max_rd_atomic; - u8 max_dest_rd_atomic; - u8 min_rnr_timer; - u32 port_num; - u8 timeout; - u8 retry_cnt; - u8 rnr_retry; - u32 alt_port_num; - u8 alt_timeout; - u32 rate_limit; - struct net_device *xmit_slave; +struct 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 *); }; -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 ima_template_desc { + struct list_head list; + char *name; + char *fmt; + int num_fields; + const struct ima_template_field **fields; }; -struct ib_sge { - u64 addr; - u32 length; - u32 lkey; +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 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 ima_queue_entry { + struct hlist_node hnext; + struct list_head later; + struct ima_template_entry *entry; }; -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 ima_h_table { + atomic_long_t len; + atomic_long_t violations; + struct hlist_head queue[1024]; }; -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 ima_fs_flags { + IMA_FS_BUSY = 0, }; -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; +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 ib_rdmacg_object {}; - -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; +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 uverbs_api_object; - -struct ib_uobject { - u64 user_handle; - struct ib_uverbs_file *ufile; - struct ib_ucontext *context; - void *object; - struct list_head list; - struct ib_rdmacg_object cg_obj; - int id; - struct kref ref; - atomic_t usecnt; - struct callback_head rcu; - const struct uverbs_api_object *uapi_object; +enum tpm_pcrs { + TPM_PCR0 = 0, + TPM_PCR8 = 8, + TPM_PCR10 = 10, }; -struct ib_udata { - const void *inbuf; - void *outbuf; - size_t inlen; - size_t outlen; +struct ima_algo_desc { + struct crypto_shash *tfm; + enum hash_algo algo; }; -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; +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 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; +enum policy_types { + ORIGINAL_TCB = 1, + DEFAULT_TCB = 2, }; -struct ib_wq_attr { - enum ib_wq_state wq_state; - enum ib_wq_state curr_wq_state; - u32 flags; - u32 flags_mask; +enum policy_rule_list { + IMA_DEFAULT_POLICY = 1, + IMA_CUSTOM_POLICY = 2, }; -struct ib_rwq_ind_table_init_attr { - u32 log_ind_tbl_size; - struct ib_wq **ind_tbl; +struct ima_rule_opt_list { + size_t count; + char *items[0]; }; -enum port_pkey_state { - IB_PORT_PKEY_NOT_VALID = 0, - IB_PORT_PKEY_VALID = 1, - IB_PORT_PKEY_LISTED = 2, +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 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; +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 ib_ports_pkeys; - -struct ib_qp_security { - struct ib_qp *qp; - struct ib_device *dev; - struct mutex mutex; - struct ib_ports_pkeys *ports_pkeys; - struct list_head shared_qp_list; - void *security; - bool destroying; - atomic_t error_list_count; - struct completion error_complete; - int error_comps_pending; +struct ima_kexec_hdr { + u16 version; + u16 _reserved0; + u32 _reserved1; + u64 buffer_size; + u64 count; }; -struct ib_ports_pkeys { - struct ib_port_pkey main; - struct ib_port_pkey alt; +enum header_fields { + HDR_PCR = 0, + HDR_DIGEST = 1, + HDR_TEMPLATE_NAME = 2, + HDR_TEMPLATE_DATA = 3, + HDR__LAST = 4, }; -struct ib_dm { - struct ib_device *device; - u32 length; - u32 flags; - struct ib_uobject *uobject; - atomic_t usecnt; +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, }; -struct ib_mw { - struct ib_device *device; - struct ib_pd *pd; - struct ib_uobject *uobject; - u32 rkey; - enum ib_mw_type type; +struct ima_key_entry { + struct list_head list; + void *payload; + size_t payload_len; + char *keyring_name; }; -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 evm_xattr { + struct evm_ima_xattr_data data; + u8 digest[20]; }; -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 xattr_list { + struct list_head list; + char *name; + bool enabled; }; -struct ib_flow_eth_filter { - u8 dst_mac[6]; - u8 src_mac[6]; - __be16 ether_type; - __be16 vlan_tag; - u8 real_sz[0]; +struct evm_digest { + struct ima_digest_data hdr; + char digest[64]; }; - -struct ib_flow_spec_eth { - u32 type; - u16 size; - struct ib_flow_eth_filter val; - struct ib_flow_eth_filter mask; + +struct h_misc { + long unsigned int ino; + __u32 generation; + uid_t uid; + gid_t gid; + umode_t mode; }; -struct ib_flow_ib_filter { - __be16 dlid; - __u8 sl; - u8 real_sz[0]; +enum { + CRYPTO_MSG_ALG_REQUEST = 0, + CRYPTO_MSG_ALG_REGISTER = 1, + CRYPTO_MSG_ALG_LOADED = 2, }; -struct ib_flow_spec_ib { - u32 type; - u16 size; - struct ib_flow_ib_filter val; - struct ib_flow_ib_filter mask; +struct crypto_larval { + struct crypto_alg alg; + struct crypto_alg *adult; + struct completion completion; + u32 mask; }; -struct ib_flow_ipv4_filter { - __be32 src_ip; - __be32 dst_ip; - u8 proto; - u8 tos; - u8 ttl; - u8 flags; - u8 real_sz[0]; +struct crypto_cipher { + struct crypto_tfm base; }; -struct ib_flow_spec_ipv4 { - u32 type; - u16 size; - struct ib_flow_ipv4_filter val; - struct ib_flow_ipv4_filter mask; +struct crypto_comp { + struct crypto_tfm base; }; -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 rtattr { + short unsigned int rta_len; + short unsigned int rta_type; }; -struct ib_flow_spec_ipv6 { - u32 type; - u16 size; - struct ib_flow_ipv6_filter val; - struct ib_flow_ipv6_filter mask; +struct crypto_queue { + struct list_head list; + struct list_head *backlog; + unsigned int qlen; + unsigned int max_qlen; }; -struct ib_flow_tcp_udp_filter { - __be16 dst_port; - __be16 src_port; - u8 real_sz[0]; +struct crypto_attr_alg { + char name[128]; }; -struct ib_flow_spec_tcp_udp { +struct crypto_attr_type { u32 type; - u16 size; - struct ib_flow_tcp_udp_filter val; - struct ib_flow_tcp_udp_filter mask; + u32 mask; }; -struct ib_flow_tunnel_filter { - __be32 tunnel_id; - u8 real_sz[0]; +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, }; -struct ib_flow_spec_tunnel { - u32 type; - u16 size; - struct ib_flow_tunnel_filter val; - struct ib_flow_tunnel_filter mask; +enum xps_map_type { + XPS_CPUS = 0, + XPS_RXQS = 1, + XPS_MAPS_MAX = 2, }; -struct ib_flow_esp_filter { - __be32 spi; - __be32 seq; - u8 real_sz[0]; +enum bpf_xdp_mode { + XDP_MODE_SKB = 0, + XDP_MODE_DRV = 1, + XDP_MODE_HW = 2, + __MAX_XDP_MODE = 3, }; -struct ib_flow_spec_esp { - u32 type; - u16 size; - struct ib_flow_esp_filter val; - struct ib_flow_esp_filter mask; +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 ib_flow_gre_filter { - __be16 c_ks_res0_ver; - __be16 protocol; - __be32 key; - u8 real_sz[0]; +enum { + CRYPTOA_UNSPEC = 0, + CRYPTOA_ALG = 1, + CRYPTOA_TYPE = 2, + __CRYPTOA_MAX = 3, }; -struct ib_flow_spec_gre { - u32 type; - u16 size; - struct ib_flow_gre_filter val; - struct ib_flow_gre_filter mask; +struct scatter_walk { + struct scatterlist *sg; + unsigned int offset; }; -struct ib_flow_mpls_filter { - __be32 tag; - u8 real_sz[0]; +struct aead_request { + struct crypto_async_request base; + unsigned int assoclen; + unsigned int cryptlen; + u8 *iv; + struct scatterlist *src; + struct scatterlist *dst; + void *__ctx[0]; }; -struct ib_flow_spec_mpls { - u32 type; - u16 size; - struct ib_flow_mpls_filter val; - struct ib_flow_mpls_filter mask; -}; +struct crypto_aead; -struct ib_flow_spec_action_tag { - enum ib_flow_spec_type type; - u16 size; - u32 tag_id; +struct aead_alg { + int (*setkey)(struct crypto_aead *, const u8 *, unsigned int); + int (*setauthsize)(struct crypto_aead *, unsigned int); + int (*encrypt)(struct aead_request *); + int (*decrypt)(struct aead_request *); + int (*init)(struct crypto_aead *); + void (*exit)(struct crypto_aead *); + unsigned int ivsize; + unsigned int maxauthsize; + unsigned int chunksize; + struct crypto_alg base; }; -struct ib_flow_spec_action_drop { - enum ib_flow_spec_type type; - u16 size; +struct crypto_aead { + unsigned int authsize; + unsigned int reqsize; + struct crypto_tfm base; }; -struct ib_flow_spec_action_handle { - enum ib_flow_spec_type type; - u16 size; - struct ib_flow_action *act; +struct aead_instance { + void (*free)(struct aead_instance *); + union { + struct { + char head[64]; + struct crypto_instance base; + } s; + struct aead_alg alg; + }; }; -enum ib_flow_action_type { - IB_FLOW_ACTION_UNSPECIFIED = 0, - IB_FLOW_ACTION_ESP = 1, +struct crypto_aead_spawn { + struct crypto_spawn base; }; -struct ib_flow_action { - struct ib_device *device; - struct ib_uobject *uobject; - enum ib_flow_action_type type; - atomic_t usecnt; +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 ib_flow_spec_action_count { - enum ib_flow_spec_type type; - u16 size; - struct ib_counters *counters; +struct crypto_report_aead { + char type[64]; + char geniv[64]; + unsigned int blocksize; + unsigned int maxauthsize; + unsigned int ivsize; }; -struct ib_counters { - struct ib_device *device; - struct ib_uobject *uobject; - atomic_t usecnt; +struct crypto_sync_skcipher; + +struct aead_geniv_ctx { + spinlock_t lock; + struct crypto_aead *child; + struct crypto_sync_skcipher *sknull; + u8 salt[0]; }; -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 crypto_rng; + +struct rng_alg { + int (*generate)(struct crypto_rng *, const u8 *, unsigned int, u8 *, unsigned int); + int (*seed)(struct crypto_rng *, const u8 *, unsigned int); + void (*set_ent)(struct crypto_rng *, const u8 *, unsigned int); + unsigned int seedsize; + struct crypto_alg base; }; -struct 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 crypto_rng { + struct crypto_tfm base; }; -struct ib_flow { - struct ib_qp *qp; - struct ib_device *device; - struct ib_uobject *uobject; +struct crypto_cipher_spawn { + struct crypto_spawn base; }; -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 crypto_sync_skcipher { + struct crypto_skcipher base; }; -struct ib_flow_action_attrs_esp_replays { - enum ib_uverbs_flow_action_esp_replay protocol; +struct skcipher_instance { + void (*free)(struct skcipher_instance *); union { - struct ib_uverbs_flow_action_esp_replay_bmp bmp; - } replay; + struct { + char head[64]; + struct crypto_instance base; + } s; + struct skcipher_alg alg; + }; }; -struct ib_flow_spec_list { - struct ib_flow_spec_list *next; - union ib_flow_spec spec; +struct crypto_skcipher_spawn { + struct crypto_spawn base; }; -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 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; }; -struct ib_pkey_cache; - -struct ib_gid_table; - -struct ib_port_cache { - u64 subnet_prefix; - struct ib_pkey_cache *pkey; - struct ib_gid_table *gid; - u8 lmc; - enum ib_port_state port_state; +struct skcipher_ctx_simple { + struct crypto_cipher *cipher; }; -struct ib_port_immutable { - int pkey_tbl_len; - int gid_tbl_len; - u32 core_cap_flags; - u32 max_mad_size; +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 ib_port; - -struct ib_port_data { - struct ib_device *ib_dev; - struct ib_port_immutable immutable; - spinlock_t pkey_list_lock; - spinlock_t netdev_lock; - struct list_head pkey_list; - struct ib_port_cache cache; - struct net_device *netdev; - struct hlist_node ndev_hash_link; - struct rdma_port_counter port_counter; - struct ib_port *sysfs; +enum { + SKCIPHER_WALK_PHYS = 1, + SKCIPHER_WALK_SLOW = 2, + SKCIPHER_WALK_COPY = 4, + SKCIPHER_WALK_DIFF = 8, + SKCIPHER_WALK_SLEEP = 16, }; -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 skcipher_walk_buffer { + struct list_head entry; + struct scatter_walk dst; + unsigned int len; + u8 *data; + u8 buffer[0]; }; -struct ib_counters_read_attr { - u64 *counters_buff; - u32 ncounters; - u32 flags; +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 *); + struct hash_alg_common halg; }; -struct rdma_user_mmap_entry { - struct kref ref; - struct ib_ucontext *ucontext; - long unsigned int start_pgoff; - size_t npages; - bool driver_removed; +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; }; -enum wbt_flags { - WBT_TRACKED = 1, - WBT_READ = 2, - WBT_KSWAPD = 4, - WBT_DISCARD = 8, - WBT_NR_BITS = 4, +struct ahash_instance { + void (*free)(struct ahash_instance *); + union { + struct { + char head[88]; + struct crypto_instance base; + } s; + struct ahash_alg alg; + }; }; -enum { - WBT_STATE_ON_DEFAULT = 1, - WBT_STATE_ON_MANUAL = 2, - WBT_STATE_OFF_DEFAULT = 3, +struct crypto_ahash_spawn { + struct crypto_spawn base; }; -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 crypto_report_hash { + char type[64]; + unsigned int blocksize; + unsigned int digestsize; }; -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 ahash_request_priv { + crypto_completion_t complete; + void *data; + u8 *result; + u32 flags; + void *ubuf[0]; }; -struct trace_event_raw_wbt_lat { - struct trace_entry ent; - char name[32]; - long unsigned int lat; - char __data[0]; +struct shash_instance { + void (*free)(struct shash_instance *); + union { + struct { + char head[96]; + struct crypto_instance base; + } s; + struct shash_alg alg; + }; }; -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 crypto_shash_spawn { + struct crypto_spawn base; }; -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 crypto_report_akcipher { + char type[64]; }; -struct trace_event_data_offsets_wbt_stat {}; +struct akcipher_request { + struct crypto_async_request base; + struct scatterlist *src; + struct scatterlist *dst; + unsigned int src_len; + unsigned int dst_len; + void *__ctx[0]; +}; -struct trace_event_data_offsets_wbt_lat {}; +struct crypto_akcipher { + struct crypto_tfm base; +}; -struct trace_event_data_offsets_wbt_step {}; +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; + struct crypto_alg base; +}; -struct trace_event_data_offsets_wbt_timer {}; +struct akcipher_instance { + void (*free)(struct akcipher_instance *); + union { + struct { + char head[80]; + struct crypto_instance base; + } s; + struct akcipher_alg alg; + }; +}; -typedef void (*btf_trace_wbt_stat)(void *, struct backing_dev_info *, struct blk_rq_stat *); +struct crypto_akcipher_spawn { + struct crypto_spawn base; +}; -typedef void (*btf_trace_wbt_lat)(void *, struct backing_dev_info *, long unsigned int); +struct crypto_report_kpp { + char type[64]; +}; -typedef void (*btf_trace_wbt_step)(void *, struct backing_dev_info *, const char *, int, long unsigned int, unsigned int, unsigned int, unsigned int); +typedef long unsigned int mpi_limb_t; -typedef void (*btf_trace_wbt_timer)(void *, struct backing_dev_info *, unsigned int, int, unsigned int); +struct gcry_mpi { + int alloced; + int nlimbs; + int nbits; + int sign; + unsigned int flags; + mpi_limb_t *d; +}; -enum { - RWB_DEF_DEPTH = 16, - RWB_WINDOW_NSEC = 100000000, - RWB_MIN_WRITE_SAMPLES = 3, - RWB_UNKNOWN_BUMP = 5, +typedef struct gcry_mpi *MPI; + +struct dh_ctx { + MPI p; + MPI q; + MPI g; + MPI xa; }; enum { - LAT_OK = 1, - LAT_UNKNOWN = 2, - LAT_UNKNOWN_WRITES = 3, - LAT_EXCEEDED = 4, + CRYPTO_KPP_SECRET_TYPE_UNKNOWN = 0, + CRYPTO_KPP_SECRET_TYPE_DH = 1, + CRYPTO_KPP_SECRET_TYPE_ECDH = 2, }; -struct wbt_wait_data { - struct rq_wb *rwb; - enum wbt_flags wb_acct; - long unsigned int rw; +struct kpp_secret { + short unsigned int type; + short unsigned int len; }; -struct show_busy_params { - struct seq_file *m; - struct blk_mq_hw_ctx *hctx; +enum rsapubkey_actions { + ACT_rsa_get_e = 0, + ACT_rsa_get_n = 1, + NR__rsapubkey_actions = 2, }; -enum opal_mbr { - OPAL_MBR_ENABLE = 0, - OPAL_MBR_DISABLE = 1, +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, }; -enum opal_mbr_done_flag { - OPAL_MBR_NOT_DONE = 0, - OPAL_MBR_DONE = 1, +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; }; -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 rsa_mpi_key { + MPI n; + MPI e; + MPI d; }; -enum opal_lock_state { - OPAL_RO = 1, - OPAL_RW = 2, - OPAL_LK = 4, +struct rsa_asn1_template { + const char *name; + const u8 *data; + size_t size; }; -struct opal_key { - __u8 lr; - __u8 key_len; - __u8 __align[6]; - __u8 key[256]; +struct pkcs1pad_ctx { + struct crypto_akcipher *child; + unsigned int key_size; }; -struct opal_lr_act { - struct opal_key key; - __u32 sum; - __u8 num_lrs; - __u8 lr[9]; - __u8 align[2]; +struct pkcs1pad_inst_ctx { + struct crypto_akcipher_spawn spawn; + const struct rsa_asn1_template *digest_info; }; -struct opal_session_info { - __u32 sum; - __u32 who; - struct opal_key opal_key; +struct pkcs1pad_request { + struct scatterlist in_sg[2]; + struct scatterlist out_sg[1]; + uint8_t *in_buf; + uint8_t *out_buf; + struct akcipher_request child_req; }; -struct opal_user_lr_setup { - __u64 range_start; - __u64 range_length; - __u32 RLE; - __u32 WLE; - struct opal_session_info session; +struct crypto_report_acomp { + char type[64]; }; -struct opal_lock_unlock { - struct opal_session_info session; - __u32 l_state; - __u8 __align[4]; +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; + struct crypto_alg base; }; -struct opal_new_pw { - struct opal_session_info session; - struct opal_session_info new_user_pw; +struct crypto_report_comp { + char type[64]; }; -struct opal_mbr_data { - struct opal_key key; - __u8 enable_disable; - __u8 __align[7]; +struct crypto_scomp { + struct crypto_tfm base; }; -struct opal_mbr_done { - struct opal_key key; - __u8 done_flag; - __u8 __align[7]; +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 *); + struct crypto_alg base; }; -struct opal_shadow_mbr { - struct opal_key key; - const __u64 data; - __u64 offset; - __u64 size; +struct scomp_scratch { + spinlock_t lock; + void *src; + void *dst; }; -enum opal_table_ops { - OPAL_READ_TABLE = 0, - OPAL_WRITE_TABLE = 1, +struct cryptomgr_param { + struct rtattr *tb[34]; + struct { + struct rtattr attr; + struct crypto_attr_type data; + } type; + struct { + struct rtattr attr; + struct crypto_attr_alg data; + } attrs[32]; + char template[128]; + struct crypto_larval *larval; + u32 otype; + u32 omask; }; -struct 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 crypto_test_param { + char driver[128]; + char alg[128]; + u32 type; }; -typedef int sec_send_recv(void *, u16, u8, void *, size_t, bool); +struct hmac_ctx { + struct crypto_shash *hash; +}; -enum { - TCG_SECP_00 = 0, - TCG_SECP_01 = 1, +struct md5_state { + u32 hash[4]; + u32 block[16]; + u64 byte_count; }; -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 sha1_state { + u32 state[5]; + u64 count; + u8 buffer[64]; }; -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, +typedef void sha1_block_fn(struct sha1_state *, const u8 *, int); + +struct sha256_state { + u32 state[8]; + u64 count; + u8 buf[64]; }; -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 sha512_state { + u64 state[8]; + u64 count[2]; + u8 buf[128]; }; -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, +typedef void sha512_block_fn(struct sha512_state *, const u8 *, int); + +typedef struct { + u64 a; + u64 b; +} u128; + +typedef struct { + __be64 a; + __be64 b; +} be128; + +typedef struct { + __le64 b; + __le64 a; +} le128; + +struct gf128mul_4k { + be128 t[256]; }; -enum opal_parameter { - OPAL_SUM_SET_LIST = 393216, +struct gf128mul_64k { + struct gf128mul_4k *t[16]; }; -struct opal_compacket { - __be32 reserved0; - u8 extendedComID[4]; - __be32 outstandingData; - __be32 minTransfer; - __be32 length; +struct crypto_cts_ctx { + struct crypto_skcipher *child; }; -struct opal_packet { - __be32 tsn; - __be32 hsn; - __be32 seq_number; - __be16 reserved0; - __be16 ack_type; - __be32 acknowledgment; - __be32 length; +struct crypto_cts_reqctx { + struct scatterlist sg[2]; + unsigned int offset; + struct skcipher_request subreq; }; -struct opal_data_subpacket { - u8 reserved0[6]; - __be16 kind; - __be32 length; +struct xts_tfm_ctx { + struct crypto_skcipher *child; + struct crypto_cipher *tweak; }; -struct opal_header { - struct opal_compacket cp; - struct opal_packet pkt; - struct opal_data_subpacket subpkt; +struct xts_instance_ctx { + struct crypto_skcipher_spawn spawn; + char name[128]; }; -struct d0_header { - __be32 length; - __be32 revision; - __be32 reserved01; - __be32 reserved02; - u8 ignored[32]; +struct xts_request_ctx { + le128 t; + struct scatterlist *tail; + struct scatterlist sg[2]; + struct skcipher_request subreq; }; -struct d0_tper_features { - u8 supported_features; - u8 reserved01[3]; - __be32 reserved02; - __be32 reserved03; +struct crypto_rfc3686_ctx { + struct crypto_skcipher *child; + u8 nonce[4]; }; -struct d0_locking_features { - u8 supported_features; - u8 reserved01[3]; - __be32 reserved02; - __be32 reserved03; +struct crypto_rfc3686_req_ctx { + u8 iv[16]; + struct skcipher_request subreq; }; -struct d0_geometry_features { - u8 header[4]; - u8 reserved01; - u8 reserved02[7]; - __be32 logical_block_size; - __be64 alignment_granularity; - __be64 lowest_aligned_lba; +struct gcm_instance_ctx { + struct crypto_skcipher_spawn ctr; + struct crypto_ahash_spawn ghash; }; -struct d0_opal_v100 { - __be16 baseComID; - __be16 numComIDs; +struct crypto_gcm_ctx { + struct crypto_skcipher *ctr; + struct crypto_ahash *ghash; }; -struct d0_single_user_mode { - __be32 num_locking_objects; - u8 reserved01; - u8 reserved02; - __be16 reserved03; - __be32 reserved04; +struct crypto_rfc4106_ctx { + struct crypto_aead *child; + u8 nonce[4]; }; -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 crypto_rfc4106_req_ctx { + struct scatterlist src[3]; + struct scatterlist dst[3]; + struct aead_request subreq; }; -struct d0_features { - __be16 code; - u8 r_version; - u8 length; - u8 features[0]; +struct crypto_rfc4543_instance_ctx { + struct crypto_aead_spawn aead; }; -struct opal_dev; +struct crypto_rfc4543_ctx { + struct crypto_aead *child; + struct crypto_sync_skcipher *null; + u8 nonce[4]; +}; -struct opal_step { - int (*fn)(struct opal_dev *, void *); - void *data; +struct crypto_rfc4543_req_ctx { + struct aead_request subreq; }; -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 crypto_gcm_ghash_ctx { + unsigned int cryptlen; + struct scatterlist *src; + int (*complete)(struct aead_request *, u32); }; -struct opal_resp_tok { - const u8 *pos; - size_t len; - enum opal_response_token type; - enum opal_atom_width width; +struct crypto_gcm_req_priv_ctx { + u8 iv[16]; + u8 auth_tag[16]; + u8 iauth_tag[16]; + struct scatterlist src[3]; + struct scatterlist dst[3]; + struct scatterlist sg; + struct crypto_gcm_ghash_ctx ghash_ctx; union { - u64 u; - s64 s; - } stored; + struct ahash_request ahreq; + struct skcipher_request skreq; + } u; }; -struct parsed_resp { - int num; - struct opal_resp_tok toks[64]; +struct crypto_aes_ctx { + u32 key_enc[60]; + u32 key_dec[60]; + u32 key_length; }; -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; +struct chksum_ctx { + u32 key; }; -typedef int cont_fn(struct opal_dev *); - -struct opal_suspend_data { - struct opal_lock_unlock unlk; - u8 lr; - struct list_head node; +struct chksum_desc_ctx { + u32 crc; }; -struct blk_crypto_ll_ops { - int (*keyslot_program)(struct blk_crypto_profile *, const struct blk_crypto_key *, unsigned int); - int (*keyslot_evict)(struct blk_crypto_profile *, const struct blk_crypto_key *, unsigned int); +struct chksum_desc_ctx___2 { + __u16 crc; }; -struct blk_crypto_profile { - struct blk_crypto_ll_ops ll_ops; - unsigned int max_dun_bytes_supported; - unsigned int 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_crypto_keyslot *slots; +struct lzo_ctx { + void *lzo_comp_mem; }; -struct blk_crypto_mode { - const char *name; - const char *cipher_str; - unsigned int keysize; - unsigned int ivsize; +struct lzorle_ctx { + void *lzorle_comp_mem; }; -struct blk_crypto_keyslot { - atomic_t slot_refs; - struct list_head idle_slot_node; - struct hlist_node hash_node; - const struct blk_crypto_key *key; - struct blk_crypto_profile *profile; +struct crypto_report_rng { + char type[64]; + unsigned int seedsize; }; -struct blk_crypto_kobj { - struct kobject kobj; - struct blk_crypto_profile *profile; +struct drbg_string { + const unsigned char *buf; + size_t len; + struct list_head list; }; -struct blk_crypto_attr { - struct attribute attr; - ssize_t (*show)(struct blk_crypto_profile *, struct blk_crypto_attr *, char *); -}; +typedef uint32_t drbg_flag_t; -typedef void (*swap_r_func_t)(void *, void *, int, const void *); +struct drbg_core { + drbg_flag_t flags; + __u8 statelen; + __u8 blocklen_bytes; + char cra_name[128]; + char backend_cra_name[128]; +}; -typedef int (*cmp_r_func_t)(const void *, const void *, const void *); +struct drbg_state; -struct wrapper { - cmp_func_t cmp; - swap_func_t swap; +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 siprand_state { - long unsigned int v0; - long unsigned int v1; - long unsigned int v2; - long unsigned int v3; +enum drbg_seed_state { + DRBG_SEED_STATE_UNSEEDED = 0, + DRBG_SEED_STATE_PARTIAL = 1, + DRBG_SEED_STATE_FULL = 2, }; -struct bd_holder_disk { - struct list_head list; - struct block_device *bdev; - int refcnt; +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 region { - unsigned int start; - unsigned int off; - unsigned int group_len; - unsigned int end; - unsigned int nbits; +enum drbg_prefixes { + DRBG_PREFIX0 = 0, + DRBG_PREFIX1 = 1, + DRBG_PREFIX2 = 2, + DRBG_PREFIX3 = 3, }; -enum { - REG_OP_ISFREE = 0, - REG_OP_ALLOC = 1, - REG_OP_RELEASE = 2, +struct s { + __be32 conv; }; -struct sg_append_table { - struct sg_table sgt; - struct scatterlist *prv; - unsigned int total_nents; +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; }; -typedef struct scatterlist *sg_alloc_fn(unsigned int, gfp_t); +struct jitterentropy { + spinlock_t jent_lock; + struct rand_data *entropy_collector; + unsigned int reset_cnt; +}; -typedef void sg_free_fn(struct scatterlist *, unsigned int); +struct ghash_ctx { + struct gf128mul_4k *gf128; +}; -struct sg_page_iter { - struct scatterlist *sg; - unsigned int sg_pgoffset; - unsigned int __nents; - int __pg_advance; +struct ghash_desc_ctx { + u8 buffer[16]; + u32 bytes; }; -struct sg_dma_page_iter { - struct sg_page_iter base; +struct asymmetric_key_ids { + void *id[2]; }; -struct sg_mapping_iter { - struct page *page; - void *addr; - size_t length; - size_t consumed; - struct sg_page_iter piter; - unsigned int __offset; - unsigned int __remaining; - unsigned int __flags; +struct 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 csum_state { - __wsum csum; - size_t off; +struct asymmetric_key_parser { + struct list_head link; + struct module *owner; + const char *name; + int (*parse)(struct key_preparsed_payload *); }; -struct rhltable { - struct rhashtable ht; +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, }; -struct rhashtable_walker { - struct list_head list; - struct bucket_table *tbl; +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, }; -struct rhashtable_iter { - struct rhashtable *ht; - struct rhash_head *p; - struct rhlist_head *list; - struct rhashtable_walker walker; - unsigned int slot; - unsigned int skip; - bool end_of_table; +struct 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; }; -union nested_table { - union nested_table *table; - struct rhash_lock_head *bucket; +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 genradix_iter { - size_t offset; - size_t pos; +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 genradix_node { - union { - struct genradix_node *children[512]; - u8 data[4096]; - }; +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; }; -struct once_work { - struct work_struct work; - struct static_key_true *key; - struct module *module; +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 test_fail { - const char *str; - unsigned int base; +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]; }; -struct test_s8 { - const char *str; - unsigned int base; - s8 expected_res; +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 test_u8 { - const char *str; - unsigned int base; - u8 expected_res; +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 test_s16 { - const char *str; - unsigned int base; - s16 expected_res; +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 test_u16 { - const char *str; - unsigned int base; - u16 expected_res; +struct data_dirent { + uint32_t virtual_address; + uint32_t size; }; -struct test_s32 { - const char *str; - unsigned int base; - s32 expected_res; +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 test_u32 { - const char *str; - unsigned int base; - u32 expected_res; +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 test_s64 { - const char *str; - unsigned int base; - s64 expected_res; +struct win_certificate { + uint32_t length; + uint16_t revision; + uint16_t cert_type; }; -struct test_u64 { - const char *str; - unsigned int base; - u64 expected_res; +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 test_ll { - const char *str; - unsigned int base; - long long int expected_res; +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 test_ull { - const char *str; - unsigned int base; - long long unsigned int expected_res; +enum { + DISK_EVENT_MEDIA_CHANGE = 1, + DISK_EVENT_EJECT_REQUEST = 2, }; -struct reciprocal_value_adv { - u32 m; - u8 sh; - u8 exp; - bool is_wide_m; +struct bdev_inode { + struct block_device bdev; + struct inode vfs_inode; }; -struct strarray { - char **array; - size_t n; +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; }; -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 bio_alloc_cache { + struct bio_list free_list; + unsigned int nr; }; -struct blake2s_state { - u32 h[8]; - u32 t[2]; - u32 f[2]; - u8 buf[64]; - unsigned int buflen; - unsigned int outlen; +enum rq_qos_id { + RQ_QOS_WBT = 0, + RQ_QOS_LATENCY = 1, + RQ_QOS_COST = 2, + RQ_QOS_IOPRIO = 3, }; -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, -}; +struct rq_qos_ops; -enum chacha_constants { - CHACHA_CONSTANT_EXPA = 1634760805, - CHACHA_CONSTANT_ND_3 = 857760878, - CHACHA_CONSTANT_2_BY = 2036477234, - CHACHA_CONSTANT_TE_K = 1797285236, +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 poly1305_key { - union { - u32 r[5]; - u64 r64[3]; - }; +enum xen_domain_type { + XEN_NATIVE = 0, + XEN_PV_DOMAIN = 1, + XEN_HVM_DOMAIN = 2, }; -struct poly1305_core_key { - struct poly1305_key key; - struct poly1305_key precomputed_s; +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 poly1305_state { - union { - u32 h[5]; - u64 h64[3]; - }; +struct biovec_slab { + int nr_vecs; + char *name; + struct kmem_cache *slab; }; -struct poly1305_desc_ctx { - u8 buf[16]; - unsigned int buflen; - short unsigned int rset; - bool sset; - u32 s[4]; - struct poly1305_state h; - union { - struct poly1305_key opaque_r[1]; - struct poly1305_core_key core_r; - }; +struct bio_slab { + struct kmem_cache *slab; + unsigned int slab_ref; + unsigned int slab_size; + char name[8]; }; -struct chacha20poly1305_testvec { - const u8 *input; - const u8 *output; - const u8 *assoc; - const u8 *nonce; - const u8 *key; - size_t ilen; - size_t alen; - size_t nlen; - bool failure; +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 { - MAXIMUM_TEST_BUFFER_LEN = 4096, + WBT_RWQ_BG = 0, + WBT_RWQ_KSWAPD = 1, + WBT_RWQ_DISCARD = 2, + WBT_NUM_RWQ = 3, }; -enum assoc_array_walk_status { - assoc_array_walk_tree_empty = 0, - assoc_array_walk_found_terminal_node = 1, - assoc_array_walk_found_wrong_shortcut = 2, +enum rpm_status { + RPM_ACTIVE = 0, + RPM_RESUMING = 1, + RPM_SUSPENDED = 2, + RPM_SUSPENDING = 3, }; -struct assoc_array_walk_result { - struct { - struct assoc_array_node *node; - int level; - int slot; - } terminal_node; - struct { - struct assoc_array_shortcut *shortcut; - int level; - int sc_level; - long unsigned int sc_segments; - long unsigned int dissimilarity; - } wrong_shortcut; -}; +struct blk_plug_cb; -struct assoc_array_delete_collapse_context { - struct assoc_array_node *node; - const void *skip_leaf; - int slot; -}; +typedef void (*blk_plug_cb_fn)(struct blk_plug_cb *, bool); -struct linear_range { - unsigned int min; - unsigned int min_sel; - unsigned int max_sel; - unsigned int step; +struct blk_plug_cb { + struct list_head list; + blk_plug_cb_fn callback; + void *data; }; -enum packing_op { - PACK = 0, - UNPACK = 1, +enum { + BLK_MQ_REQ_NOWAIT = 1, + BLK_MQ_REQ_RESERVED = 2, + BLK_MQ_REQ_PM = 4, }; -enum devm_ioremap_type { - DEVM_IOREMAP = 0, - DEVM_IOREMAP_UC = 1, - DEVM_IOREMAP_WC = 2, - DEVM_IOREMAP_NP = 3, +struct trace_event_raw_block_buffer { + struct trace_entry ent; + dev_t dev; + sector_t sector; + size_t size; + char __data[0]; }; -struct pcim_iomap_devres { - void *table[6]; +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]; }; -struct arch_io_reserve_memtype_wc_devres { - resource_size_t start; - resource_size_t size; +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 xxh32_state { - uint32_t total_len_32; - uint32_t large_len; - uint32_t v1; - uint32_t v2; - uint32_t v3; - uint32_t v4; - uint32_t mem32[4]; - uint32_t memsize; +struct 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 gen_pool; - -typedef long unsigned int (*genpool_algo_t)(long unsigned int *, long unsigned int, long unsigned int, unsigned int, void *, struct gen_pool *, long unsigned int); - -struct gen_pool { - spinlock_t lock; - struct list_head chunks; - int min_alloc_order; - genpool_algo_t algo; - void *data; - const char *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 gen_pool_chunk { - struct list_head next_chunk; - atomic_long_t avail; - phys_addr_t phys_addr; - void *owner; - long unsigned int start_addr; - long unsigned int end_addr; - long unsigned int bits[0]; +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 genpool_data_align { - int align; +struct trace_event_raw_block_plug { + struct trace_entry ent; + char comm[16]; + char __data[0]; }; -struct genpool_data_fixed { - long unsigned int offset; +struct trace_event_raw_block_unplug { + struct trace_entry ent; + int nr_rq; + char comm[16]; + char __data[0]; }; -struct sw842_hlist_node8 { - struct hlist_node node; - u64 data; - u8 index; +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 sw842_hlist_node4 { - struct hlist_node node; - u32 data; - u16 index; +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 sw842_hlist_node2 { - struct hlist_node node; - u16 data; - u8 index; -}; - -struct sw842_param { - u8 *in; - u8 *instart; - u64 ilen; - u8 *out; - u64 olen; - u8 bit; - u64 data8[1]; - u32 data4[2]; - u16 data2[4]; - int index8[1]; - int index4[2]; - int index2[4]; - struct hlist_head htable8[1024]; - struct hlist_head htable4[2048]; - struct hlist_head htable2[1024]; - struct sw842_hlist_node8 node8[256]; - struct sw842_hlist_node4 node4[512]; - struct sw842_hlist_node2 node2[256]; +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]; }; -typedef struct { - unsigned char op; - unsigned char bits; - short unsigned int val; -} code; - -typedef enum { - HEAD = 0, - FLAGS = 1, - TIME = 2, - OS = 3, - EXLEN = 4, - EXTRA = 5, - NAME = 6, - COMMENT = 7, - HCRC = 8, - DICTID = 9, - DICT = 10, - TYPE = 11, - TYPEDO = 12, - STORED = 13, - COPY = 14, - TABLE = 15, - LENLENS = 16, - CODELENS = 17, - LEN = 18, - LENEXT = 19, - DIST = 20, - DISTEXT = 21, - MATCH = 22, - LIT = 23, - CHECK = 24, - LENGTH = 25, - DONE = 26, - BAD = 27, - MEM = 28, - SYNC = 29, -} inflate_mode; +struct trace_event_data_offsets_block_buffer {}; -struct inflate_state { - inflate_mode mode; - int last; - int wrap; - int havedict; - int flags; - unsigned int dmax; - long unsigned int check; - long unsigned int total; - unsigned int wbits; - unsigned int wsize; - unsigned int whave; - unsigned int write; - unsigned char *window; - long unsigned int hold; - unsigned int bits; - unsigned int length; - unsigned int offset; - unsigned int extra; - const code *lencode; - const code *distcode; - unsigned int lenbits; - unsigned int distbits; - unsigned int ncode; - unsigned int nlen; - unsigned int ndist; - unsigned int have; - code *next; - short unsigned int lens[320]; - short unsigned int work[288]; - code codes[2048]; +struct trace_event_data_offsets_block_rq_requeue { + u32 cmd; }; -union uu { - short unsigned int us; - unsigned char b[2]; +struct trace_event_data_offsets_block_rq_complete { + u32 cmd; }; -typedef unsigned int uInt; +struct trace_event_data_offsets_block_rq { + u32 cmd; +}; -typedef enum { - CODES = 0, - LENS = 1, - DISTS = 2, -} codetype; +struct trace_event_data_offsets_block_bio_complete {}; -struct dfltcc_qaf_param { - char fns[16]; - char reserved1[8]; - char fmts[2]; - char reserved2[6]; -}; +struct trace_event_data_offsets_block_bio {}; -struct dfltcc_param_v0 { - uint16_t pbvn; - uint8_t mvn; - uint8_t ribm; - unsigned int reserved32: 31; - unsigned int cf: 1; - uint8_t reserved64[8]; - unsigned int nt: 1; - unsigned int reserved129: 1; - unsigned int cvt: 1; - unsigned int reserved131: 1; - unsigned int htt: 1; - unsigned int bcf: 1; - unsigned int bcc: 1; - unsigned int bhf: 1; - unsigned int reserved136: 1; - unsigned int reserved137: 1; - unsigned int dhtgc: 1; - unsigned int reserved139: 5; - unsigned int reserved144: 5; - unsigned int sbb: 3; - uint8_t oesc; - unsigned int reserved160: 12; - unsigned int ifs: 4; - uint16_t ifl; - uint8_t reserved192[8]; - uint8_t reserved256[8]; - uint8_t reserved320[4]; - uint16_t hl; - unsigned int reserved368: 1; - uint16_t ho: 15; - uint32_t cv; - unsigned int eobs: 15; - unsigned int reserved431: 1; - uint8_t eobl: 4; - unsigned int reserved436: 12; - unsigned int reserved448: 4; - uint16_t cdhtl: 12; - uint8_t reserved464[6]; - uint8_t cdht[288]; - uint8_t reserved[32]; - uint8_t csb[1152]; -}; +struct trace_event_data_offsets_block_plug {}; -struct dfltcc_state { - struct dfltcc_param_v0 param; - struct dfltcc_qaf_param af; - uLong level_mask; - uLong block_size; - uLong block_threshold; - uLong dht_threshold; - char msg[64]; -}; +struct trace_event_data_offsets_block_unplug {}; -typedef enum { - DFLTCC_INFLATE_CONTINUE = 0, - DFLTCC_INFLATE_BREAK = 1, - DFLTCC_INFLATE_SOFTWARE = 2, -} dfltcc_inflate_action; +struct trace_event_data_offsets_block_split {}; -struct inflate_workspace { - struct inflate_state inflate_state; - struct dfltcc_state dfltcc_state; - unsigned char working_window[36864]; -}; +struct trace_event_data_offsets_block_bio_remap {}; -typedef unsigned char uch; +struct trace_event_data_offsets_block_rq_remap {}; -typedef short unsigned int ush; +typedef void (*btf_trace_block_touch_buffer)(void *, struct buffer_head *); -typedef long unsigned int ulg; +typedef void (*btf_trace_block_dirty_buffer)(void *, struct buffer_head *); -struct ct_data_s { - union { - ush freq; - ush code; - } fc; - union { - ush dad; - ush len; - } dl; -}; +typedef void (*btf_trace_block_rq_requeue)(void *, struct request *); -typedef struct ct_data_s ct_data; +typedef void (*btf_trace_block_rq_complete)(void *, struct request *, int, unsigned int); -struct static_tree_desc_s { - const ct_data *static_tree; - const int *extra_bits; - int extra_base; - int elems; - int max_length; -}; +typedef void (*btf_trace_block_rq_insert)(void *, struct request *); -typedef struct static_tree_desc_s static_tree_desc; +typedef void (*btf_trace_block_rq_issue)(void *, struct request *); -struct tree_desc_s { - ct_data *dyn_tree; - int max_code; - static_tree_desc *stat_desc; -}; +typedef void (*btf_trace_block_rq_merge)(void *, struct request *); -typedef ush Pos; +typedef void (*btf_trace_block_bio_complete)(void *, struct request_queue *, struct bio *); -typedef unsigned int IPos; +typedef void (*btf_trace_block_bio_bounce)(void *, struct bio *); -struct deflate_state { - z_streamp strm; - int status; - Byte *pending_buf; - ulg pending_buf_size; - Byte *pending_out; - int pending; - int noheader; - Byte data_type; - Byte method; - int last_flush; - uInt w_size; - uInt w_bits; - uInt w_mask; - Byte *window; - ulg window_size; - Pos *prev; - Pos *head; - uInt ins_h; - uInt hash_size; - uInt hash_bits; - uInt hash_mask; - uInt hash_shift; - long int block_start; - uInt match_length; - IPos prev_match; - int match_available; - uInt strstart; - uInt match_start; - uInt lookahead; - uInt prev_length; - uInt max_chain_length; - uInt max_lazy_match; - int level; - int strategy; - uInt good_match; - int nice_match; - struct ct_data_s dyn_ltree[573]; - struct ct_data_s dyn_dtree[61]; - struct ct_data_s bl_tree[39]; - struct tree_desc_s l_desc; - struct tree_desc_s d_desc; - struct tree_desc_s bl_desc; - ush bl_count[16]; - int heap[573]; - int heap_len; - int heap_max; - uch depth[573]; - uch *l_buf; - uInt lit_bufsize; - uInt last_lit; - ush *d_buf; - ulg opt_len; - ulg static_len; - ulg compressed_len; - uInt matches; - int last_eob_len; - ush bi_buf; - int bi_valid; -}; +typedef void (*btf_trace_block_bio_backmerge)(void *, struct bio *); -typedef struct deflate_state deflate_state; +typedef void (*btf_trace_block_bio_frontmerge)(void *, struct bio *); -typedef enum { - need_more = 0, - block_done = 1, - finish_started = 2, - finish_done = 3, -} block_state; +typedef void (*btf_trace_block_bio_queue)(void *, struct bio *); -typedef block_state (*compress_func)(deflate_state *, int); +typedef void (*btf_trace_block_getrq)(void *, struct bio *); -struct deflate_workspace { - deflate_state deflate_memory; - struct dfltcc_state dfltcc_memory; - Byte *window_memory; - Pos *prev_memory; - Pos *head_memory; - char *overlay_memory; -}; +typedef void (*btf_trace_block_plug)(void *, struct request_queue *); -typedef struct deflate_workspace deflate_workspace; +typedef void (*btf_trace_block_unplug)(void *, struct request_queue *, unsigned int, bool); -struct config_s { - ush good_length; - ush max_lazy; - ush nice_length; - ush max_chain; - compress_func func; -}; +typedef void (*btf_trace_block_split)(void *, struct bio *, unsigned int); -typedef struct config_s config; +typedef void (*btf_trace_block_bio_remap)(void *, struct bio *, dev_t, sector_t); -typedef struct tree_desc_s tree_desc; +typedef void (*btf_trace_block_rq_remap)(void *, struct request *, dev_t, sector_t); -struct sw842_param___2 { - u8 *in; - u8 bit; - u64 ilen; - u8 *out; - u8 *ostart; - u64 olen; +enum { + BLK_MQ_NO_TAG = 4294967295, + BLK_MQ_TAG_MIN = 1, + BLK_MQ_TAG_MAX = 4294967294, }; -typedef enum { - DFLTCC_CC_OK = 0, - DFLTCC_CC_OP1_TOO_SHORT = 1, - DFLTCC_CC_OP2_TOO_SHORT = 2, - DFLTCC_CC_OP2_CORRUPT = 2, - DFLTCC_CC_AGAIN = 3, -} dfltcc_cc; +struct queue_sysfs_entry { + struct attribute attr; + ssize_t (*show)(struct request_queue *, char *); + ssize_t (*store)(struct request_queue *, const char *, size_t); +}; -typedef s16 int16_t; +enum { + REQ_FSEQ_PREFLUSH = 1, + REQ_FSEQ_DATA = 2, + REQ_FSEQ_POSTFLUSH = 4, + REQ_FSEQ_DONE = 8, + REQ_FSEQ_ACTIONS = 7, + FLUSH_PENDING_TIMEOUT = 500, +}; -typedef enum { - ZSTD_c_compressionLevel = 100, - ZSTD_c_windowLog = 101, - ZSTD_c_hashLog = 102, - ZSTD_c_chainLog = 103, - ZSTD_c_searchLog = 104, - ZSTD_c_minMatch = 105, - ZSTD_c_targetLength = 106, - ZSTD_c_strategy = 107, - ZSTD_c_enableLongDistanceMatching = 160, - ZSTD_c_ldmHashLog = 161, - ZSTD_c_ldmMinMatch = 162, - ZSTD_c_ldmBucketSizeLog = 163, - ZSTD_c_ldmHashRateLog = 164, - ZSTD_c_contentSizeFlag = 200, - ZSTD_c_checksumFlag = 201, - ZSTD_c_dictIDFlag = 202, - ZSTD_c_nbWorkers = 400, - ZSTD_c_jobSize = 401, - ZSTD_c_overlapLog = 402, - ZSTD_c_experimentalParam1 = 500, - ZSTD_c_experimentalParam2 = 10, - ZSTD_c_experimentalParam3 = 1000, - ZSTD_c_experimentalParam4 = 1001, - ZSTD_c_experimentalParam5 = 1002, - ZSTD_c_experimentalParam6 = 1003, - ZSTD_c_experimentalParam7 = 1004, - ZSTD_c_experimentalParam8 = 1005, - ZSTD_c_experimentalParam9 = 1006, - ZSTD_c_experimentalParam10 = 1007, - ZSTD_c_experimentalParam11 = 1008, - ZSTD_c_experimentalParam12 = 1009, -} ZSTD_cParameter; +enum { + ICQ_EXITED = 4, + ICQ_DESTROYED = 8, +}; -typedef enum { - ZSTD_reset_session_only = 1, - ZSTD_reset_parameters = 2, - ZSTD_reset_session_and_parameters = 3, -} ZSTD_ResetDirective; +struct rq_map_data { + struct page **pages; + int page_order; + int nr_entries; + long unsigned int offset; + int null_mapped; + int from_user; +}; -typedef ZSTD_CCtx zstd_cctx; +struct bio_map_data { + bool is_our_pages: 1; + bool is_null_mapped: 1; + struct iov_iter iter; + struct iovec iov[0]; +}; -typedef int16_t S16; +struct req_iterator { + struct bvec_iter iter; + struct bio *bio; +}; -typedef uint32_t U32; +enum bio_merge_status { + BIO_MERGE_OK = 0, + BIO_MERGE_NONE = 1, + BIO_MERGE_FAILED = 2, +}; -typedef uint8_t BYTE; +typedef bool (*sb_for_each_fn)(struct sbitmap *, unsigned int, void *); -typedef ZSTD_ErrorCode ERR_enum; +typedef bool busy_iter_fn(struct blk_mq_hw_ctx *, struct request *, void *, bool); -typedef struct { - const uint8_t *externalDict; - size_t extDictSize; - const uint8_t *prefixEnd; - size_t prefixSize; -} LZ4_streamDecode_t_internal; +typedef bool busy_tag_iter_fn(struct request *, void *, bool); -typedef union { - long long unsigned int table[4]; - LZ4_streamDecode_t_internal internal_donotuse; -} LZ4_streamDecode_t; +enum { + BLK_MQ_UNIQUE_TAG_BITS = 16, + BLK_MQ_UNIQUE_TAG_MASK = 65535, +}; -typedef uint16_t U16; +struct mq_inflight { + struct block_device *part; + unsigned int inflight[2]; +}; -typedef uint64_t U64; +struct flush_busy_ctx_data { + struct blk_mq_hw_ctx *hctx; + struct list_head *list; +}; -typedef uintptr_t uptrval; +struct dispatch_rq_data { + struct blk_mq_hw_ctx *hctx; + struct request *rq; +}; -typedef enum { - noDict = 0, - withPrefix64k = 1, - usingExtDict = 2, -} dict_directive; +enum prep_dispatch { + PREP_DISPATCH_OK = 0, + PREP_DISPATCH_NO_TAG = 1, + PREP_DISPATCH_NO_BUDGET = 2, +}; -typedef enum { - endOnOutputSize = 0, - endOnInputSize = 1, -} endCondition_directive; +struct rq_iter_data { + struct blk_mq_hw_ctx *hctx; + bool has_rq; +}; -typedef enum { - decode_full_block = 0, - partial_decode = 1, -} earlyEnd_directive; +struct blk_mq_qe_pair { + struct list_head node; + struct request_queue *q; + struct elevator_type *type; +}; -typedef struct { - size_t bitContainer; - unsigned int bitPos; - char *startPtr; - char *ptr; - char *endPtr; -} BIT_CStream_t; +struct sbq_wait { + struct sbitmap_queue *sbq; + struct wait_queue_entry wait; +}; -typedef unsigned int FSE_CTable; +struct bt_iter_data { + struct blk_mq_hw_ctx *hctx; + busy_iter_fn *fn; + void *data; + bool reserved; +}; -typedef struct { - ptrdiff_t value; - const void *stateTable; - const void *symbolTT; - unsigned int stateLog; -} FSE_CState_t; +struct bt_tags_iter_data { + struct blk_mq_tags *tags; + busy_tag_iter_fn *fn; + void *data; + unsigned int flags; +}; -typedef struct { - int deltaFindState; - U32 deltaNbBits; -} FSE_symbolCompressionTransform; +struct blk_queue_stats { + struct list_head callbacks; + spinlock_t lock; + bool enable_accounting; +}; -typedef enum { - trustInput = 0, - checkMaxSymbolValue = 1, -} HIST_checkInput_e; +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); +}; -typedef struct { - size_t bitContainer; - unsigned int bitsConsumed; - const char *ptr; - const char *start; - const char *limitPtr; -} BIT_DStream_t; +typedef u32 compat_caddr_t; -typedef enum { - BIT_DStream_unfinished = 0, - BIT_DStream_endOfBuffer = 1, - BIT_DStream_completed = 2, - BIT_DStream_overflow = 3, -} BIT_DStream_status; +struct hd_geometry { + unsigned char heads; + unsigned char sectors; + short unsigned int cylinders; + long unsigned int start; +}; -typedef unsigned int FSE_DTable; +struct blkpg_ioctl_arg { + int op; + int flags; + int datalen; + void *data; +}; -typedef struct { - size_t state; - const void *table; -} FSE_DState_t; +struct blkpg_partition { + long long int start; + long long int length; + int pno; + char devname[64]; + char volname[64]; +}; -typedef struct { - U16 tableLog; - U16 fastMode; -} FSE_DTableHeader; +struct pr_reservation { + __u64 key; + __u32 type; + __u32 flags; +}; -typedef struct { - short unsigned int newState; - unsigned char symbol; - unsigned char nbBits; -} FSE_decode_t; +struct pr_registration { + __u64 old_key; + __u64 new_key; + __u32 flags; + __u32 __pad; +}; -typedef struct { - short int ncount[256]; - FSE_DTable dtable[1]; -} FSE_DecompressWksp; +struct pr_preempt { + __u64 old_key; + __u64 new_key; + __u32 type; + __u32 flags; +}; -struct HUF_CElt_s { - U16 val; - BYTE nbBits; +struct pr_clear { + __u64 key; + __u32 flags; + __u32 __pad; }; -typedef struct HUF_CElt_s HUF_CElt; +struct compat_blkpg_ioctl_arg { + compat_int_t op; + compat_int_t flags; + compat_int_t datalen; + compat_caddr_t data; +}; -typedef enum { - HUF_repeat_none = 0, - HUF_repeat_check = 1, - HUF_repeat_valid = 2, -} HUF_repeat; +struct compat_hd_geometry { + unsigned char heads; + unsigned char sectors; + short unsigned int cylinders; + u32 start; +}; -typedef struct { - FSE_CTable CTable[59]; - U32 scratchBuffer[30]; - unsigned int count[13]; - S16 norm[13]; -} HUF_CompressWeightsWksp; +struct klist_node; -typedef struct { - HUF_CompressWeightsWksp wksp; - BYTE bitsToWeight[13]; - BYTE huffWeight[255]; -} HUF_WriteCTableWksp; - -struct nodeElt_s { - U32 count; - U16 parent; - BYTE byte; - BYTE nbBits; +struct klist { + spinlock_t k_lock; + struct list_head k_list; + void (*get)(struct klist_node *); + void (*put)(struct klist_node *); }; -typedef struct nodeElt_s nodeElt; - -typedef struct { - U32 base; - U32 curr; -} rankPos; +struct klist_node { + void *n_klist; + struct list_head n_node; + struct kref n_ref; +}; -typedef nodeElt huffNodeTable[512]; +struct klist_iter { + struct klist *i_klist; + struct klist_node *i_cur; +}; -typedef struct { - huffNodeTable huffNodeTbl; - rankPos rankPosition[32]; -} HUF_buildCTable_wksp_tables; +struct class_dev_iter { + struct klist_iter ki; + const struct device_type *type; +}; -typedef enum { - HUF_singleStream = 0, - HUF_fourStreams = 1, -} HUF_nbStreams_e; +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 struct { - unsigned int count[256]; - HUF_CElt CTable[256]; - union { - HUF_buildCTable_wksp_tables buildCTable_wksp; - HUF_WriteCTableWksp writeCTable_wksp; - } wksps; -} HUF_compress_tables_t; +struct blk_major_name { + struct blk_major_name *next; + int major; + char name[16]; + void (*probe)(dev_t); +}; -typedef enum { - set_basic = 0, - set_rle = 1, - set_compressed = 2, - set_repeat = 3, -} symbolEncodingType_e; +enum { + IOPRIO_WHO_PROCESS = 1, + IOPRIO_WHO_PGRP = 2, + IOPRIO_WHO_USER = 3, +}; -typedef struct { - HUF_CElt CTable[256]; - HUF_repeat repeatMode; -} ZSTD_hufCTables_t; +struct parsed_partitions { + struct gendisk *disk; + char name[32]; + struct { + sector_t from; + sector_t size; + int flags; + bool has_info; + struct partition_meta_info info; + } *parts; + int next; + int limit; + bool access_beyond_eod; + char *pp_buf; +}; typedef struct { - U32 offset; - U32 litLength; - U32 matchLength; -} rawSeq; + struct page *v; +} Sector; -typedef struct { - rawSeq *seq; - size_t pos; - size_t posInSequence; - size_t size; - size_t capacity; -} rawSeqStore_t; +struct msdos_partition { + u8 boot_ind; + u8 head; + u8 sector; + u8 cyl; + u8 sys_ind; + u8 end_head; + u8 end_sector; + u8 end_cyl; + __le32 start_sect; + __le32 nr_sects; +}; -typedef enum { - FSE_repeat_none = 0, - FSE_repeat_check = 1, - FSE_repeat_valid = 2, -} FSE_repeat; +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 seqDef_s { - U32 offset; - U16 litLength; - U16 matchLength; +struct dasd_information2_t { + unsigned int devno; + unsigned int real_devno; + unsigned int schid; + unsigned int cu_type: 16; + unsigned int cu_model: 8; + long: 8; + unsigned int dev_type: 16; + unsigned int dev_model: 8; + unsigned int open_count; + unsigned int req_queue_len; + unsigned int chanq_len; + char type[4]; + unsigned int status; + unsigned int label_block; + unsigned int FBA_layout; + unsigned int characteristics_size; + unsigned int confdata_size; + char characteristics[64]; + char configuration_data[256]; + unsigned int format; + unsigned int features; + unsigned int reserved0; + unsigned int reserved1; + unsigned int reserved2; + unsigned int reserved3; + unsigned int reserved4; + unsigned int reserved5; + unsigned int reserved6; + unsigned int reserved7; }; -typedef struct seqDef_s seqDef; - -typedef enum { - ZSTD_defaultDisallowed = 0, - ZSTD_defaultAllowed = 1, -} ZSTD_defaultPolicy_e; - -typedef struct { - S16 norm[53]; - U32 wksp[182]; -} ZSTD_BuildCTableWksp; - -typedef enum { - ZSTDcs_created = 0, - ZSTDcs_init = 1, - ZSTDcs_ongoing = 2, - ZSTDcs_ending = 3, -} ZSTD_compressionStage_e; - -typedef enum { - ZSTD_f_zstd1 = 0, - ZSTD_f_zstd1_magicless = 1, -} ZSTD_format_e; - -typedef enum { - ZSTD_dictDefaultAttach = 0, - ZSTD_dictForceAttach = 1, - ZSTD_dictForceCopy = 2, - ZSTD_dictForceLoad = 3, -} ZSTD_dictAttachPref_e; - -typedef enum { - ZSTD_lcm_auto = 0, - ZSTD_lcm_huffman = 1, - ZSTD_lcm_uncompressed = 2, -} ZSTD_literalCompressionMode_e; +typedef struct dasd_information2_t dasd_information2_t; -typedef struct { - U32 enableLdm; - U32 hashLog; - U32 bucketSizeLog; - U32 minMatchLength; - U32 hashRateLog; - U32 windowLog; -} ldmParams_t; +struct vtoc_ttr { + __u16 tt; + __u8 r; +} __attribute__((packed)); -typedef enum { - ZSTD_bm_buffered = 0, - ZSTD_bm_stable = 1, -} ZSTD_bufferMode_e; +struct vtoc_cchhb { + __u16 cc; + __u16 hh; + __u8 b; +} __attribute__((packed)); -typedef enum { - ZSTD_sf_noBlockDelimiters = 0, - ZSTD_sf_explicitBlockDelimiters = 1, -} ZSTD_sequenceFormat_e; - -struct ZSTD_CCtx_params_s { - ZSTD_format_e format; - ZSTD_compressionParameters cParams; - ZSTD_frameParameters fParams; - int compressionLevel; - int forceWindow; - size_t targetCBlockSize; - int srcSizeHint; - ZSTD_dictAttachPref_e attachDictPref; - ZSTD_literalCompressionMode_e literalCompressionMode; - int nbWorkers; - size_t jobSize; - int overlapLog; - int rsyncable; - ldmParams_t ldmParams; - int enableDedicatedDictSearch; - ZSTD_bufferMode_e inBufferMode; - ZSTD_bufferMode_e outBufferMode; - ZSTD_sequenceFormat_e blockDelimiters; - int validateSequences; - ZSTD_customMem customMem; +struct vtoc_cchh { + __u16 cc; + __u16 hh; }; -typedef struct ZSTD_CCtx_params_s ZSTD_CCtx_params; - -typedef enum { - ZSTD_cwksp_alloc_objects = 0, - ZSTD_cwksp_alloc_buffers = 1, - ZSTD_cwksp_alloc_aligned = 2, -} ZSTD_cwksp_alloc_phase_e; - -typedef enum { - ZSTD_cwksp_dynamic_alloc = 0, - ZSTD_cwksp_static_alloc = 1, -} ZSTD_cwksp_static_alloc_e; - -typedef struct { - void *workspace; - void *workspaceEnd; - void *objectEnd; - void *tableEnd; - void *tableValidEnd; - void *allocStart; - BYTE allocFailed; - int workspaceOversizedDuration; - ZSTD_cwksp_alloc_phase_e phase; - ZSTD_cwksp_static_alloc_e isStatic; -} ZSTD_cwksp; - -struct POOL_ctx_s; +struct vtoc_labeldate { + __u8 year; + __u16 day; +} __attribute__((packed)); -typedef struct POOL_ctx_s ZSTD_threadPool; +struct vtoc_volume_label_cdl { + char volkey[4]; + char vollbl[4]; + char volid[6]; + __u8 security; + struct vtoc_cchhb vtoc; + char res1[5]; + char cisize[4]; + char blkperci[4]; + char labperci[4]; + char res2[4]; + char lvtoc[14]; + char res3[29]; +}; -typedef struct { - unsigned int offset; - unsigned int litLength; - unsigned int matchLength; - unsigned int rep; -} ZSTD_Sequence; +struct vtoc_volume_label_ldl { + char vollbl[4]; + char volid[6]; + char res3[69]; + char ldl_version; + __u64 formatted_blocks; +}; -typedef struct { - int collectSequences; - ZSTD_Sequence *seqStart; - size_t seqIndex; - size_t maxSequences; -} SeqCollector; +struct vtoc_extent { + __u8 typeind; + __u8 seqno; + struct vtoc_cchh llimit; + struct vtoc_cchh ulimit; +}; -typedef struct { - seqDef *sequencesStart; - seqDef *sequences; - BYTE *litStart; - BYTE *lit; - BYTE *llCode; - BYTE *mlCode; - BYTE *ofCode; - size_t maxNbSeq; - size_t maxNbLit; - U32 longLengthID; - U32 longLengthPos; -} seqStore_t; +struct vtoc_format1_label { + char DS1DSNAM[44]; + __u8 DS1FMTID; + char DS1DSSN[6]; + __u16 DS1VOLSQ; + struct vtoc_labeldate DS1CREDT; + struct vtoc_labeldate DS1EXPDT; + __u8 DS1NOEPV; + __u8 DS1NOBDB; + __u8 DS1FLAG1; + char DS1SYSCD[13]; + struct vtoc_labeldate DS1REFD; + __u8 DS1SMSFG; + __u8 DS1SCXTF; + __u16 DS1SCXTV; + __u8 DS1DSRG1; + __u8 DS1DSRG2; + __u8 DS1RECFM; + __u8 DS1OPTCD; + __u16 DS1BLKL; + __u16 DS1LRECL; + __u8 DS1KEYL; + __u16 DS1RKP; + __u8 DS1DSIND; + __u8 DS1SCAL1; + char DS1SCAL3[3]; + struct vtoc_ttr DS1LSTAR; + __u16 DS1TRBAL; + __u16 res1; + struct vtoc_extent DS1EXT1; + struct vtoc_extent DS1EXT2; + struct vtoc_extent DS1EXT3; + struct vtoc_cchhb DS1PTRDS; +} __attribute__((packed)); -typedef struct { - const BYTE *nextSrc; - const BYTE *base; - const BYTE *dictBase; - U32 dictLimit; - U32 lowLimit; -} ZSTD_window_t; +struct vtoc_cms_label { + __u8 label_id[4]; + __u8 vol_id[6]; + __u16 version_id; + __u32 block_size; + __u32 origin_ptr; + __u32 usable_count; + __u32 formatted_count; + __u32 block_count; + __u32 used_count; + __u32 fst_size; + __u32 fst_count; + __u8 format_date[6]; + __u8 reserved1[2]; + __u32 disk_offset; + __u32 map_block; + __u32 hblk_disp; + __u32 user_disp; + __u8 reserved2[4]; + __u8 segment_name[8]; +}; -typedef struct { - U32 offset; - U32 checksum; -} ldmEntry_t; +union label_t { + struct vtoc_volume_label_cdl vol; + struct vtoc_volume_label_ldl lnx; + struct vtoc_cms_label cms; +}; typedef struct { - const BYTE *split; - U32 hash; - U32 checksum; - ldmEntry_t *bucket; -} ldmMatchCandidate_t; + __u8 b[16]; +} guid_t; -typedef struct { - ZSTD_window_t window; - ldmEntry_t *hashTable; - U32 loadedDictEnd; - BYTE *bucketOffsets; - size_t splitIndices[64]; - ldmMatchCandidate_t matchCandidates[64]; -} ldmState_t; +typedef guid_t efi_guid_t; -typedef struct { - FSE_CTable offcodeCTable[193]; - FSE_CTable matchlengthCTable[363]; - FSE_CTable litlengthCTable[329]; - FSE_repeat offcode_repeatMode; - FSE_repeat matchlength_repeatMode; - FSE_repeat litlength_repeatMode; -} ZSTD_fseCTables_t; +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 { - ZSTD_hufCTables_t huf; - ZSTD_fseCTables_t fse; -} ZSTD_entropyCTables_t; +typedef struct _gpt_header gpt_header; -typedef struct { - ZSTD_entropyCTables_t entropy; - U32 rep[3]; -} ZSTD_compressedBlockState_t; +struct _gpt_entry_attributes { + u64 required_to_function: 1; + u64 reserved: 47; + u64 type_guid_specific: 16; +}; -typedef struct { - U32 off; - U32 len; -} ZSTD_match_t; +typedef struct _gpt_entry_attributes gpt_entry_attributes; -typedef struct { - int price; - U32 off; - U32 mlen; - U32 litlen; - U32 rep[3]; -} ZSTD_optimal_t; +struct _gpt_entry { + efi_guid_t partition_type_guid; + efi_guid_t unique_partition_guid; + __le64 starting_lba; + __le64 ending_lba; + gpt_entry_attributes attributes; + __le16 partition_name[36]; +}; -typedef enum { - zop_dynamic = 0, - zop_predef = 1, -} ZSTD_OptPrice_e; +typedef struct _gpt_entry gpt_entry; -typedef struct { - unsigned int *litFreq; - unsigned int *litLengthFreq; - unsigned int *matchLengthFreq; - unsigned int *offCodeFreq; - ZSTD_match_t *matchTable; - ZSTD_optimal_t *priceTable; - U32 litSum; - U32 litLengthSum; - U32 matchLengthSum; - U32 offCodeSum; - U32 litSumBasePrice; - U32 litLengthSumBasePrice; - U32 matchLengthSumBasePrice; - U32 offCodeSumBasePrice; - ZSTD_OptPrice_e priceType; - const ZSTD_entropyCTables_t *symbolCosts; - ZSTD_literalCompressionMode_e literalCompressionMode; -} optState_t; - -struct ZSTD_matchState_t; - -typedef struct ZSTD_matchState_t ZSTD_matchState_t; - -struct ZSTD_matchState_t { - ZSTD_window_t window; - U32 loadedDictEnd; - U32 nextToUpdate; - U32 hashLog3; - U32 *hashTable; - U32 *hashTable3; - U32 *chainTable; - int dedicatedDictSearch; - optState_t opt; - const ZSTD_matchState_t *dictMatchState; - ZSTD_compressionParameters cParams; - const rawSeqStore_t *ldmSeqStore; +struct _gpt_mbr_record { + u8 boot_indicator; + u8 start_head; + u8 start_sector; + u8 start_track; + u8 os_type; + u8 end_head; + u8 end_sector; + u8 end_track; + __le32 starting_lba; + __le32 size_in_lba; }; -typedef struct { - ZSTD_compressedBlockState_t *prevCBlock; - ZSTD_compressedBlockState_t *nextCBlock; - ZSTD_matchState_t matchState; -} ZSTD_blockState_t; +typedef struct _gpt_mbr_record gpt_mbr_record; -typedef enum { - ZSTDb_not_buffered = 0, - ZSTDb_buffered = 1, -} ZSTD_buffered_policy_e; +struct _legacy_mbr { + u8 boot_code[440]; + __le32 unique_mbr_signature; + __le16 unknown; + gpt_mbr_record partition_record[4]; + __le16 signature; +} __attribute__((packed)); -typedef enum { - zcss_init = 0, - zcss_load = 1, - zcss_flush = 2, -} ZSTD_cStreamStage; +typedef struct _legacy_mbr legacy_mbr; -typedef enum { - ZSTD_dct_auto = 0, - ZSTD_dct_rawContent = 1, - ZSTD_dct_fullDict = 2, -} ZSTD_dictContentType_e; +struct rq_wait { + wait_queue_head_t wait; + atomic_t inflight; +}; -struct ZSTD_CDict_s; +struct rq_depth { + unsigned int max_depth; + int scale_step; + bool scaled_max; + unsigned int queue_depth; + unsigned int default_depth; +}; -typedef struct ZSTD_CDict_s ZSTD_CDict; +typedef bool acquire_inflight_cb_t(struct rq_wait *, void *); -typedef struct { - void *dictBuffer; - const void *dict; - size_t dictSize; - ZSTD_dictContentType_e dictContentType; - ZSTD_CDict *cdict; -} ZSTD_localDict; +typedef void cleanup_cb_t(struct rq_wait *, void *); -struct ZSTD_prefixDict_s { - const void *dict; - size_t dictSize; - ZSTD_dictContentType_e dictContentType; +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; }; -typedef struct ZSTD_prefixDict_s ZSTD_prefixDict; - -struct ZSTD_CCtx_s { - ZSTD_compressionStage_e stage; - int cParamsChanged; - int bmi2; - ZSTD_CCtx_params requestedParams; - ZSTD_CCtx_params appliedParams; - U32 dictID; - size_t dictContentSize; - ZSTD_cwksp workspace; - size_t blockSize; - long long unsigned int pledgedSrcSizePlusOne; - long long unsigned int consumedSrcSize; - long long unsigned int producedCSize; - struct xxh64_state xxhState; - ZSTD_customMem customMem; - ZSTD_threadPool *pool; - size_t staticSize; - SeqCollector seqCollector; - int isFirstBlock; - int initialized; - seqStore_t seqStore; - ldmState_t ldmState; - rawSeq *ldmSequences; - size_t maxNbLdmSequences; - rawSeqStore_t externSeqStore; - ZSTD_blockState_t blockState; - U32 *entropyWorkspace; - ZSTD_buffered_policy_e bufferedPolicy; - char *inBuff; - size_t inBuffSize; - size_t inToCompress; - size_t inBuffPos; - size_t inBuffTarget; - char *outBuff; - size_t outBuffSize; - size_t outBuffContentSize; - size_t outBuffFlushedSize; - ZSTD_cStreamStage streamStage; - U32 frameEnded; - ZSTD_inBuffer expectedInBuffer; - size_t expectedOutBufferSize; - ZSTD_localDict localDict; - const ZSTD_CDict *cdict; - ZSTD_prefixDict prefixDict; +enum { + DISK_EVENT_FLAG_POLL = 1, + DISK_EVENT_FLAG_UEVENT = 2, }; -typedef struct ZSTD_CCtx_s ZSTD_CCtx___2; - -struct ZSTD_CDict_s { - const void *dictContent; - size_t dictContentSize; - ZSTD_dictContentType_e dictContentType; - U32 *entropyWorkspace; - ZSTD_cwksp workspace; - ZSTD_matchState_t matchState; - ZSTD_compressedBlockState_t cBlockState; - ZSTD_customMem customMem; - U32 dictID; - int compressionLevel; +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; }; -typedef struct { - U32 litLength; - U32 matchLength; -} ZSTD_sequenceLength; - -struct repcodes_s { - U32 rep[3]; +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; }; -typedef struct repcodes_s repcodes_t; - -typedef struct { - symbolEncodingType_e hType; - BYTE hufDesBuffer[128]; - size_t hufDesSize; -} ZSTD_hufCTablesMetadata_t; - -typedef struct { - symbolEncodingType_e llType; - symbolEncodingType_e ofType; - symbolEncodingType_e mlType; - BYTE fseTablesBuffer[133]; - size_t fseTablesSize; - size_t lastCountSize; -} ZSTD_fseCTablesMetadata_t; - -typedef struct { - ZSTD_hufCTablesMetadata_t hufMetadata; - ZSTD_fseCTablesMetadata_t fseMetadata; -} ZSTD_entropyCTablesMetadata_t; - -typedef struct { - U32 f1c; - U32 f1d; - U32 f7b; - U32 f7c; -} ZSTD_cpuid_t; - -typedef struct { - size_t error; - int lowerBound; - int upperBound; -} ZSTD_bounds; - -typedef ZSTD_CCtx___2 ZSTD_CStream___2; - -typedef enum { - ZSTD_e_continue = 0, - ZSTD_e_flush = 1, - ZSTD_e_end = 2, -} ZSTD_EndDirective; - -typedef enum { - ZSTD_dlm_byCopy = 0, - ZSTD_dlm_byRef = 1, -} ZSTD_dictLoadMethod_e; - -typedef struct { - long long unsigned int ingested; - long long unsigned int consumed; - long long unsigned int produced; - long long unsigned int flushed; - unsigned int currentJobID; - unsigned int nbActiveWorkers; -} ZSTD_frameProgression; - -typedef enum { - ZSTD_no_overlap = 0, - ZSTD_overlap_src_before_dst = 1, -} ZSTD_overlap_e; - -typedef enum { - ZSTD_dtlm_fast = 0, - ZSTD_dtlm_full = 1, -} ZSTD_dictTableLoadMethod_e; - -typedef enum { - ZSTD_noDict = 0, - ZSTD_extDict = 1, - ZSTD_dictMatchState = 2, - ZSTD_dedicatedDictSearch = 3, -} ZSTD_dictMode_e; - -typedef enum { - ZSTD_cpm_noAttachDict = 0, - ZSTD_cpm_attachDict = 1, - ZSTD_cpm_createCDict = 2, - ZSTD_cpm_unknown = 3, -} ZSTD_cParamMode_e; - -typedef size_t (*ZSTD_blockCompressor)(ZSTD_matchState_t *, seqStore_t *, U32 *, const void *, size_t); +typedef int bsg_sg_io_fn(struct request_queue *, struct sg_io_v4 *, fmode_t, unsigned int); -typedef enum { - ZSTDcrp_makeClean = 0, - ZSTDcrp_leaveDirty = 1, -} ZSTD_compResetPolicy_e; +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; +}; -typedef enum { - ZSTDirp_continue = 0, - ZSTDirp_reset = 1, -} ZSTD_indexResetPolicy_e; +struct bsg_job; -typedef enum { - ZSTD_resetTarget_CDict = 0, - ZSTD_resetTarget_CCtx = 1, -} ZSTD_resetTarget_e; +typedef int bsg_job_fn(struct bsg_job *); -enum { - ZSTDbss_compress = 0, - ZSTDbss_noCompress = 1, +struct bsg_buffer { + unsigned int payload_len; + int sg_cnt; + struct scatterlist *sg_list; }; -typedef struct { - U32 idx; - U32 posInSequence; - size_t posInSrc; -} ZSTD_sequencePosition; - -typedef size_t (*ZSTD_sequenceCopier)(ZSTD_CCtx___2 *, ZSTD_sequencePosition *, const ZSTD_Sequence * const, size_t, const void *, size_t); +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; +}; -typedef struct { - U64 rolling; - U64 stopMask; -} ldmRollingHashState_t; +typedef enum blk_eh_timer_return bsg_timeout_fn(struct request *); -typedef struct { - rawSeqStore_t seqStore; - U32 startPosInBlock; - U32 endPosInBlock; - U32 offset; -} ZSTD_optLdm_t; +enum scsi_device_event { + SDEV_EVT_MEDIA_CHANGE = 1, + SDEV_EVT_INQUIRY_CHANGE_REPORTED = 2, + SDEV_EVT_CAPACITY_CHANGE_REPORTED = 3, + SDEV_EVT_SOFT_THRESHOLD_REACHED_REPORTED = 4, + SDEV_EVT_MODE_PARAMETER_CHANGE_REPORTED = 5, + SDEV_EVT_LUN_CHANGE_REPORTED = 6, + SDEV_EVT_ALUA_STATE_CHANGE_REPORTED = 7, + SDEV_EVT_POWER_ON_RESET_OCCURRED = 8, + SDEV_EVT_FIRST = 1, + SDEV_EVT_LAST = 8, + SDEV_EVT_MAXBITS = 9, +}; -typedef enum { - ZSTD_frame = 0, - ZSTD_skippableFrame = 1, -} ZSTD_frameType_e; +struct bsg_set { + struct blk_mq_tag_set tag_set; + struct bsg_device *bd; + bsg_job_fn *job_fn; + bsg_timeout_fn *timeout_fn; +}; -typedef struct { - long long unsigned int frameContentSize; - long long unsigned int windowSize; - unsigned int blockSizeMax; - ZSTD_frameType_e frameType; - unsigned int headerSize; - unsigned int dictID; - unsigned int checksumFlag; -} ZSTD_frameHeader; +typedef struct blkcg_policy_data *blkcg_pol_alloc_cpd_fn(gfp_t); -typedef ZSTD_DCtx zstd_dctx; +typedef void blkcg_pol_init_cpd_fn(struct blkcg_policy_data *); -typedef ZSTD_frameHeader zstd_frame_header; +typedef void blkcg_pol_free_cpd_fn(struct blkcg_policy_data *); -typedef U32 HUF_DTable; +typedef void blkcg_pol_bind_cpd_fn(struct blkcg_policy_data *); -typedef struct { - BYTE maxTableLog; - BYTE tableType; - BYTE tableLog; - BYTE reserved; -} DTableDesc; +typedef struct blkg_policy_data *blkcg_pol_alloc_pd_fn(gfp_t, struct request_queue *, struct blkcg *); -typedef struct { - BYTE byte; - BYTE nbBits; -} HUF_DEltX1; +typedef void blkcg_pol_init_pd_fn(struct blkg_policy_data *); -typedef struct { - U32 rankVal[16]; - U32 rankStart[16]; - U32 statsWksp[218]; - BYTE symbols[256]; - BYTE huffWeight[256]; -} HUF_ReadDTableX1_Workspace; +typedef void blkcg_pol_online_pd_fn(struct blkg_policy_data *); -typedef struct { - U16 sequence; - BYTE nbBits; - BYTE length; -} HUF_DEltX2; +typedef void blkcg_pol_offline_pd_fn(struct blkg_policy_data *); -typedef struct { - BYTE symbol; - BYTE weight; -} sortedSymbol_t; +typedef void blkcg_pol_free_pd_fn(struct blkg_policy_data *); -typedef U32 rankValCol_t[13]; +typedef void blkcg_pol_reset_pd_stats_fn(struct blkg_policy_data *); -typedef struct { - U32 rankVal[156]; - U32 rankStats[13]; - U32 rankStart0[14]; - sortedSymbol_t sortedSymbol[256]; - BYTE weightList[256]; - U32 calleeWksp[218]; -} HUF_ReadDTableX2_Workspace; +typedef bool blkcg_pol_stat_pd_fn(struct blkg_policy_data *, struct seq_file *); -typedef struct { - U32 tableTime; - U32 decode256Time; -} algo_time_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; +}; -typedef struct { - U16 nextState; - BYTE nbAdditionalBits; - BYTE nbBits; - U32 baseValue; -} ZSTD_seqSymbol; +struct blkg_conf_ctx { + struct block_device *bdev; + struct blkcg_gq *blkg; + char *body; +}; -typedef struct { - ZSTD_seqSymbol LLTable[513]; - ZSTD_seqSymbol OFTable[257]; - ZSTD_seqSymbol MLTable[513]; - HUF_DTable hufTable[4097]; - U32 rep[3]; - U32 workspace[157]; -} ZSTD_entropyDTables_t; +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, +}; -typedef enum { - bt_raw = 0, - bt_rle = 1, - bt_compressed = 2, - bt_reserved = 3, -} blockType_e; +struct blkg_rwstat { + struct percpu_counter cpu_cnt[5]; + atomic64_t aux_cnt[5]; +}; -typedef enum { - ZSTDds_getFrameHeaderSize = 0, - ZSTDds_decodeFrameHeader = 1, - ZSTDds_decodeBlockHeader = 2, - ZSTDds_decompressBlock = 3, - ZSTDds_decompressLastBlock = 4, - ZSTDds_checkChecksum = 5, - ZSTDds_decodeSkippableHeader = 6, - ZSTDds_skipFrame = 7, -} ZSTD_dStage; +struct blkg_rwstat_sample { + u64 cnt[5]; +}; -typedef enum { - ZSTD_d_validateChecksum = 0, - ZSTD_d_ignoreChecksum = 1, -} ZSTD_forceIgnoreChecksum_e; +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; +}; -typedef enum { - ZSTD_use_indefinitely = 4294967295, - ZSTD_dont_use = 0, - ZSTD_use_once = 1, -} ZSTD_dictUses_e; +struct latency_bucket { + long unsigned int total_latency; + int samples; +}; -struct ZSTD_DDict_s; +struct avg_latency_bucket { + long unsigned int latency; + bool valid; +}; -typedef struct ZSTD_DDict_s ZSTD_DDict; +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; +}; -typedef struct { - const ZSTD_DDict **ddictPtrTable; - size_t ddictPtrTableSize; - size_t ddictPtrCount; -} ZSTD_DDictHashSet; +struct throtl_grp; -typedef enum { - ZSTD_rmd_refSingleDDict = 0, - ZSTD_rmd_refMultipleDDicts = 1, -} ZSTD_refMultipleDDicts_e; +struct throtl_qnode { + struct list_head node; + struct bio_list bios; + struct throtl_grp *tg; +}; -typedef enum { - zdss_init = 0, - zdss_loadHeader = 1, - zdss_read = 2, - zdss_load = 3, - zdss_flush = 4, -} ZSTD_dStreamStage; +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 ZSTD_DCtx_s { - const ZSTD_seqSymbol *LLTptr; - const ZSTD_seqSymbol *MLTptr; - const ZSTD_seqSymbol *OFTptr; - const HUF_DTable *HUFptr; - ZSTD_entropyDTables_t entropy; - U32 workspace[640]; - const void *previousDstEnd; - const void *prefixStart; - const void *virtualStart; - const void *dictEnd; - size_t expected; - ZSTD_frameHeader fParams; - U64 processedCSize; - U64 decodedSize; - blockType_e bType; - ZSTD_dStage stage; - U32 litEntropy; - U32 fseEntropy; - struct xxh64_state xxhState; - size_t headerSize; - ZSTD_format_e format; - ZSTD_forceIgnoreChecksum_e forceIgnoreChecksum; - U32 validateChecksum; - const BYTE *litPtr; - ZSTD_customMem customMem; - size_t litSize; - size_t rleSize; - size_t staticSize; - int bmi2; - ZSTD_DDict *ddictLocal; - const ZSTD_DDict *ddict; - U32 dictID; - int ddictIsCold; - ZSTD_dictUses_e dictUses; - ZSTD_DDictHashSet *ddictSet; - ZSTD_refMultipleDDicts_e refMultipleDDicts; - ZSTD_dStreamStage streamStage; - char *inBuff; - size_t inBuffSize; - size_t inPos; - size_t maxWindowSize; - char *outBuff; - size_t outBuffSize; - size_t outStart; - size_t outEnd; - size_t lhSize; - void *legacyContext; - U32 previousLegacyVersion; - U32 legacyVersion; - U32 hostageByte; - int noForwardProgress; - ZSTD_bufferMode_e outBufferMode; - ZSTD_outBuffer expectedOutBuffer; - BYTE litBuffer[131104]; - BYTE headerBuffer[18]; - size_t oversizedDuration; +enum tg_state_flags { + THROTL_TG_PENDING = 1, + THROTL_TG_WAS_EMPTY = 2, }; -typedef struct ZSTD_DCtx_s ZSTD_DCtx___2; +enum { + LIMIT_LOW = 0, + LIMIT_MAX = 1, + LIMIT_CNT = 2, +}; -struct ZSTD_DDict_s { - void *dictBuffer; - const void *dictContent; - size_t dictSize; - ZSTD_entropyDTables_t entropy; - U32 dictID; - U32 entropyPresent; - ZSTD_customMem cMem; +enum prio_policy { + POLICY_NO_CHANGE = 0, + POLICY_NONE_TO_RT = 1, + POLICY_RESTRICT_TO_BE = 2, + POLICY_ALL_TO_IDLE = 3, }; -typedef enum { - search_hashChain = 0, - search_binaryTree = 1, -} searchMethod_e; +struct ioprio_blkg { + struct blkg_policy_data pd; +}; -typedef size_t (*searchMax_f)(ZSTD_matchState_t *, const BYTE *, const BYTE *, size_t *); +struct ioprio_blkcg { + struct blkcg_policy_data cpd; + enum prio_policy prio_policy; +}; -typedef enum { - ZSTD_d_windowLogMax = 100, - ZSTD_d_experimentalParam1 = 1000, - ZSTD_d_experimentalParam2 = 1001, - ZSTD_d_experimentalParam3 = 1002, - ZSTD_d_experimentalParam4 = 1003, -} ZSTD_dParameter; +struct blk_ioprio { + struct rq_qos rqos; +}; -typedef ZSTD_DCtx___2 ZSTD_DStream___2; +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, +}; -typedef enum { - ZSTDnit_frameHeader = 0, - ZSTDnit_blockHeader = 1, - ZSTDnit_block = 2, - ZSTDnit_lastBlock = 3, - ZSTDnit_checksum = 4, - ZSTDnit_skippableFrame = 5, -} ZSTD_nextInputType_e; +enum { + 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, + AUTOP_CYCLE_NSEC = 1410065408, +}; -typedef struct { - size_t compressedSize; - long long unsigned int decompressedBound; -} ZSTD_frameSizeInfo; +enum { + RQ_WAIT_BUSY_PCT = 5, + UNBUSY_THR_PCT = 75, + MIN_DELAY_THR_PCT = 500, + MAX_DELAY_THR_PCT = 25000, + MIN_DELAY = 250, + MAX_DELAY = 250000, + DFGV_USAGE_PCT = 50, + DFGV_PERIOD = 100000, + MAX_LAGGING_PERIODS = 10, + IOC_PAGE_SHIFT = 12, + IOC_PAGE_SIZE = 4096, + IOC_SECT_TO_PAGE_SHIFT = 3, + LCOEF_RANDIO_PAGES = 4096, +}; -typedef struct { - blockType_e blockType; - U32 lastBlock; - U32 origSize; -} blockProperties_t; +enum ioc_running { + IOC_IDLE = 0, + IOC_RUNNING = 1, + IOC_STOP = 2, +}; -typedef struct { - U32 fastMode; - U32 tableLog; -} ZSTD_seqSymbol_header; +enum { + QOS_ENABLE = 0, + QOS_CTRL = 1, + NR_QOS_CTRL_PARAMS = 2, +}; -typedef struct { - size_t litLength; - size_t matchLength; - size_t offset; - const BYTE *match; -} seq_t; +enum { + QOS_RPPM = 0, + QOS_RLAT = 1, + QOS_WPPM = 2, + QOS_WLAT = 3, + QOS_MIN = 4, + QOS_MAX = 5, + NR_QOS_PARAMS = 6, +}; -typedef struct { - size_t state; - const ZSTD_seqSymbol *table; -} ZSTD_fseState; +enum { + COST_CTRL = 0, + COST_MODEL = 1, + NR_COST_CTRL_PARAMS = 2, +}; -typedef struct { - BIT_DStream_t DStream; - ZSTD_fseState stateLL; - ZSTD_fseState stateOffb; - ZSTD_fseState stateML; - size_t prevOffset[3]; - const BYTE *prefixStart; - const BYTE *dictEnd; - size_t pos; -} seqState_t; +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, +}; -typedef enum { - ZSTD_lo_isRegularOffset = 0, - ZSTD_lo_isLongOffset = 1, -} ZSTD_longOffset_e; +enum { + LCOEF_RPAGE = 0, + LCOEF_RSEQIO = 1, + LCOEF_RRANDIO = 2, + LCOEF_WPAGE = 3, + LCOEF_WSEQIO = 4, + LCOEF_WRANDIO = 5, + NR_LCOEFS = 6, +}; -typedef enum { - ZSTD_p_noPrefetch = 0, - ZSTD_p_prefetch = 1, -} ZSTD_prefetch_e; +enum { + AUTOP_INVALID = 0, + AUTOP_HDD = 1, + AUTOP_SSD_QD1 = 2, + AUTOP_SSD_DFL = 3, + AUTOP_SSD_FAST = 4, +}; -enum xz_mode { - XZ_SINGLE = 0, - XZ_PREALLOC = 1, - XZ_DYNALLOC = 2, +struct ioc_params { + u32 qos[6]; + u64 i_lcoefs[6]; + u64 lcoefs[6]; + u32 too_fast_vrate_pct; + u32 too_slow_vrate_pct; }; -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 ioc_margins { + s64 min; + s64 low; + s64 target; }; -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 ioc_missed { + local_t nr_met; + local_t nr_missed; + u32 last_met; + u32 last_missed; }; -typedef uint64_t vli_type; +struct ioc_pcpu_stat { + struct ioc_missed missed[2]; + local64_t rq_wait_ns; + u64 last_rq_wait_ns; +}; -enum xz_check { - XZ_CHECK_NONE = 0, - XZ_CHECK_CRC32 = 1, - XZ_CHECK_CRC64 = 4, - XZ_CHECK_SHA256 = 10, +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 xz_dec_hash { - vli_type unpadded; - vli_type uncompressed; - uint32_t crc32; +struct iocg_pcpu_stat { + local64_t abs_vusage; }; -struct xz_dec_lzma2; +struct iocg_stat { + u64 usage_us; + u64 wait_us; + u64 indebt_us; + u64 indelay_us; +}; -struct xz_dec_bcj; +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 xz_dec { - enum { - SEQ_STREAM_HEADER = 0, - SEQ_BLOCK_START = 1, - SEQ_BLOCK_HEADER = 2, - SEQ_BLOCK_UNCOMPRESS = 3, - SEQ_BLOCK_PADDING = 4, - SEQ_BLOCK_CHECK = 5, - SEQ_INDEX = 6, - SEQ_INDEX_PADDING = 7, - SEQ_INDEX_CRC32 = 8, - SEQ_STREAM_FOOTER = 9, - } sequence; - uint32_t pos; - vli_type vli; - size_t in_start; - size_t out_start; - uint32_t crc32; - enum xz_check check_type; - enum xz_mode mode; - bool allow_buf_error; - struct { - vli_type compressed; - vli_type uncompressed; - uint32_t size; - } block_header; - struct { - vli_type compressed; - vli_type uncompressed; - vli_type count; - struct xz_dec_hash hash; - } block; - struct { - enum { - SEQ_INDEX_COUNT = 0, - SEQ_INDEX_UNPADDED = 1, - SEQ_INDEX_UNCOMPRESSED = 2, - } sequence; - vli_type size; - vli_type count; - struct xz_dec_hash hash; - } index; - struct { - size_t pos; - size_t size; - uint8_t buf[1024]; - } temp; - struct xz_dec_lzma2 *lzma2; - struct xz_dec_bcj *bcj; - bool bcj_active; +struct ioc_cgrp { + struct blkcg_policy_data cpd; + unsigned int dfl_weight; }; -enum lzma_state { - STATE_LIT_LIT = 0, - STATE_MATCH_LIT_LIT = 1, - STATE_REP_LIT_LIT = 2, - STATE_SHORTREP_LIT_LIT = 3, - STATE_MATCH_LIT = 4, - STATE_REP_LIT = 5, - STATE_SHORTREP_LIT = 6, - STATE_LIT_MATCH = 7, - STATE_LIT_LONGREP = 8, - STATE_LIT_SHORTREP = 9, - STATE_NONLIT_MATCH = 10, - STATE_NONLIT_REP = 11, +struct ioc_now { + u64 now_ns; + u64 now; + u64 vnow; + u64 vrate; }; -struct dictionary { - uint8_t *buf; - size_t start; - size_t pos; - size_t full; - size_t limit; - size_t end; - uint32_t size; - uint32_t size_max; - uint32_t allocated; - enum xz_mode mode; +struct iocg_wait { + struct wait_queue_entry wait; + struct bio *bio; + u64 abs_cost; + bool committed; }; -struct rc_dec { - uint32_t range; - uint32_t code; - uint32_t init_bytes_left; - const uint8_t *in; - size_t in_pos; - size_t in_limit; +struct iocg_wake_ctx { + struct ioc_gq *iocg; + u32 hw_inuse; + s64 vbudget; }; -struct lzma_len_dec { - uint16_t choice; - uint16_t choice2; - uint16_t low[128]; - uint16_t mid[128]; - uint16_t high[256]; +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 lzma_dec { - uint32_t rep0; - uint32_t rep1; - uint32_t rep2; - uint32_t rep3; - enum lzma_state state; - uint32_t len; - uint32_t lc; - uint32_t literal_pos_mask; - uint32_t pos_mask; - uint16_t is_match[192]; - uint16_t is_rep[12]; - uint16_t is_rep0[12]; - uint16_t is_rep1[12]; - uint16_t is_rep2[12]; - uint16_t is_rep0_long[192]; - uint16_t dist_slot[256]; - uint16_t dist_special[114]; - uint16_t dist_align[16]; - struct lzma_len_dec match_len_dec; - struct lzma_len_dec rep_len_dec; - uint16_t literal[12288]; +struct 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]; }; -enum lzma2_seq { - SEQ_CONTROL = 0, - SEQ_UNCOMPRESSED_1 = 1, - SEQ_UNCOMPRESSED_2 = 2, - SEQ_COMPRESSED_0 = 3, - SEQ_COMPRESSED_1 = 4, - SEQ_PROPERTIES = 5, - SEQ_LZMA_PREPARE = 6, - SEQ_LZMA_RUN = 7, - SEQ_COPY = 8, +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 lzma2_dec { - enum lzma2_seq sequence; - enum lzma2_seq next_sequence; - uint32_t uncompressed; - uint32_t compressed; - bool need_dict_reset; - bool need_props; - bool pedantic_microlzma; +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 xz_dec_lzma2 { - struct rc_dec rc; - struct dictionary dict; - struct lzma2_dec lzma2; - struct lzma_dec lzma; - struct { - uint32_t size; - uint8_t buf[63]; - } temp; +struct trace_event_data_offsets_iocost_iocg_state { + u32 devname; + u32 cgroup; }; -struct xz_dec_microlzma { - struct xz_dec_lzma2 s; +struct trace_event_data_offsets_iocg_inuse_update { + u32 devname; + u32 cgroup; }; -struct xz_dec_bcj { - enum { - BCJ_X86 = 4, - BCJ_POWERPC = 5, - BCJ_IA64 = 6, - BCJ_ARM = 7, - BCJ_ARMTHUMB = 8, - BCJ_SPARC = 9, - } type; - enum xz_ret ret; - bool single_call; - uint32_t pos; - uint32_t x86_prev_mask; - uint8_t *out; - size_t out_pos; - size_t out_size; - struct { - size_t filtered; - size_t size; - uint8_t buf[16]; - } temp; +struct trace_event_data_offsets_iocost_ioc_vrate_adj { + u32 devname; }; -struct raid6_recov_calls { - void (*data2)(int, size_t, int, int, void **); - void (*datap)(int, size_t, int, void **); - int (*valid)(); - const char *name; - int priority; +struct trace_event_data_offsets_iocost_iocg_forgive_debt { + u32 devname; + u32 cgroup; }; -struct xz_dec_microlzma; +typedef void (*btf_trace_iocost_iocg_activate)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64); -struct xz_dec; +typedef void (*btf_trace_iocost_iocg_idle)(void *, struct ioc_gq *, const char *, struct ioc_now *, u64, u64, u64); -typedef u64 unative_t; +typedef void (*btf_trace_iocost_inuse_shortage)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); -typedef struct { - u8 _[256]; -} addrtype___4; +typedef void (*btf_trace_iocost_inuse_transfer)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); -typedef struct { - u8 _[128]; -} addrtype___5; +typedef void (*btf_trace_iocost_inuse_adjust)(void *, struct ioc_gq *, const char *, struct ioc_now *, u32, u32, u64, u64); -typedef s32 pcp_op_T_____9; +typedef void (*btf_trace_iocost_ioc_vrate_adj)(void *, struct ioc *, u64, u32 *, u32, int, int); -struct ts_state { - unsigned int offset; - char cb[48]; +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 ts_config; +enum { + DD_DIR_COUNT = 2, +}; -struct ts_ops { - const char *name; - struct ts_config * (*init)(const void *, unsigned int, gfp_t, int); - unsigned int (*find)(struct ts_config *, struct ts_state *); - void (*destroy)(struct ts_config *); - void * (*get_pattern)(struct ts_config *); - unsigned int (*get_pattern_len)(struct ts_config *); - struct module *owner; - struct list_head list; +enum dd_prio { + DD_RT_PRIO = 0, + DD_BE_PRIO = 1, + DD_IDLE_PRIO = 2, + DD_PRIO_MAX = 2, }; -struct ts_config { - struct ts_ops *ops; - int flags; - unsigned int (*get_next_block)(unsigned int, const u8 **, struct ts_config *, struct ts_state *); - void (*finish)(struct ts_config *, struct ts_state *); +enum { + DD_PRIO_COUNT = 3, }; -struct ts_linear_state { - unsigned int len; - const void *data; +struct io_stats_per_prio { + local_t inserted; + local_t merged; + local_t dispatched; + local_t completed; }; -struct ei_entry { - struct list_head list; - long unsigned int start_addr; - long unsigned int end_addr; - int etype; - void *priv; +struct io_stats { + struct io_stats_per_prio stats[3]; }; -struct nla_bitfield32 { - __u32 value; - __u32 selector; +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]; }; -enum nla_policy_validation { - NLA_VALIDATE_NONE = 0, - NLA_VALIDATE_RANGE = 1, - NLA_VALIDATE_RANGE_WARN_TOO_LONG = 2, - NLA_VALIDATE_MIN = 3, - NLA_VALIDATE_MAX = 4, - NLA_VALIDATE_MASK = 5, - NLA_VALIDATE_RANGE_PTR = 6, - NLA_VALIDATE_FUNCTION = 7, +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; }; -enum netlink_validation { - NL_VALIDATE_LIBERAL = 0, - NL_VALIDATE_TRAILING = 1, - NL_VALIDATE_MAXTYPE = 2, - NL_VALIDATE_UNSPEC = 4, - NL_VALIDATE_STRICT_ATTRS = 8, - NL_VALIDATE_NESTED = 16, +enum bip_flags { + BIP_BLOCK_INTEGRITY = 1, + BIP_MAPPED_INTEGRITY = 2, + BIP_CTRL_NOCHECK = 4, + BIP_DISK_NOCHECK = 8, + BIP_IP_CHECKSUM = 16, }; -struct cpu_rmap { - struct kref refcount; - u16 size; - u16 used; - void **obj; - struct { - u16 index; - u16 dist; - } near[0]; +enum blk_integrity_flags { + BLK_INTEGRITY_VERIFY = 1, + BLK_INTEGRITY_GENERATE = 2, + BLK_INTEGRITY_DEVICE_CAPABLE = 4, + BLK_INTEGRITY_IP_CHECKSUM = 8, }; -struct irq_glue { - struct irq_affinity_notify notify; - struct cpu_rmap *rmap; - u16 index; +struct integrity_sysfs_entry { + struct attribute attr; + ssize_t (*show)(struct blk_integrity *, char *); + ssize_t (*store)(struct blk_integrity *, const char *, size_t); }; -typedef mpi_limb_t *mpi_ptr_t; +enum t10_dif_type { + T10_PI_TYPE0_PROTECTION = 0, + T10_PI_TYPE1_PROTECTION = 1, + T10_PI_TYPE2_PROTECTION = 2, + T10_PI_TYPE3_PROTECTION = 3, +}; -typedef int mpi_size_t; +struct t10_pi_tuple { + __be16 guard_tag; + __be16 app_tag; + __be32 ref_tag; +}; -typedef mpi_limb_t UWtype; +typedef __be16 csum_fn(void *, unsigned int); -typedef unsigned int UHWtype; +struct virtio_device_id { + __u32 device; + __u32 vendor; +}; -enum gcry_mpi_constants { - MPI_C_ZERO = 0, - MPI_C_ONE = 1, - MPI_C_TWO = 2, - MPI_C_THREE = 3, - MPI_C_FOUR = 4, - MPI_C_EIGHT = 5, +struct virtio_device; + +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 barrett_ctx_s; +struct vringh_config_ops; -typedef struct barrett_ctx_s *mpi_barrett_t; +struct virtio_config_ops; -struct gcry_mpi_point { - MPI x; - MPI y; - MPI z; +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; }; -typedef struct gcry_mpi_point *MPI_POINT; +typedef void vq_callback_t(struct virtqueue *); -enum gcry_mpi_ec_models { - MPI_EC_WEIERSTRASS = 0, - MPI_EC_MONTGOMERY = 1, - MPI_EC_EDWARDS = 2, +struct virtio_shm_region; + +struct virtio_config_ops { + void (*get)(struct virtio_device *, unsigned int, void *, unsigned int); + void (*set)(struct virtio_device *, unsigned int, const void *, unsigned int); + u32 (*generation)(struct virtio_device *); + u8 (*get_status)(struct virtio_device *); + void (*set_status)(struct virtio_device *, u8); + void (*reset)(struct virtio_device *); + int (*find_vqs)(struct virtio_device *, unsigned int, struct virtqueue **, vq_callback_t **, const char * const *, const bool *, struct irq_affinity *); + void (*del_vqs)(struct virtio_device *); + 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 ecc_dialects { - ECC_DIALECT_STANDARD = 0, - ECC_DIALECT_ED25519 = 1, - ECC_DIALECT_SAFECURVE = 2, +struct virtio_shm_region { + u64 addr; + u64 len; }; -struct mpi_ec_ctx { - enum gcry_mpi_ec_models model; - enum ecc_dialects dialect; - int flags; - unsigned int nbits; - MPI p; - MPI a; - MPI b; - MPI_POINT G; - MPI n; - unsigned int h; - MPI_POINT Q; - MPI d; - const char *name; - struct { - struct { - unsigned int a_is_pminus3: 1; - unsigned int two_inv_p: 1; - } valid; - int a_is_pminus3; - MPI two_inv_p; - mpi_barrett_t p_barrett; - MPI scratch[11]; - } t; - void (*addm)(MPI, MPI, MPI, struct mpi_ec_ctx *); - void (*subm)(MPI, MPI, MPI, struct mpi_ec_ctx *); - void (*mulm)(MPI, MPI, MPI, struct mpi_ec_ctx *); - void (*pow2)(MPI, const MPI, struct mpi_ec_ctx *); - void (*mul2)(MPI, MPI, struct mpi_ec_ctx *); +struct irq_poll; + +typedef int irq_poll_fn(struct irq_poll *, int); + +struct irq_poll { + struct list_head list; + long unsigned int state; + int weight; + irq_poll_fn *poll; }; -struct field_table { - const char *p; - void (*addm)(MPI, MPI, MPI, struct mpi_ec_ctx *); - void (*subm)(MPI, MPI, MPI, struct mpi_ec_ctx *); - void (*mulm)(MPI, MPI, MPI, struct mpi_ec_ctx *); - void (*mul2)(MPI, MPI, struct mpi_ec_ctx *); - void (*pow2)(MPI, const MPI, struct mpi_ec_ctx *); +struct dim_sample { + ktime_t time; + u32 pkt_ctr; + u32 byte_ctr; + u16 event_ctr; + u32 comp_ctr; }; -struct ddebug_table { - struct list_head link; - const char *mod_name; - unsigned int num_ddebugs; - struct _ddebug *ddebugs; +struct dim_stats { + int ppms; + int bpms; + int epms; + int cpms; + int cpe_ratio; }; -struct ddebug_query { - const char *filename; - const char *module; - const char *function; - const char *format; - unsigned int first_lineno; - unsigned int last_lineno; +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 ddebug_iter { - struct ddebug_table *table; - unsigned int idx; +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 flag_settings { - unsigned int flags; - unsigned int mask; +enum rdma_nl_counter_mask { + RDMA_COUNTER_MASK_QP_TYPE = 1, + RDMA_COUNTER_MASK_PID = 2, }; -struct flagsbuf { - char buf[7]; +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, }; -enum gcry_mpi_format { - GCRYMPI_FMT_NONE = 0, - GCRYMPI_FMT_STD = 1, - GCRYMPI_FMT_PGP = 2, - GCRYMPI_FMT_SSH = 3, - GCRYMPI_FMT_HEX = 4, - GCRYMPI_FMT_USG = 5, - GCRYMPI_FMT_OPAQUE = 8, +struct 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 barrett_ctx_s; +struct rdma_link_ops { + struct list_head list; + const char *type; + int (*newlink)(const char *, struct net_device *); +}; -typedef struct barrett_ctx_s *mpi_barrett_t___2; +struct auto_mode_param { + int qp_type; +}; -struct barrett_ctx_s { - MPI m; - int m_copied; - int k; - MPI y; - MPI r1; - MPI r2; - MPI r3; +struct rdma_counter_mode { + enum rdma_nl_counter_mode mode; + enum rdma_nl_counter_mask mask; + struct auto_mode_param param; }; -struct karatsuba_ctx { - struct karatsuba_ctx *next; - mpi_ptr_t tspace; - mpi_size_t tspace_size; - mpi_ptr_t tp; - mpi_size_t tp_size; +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; }; -typedef long int mpi_limb_signed_t; +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]; +}; -enum dim_tune_state { - DIM_PARKING_ON_TOP = 0, - DIM_PARKING_TIRED = 1, - DIM_GOING_RIGHT = 2, - DIM_GOING_LEFT = 3, +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; + u32 port; }; -struct dim_cq_moder { - u16 usec; - u16 pkts; - u16 comps; - u8 cq_period_mode; +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, }; -enum dim_cq_period_mode { - DIM_CQ_PERIOD_MODE_START_FROM_EQE = 0, - DIM_CQ_PERIOD_MODE_START_FROM_CQE = 1, - DIM_CQ_PERIOD_NUM_MODES = 2, +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, }; -enum dim_state { - DIM_START_MEASURE = 0, - DIM_MEASURE_IN_PROGRESS = 1, - DIM_APPLY_NEW_PROFILE = 2, +struct ib_mad; + +enum rdma_link_layer { + IB_LINK_LAYER_UNSPECIFIED = 0, + IB_LINK_LAYER_INFINIBAND = 1, + IB_LINK_LAYER_ETHERNET = 2, }; -enum dim_stats_state { - DIM_STATS_WORSE = 0, - DIM_STATS_SAME = 1, - DIM_STATS_BETTER = 2, +enum rdma_netdev_t { + RDMA_NETDEV_OPA_VNIC = 0, + RDMA_NETDEV_IPOIB = 1, }; -enum dim_step_result { - DIM_STEPPED = 0, - DIM_TOO_TIRED = 1, - DIM_ON_EDGE = 2, +enum ib_srq_attr_mask { + IB_SRQ_MAX_WR = 1, + IB_SRQ_LIMIT = 2, }; -struct word_at_a_time { - const long unsigned int high_bits; - const long unsigned int low_bits; +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 sg_pool { - size_t size; - char *name; - struct kmem_cache *slab; - mempool_t *pool; +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, }; -enum { - IRQ_POLL_F_SCHED = 0, - IRQ_POLL_F_DISABLE = 1, -}; +struct uverbs_attr_bundle; -union handle_parts { - depot_stack_handle_t handle; - struct { - u32 slabindex: 21; - u32 offset: 10; - u32 valid: 1; - }; -}; +struct rdma_cm_id; -struct stack_record { - struct stack_record *next; - u32 hash; - u32 size; - union handle_parts handle; - long unsigned int entries[0]; -}; +struct iw_cm_id; -struct font_desc { - int idx; - const char *name; - unsigned int width; - unsigned int height; - unsigned int charcount; - const void *data; - int pref; -}; +struct iw_cm_conn_param; -enum pubkey_algo { - PUBKEY_ALGO_RSA = 0, - PUBKEY_ALGO_MAX = 1, -}; +struct ib_qp; -struct pubkey_hdr { - uint8_t version; - uint32_t timestamp; - uint8_t algo; - uint8_t nmpi; - char mpi[0]; -} __attribute__((packed)); +struct ib_send_wr; -struct signature_hdr { - uint8_t version; - uint32_t timestamp; - uint8_t algo; - uint8_t hash; - uint8_t keyid[8]; - uint8_t nmpi; - char mpi[0]; -} __attribute__((packed)); +struct ib_recv_wr; -struct font_data { - unsigned int extra[4]; - const unsigned char data[0]; -}; +struct ib_cq; -struct warn_args; +struct ib_wc; -struct compress_format { - unsigned char magic[2]; - const char *name; - decompress_fn decompressor; -}; +struct ib_srq; -struct group_data { - int limit[21]; - int base[20]; - int permute[258]; - int minLen; - int maxLen; -}; +struct ib_grh; -struct bunzip_data { - int writeCopies; - int writePos; - int writeRunCountdown; - int writeCount; - int writeCurrent; - long int (*fill)(void *, long unsigned int); - long int inbufCount; - long int inbufPos; - unsigned char *inbuf; - unsigned int inbufBitCount; - unsigned int inbufBits; - unsigned int crc32Table[256]; - unsigned int headerCRC; - unsigned int totalCRC; - unsigned int writeCRC; - unsigned int *dbuf; - unsigned int dbufSize; - unsigned char selectors[32768]; - struct group_data groups[6]; - int io_error; - int byteCount[256]; - unsigned char symToByte[256]; - unsigned char mtfSymbol[256]; -}; +struct ib_device_attr; -struct rc { - long int (*fill)(void *, long unsigned int); - uint8_t *ptr; - uint8_t *buffer; - uint8_t *buffer_end; - long int buffer_size; - uint32_t code; - uint32_t range; - uint32_t bound; - void (*error)(char *); -}; +struct ib_udata; -struct lzma_header { - uint8_t pos; - uint32_t dict_size; - uint64_t dst_size; -} __attribute__((packed)); +struct ib_device_modify; -struct writer { - uint8_t *buffer; - uint8_t previous_byte; - size_t buffer_pos; - int bufsize; - size_t global_pos; - long int (*flush)(void *, long unsigned int); - struct lzma_header *header; -}; +struct ib_port_attr; -struct cstate { - int state; - uint32_t rep0; - uint32_t rep1; - uint32_t rep2; - uint32_t rep3; -}; +struct ib_port_modify; -struct cpio_data { - void *data; - size_t size; - char name[18]; -}; +struct ib_port_immutable; -enum cpio_fields { - C_MAGIC = 0, - C_INO = 1, - C_MODE = 2, - C_UID = 3, - C_GID = 4, - C_NLINK = 5, - C_MTIME = 6, - C_FILESIZE = 7, - C_MAJ = 8, - C_MIN = 9, - C_RMAJ = 10, - C_RMIN = 11, - C_NAMESIZE = 12, - C_CHKSUM = 13, - C_NFIELDS = 14, -}; +struct rdma_netdev_alloc_params; -struct fprop_local_single { - long unsigned int events; - unsigned int period; - raw_spinlock_t lock; -}; +union ib_gid; -struct ida_bitmap { - long unsigned int bitmap[16]; -}; +struct ib_gid_attr; -struct klist_waiter { - struct list_head list; - struct klist_node *node; - struct task_struct *process; - int woken; -}; +struct ib_ucontext; -enum { - LOGIC_PIO_INDIRECT = 0, - LOGIC_PIO_CPU_MMIO = 1, -}; +struct rdma_user_mmap_entry; -struct logic_pio_host_ops; +struct ib_pd; -struct logic_pio_hwaddr { - struct list_head list; - struct fwnode_handle *fwnode; - resource_size_t hw_start; - resource_size_t io_start; - resource_size_t size; - long unsigned int flags; - void *hostdata; - const struct logic_pio_host_ops *ops; -}; +struct ib_ah; -struct logic_pio_host_ops { - u32 (*in)(void *, long unsigned int, size_t); - void (*out)(void *, long unsigned int, u32, size_t); - u32 (*ins)(void *, long unsigned int, void *, size_t, unsigned int); - void (*outs)(void *, long unsigned int, const void *, size_t, unsigned int); -}; +struct rdma_ah_init_attr; -struct uevent_sock { - struct list_head list; - struct sock *sk; -}; +struct rdma_ah_attr; -typedef struct { - long unsigned int key[2]; -} hsiphash_key_t; +struct ib_srq_init_attr; -struct minmax_sample { - u32 t; - u32 v; -}; +struct ib_srq_attr; -struct minmax { - struct minmax_sample s[3]; -}; +struct ib_qp_init_attr; -struct s390_insn; +struct ib_qp_attr; -struct spin_wait { - struct spin_wait *next; - struct spin_wait *prev; - int node_id; - long: 32; - long: 64; -}; +struct ib_cq_init_attr; -enum device_link_state { - DL_STATE_NONE = 4294967295, - DL_STATE_DORMANT = 0, - DL_STATE_AVAILABLE = 1, - DL_STATE_CONSUMER_PROBE = 2, - DL_STATE_ACTIVE = 3, - DL_STATE_SUPPLIER_UNBIND = 4, -}; +struct ib_mr; -struct device_link { - struct device *supplier; - struct list_head s_node; - struct device *consumer; - struct list_head c_node; - struct device link_dev; - enum device_link_state status; - u32 flags; - refcount_t rpm_active; - struct kref kref; - struct work_struct rm_work; - bool supplier_preactivated; -}; +struct ib_sge; -struct phy_configure_opts_dp { - unsigned int link_rate; - unsigned int lanes; - unsigned int voltage[4]; - unsigned int pre[4]; - u8 ssc: 1; - u8 set_rate: 1; - u8 set_lanes: 1; - u8 set_voltages: 1; -}; - -struct phy_configure_opts_mipi_dphy { - unsigned int clk_miss; - unsigned int clk_post; - unsigned int clk_pre; - unsigned int clk_prepare; - unsigned int clk_settle; - unsigned int clk_term_en; - unsigned int clk_trail; - unsigned int clk_zero; - unsigned int d_term_en; - unsigned int eot; - unsigned int hs_exit; - unsigned int hs_prepare; - unsigned int hs_settle; - unsigned int hs_skip; - unsigned int hs_trail; - unsigned int hs_zero; - unsigned int init; - unsigned int lpx; - unsigned int ta_get; - unsigned int ta_go; - unsigned int ta_sure; - unsigned int wakeup; - long unsigned int hs_clk_rate; - long unsigned int lp_clk_rate; - unsigned char lanes; -}; - -enum phy_mode { - PHY_MODE_INVALID = 0, - PHY_MODE_USB_HOST = 1, - PHY_MODE_USB_HOST_LS = 2, - PHY_MODE_USB_HOST_FS = 3, - PHY_MODE_USB_HOST_HS = 4, - PHY_MODE_USB_HOST_SS = 5, - PHY_MODE_USB_DEVICE = 6, - PHY_MODE_USB_DEVICE_LS = 7, - PHY_MODE_USB_DEVICE_FS = 8, - PHY_MODE_USB_DEVICE_HS = 9, - PHY_MODE_USB_DEVICE_SS = 10, - PHY_MODE_USB_OTG = 11, - PHY_MODE_UFS_HS_A = 12, - PHY_MODE_UFS_HS_B = 13, - PHY_MODE_PCIE = 14, - PHY_MODE_ETHERNET = 15, - PHY_MODE_MIPI_DPHY = 16, - PHY_MODE_SATA = 17, - PHY_MODE_LVDS = 18, - PHY_MODE_DP = 19, -}; - -enum phy_media { - PHY_MEDIA_DEFAULT = 0, - PHY_MEDIA_SR = 1, - PHY_MEDIA_DAC = 2, -}; - -union phy_configure_opts { - struct phy_configure_opts_mipi_dphy mipi_dphy; - struct phy_configure_opts_dp dp; -}; - -struct phy; - -struct phy_ops { - int (*init)(struct phy *); - int (*exit)(struct phy *); - int (*power_on)(struct phy *); - int (*power_off)(struct phy *); - int (*set_mode)(struct phy *, enum phy_mode, int); - int (*set_media)(struct phy *, enum phy_media); - int (*set_speed)(struct phy *, int); - int (*configure)(struct phy *, union phy_configure_opts *); - int (*validate)(struct phy *, enum phy_mode, int, union phy_configure_opts *); - int (*reset)(struct phy *); - int (*calibrate)(struct phy *); - void (*release)(struct phy *); - struct module *owner; -}; +struct ib_mr_status; -struct phy_attrs { - u32 bus_width; - u32 max_link_rate; - enum phy_mode mode; -}; +struct ib_mw; -struct regulator; +struct ib_xrcd; -struct phy { - struct device dev; - int id; - const struct phy_ops *ops; - struct mutex mutex; - int init_count; - int power_count; - struct phy_attrs attrs; - struct regulator *pwr; -}; +struct ib_flow; -struct phy_provider { - struct device *dev; - struct device_node *children; - struct module *owner; - struct list_head list; - struct phy * (*of_xlate)(struct device *, struct of_phandle_args *); -}; +struct ib_flow_attr; -struct phy_lookup { - struct list_head node; - const char *dev_id; - const char *con_id; - struct phy *phy; -}; +struct ib_flow_action; -struct clk_core; +struct ib_flow_action_attrs_esp; -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 ib_wq; -enum format_type { - FORMAT_TYPE_NONE = 0, - FORMAT_TYPE_WIDTH = 1, - FORMAT_TYPE_PRECISION = 2, - FORMAT_TYPE_CHAR = 3, - FORMAT_TYPE_STR = 4, - FORMAT_TYPE_PTR = 5, - FORMAT_TYPE_PERCENT_CHAR = 6, - FORMAT_TYPE_INVALID = 7, - FORMAT_TYPE_LONG_LONG = 8, - FORMAT_TYPE_ULONG = 9, - FORMAT_TYPE_LONG = 10, - FORMAT_TYPE_UBYTE = 11, - FORMAT_TYPE_BYTE = 12, - FORMAT_TYPE_USHORT = 13, - FORMAT_TYPE_SHORT = 14, - FORMAT_TYPE_UINT = 15, - FORMAT_TYPE_INT = 16, - FORMAT_TYPE_SIZE_T = 17, - FORMAT_TYPE_PTRDIFF = 18, -}; +struct ib_wq_init_attr; -struct printf_spec { - unsigned int type: 8; - int field_width: 24; - unsigned int flags: 8; - unsigned int base: 8; - int precision: 16; -}; +struct ib_wq_attr; -struct page_flags_fields { - int width; - int shift; - int mask; - const struct printf_spec *spec; - const char *name; -}; +struct ib_rwq_ind_table; -struct pci_bus_resource { - struct list_head list; - struct resource *res; - unsigned int flags; -}; +struct ib_rwq_ind_table_init_attr; -typedef u64 pci_bus_addr_t; +struct ib_dm; -struct pci_bus_region { - pci_bus_addr_t start; - pci_bus_addr_t end; -}; +struct ib_dm_alloc_attr; -enum pci_fixup_pass { - pci_fixup_early = 0, - pci_fixup_header = 1, - pci_fixup_final = 2, - pci_fixup_enable = 3, - pci_fixup_resume = 4, - pci_fixup_suspend = 5, - pci_fixup_resume_early = 6, - pci_fixup_suspend_late = 7, -}; +struct ib_dm_mr_attr; -enum pci_dev_flags { - PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = 1, - PCI_DEV_FLAGS_NO_D3 = 2, - PCI_DEV_FLAGS_ASSIGNED = 4, - PCI_DEV_FLAGS_ACS_ENABLED_QUIRK = 8, - PCI_DEV_FLAG_PCIE_BRIDGE_ALIAS = 32, - PCI_DEV_FLAGS_NO_BUS_RESET = 64, - PCI_DEV_FLAGS_NO_PM_RESET = 128, - PCI_DEV_FLAGS_VPD_REF_F0 = 256, - PCI_DEV_FLAGS_BRIDGE_XLATE_ROOT = 512, - PCI_DEV_FLAGS_NO_FLR_RESET = 1024, - PCI_DEV_FLAGS_NO_RELAXED_ORDERING = 2048, - PCI_DEV_FLAGS_HAS_MSI_MASKING = 4096, -}; +struct ib_counters; -enum pci_bus_flags { - PCI_BUS_FLAGS_NO_MSI = 1, - PCI_BUS_FLAGS_NO_MMRBC = 2, - PCI_BUS_FLAGS_NO_AERSID = 4, - PCI_BUS_FLAGS_NO_EXTCFG = 8, +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 pci_host_bridge { +struct ib_core_device { struct device dev; - struct pci_bus *bus; - struct pci_ops *ops; - struct pci_ops *child_ops; - void *sysdata; - int busnr; - int domain_nr; - struct list_head windows; - struct list_head dma_ranges; - u8 (*swizzle_irq)(struct pci_dev *, u8 *); - int (*map_irq)(const struct pci_dev *, u8, u8); - void (*release_fn)(struct pci_host_bridge *); - void *release_data; - unsigned int ignore_reset_delay: 1; - unsigned int no_ext_tags: 1; - unsigned int native_aer: 1; - unsigned int native_pcie_hotplug: 1; - unsigned int native_shpc_hotplug: 1; - unsigned int native_pme: 1; - unsigned int native_ltr: 1; - unsigned int native_dpc: 1; - unsigned int 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long unsigned int private[0]; -}; - -enum { - PCI_REASSIGN_ALL_RSRC = 1, - PCI_REASSIGN_ALL_BUS = 2, - PCI_PROBE_ONLY = 4, - PCI_CAN_SKIP_ISA_ALIGN = 8, - PCI_ENABLE_PROC_DOMAINS = 16, - PCI_COMPAT_DOMAIN_0 = 32, - PCI_SCAN_ALL_PCIE_DEVS = 64, -}; - -enum 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, + possible_net_t rdma_net; + struct kobject *ports_kobj; + struct list_head port_list; + struct ib_device *owner; }; -enum pci_bar_type { - pci_bar_unknown = 0, - pci_bar_io = 1, - pci_bar_mem32 = 2, - pci_bar_mem64 = 3, +enum ib_atomic_cap { + IB_ATOMIC_NONE = 0, + IB_ATOMIC_HCA = 1, + IB_ATOMIC_GLOB = 2, }; -struct pci_domain_busn_res { - struct list_head list; - struct resource res; - int domain_nr; +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 dmi_strmatch { - unsigned char slot: 7; - unsigned char exact_match: 1; - char substr[79]; +struct ib_rss_caps { + u32 supported_qpts; + u32 max_rwq_indirection_tables; + u32 max_rwq_indirection_table_size; }; -struct dmi_system_id { - int (*callback)(const struct dmi_system_id *); - const char *ident; - struct dmi_strmatch matches[4]; - void *driver_data; +struct ib_tm_caps { + u32 max_rndv_hdr_size; + u32 max_num_tags; + u32 flags; + u32 max_ops; + u32 max_sge; }; -struct bus_attribute { - struct attribute attr; - ssize_t (*show)(struct bus_type *, char *); - ssize_t (*store)(struct bus_type *, const char *, size_t); +struct ib_cq_caps { + u16 max_cq_moderation_count; + u16 max_cq_moderation_period; }; -enum pcie_reset_state { - pcie_deassert_reset = 1, - pcie_warm_reset = 2, - pcie_hot_reset = 3, +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 pcie_link_width { - PCIE_LNK_WIDTH_RESRV = 0, - PCIE_LNK_X1 = 1, - PCIE_LNK_X2 = 2, - PCIE_LNK_X4 = 4, - PCIE_LNK_X8 = 8, - PCIE_LNK_X12 = 12, - PCIE_LNK_X16 = 16, - PCIE_LNK_X32 = 32, - PCIE_LNK_WIDTH_UNKNOWN = 255, -}; +struct hw_stats_device_data; -typedef int (*arch_set_vga_state_t)(struct pci_dev *, bool, unsigned int, u32); +struct rdma_restrack_root; -struct pci_cap_saved_data { - u16 cap_nr; - bool cap_extended; - unsigned int size; - u32 data[0]; -}; +struct uapi_definition; -struct pci_cap_saved_state { - struct hlist_node next; - struct pci_cap_saved_data cap; -}; +struct ib_port_data; -struct pci_reset_fn_method { - int (*reset_fn)(struct pci_dev *, bool); - char *name; +struct ib_device { + struct device *dma_device; + struct ib_device_ops ops; + char name[64]; + struct callback_head callback_head; + struct list_head event_handler_list; + struct rw_semaphore event_handler_rwsem; + spinlock_t qp_open_list_lock; + struct rw_semaphore client_data_rwsem; + struct xarray client_data; + struct mutex unregistration_lock; + rwlock_t cache_lock; + struct ib_port_data *port_data; + int num_comp_vectors; + union { + struct device dev; + struct ib_core_device coredev; + }; + const struct attribute_group *groups[4]; + u64 uverbs_cmd_mask; + char node_desc[64]; + __be64 node_guid; + u32 local_dma_lkey; + u16 is_switch: 1; + u16 kverbs_provider: 1; + u16 use_cq_dim: 1; + u8 node_type; + u32 phys_port_cnt; + struct ib_device_attr attrs; + struct hw_stats_device_data *hw_stats_data; + 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 pci_pme_device { - struct list_head list; - struct pci_dev *dev; +enum ib_signature_type { + IB_SIG_TYPE_NONE = 0, + IB_SIG_TYPE_T10_DIF = 1, }; -struct pci_saved_state { - u32 config_space[16]; - struct pci_cap_saved_data cap[0]; +enum ib_t10_dif_bg_type { + IB_T10DIF_CRC = 0, + IB_T10DIF_CSUM = 1, }; -struct pci_devres { - unsigned int enabled: 1; - unsigned int pinned: 1; - unsigned int orig_intx: 1; - unsigned int restore_intx: 1; - unsigned int mwi: 1; - u32 region_mask; +struct 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 driver_attribute { - struct attribute attr; - ssize_t (*show)(struct device_driver *, char *); - ssize_t (*store)(struct device_driver *, const char *, size_t); +struct ib_sig_domain { + enum ib_signature_type sig_type; + union { + struct ib_t10_dif_domain dif; + } sig; }; -enum dev_dma_attr { - DEV_DMA_NOT_SUPPORTED = 0, - DEV_DMA_NON_COHERENT = 1, - DEV_DMA_COHERENT = 2, +struct ib_sig_attrs { + u8 check_mask; + struct ib_sig_domain mem; + struct ib_sig_domain wire; + int meta_length; }; -struct pcie_device { - int irq; - struct pci_dev *port; - u32 service; - void *priv_data; - struct device device; +enum ib_sig_err_type { + IB_SIG_BAD_GUARD = 0, + IB_SIG_BAD_REFTAG = 1, + IB_SIG_BAD_APPTAG = 2, }; -struct pcie_port_service_driver { - const char *name; - int (*probe)(struct pcie_device *); - void (*remove)(struct pcie_device *); - int (*suspend)(struct pcie_device *); - int (*resume_noirq)(struct pcie_device *); - int (*resume)(struct pcie_device *); - int (*runtime_suspend)(struct pcie_device *); - int (*runtime_resume)(struct pcie_device *); - int (*slot_reset)(struct pcie_device *); - int port_type; - u32 service; - struct device_driver driver; +struct ib_sig_err { + enum ib_sig_err_type err_type; + u32 expected; + u32 actual; + u64 sig_err_offset; + u32 key; }; -struct pci_dynid { - struct list_head node; - struct pci_device_id id; +enum ib_uverbs_flow_action_esp_keymat { + IB_UVERBS_FLOW_ACTION_ESP_KEYMAT_AES_GCM = 0, }; -struct drv_dev_and_id { - struct pci_driver *drv; - struct pci_dev *dev; - const struct pci_device_id *id; +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 acpi_device; - -struct pci_dev_resource { - struct list_head list; - struct resource *res; - struct pci_dev *dev; - resource_size_t start; - resource_size_t end; - resource_size_t add_size; - resource_size_t min_align; - long unsigned int flags; +enum ib_uverbs_flow_action_esp_replay { + IB_UVERBS_FLOW_ACTION_ESP_REPLAY_NONE = 0, + IB_UVERBS_FLOW_ACTION_ESP_REPLAY_BMP = 1, }; -enum release_type { - leaf_only = 0, - whole_subtree = 1, +struct ib_uverbs_flow_action_esp_replay_bmp { + __u32 size; }; -enum enable_type { - undefined = 4294967295, - user_disabled = 0, - auto_disabled = 1, - user_enabled = 2, - auto_enabled = 3, +union ib_gid { + u8 raw[16]; + struct { + __be64 subnet_prefix; + __be64 interface_id; + } global; }; -struct msix_entry { - u32 vector; - u16 entry; +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 portdrv_service_data { - struct pcie_port_service_driver *drv; - struct device *dev; - u32 service; +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 int (*pcie_callback_t)(struct pcie_device *); - -struct walk_rcec_data { - struct pci_dev *rcec; - int (*user_callback)(struct pci_dev *, void *); - void *user_data; +struct ib_cq_init_attr { + unsigned int cqe; + u32 comp_vector; + u32 flags; }; -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 ib_dm_mr_attr { + u64 length; + u64 offset; + u32 access_flags; }; -struct pcie_link_state { - struct pci_dev *pdev; - struct pci_dev *downstream; - struct pcie_link_state *root; - struct pcie_link_state *parent; - struct list_head sibling; - u32 aspm_support: 7; - u32 aspm_enabled: 7; - u32 aspm_capable: 7; - u32 aspm_default: 7; - char: 4; - u32 aspm_disable: 7; - u32 clkpm_capable: 1; - u32 clkpm_enabled: 1; - u32 clkpm_default: 1; - u32 clkpm_disable: 1; +struct ib_dm_alloc_attr { + u64 length; + u32 alignment; + u32 flags; }; -struct aer_stats { - u64 dev_cor_errs[16]; - u64 dev_fatal_errs[27]; - u64 dev_nonfatal_errs[27]; - u64 dev_total_cor_errs; - u64 dev_total_fatal_errs; - u64 dev_total_nonfatal_errs; - u64 rootport_total_cor_errs; - u64 rootport_total_fatal_errs; - u64 rootport_total_nonfatal_errs; +enum ib_mtu { + IB_MTU_256 = 1, + IB_MTU_512 = 2, + IB_MTU_1024 = 3, + IB_MTU_2048 = 4, + IB_MTU_4096 = 5, }; -struct aer_header_log_regs { - unsigned int dw0; - unsigned int dw1; - unsigned int dw2; - unsigned int dw3; +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 aer_err_info { - struct pci_dev *dev[5]; - int error_dev_num; - unsigned int id: 16; - unsigned int severity: 2; - unsigned int __pad1: 5; - unsigned int multi_error_valid: 1; - unsigned int first_error: 5; - unsigned int __pad2: 2; - unsigned int tlp_header_valid: 1; - unsigned int status; - unsigned int mask; - struct aer_header_log_regs tlp; +struct 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 aer_err_source { - unsigned int status; - unsigned int id; +struct ib_device_modify { + u64 sys_image_guid; + char node_desc[64]; }; -struct aer_rpc { - struct pci_dev *rpd; - struct { - union { - struct __kfifo kfifo; - struct aer_err_source *type; - const struct aer_err_source *const_type; - char (*rectype)[0]; - struct aer_err_source *ptr; - const struct aer_err_source *ptr_const; - }; - struct aer_err_source buf[128]; - } aer_fifo; +struct ib_port_modify { + u32 set_port_cap_mask; + u32 clr_port_cap_mask; + u8 init_type; }; -struct pci_slot_attribute { - struct attribute attr; - ssize_t (*show)(struct pci_slot *, char *); - ssize_t (*store)(struct pci_slot *, const char *, size_t); +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 slot { - u8 number; - unsigned int devfn; - struct pci_bus *bus; - struct pci_dev *dev; - unsigned int latch_status: 1; - unsigned int adapter_status: 1; - unsigned int extracting; - struct hotplug_slot hotplug_slot; - struct list_head slot_list; -}; +struct ib_ucq_object; -struct cpci_hp_controller_ops { - int (*query_enum)(); - int (*enable_irq)(); - int (*disable_irq)(); - int (*check_irq)(void *); - int (*hardware_test)(struct slot *, u32); - u8 (*get_power)(struct slot *); - int (*set_power)(struct slot *, int); -}; +typedef void (*ib_comp_handler)(struct ib_cq *, void *); -struct cpci_hp_controller { - unsigned int irq; - long unsigned int irq_flags; - char *devname; - void *dev_id; - char *name; - struct cpci_hp_controller_ops *ops; -}; +struct ib_event; -struct controller { - struct pcie_device *pcie; - u32 slot_cap; - unsigned int inband_presence_disabled: 1; - u16 slot_ctrl; - struct mutex ctrl_lock; - long unsigned int cmd_started; - unsigned int cmd_busy: 1; - wait_queue_head_t queue; - atomic_t pending_events; - unsigned int notification_enabled: 1; - unsigned int power_fault_detected; - struct task_struct *poll_thread; - u8 state; - struct mutex state_lock; - 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; +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 pci_fixup { - u16 vendor; - u16 device; - u32 class; - unsigned int class_shift; - void (*hook)(struct pci_dev *); -}; +struct ib_uqp_object; -enum con_scroll { - SM_UP = 0, - SM_DOWN = 1, +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 vc_intensity { - VCI_HALF_BRIGHT = 0, - VCI_NORMAL = 1, - VCI_BOLD = 2, - VCI_MASK = 3, -}; +struct ib_qp_security; -struct vc_data; +struct ib_qp { + struct ib_device *device; + struct ib_pd *pd; + struct ib_cq *send_cq; + struct ib_cq *recv_cq; + spinlock_t mr_lock; + int mrs_used; + struct list_head rdma_mrs; + struct list_head sig_mrs; + struct ib_srq *srq; + struct ib_xrcd *xrcd; + struct list_head xrcd_list; + atomic_t usecnt; + struct list_head open_list; + struct ib_qp *real_qp; + struct ib_uqp_object *uobject; + void (*event_handler)(struct ib_event *, void *); + void *qp_context; + const struct ib_gid_attr *av_sgid_attr; + const struct ib_gid_attr *alt_path_sgid_attr; + u32 qp_num; + u32 max_write_sge; + u32 max_read_sge; + enum ib_qp_type qp_type; + struct ib_rwq_ind_table *rwq_ind_tbl; + struct ib_qp_security *qp_sec; + u32 port; + bool integrity_en; + struct rdma_restrack_entry res; + struct rdma_counter *counter; +}; -struct console_font; +struct ib_usrq_object; -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 *); +enum ib_srq_type { + IB_SRQT_BASIC = 0, + IB_SRQT_XRC = 1, + IB_SRQT_TM = 2, }; -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 ib_srq { + struct ib_device *device; + struct ib_pd *pd; + struct ib_usrq_object *uobject; + void (*event_handler)(struct ib_event *, void *); + void *srq_context; + enum ib_srq_type srq_type; + atomic_t usecnt; + struct { + struct ib_cq *cq; + union { + struct { + struct ib_xrcd *xrcd; + u32 srq_num; + } xrc; + }; + } ext; + struct rdma_restrack_entry res; }; -struct console_font { - unsigned int width; - unsigned int height; - unsigned int charcount; - unsigned char *data; -}; +struct ib_uwq_object; -struct vt_mode { - char mode; - char waitv; - short int relsig; - short int acqsig; - short int frsig; +enum ib_wq_state { + IB_WQS_RESET = 0, + IB_WQS_RDY = 1, + IB_WQS_ERR = 2, }; -struct uni_pagedir; +enum ib_wq_type { + IB_WQT_RQ = 0, +}; -struct uni_screen; +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 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 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; }; -enum hdmi_infoframe_type { - HDMI_INFOFRAME_TYPE_VENDOR = 129, - HDMI_INFOFRAME_TYPE_AVI = 130, - HDMI_INFOFRAME_TYPE_SPD = 131, - HDMI_INFOFRAME_TYPE_AUDIO = 132, - HDMI_INFOFRAME_TYPE_DRM = 135, +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 hdmi_any_infoframe { - enum hdmi_infoframe_type type; - unsigned char version; - unsigned char length; +struct ib_grh { + __be32 version_tclass_flow; + __be16 paylen; + u8 next_hdr; + u8 hop_limit; + union ib_gid sgid; + union ib_gid dgid; }; -enum hdmi_colorspace { - HDMI_COLORSPACE_RGB = 0, - HDMI_COLORSPACE_YUV422 = 1, - HDMI_COLORSPACE_YUV444 = 2, - HDMI_COLORSPACE_YUV420 = 3, - HDMI_COLORSPACE_RESERVED4 = 4, - HDMI_COLORSPACE_RESERVED5 = 5, - HDMI_COLORSPACE_RESERVED6 = 6, - HDMI_COLORSPACE_IDO_DEFINED = 7, +struct ib_mr_status { + u32 fail_status; + struct ib_sig_err sig_err; }; -enum hdmi_scan_mode { - HDMI_SCAN_MODE_NONE = 0, - HDMI_SCAN_MODE_OVERSCAN = 1, - HDMI_SCAN_MODE_UNDERSCAN = 2, - HDMI_SCAN_MODE_RESERVED = 3, +struct rdma_ah_init_attr { + struct rdma_ah_attr *ah_attr; + u32 flags; + struct net_device *xmit_slave; }; -enum hdmi_colorimetry { - HDMI_COLORIMETRY_NONE = 0, - HDMI_COLORIMETRY_ITU_601 = 1, - HDMI_COLORIMETRY_ITU_709 = 2, - HDMI_COLORIMETRY_EXTENDED = 3, +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, }; -enum hdmi_picture_aspect { - HDMI_PICTURE_ASPECT_NONE = 0, - HDMI_PICTURE_ASPECT_4_3 = 1, - HDMI_PICTURE_ASPECT_16_9 = 2, - HDMI_PICTURE_ASPECT_64_27 = 3, - HDMI_PICTURE_ASPECT_256_135 = 4, - HDMI_PICTURE_ASPECT_RESERVED = 5, +struct ib_ah_attr { + u16 dlid; + u8 src_path_bits; }; -enum hdmi_active_aspect { - HDMI_ACTIVE_ASPECT_16_9_TOP = 2, - HDMI_ACTIVE_ASPECT_14_9_TOP = 3, - HDMI_ACTIVE_ASPECT_16_9_CENTER = 4, - HDMI_ACTIVE_ASPECT_PICTURE = 8, - HDMI_ACTIVE_ASPECT_4_3 = 9, - HDMI_ACTIVE_ASPECT_16_9 = 10, - HDMI_ACTIVE_ASPECT_14_9 = 11, - HDMI_ACTIVE_ASPECT_4_3_SP_14_9 = 13, - HDMI_ACTIVE_ASPECT_16_9_SP_14_9 = 14, - HDMI_ACTIVE_ASPECT_16_9_SP_4_3 = 15, +struct roce_ah_attr { + u8 dmac[6]; }; -enum hdmi_extended_colorimetry { - HDMI_EXTENDED_COLORIMETRY_XV_YCC_601 = 0, - HDMI_EXTENDED_COLORIMETRY_XV_YCC_709 = 1, - HDMI_EXTENDED_COLORIMETRY_S_YCC_601 = 2, - HDMI_EXTENDED_COLORIMETRY_OPYCC_601 = 3, - HDMI_EXTENDED_COLORIMETRY_OPRGB = 4, - HDMI_EXTENDED_COLORIMETRY_BT2020_CONST_LUM = 5, - HDMI_EXTENDED_COLORIMETRY_BT2020 = 6, - HDMI_EXTENDED_COLORIMETRY_RESERVED = 7, +struct opa_ah_attr { + u32 dlid; + u8 src_path_bits; + bool make_grd; }; -enum hdmi_quantization_range { - HDMI_QUANTIZATION_RANGE_DEFAULT = 0, - HDMI_QUANTIZATION_RANGE_LIMITED = 1, - HDMI_QUANTIZATION_RANGE_FULL = 2, - HDMI_QUANTIZATION_RANGE_RESERVED = 3, +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; + }; }; -enum hdmi_nups { - HDMI_NUPS_UNKNOWN = 0, - HDMI_NUPS_HORIZONTAL = 1, - HDMI_NUPS_VERTICAL = 2, - HDMI_NUPS_BOTH = 3, +enum ib_wc_status { + IB_WC_SUCCESS = 0, + IB_WC_LOC_LEN_ERR = 1, + IB_WC_LOC_QP_OP_ERR = 2, + IB_WC_LOC_EEC_OP_ERR = 3, + IB_WC_LOC_PROT_ERR = 4, + IB_WC_WR_FLUSH_ERR = 5, + IB_WC_MW_BIND_ERR = 6, + IB_WC_BAD_RESP_ERR = 7, + IB_WC_LOC_ACCESS_ERR = 8, + IB_WC_REM_INV_REQ_ERR = 9, + IB_WC_REM_ACCESS_ERR = 10, + IB_WC_REM_OP_ERR = 11, + IB_WC_RETRY_EXC_ERR = 12, + IB_WC_RNR_RETRY_EXC_ERR = 13, + IB_WC_LOC_RDD_VIOL_ERR = 14, + IB_WC_REM_INV_RD_REQ_ERR = 15, + IB_WC_REM_ABORT_ERR = 16, + IB_WC_INV_EECN_ERR = 17, + IB_WC_INV_EEC_STATE_ERR = 18, + IB_WC_FATAL_ERR = 19, + IB_WC_RESP_TIMEOUT_ERR = 20, + IB_WC_GENERAL_ERR = 21, }; -enum hdmi_ycc_quantization_range { - HDMI_YCC_QUANTIZATION_RANGE_LIMITED = 0, - HDMI_YCC_QUANTIZATION_RANGE_FULL = 1, +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, }; -enum hdmi_content_type { - HDMI_CONTENT_TYPE_GRAPHICS = 0, - HDMI_CONTENT_TYPE_PHOTO = 1, - HDMI_CONTENT_TYPE_CINEMA = 2, - HDMI_CONTENT_TYPE_GAME = 3, +struct ib_cqe { + void (*done)(struct ib_cq *, struct ib_wc *); }; -enum hdmi_metadata_type { - HDMI_STATIC_METADATA_TYPE1 = 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; }; -enum hdmi_eotf { - HDMI_EOTF_TRADITIONAL_GAMMA_SDR = 0, - HDMI_EOTF_TRADITIONAL_GAMMA_HDR = 1, - HDMI_EOTF_SMPTE_ST2084 = 2, - HDMI_EOTF_BT_2100_HLG = 3, +struct ib_srq_attr { + u32 max_wr; + u32 max_sge; + u32 srq_limit; }; -struct hdmi_avi_infoframe { - enum hdmi_infoframe_type type; - unsigned char version; - unsigned char length; - enum hdmi_colorspace colorspace; - enum hdmi_scan_mode scan_mode; - enum hdmi_colorimetry colorimetry; - enum hdmi_picture_aspect picture_aspect; - enum hdmi_active_aspect active_aspect; - bool itc; - enum hdmi_extended_colorimetry extended_colorimetry; - enum hdmi_quantization_range quantization_range; - enum hdmi_nups nups; - unsigned char video_code; - enum hdmi_ycc_quantization_range ycc_quantization_range; - enum hdmi_content_type content_type; - unsigned char pixel_repeat; - short unsigned int top_bar; - short unsigned int bottom_bar; - short unsigned int left_bar; - short unsigned int right_bar; +struct ib_xrcd { + struct ib_device *device; + atomic_t usecnt; + struct inode *inode; + struct rw_semaphore tgt_qps_rwsem; + struct xarray tgt_qps; }; -struct hdmi_drm_infoframe { - enum hdmi_infoframe_type type; - unsigned char version; - unsigned char length; - enum hdmi_eotf eotf; - enum hdmi_metadata_type metadata_type; - struct { - u16 x; - u16 y; - } display_primaries[3]; +struct 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 { - u16 x; - u16 y; - } white_point; - u16 max_display_mastering_luminance; - u16 min_display_mastering_luminance; - u16 max_cll; - u16 max_fall; + struct ib_cq *cq; + union { + struct { + struct ib_xrcd *xrcd; + } xrc; + struct { + u32 max_num_tags; + } tag_matching; + }; + } ext; }; -enum hdmi_spd_sdi { - HDMI_SPD_SDI_UNKNOWN = 0, - HDMI_SPD_SDI_DSTB = 1, - HDMI_SPD_SDI_DVDP = 2, - HDMI_SPD_SDI_DVHS = 3, - HDMI_SPD_SDI_HDDVR = 4, - HDMI_SPD_SDI_DVC = 5, - HDMI_SPD_SDI_DSC = 6, - HDMI_SPD_SDI_VCD = 7, - HDMI_SPD_SDI_GAME = 8, - HDMI_SPD_SDI_PC = 9, - HDMI_SPD_SDI_BD = 10, - HDMI_SPD_SDI_SACD = 11, - HDMI_SPD_SDI_HDDVD = 12, - HDMI_SPD_SDI_PMP = 13, +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 hdmi_spd_infoframe { - enum hdmi_infoframe_type type; - unsigned char version; - unsigned char length; - char vendor[8]; - char product[16]; - enum hdmi_spd_sdi sdi; +enum ib_sig_type { + IB_SIGNAL_ALL_WR = 0, + IB_SIGNAL_REQ_WR = 1, }; -enum hdmi_audio_coding_type { - HDMI_AUDIO_CODING_TYPE_STREAM = 0, - HDMI_AUDIO_CODING_TYPE_PCM = 1, - HDMI_AUDIO_CODING_TYPE_AC3 = 2, - HDMI_AUDIO_CODING_TYPE_MPEG1 = 3, - HDMI_AUDIO_CODING_TYPE_MP3 = 4, - HDMI_AUDIO_CODING_TYPE_MPEG2 = 5, - HDMI_AUDIO_CODING_TYPE_AAC_LC = 6, - HDMI_AUDIO_CODING_TYPE_DTS = 7, - HDMI_AUDIO_CODING_TYPE_ATRAC = 8, - HDMI_AUDIO_CODING_TYPE_DSD = 9, - HDMI_AUDIO_CODING_TYPE_EAC3 = 10, - HDMI_AUDIO_CODING_TYPE_DTS_HD = 11, - HDMI_AUDIO_CODING_TYPE_MLP = 12, - HDMI_AUDIO_CODING_TYPE_DST = 13, - HDMI_AUDIO_CODING_TYPE_WMA_PRO = 14, - HDMI_AUDIO_CODING_TYPE_CXT = 15, +struct ib_qp_init_attr { + void (*event_handler)(struct ib_event *, void *); + void *qp_context; + struct ib_cq *send_cq; + struct ib_cq *recv_cq; + struct ib_srq *srq; + struct ib_xrcd *xrcd; + struct ib_qp_cap cap; + enum ib_sig_type sq_sig_type; + enum ib_qp_type qp_type; + u32 create_flags; + u32 port_num; + struct ib_rwq_ind_table *rwq_ind_tbl; + u32 source_qpn; }; -enum hdmi_audio_sample_size { - HDMI_AUDIO_SAMPLE_SIZE_STREAM = 0, - HDMI_AUDIO_SAMPLE_SIZE_16 = 1, - HDMI_AUDIO_SAMPLE_SIZE_20 = 2, - HDMI_AUDIO_SAMPLE_SIZE_24 = 3, +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; }; -enum hdmi_audio_sample_frequency { - HDMI_AUDIO_SAMPLE_FREQUENCY_STREAM = 0, - HDMI_AUDIO_SAMPLE_FREQUENCY_32000 = 1, - HDMI_AUDIO_SAMPLE_FREQUENCY_44100 = 2, - HDMI_AUDIO_SAMPLE_FREQUENCY_48000 = 3, - HDMI_AUDIO_SAMPLE_FREQUENCY_88200 = 4, - HDMI_AUDIO_SAMPLE_FREQUENCY_96000 = 5, - HDMI_AUDIO_SAMPLE_FREQUENCY_176400 = 6, - HDMI_AUDIO_SAMPLE_FREQUENCY_192000 = 7, +enum ib_qp_state { + IB_QPS_RESET = 0, + IB_QPS_INIT = 1, + IB_QPS_RTR = 2, + IB_QPS_RTS = 3, + IB_QPS_SQD = 4, + IB_QPS_SQE = 5, + IB_QPS_ERR = 6, }; -enum hdmi_audio_coding_type_ext { - HDMI_AUDIO_CODING_TYPE_EXT_CT = 0, - HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC = 1, - HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC_V2 = 2, - HDMI_AUDIO_CODING_TYPE_EXT_MPEG_SURROUND = 3, - HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC = 4, - HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_V2 = 5, - HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC = 6, - HDMI_AUDIO_CODING_TYPE_EXT_DRA = 7, - HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_SURROUND = 8, - HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC_SURROUND = 10, +enum ib_mig_state { + IB_MIG_MIGRATED = 0, + IB_MIG_REARM = 1, + IB_MIG_ARMED = 2, }; -struct hdmi_audio_infoframe { - enum hdmi_infoframe_type type; - unsigned char version; - unsigned char length; - unsigned char channels; - enum hdmi_audio_coding_type coding_type; - enum hdmi_audio_sample_size sample_size; - enum hdmi_audio_sample_frequency sample_frequency; - enum hdmi_audio_coding_type_ext coding_type_ext; - unsigned char channel_allocation; - unsigned char level_shift_value; - bool downmix_inhibit; +enum ib_mw_type { + IB_MW_TYPE_1 = 1, + IB_MW_TYPE_2 = 2, }; -enum hdmi_3d_structure { - HDMI_3D_STRUCTURE_INVALID = 4294967295, - HDMI_3D_STRUCTURE_FRAME_PACKING = 0, - HDMI_3D_STRUCTURE_FIELD_ALTERNATIVE = 1, - HDMI_3D_STRUCTURE_LINE_ALTERNATIVE = 2, - HDMI_3D_STRUCTURE_SIDE_BY_SIDE_FULL = 3, - HDMI_3D_STRUCTURE_L_DEPTH = 4, - HDMI_3D_STRUCTURE_L_DEPTH_GFX_GFX_DEPTH = 5, - HDMI_3D_STRUCTURE_TOP_AND_BOTTOM = 6, - HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF = 8, +struct ib_qp_attr { + enum ib_qp_state qp_state; + enum ib_qp_state cur_qp_state; + enum ib_mtu path_mtu; + enum ib_mig_state path_mig_state; + u32 qkey; + u32 rq_psn; + u32 sq_psn; + u32 dest_qp_num; + int qp_access_flags; + struct ib_qp_cap cap; + struct rdma_ah_attr ah_attr; + struct rdma_ah_attr alt_ah_attr; + u16 pkey_index; + u16 alt_pkey_index; + u8 en_sqd_async_notify; + u8 sq_draining; + u8 max_rd_atomic; + u8 max_dest_rd_atomic; + u8 min_rnr_timer; + u32 port_num; + u8 timeout; + u8 retry_cnt; + u8 rnr_retry; + u32 alt_port_num; + u8 alt_timeout; + u32 rate_limit; + struct net_device *xmit_slave; }; -struct hdmi_vendor_infoframe { - enum hdmi_infoframe_type type; - unsigned char version; - unsigned char length; - unsigned int oui; - u8 vic; - enum hdmi_3d_structure s3d_struct; - unsigned int s3d_ext_data; +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, }; -union hdmi_vendor_any_infoframe { - struct { - enum hdmi_infoframe_type type; - unsigned char version; - unsigned char length; - unsigned int oui; - } any; - struct hdmi_vendor_infoframe hdmi; +struct ib_sge { + u64 addr; + u32 length; + u32 lkey; }; -union hdmi_infoframe { - struct hdmi_any_infoframe any; - struct hdmi_avi_infoframe avi; - struct hdmi_spd_infoframe spd; - union hdmi_vendor_any_infoframe vendor; - struct hdmi_audio_infoframe audio; - struct hdmi_drm_infoframe drm; +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 linux_logo { - int type; - unsigned int width; - unsigned int height; - unsigned int clutsize; - const unsigned char *clut; - const unsigned char *data; +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 fb_fix_screeninfo { - char id[16]; - long unsigned int smem_start; - __u32 smem_len; - __u32 type; - __u32 type_aux; - __u32 visual; - __u16 xpanstep; - __u16 ypanstep; - __u16 ywrapstep; - __u32 line_length; - long unsigned int mmio_start; - __u32 mmio_len; - __u32 accel; - __u16 capabilities; - __u16 reserved[2]; +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 fb_bitfield { - __u32 offset; - __u32 length; - __u32 msb_right; +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 fb_var_screeninfo { - __u32 xres; - __u32 yres; - __u32 xres_virtual; - __u32 yres_virtual; - __u32 xoffset; - __u32 yoffset; - __u32 bits_per_pixel; - __u32 grayscale; - struct fb_bitfield red; - struct fb_bitfield green; - struct fb_bitfield blue; - struct fb_bitfield transp; - __u32 nonstd; - __u32 activate; - __u32 height; - __u32 width; - __u32 accel_flags; - __u32 pixclock; - __u32 left_margin; - __u32 right_margin; - __u32 upper_margin; - __u32 lower_margin; - __u32 hsync_len; - __u32 vsync_len; - __u32 sync; - __u32 vmode; - __u32 rotate; - __u32 colorspace; - __u32 reserved[4]; +struct ib_rdmacg_object { + struct rdma_cgroup *cg; }; -struct fb_cmap { - __u32 start; - __u32 len; - __u16 *red; - __u16 *green; - __u16 *blue; - __u16 *transp; +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; }; -enum { - FB_BLANK_UNBLANK = 0, - FB_BLANK_NORMAL = 1, - FB_BLANK_VSYNC_SUSPEND = 2, - FB_BLANK_HSYNC_SUSPEND = 3, - FB_BLANK_POWERDOWN = 4, +struct uverbs_api_object; + +struct ib_uobject { + u64 user_handle; + struct ib_uverbs_file *ufile; + struct ib_ucontext *context; + void *object; + struct list_head list; + struct ib_rdmacg_object cg_obj; + int id; + struct kref ref; + atomic_t usecnt; + struct callback_head rcu; + const struct uverbs_api_object *uapi_object; }; -struct fb_copyarea { - __u32 dx; - __u32 dy; - __u32 width; - __u32 height; - __u32 sx; - __u32 sy; +struct ib_udata { + const void *inbuf; + void *outbuf; + size_t inlen; + size_t outlen; }; -struct fb_fillrect { - __u32 dx; - __u32 dy; - __u32 width; - __u32 height; - __u32 color; - __u32 rop; +struct ib_pd { + u32 local_dma_lkey; + u32 flags; + struct ib_device *device; + struct ib_uobject *uobject; + atomic_t usecnt; + u32 unsafe_global_rkey; + struct ib_mr *__internal_mr; + struct rdma_restrack_entry res; }; -struct fb_image { - __u32 dx; - __u32 dy; - __u32 width; - __u32 height; - __u32 fg_color; - __u32 bg_color; - __u8 depth; - const char *data; - struct fb_cmap cmap; +struct 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 fbcurpos { - __u16 x; - __u16 y; +struct ib_wq_attr { + enum ib_wq_state wq_state; + enum ib_wq_state curr_wq_state; + u32 flags; + u32 flags_mask; }; -struct fb_cursor { - __u16 set; - __u16 enable; - __u16 rop; - const char *mask; - struct fbcurpos hot; - struct fb_image image; +struct ib_rwq_ind_table_init_attr { + u32 log_ind_tbl_size; + struct ib_wq **ind_tbl; }; -struct fb_chroma { - __u32 redx; - __u32 greenx; - __u32 bluex; - __u32 whitex; - __u32 redy; - __u32 greeny; - __u32 bluey; - __u32 whitey; +enum port_pkey_state { + IB_PORT_PKEY_NOT_VALID = 0, + IB_PORT_PKEY_VALID = 1, + IB_PORT_PKEY_LISTED = 2, }; -struct fb_videomode; - -struct fb_monspecs { - struct fb_chroma chroma; - struct fb_videomode *modedb; - __u8 manufacturer[4]; - __u8 monitor[14]; - __u8 serial_no[14]; - __u8 ascii[14]; - __u32 modedb_len; - __u32 model; - __u32 serial; - __u32 year; - __u32 week; - __u32 hfmin; - __u32 hfmax; - __u32 dclkmin; - __u32 dclkmax; - __u16 input; - __u16 dpms; - __u16 signal; - __u16 vfmin; - __u16 vfmax; - __u16 gamma; - __u16 gtf: 1; - __u16 misc; - __u8 version; - __u8 revision; - __u8 max_x; - __u8 max_y; +struct ib_port_pkey { + enum port_pkey_state state; + u16 pkey_index; + u32 port_num; + struct list_head qp_list; + struct list_head to_error_list; + struct ib_qp_security *sec; }; -struct fb_info; +struct ib_ports_pkeys; -struct fb_pixmap { - u8 *addr; - u32 size; - u32 offset; - u32 buf_align; - u32 scan_align; - u32 access_align; - u32 flags; - u32 blit_x; - u32 blit_y; - void (*writeio)(struct fb_info *, void *, void *, unsigned int); - void (*readio)(struct fb_info *, void *, void *, unsigned int); +struct 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 fb_deferred_io; - -struct fb_ops; - -struct fb_tile_ops; - -struct apertures_struct; +struct ib_ports_pkeys { + struct ib_port_pkey main; + struct ib_port_pkey alt; +}; -struct fb_info { - refcount_t count; - int node; - int flags; - int fbcon_rotate_hint; - struct mutex lock; - struct mutex mm_lock; - struct fb_var_screeninfo var; - struct fb_fix_screeninfo fix; - struct fb_monspecs monspecs; - struct work_struct queue; - struct fb_pixmap pixmap; - struct fb_pixmap sprite; - struct fb_cmap cmap; - struct list_head modelist; - struct fb_videomode *mode; - struct delayed_work deferred_work; - struct fb_deferred_io *fbdefio; - const struct fb_ops *fbops; - struct device *device; - struct device *dev; - int class_flag; - struct fb_tile_ops *tileops; - union { - char *screen_base; - char *screen_buffer; - }; - long unsigned int screen_size; - void *pseudo_palette; - u32 state; - void *fbcon_par; - void *par; - struct apertures_struct *apertures; - bool skip_vt_switch; - bool forced_out; +struct ib_dm { + struct ib_device *device; + u32 length; + u32 flags; + struct ib_uobject *uobject; + atomic_t usecnt; }; -struct fb_videomode { - const char *name; - u32 refresh; - u32 xres; - u32 yres; - u32 pixclock; - u32 left_margin; - u32 right_margin; - u32 upper_margin; - u32 lower_margin; - u32 hsync_len; - u32 vsync_len; - u32 sync; - u32 vmode; - u32 flag; +struct ib_mw { + struct ib_device *device; + struct ib_pd *pd; + struct ib_uobject *uobject; + u32 rkey; + enum ib_mw_type type; }; -struct fb_cmap_user { - __u32 start; - __u32 len; - __u16 *red; - __u16 *green; - __u16 *blue; - __u16 *transp; +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 fb_event { - struct fb_info *info; - void *data; +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 fb_blit_caps { - u32 x; - u32 y; - u32 len; - u32 flags; +struct ib_flow_eth_filter { + u8 dst_mac[6]; + u8 src_mac[6]; + __be16 ether_type; + __be16 vlan_tag; + u8 real_sz[0]; }; -struct fb_deferred_io { - long unsigned int delay; - bool sort_pagelist; - struct mutex lock; - struct list_head pagelist; - void (*first_io)(struct fb_info *); - void (*deferred_io)(struct fb_info *, struct list_head *); +struct ib_flow_spec_eth { + u32 type; + u16 size; + struct ib_flow_eth_filter val; + struct ib_flow_eth_filter mask; }; -struct fb_ops { - struct module *owner; - int (*fb_open)(struct fb_info *, int); - int (*fb_release)(struct fb_info *, int); - ssize_t (*fb_read)(struct fb_info *, char *, size_t, loff_t *); - ssize_t (*fb_write)(struct fb_info *, const char *, size_t, loff_t *); - int (*fb_check_var)(struct fb_var_screeninfo *, struct fb_info *); - int (*fb_set_par)(struct fb_info *); - int (*fb_setcolreg)(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, struct fb_info *); - int (*fb_setcmap)(struct fb_cmap *, struct fb_info *); - int (*fb_blank)(int, struct fb_info *); - int (*fb_pan_display)(struct fb_var_screeninfo *, struct fb_info *); - void (*fb_fillrect)(struct fb_info *, const struct fb_fillrect *); - void (*fb_copyarea)(struct fb_info *, const struct fb_copyarea *); - void (*fb_imageblit)(struct fb_info *, const struct fb_image *); - int (*fb_cursor)(struct fb_info *, struct fb_cursor *); - int (*fb_sync)(struct fb_info *); - int (*fb_ioctl)(struct fb_info *, unsigned int, long unsigned int); - int (*fb_compat_ioctl)(struct fb_info *, unsigned int, long unsigned int); - int (*fb_mmap)(struct fb_info *, struct vm_area_struct *); - void (*fb_get_caps)(struct fb_info *, struct fb_blit_caps *, struct fb_var_screeninfo *); - void (*fb_destroy)(struct fb_info *); - int (*fb_debug_enter)(struct fb_info *); - int (*fb_debug_leave)(struct fb_info *); +struct ib_flow_ib_filter { + __be16 dlid; + __u8 sl; + u8 real_sz[0]; }; -struct fb_tilemap { - __u32 width; - __u32 height; - __u32 depth; - __u32 length; - const __u8 *data; +struct ib_flow_spec_ib { + u32 type; + u16 size; + struct ib_flow_ib_filter val; + struct ib_flow_ib_filter mask; }; -struct fb_tilerect { - __u32 sx; - __u32 sy; - __u32 width; - __u32 height; - __u32 index; - __u32 fg; - __u32 bg; - __u32 rop; +struct ib_flow_ipv4_filter { + __be32 src_ip; + __be32 dst_ip; + u8 proto; + u8 tos; + u8 ttl; + u8 flags; + u8 real_sz[0]; }; -struct fb_tilearea { - __u32 sx; - __u32 sy; - __u32 dx; - __u32 dy; - __u32 width; - __u32 height; +struct ib_flow_spec_ipv4 { + u32 type; + u16 size; + struct ib_flow_ipv4_filter val; + struct ib_flow_ipv4_filter mask; }; -struct fb_tileblit { - __u32 sx; - __u32 sy; - __u32 width; - __u32 height; - __u32 fg; - __u32 bg; - __u32 length; - __u32 *indices; +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 fb_tilecursor { - __u32 sx; - __u32 sy; - __u32 mode; - __u32 shape; - __u32 fg; - __u32 bg; +struct ib_flow_spec_ipv6 { + u32 type; + u16 size; + struct ib_flow_ipv6_filter val; + struct ib_flow_ipv6_filter mask; }; -struct fb_tile_ops { - void (*fb_settile)(struct fb_info *, struct fb_tilemap *); - void (*fb_tilecopy)(struct fb_info *, struct fb_tilearea *); - void (*fb_tilefill)(struct fb_info *, struct fb_tilerect *); - void (*fb_tileblit)(struct fb_info *, struct fb_tileblit *); - void (*fb_tilecursor)(struct fb_info *, struct fb_tilecursor *); - int (*fb_get_tilemax)(struct fb_info *); +struct ib_flow_tcp_udp_filter { + __be16 dst_port; + __be16 src_port; + u8 real_sz[0]; }; -struct aperture { - resource_size_t base; - resource_size_t size; +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 apertures_struct { - unsigned int count; - struct aperture ranges[0]; +struct ib_flow_tunnel_filter { + __be32 tunnel_id; + u8 real_sz[0]; }; -struct fb_modelist { - struct list_head list; - struct fb_videomode mode; +struct ib_flow_spec_tunnel { + u32 type; + u16 size; + struct ib_flow_tunnel_filter val; + struct ib_flow_tunnel_filter mask; }; -struct logo_data { - int depth; - int needs_directpalette; - int needs_truepalette; - int needs_cmapreset; - const struct linux_logo *logo; +struct ib_flow_esp_filter { + __be32 spi; + __be32 seq; + u8 real_sz[0]; }; -struct fb_fix_screeninfo32 { - char id[16]; - compat_caddr_t smem_start; - u32 smem_len; +struct ib_flow_spec_esp { u32 type; - u32 type_aux; - u32 visual; - u16 xpanstep; - u16 ypanstep; - u16 ywrapstep; - u32 line_length; - compat_caddr_t mmio_start; - u32 mmio_len; - u32 accel; - u16 reserved[3]; + u16 size; + struct ib_flow_esp_filter val; + struct ib_flow_esp_filter mask; }; -struct fb_cmap32 { - u32 start; - u32 len; - compat_caddr_t red; - compat_caddr_t green; - compat_caddr_t blue; - compat_caddr_t transp; +struct ib_flow_gre_filter { + __be16 c_ks_res0_ver; + __be16 protocol; + __be32 key; + u8 real_sz[0]; }; -typedef unsigned int u_int; +struct ib_flow_spec_gre { + u32 type; + u16 size; + struct ib_flow_gre_filter val; + struct ib_flow_gre_filter mask; +}; -struct fb_cvt_data { - u32 xres; - u32 yres; - u32 refresh; - u32 f_refresh; - u32 pixclock; - u32 hperiod; - u32 hblank; - u32 hfreq; - u32 htotal; - u32 vtotal; - u32 vsync; - u32 hsync; - u32 h_front_porch; - u32 h_back_porch; - u32 v_front_porch; - u32 v_back_porch; - u32 h_margin; - u32 v_margin; - u32 interlace; - u32 aspect_ratio; - u32 active_pixels; - u32 flags; - u32 status; +struct ib_flow_mpls_filter { + __be32 tag; + u8 real_sz[0]; }; -typedef unsigned char u_char; +struct ib_flow_spec_mpls { + u32 type; + u16 size; + struct ib_flow_mpls_filter val; + struct ib_flow_mpls_filter mask; +}; -typedef short unsigned int u_short; +struct ib_flow_spec_action_tag { + enum ib_flow_spec_type type; + u16 size; + u32 tag_id; +}; -struct fb_con2fbmap { - __u32 console; - __u32 framebuffer; +struct ib_flow_spec_action_drop { + enum ib_flow_spec_type type; + u16 size; }; -struct vc { - struct vc_data *d; - struct work_struct SAK_work; +struct ib_flow_spec_action_handle { + enum ib_flow_spec_type type; + u16 size; + struct ib_flow_action *act; }; -struct fbcon_display { - const u_char *fontdata; - int userfont; - u_short inverse; - short int yscroll; - int vrows; - int cursor_shape; - int con_rotate; - u32 xres_virtual; - u32 yres_virtual; - u32 height; - u32 width; - u32 bits_per_pixel; - u32 grayscale; - u32 nonstd; - u32 accel_flags; - u32 rotate; - struct fb_bitfield red; - struct fb_bitfield green; - struct fb_bitfield blue; - struct fb_bitfield transp; - const struct fb_videomode *mode; +enum ib_flow_action_type { + IB_FLOW_ACTION_UNSPECIFIED = 0, + IB_FLOW_ACTION_ESP = 1, }; -struct fbcon_ops { - void (*bmove)(struct vc_data *, struct fb_info *, int, int, int, int, int, int); - void (*clear)(struct vc_data *, struct fb_info *, int, int, int, int); - void (*putcs)(struct vc_data *, struct fb_info *, const short unsigned int *, int, int, int, int, int); - void (*clear_margins)(struct vc_data *, struct fb_info *, int, int); - void (*cursor)(struct vc_data *, struct fb_info *, int, int, int); - int (*update_start)(struct fb_info *); - int (*rotate_font)(struct fb_info *, struct vc_data *); - struct fb_var_screeninfo var; - struct timer_list cursor_timer; - struct fb_cursor cursor_state; - struct fbcon_display *p; - struct fb_info *info; - int currcon; - int cur_blink_jiffies; - int cursor_flash; - int cursor_reset; - int blank_state; - int graphics; - int save_graphics; - int flags; - int rotate; - int cur_rotate; - char *cursor_data; - u8 *fontbuffer; - u8 *fontdata; - u8 *cursor_src; - u32 cursor_size; - u32 fd_size; +struct ib_flow_action { + struct ib_device *device; + struct ib_uobject *uobject; + enum ib_flow_action_type type; + atomic_t usecnt; }; -enum { - FBCON_LOGO_CANSHOW = 4294967295, - FBCON_LOGO_DRAW = 4294967294, - FBCON_LOGO_DONTSHOW = 4294967293, +struct ib_flow_spec_action_count { + enum ib_flow_spec_type type; + u16 size; + struct ib_counters *counters; }; -struct software_node { - const char *name; - const struct software_node *parent; - const struct property_entry *properties; +struct ib_counters { + struct ib_device *device; + struct ib_uobject *uobject; + atomic_t usecnt; }; -enum ipmi_addr_src { - SI_INVALID = 0, - SI_HOTMOD = 1, - SI_HARDCODED = 2, - SI_SPMI = 3, - SI_ACPI = 4, - SI_SMBIOS = 5, - SI_PCI = 6, - SI_DEVICETREE = 7, - SI_PLATFORM = 8, - SI_LAST = 9, +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; }; -enum ipmi_plat_interface_type { - IPMI_PLAT_IF_SI = 0, - IPMI_PLAT_IF_SSIF = 1, +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 ipmi_plat_data { - enum ipmi_plat_interface_type iftype; - unsigned int type; - unsigned int space; - long unsigned int addr; - unsigned int regspacing; - unsigned int regsize; - unsigned int regshift; - unsigned int irq; - unsigned int slave_addr; - enum ipmi_addr_src addr_source; +struct ib_flow { + struct ib_qp *qp; + struct ib_device *device; + struct ib_uobject *uobject; }; -enum si_type { - SI_TYPE_INVALID = 0, - SI_KCS = 1, - SI_SMIC = 2, - SI_BT = 3, - SI_TYPE_MAX = 4, +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; }; -enum ipmi_addr_space { - IPMI_IO_ADDR_SPACE = 0, - IPMI_MEM_ADDR_SPACE = 1, +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 clk_bulk_data { - const char *id; - struct clk *clk; +struct ib_flow_spec_list { + struct ib_flow_spec_list *next; + union ib_flow_spec spec; }; -struct clk_bulk_devres { - struct clk_bulk_data *clks; - int num_clks; +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 clk_hw; - -struct clk_lookup { - struct list_head node; - const char *dev_id; - const char *con_id; - struct clk *clk; - struct clk_hw *clk_hw; -}; +struct ib_pkey_cache; -struct clk_init_data; +struct ib_gid_table; -struct clk_hw { - struct clk_core *core; - struct clk *clk; - const struct clk_init_data *init; +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 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 ib_port_immutable { + int pkey_tbl_len; + int gid_tbl_len; + u32 core_cap_flags; + u32 max_mad_size; }; -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 ib_port; -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 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 clk_lookup_alloc { - struct clk_lookup cl; - char dev_id[20]; - char con_id[16]; +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 clk_div_table { - unsigned int val; - unsigned int div; +struct ib_counters_read_attr { + u64 *counters_buff; + u32 ncounters; + u32 flags; }; -struct clk_divider { - struct clk_hw hw; - void *reg; - u8 shift; - u8 width; - u8 flags; - const struct clk_div_table *table; - spinlock_t *lock; +struct rdma_user_mmap_entry { + struct kref ref; + struct ib_ucontext *ucontext; + long unsigned int start_pgoff; + size_t npages; + bool driver_removed; }; -struct clk_fixed_factor { - struct clk_hw hw; - unsigned int mult; - unsigned int div; +enum blk_zone_type { + BLK_ZONE_TYPE_CONVENTIONAL = 1, + BLK_ZONE_TYPE_SEQWRITE_REQ = 2, + BLK_ZONE_TYPE_SEQWRITE_PREF = 3, }; -struct clk_fixed_rate { - struct clk_hw hw; - long unsigned int fixed_rate; - long unsigned int fixed_accuracy; - long unsigned int flags; +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 clk_gate { - struct clk_hw hw; - void *reg; - u8 bit_idx; - u8 flags; - spinlock_t *lock; +enum blk_zone_report_flags { + BLK_ZONE_REP_CAPACITY = 1, }; -struct clk_multiplier { - struct clk_hw hw; - void *reg; - u8 shift; - u8 width; - u8 flags; - spinlock_t *lock; +struct blk_zone_report { + __u64 sector; + __u32 nr_zones; + __u32 flags; + struct blk_zone zones[0]; }; -struct clk_notifier { - struct clk *clk; - struct srcu_notifier_head notifier_head; - struct list_head node; +struct blk_zone_range { + __u64 sector; + __u64 nr_sectors; }; -struct clk_notifier_data { - struct clk *clk; - long unsigned int old_rate; - long unsigned int new_rate; +struct zone_report_args { + struct blk_zone *zones; }; -struct clk_parent_map; - -struct clk_core { - const char *name; - const struct clk_ops *ops; - struct clk_hw *hw; - struct module *owner; - struct device *dev; - struct device_node *of_node; - struct clk_core *parent; - struct clk_parent_map *parents; - u8 num_parents; - u8 new_parent_index; - long unsigned int rate; - long unsigned int req_rate; - long unsigned int new_rate; - struct clk_core *new_parent; - struct clk_core *new_child; - long unsigned int flags; - bool orphan; - bool rpm_enabled; - unsigned int enable_count; - unsigned int prepare_count; - unsigned int protect_count; - long unsigned int min_rate; - long unsigned int max_rate; - long unsigned int accuracy; - int phase; - struct clk_duty duty; - struct hlist_head children; - struct hlist_node child_node; - struct hlist_head clks; - unsigned int notifier_count; - struct dentry *dentry; - struct hlist_node debug_node; - struct kref ref; +struct 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 clk_parent_map { - const struct clk_hw *hw; - struct clk_core *core; - const char *fw_name; - const char *name; - int index; +enum wbt_flags { + WBT_TRACKED = 1, + WBT_READ = 2, + WBT_KSWAPD = 4, + WBT_DISCARD = 8, + WBT_NR_BITS = 4, }; -struct trace_event_raw_clk { - struct trace_entry ent; - u32 __data_loc_name; - char __data[0]; +enum { + WBT_STATE_ON_DEFAULT = 1, + WBT_STATE_ON_MANUAL = 2, + WBT_STATE_OFF_DEFAULT = 3, }; -struct trace_event_raw_clk_rate { - struct trace_entry ent; - u32 __data_loc_name; - long unsigned int rate; - char __data[0]; +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 trace_event_raw_clk_rate_range { +struct trace_event_raw_wbt_stat { struct trace_entry ent; - u32 __data_loc_name; - long unsigned int min; - long unsigned int max; + char name[32]; + s64 rmean; + u64 rmin; + u64 rmax; + s64 rnr_samples; + s64 rtime; + s64 wmean; + u64 wmin; + u64 wmax; + s64 wnr_samples; + s64 wtime; char __data[0]; }; -struct trace_event_raw_clk_parent { +struct trace_event_raw_wbt_lat { struct trace_entry ent; - u32 __data_loc_name; - u32 __data_loc_pname; + char name[32]; + long unsigned int lat; char __data[0]; }; -struct trace_event_raw_clk_phase { +struct trace_event_raw_wbt_step { struct trace_entry ent; - u32 __data_loc_name; - int phase; + 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 trace_event_raw_clk_duty_cycle { +struct trace_event_raw_wbt_timer { struct trace_entry ent; - u32 __data_loc_name; - unsigned int num; - unsigned int den; + char name[32]; + unsigned int status; + int step; + unsigned int inflight; char __data[0]; }; -struct trace_event_data_offsets_clk { - u32 name; -}; - -struct trace_event_data_offsets_clk_rate { - u32 name; -}; - -struct trace_event_data_offsets_clk_rate_range { - u32 name; -}; - -struct trace_event_data_offsets_clk_parent { - u32 name; - u32 pname; -}; - -struct trace_event_data_offsets_clk_phase { - u32 name; -}; - -struct trace_event_data_offsets_clk_duty_cycle { - u32 name; -}; - -typedef void (*btf_trace_clk_enable)(void *, struct clk_core *); - -typedef void (*btf_trace_clk_enable_complete)(void *, struct clk_core *); - -typedef void (*btf_trace_clk_disable)(void *, struct clk_core *); - -typedef void (*btf_trace_clk_disable_complete)(void *, struct clk_core *); - -typedef void (*btf_trace_clk_prepare)(void *, struct clk_core *); - -typedef void (*btf_trace_clk_prepare_complete)(void *, struct clk_core *); - -typedef void (*btf_trace_clk_unprepare)(void *, struct clk_core *); - -typedef void (*btf_trace_clk_unprepare_complete)(void *, struct clk_core *); - -typedef void (*btf_trace_clk_set_rate)(void *, struct clk_core *, long unsigned int); - -typedef void (*btf_trace_clk_set_rate_complete)(void *, struct clk_core *, long unsigned int); - -typedef void (*btf_trace_clk_set_min_rate)(void *, struct clk_core *, long unsigned int); - -typedef void (*btf_trace_clk_set_max_rate)(void *, struct clk_core *, long unsigned int); +struct trace_event_data_offsets_wbt_stat {}; -typedef void (*btf_trace_clk_set_rate_range)(void *, struct clk_core *, long unsigned int, long unsigned int); +struct trace_event_data_offsets_wbt_lat {}; -typedef void (*btf_trace_clk_set_parent)(void *, struct clk_core *, struct clk_core *); +struct trace_event_data_offsets_wbt_step {}; -typedef void (*btf_trace_clk_set_parent_complete)(void *, struct clk_core *, struct clk_core *); +struct trace_event_data_offsets_wbt_timer {}; -typedef void (*btf_trace_clk_set_phase)(void *, struct clk_core *, int); +typedef void (*btf_trace_wbt_stat)(void *, struct backing_dev_info *, struct blk_rq_stat *); -typedef void (*btf_trace_clk_set_phase_complete)(void *, struct clk_core *, int); +typedef void (*btf_trace_wbt_lat)(void *, struct backing_dev_info *, long unsigned int); -typedef void (*btf_trace_clk_set_duty_cycle)(void *, struct clk_core *, struct clk_duty *); +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_clk_set_duty_cycle_complete)(void *, struct clk_core *, struct clk_duty *); +typedef void (*btf_trace_wbt_timer)(void *, struct backing_dev_info *, unsigned int, int, unsigned int); -struct clk_notifier_devres { - struct clk *clk; - struct notifier_block *nb; +enum { + RWB_DEF_DEPTH = 16, + RWB_WINDOW_NSEC = 100000000, + RWB_MIN_WRITE_SAMPLES = 3, + RWB_UNKNOWN_BUMP = 5, }; -struct clk_mux { - struct clk_hw hw; - void *reg; - const u32 *table; - u32 mask; - u8 shift; - u8 flags; - spinlock_t *lock; +enum { + LAT_OK = 1, + LAT_UNKNOWN = 2, + LAT_UNKNOWN_WRITES = 3, + LAT_EXCEEDED = 4, }; -struct clk_composite { - struct clk_hw hw; - struct clk_ops ops; - struct clk_hw *mux_hw; - struct clk_hw *rate_hw; - struct clk_hw *gate_hw; - const struct clk_ops *mux_ops; - const struct clk_ops *rate_ops; - const struct clk_ops *gate_ops; -}; - -struct clk_fractional_divider { - struct clk_hw hw; - void *reg; - u8 mshift; - u8 mwidth; - u32 mmask; - u8 nshift; - u8 nwidth; - u32 nmask; - u8 flags; - void (*approximation)(struct clk_hw *, long unsigned int, long unsigned int *, long unsigned int *, long unsigned int *); - spinlock_t *lock; +struct wbt_wait_data { + struct rq_wb *rwb; + enum wbt_flags wb_acct; + long unsigned int rw; }; -struct gpio_desc; - -enum gpiod_flags { - GPIOD_ASIS = 0, - GPIOD_IN = 1, - GPIOD_OUT_LOW = 3, - GPIOD_OUT_HIGH = 7, - GPIOD_OUT_LOW_OPEN_DRAIN = 11, - GPIOD_OUT_HIGH_OPEN_DRAIN = 15, +struct show_busy_params { + struct seq_file *m; + struct blk_mq_hw_ctx *hctx; }; -struct clk_gpio { - struct clk_hw hw; - struct gpio_desc *gpiod; +enum opal_mbr { + OPAL_MBR_ENABLE = 0, + OPAL_MBR_DISABLE = 1, }; -typedef s32 dma_cookie_t; - -enum dma_status { - DMA_COMPLETE = 0, - DMA_IN_PROGRESS = 1, - DMA_PAUSED = 2, - DMA_ERROR = 3, - DMA_OUT_OF_ORDER = 4, +enum opal_mbr_done_flag { + OPAL_MBR_NOT_DONE = 0, + OPAL_MBR_DONE = 1, }; -enum dma_transaction_type { - DMA_MEMCPY = 0, - DMA_MEMCPY_SG = 1, - DMA_XOR = 2, - DMA_PQ = 3, - DMA_XOR_VAL = 4, - DMA_PQ_VAL = 5, - DMA_MEMSET = 6, - DMA_MEMSET_SG = 7, - DMA_INTERRUPT = 8, - DMA_PRIVATE = 9, - DMA_ASYNC_TX = 10, - DMA_SLAVE = 11, - DMA_CYCLIC = 12, - DMA_INTERLEAVE = 13, - DMA_COMPLETION_NO_ORDER = 14, - DMA_REPEAT = 15, - DMA_LOAD_EOT = 16, - DMA_TX_TYPE_END = 17, -}; - -enum dma_transfer_direction { - DMA_MEM_TO_MEM = 0, - DMA_MEM_TO_DEV = 1, - DMA_DEV_TO_MEM = 2, - DMA_DEV_TO_DEV = 3, - DMA_TRANS_NONE = 4, -}; - -struct data_chunk { - size_t size; - size_t icg; - size_t dst_icg; - size_t src_icg; -}; - -struct dma_interleaved_template { - dma_addr_t src_start; - dma_addr_t dst_start; - enum dma_transfer_direction dir; - bool src_inc; - bool dst_inc; - bool src_sgl; - bool dst_sgl; - size_t numf; - size_t frame_size; - struct data_chunk sgl[0]; -}; - -enum dma_ctrl_flags { - DMA_PREP_INTERRUPT = 1, - DMA_CTRL_ACK = 2, - DMA_PREP_PQ_DISABLE_P = 4, - DMA_PREP_PQ_DISABLE_Q = 8, - DMA_PREP_CONTINUE = 16, - DMA_PREP_FENCE = 32, - DMA_CTRL_REUSE = 64, - DMA_PREP_CMD = 128, - DMA_PREP_REPEAT = 256, - DMA_PREP_LOAD_EOT = 512, +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, }; -enum sum_check_bits { - SUM_CHECK_P = 0, - SUM_CHECK_Q = 1, +enum opal_lock_state { + OPAL_RO = 1, + OPAL_RW = 2, + OPAL_LK = 4, }; -enum sum_check_flags { - SUM_CHECK_P_RESULT = 1, - SUM_CHECK_Q_RESULT = 2, +struct opal_key { + __u8 lr; + __u8 key_len; + __u8 __align[6]; + __u8 key[256]; }; -typedef struct { - long unsigned int bits[1]; -} dma_cap_mask_t; - -enum dma_desc_metadata_mode { - DESC_METADATA_NONE = 0, - DESC_METADATA_CLIENT = 1, - DESC_METADATA_ENGINE = 2, +struct opal_lr_act { + struct opal_key key; + __u32 sum; + __u8 num_lrs; + __u8 lr[9]; + __u8 align[2]; }; -struct dma_chan_percpu { - long unsigned int memcpy_count; - long unsigned int bytes_transferred; +struct opal_session_info { + __u32 sum; + __u32 who; + struct opal_key opal_key; }; -struct dma_router { - struct device *dev; - void (*route_free)(struct device *, void *); +struct opal_user_lr_setup { + __u64 range_start; + __u64 range_length; + __u32 RLE; + __u32 WLE; + struct opal_session_info session; }; -struct dma_device; - -struct dma_chan_dev; - -struct dma_chan { - struct dma_device *device; - struct device *slave; - dma_cookie_t cookie; - dma_cookie_t completed_cookie; - int chan_id; - struct dma_chan_dev *dev; - const char *name; - char *dbg_client_name; - struct list_head device_node; - struct dma_chan_percpu *local; - int client_count; - int table_count; - struct dma_router *router; - void *route_data; - void *private; +struct opal_lock_unlock { + struct opal_session_info session; + __u32 l_state; + __u8 __align[4]; }; -typedef bool (*dma_filter_fn)(struct dma_chan *, void *); - -struct dma_slave_map; - -struct dma_filter { - dma_filter_fn fn; - int mapcnt; - const struct dma_slave_map *map; +struct opal_new_pw { + struct opal_session_info session; + struct opal_session_info new_user_pw; }; -enum dmaengine_alignment { - DMAENGINE_ALIGN_1_BYTE = 0, - DMAENGINE_ALIGN_2_BYTES = 1, - DMAENGINE_ALIGN_4_BYTES = 2, - DMAENGINE_ALIGN_8_BYTES = 3, - DMAENGINE_ALIGN_16_BYTES = 4, - DMAENGINE_ALIGN_32_BYTES = 5, - DMAENGINE_ALIGN_64_BYTES = 6, - DMAENGINE_ALIGN_128_BYTES = 7, - DMAENGINE_ALIGN_256_BYTES = 8, +struct opal_mbr_data { + struct opal_key key; + __u8 enable_disable; + __u8 __align[7]; }; -enum dma_residue_granularity { - DMA_RESIDUE_GRANULARITY_DESCRIPTOR = 0, - DMA_RESIDUE_GRANULARITY_SEGMENT = 1, - DMA_RESIDUE_GRANULARITY_BURST = 2, +struct opal_mbr_done { + struct opal_key key; + __u8 done_flag; + __u8 __align[7]; }; -struct dma_async_tx_descriptor; - -struct dma_slave_caps; - -struct dma_slave_config; - -struct dma_tx_state; - -struct dma_device { - struct kref ref; - unsigned int chancnt; - unsigned int privatecnt; - struct list_head channels; - struct list_head global_node; - struct dma_filter filter; - dma_cap_mask_t cap_mask; - enum dma_desc_metadata_mode desc_metadata_modes; - short unsigned int max_xor; - short unsigned int max_pq; - enum dmaengine_alignment copy_align; - enum dmaengine_alignment xor_align; - enum dmaengine_alignment pq_align; - enum dmaengine_alignment fill_align; - int dev_id; - struct device *dev; - struct module *owner; - struct ida chan_ida; - struct mutex chan_mutex; - u32 src_addr_widths; - u32 dst_addr_widths; - u32 directions; - u32 min_burst; - u32 max_burst; - u32 max_sg_burst; - bool descriptor_reuse; - enum dma_residue_granularity residue_granularity; - int (*device_alloc_chan_resources)(struct dma_chan *); - int (*device_router_config)(struct dma_chan *); - void (*device_free_chan_resources)(struct dma_chan *); - struct dma_async_tx_descriptor * (*device_prep_dma_memcpy)(struct dma_chan *, dma_addr_t, dma_addr_t, size_t, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_dma_memcpy_sg)(struct dma_chan *, struct scatterlist *, unsigned int, struct scatterlist *, unsigned int, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_dma_xor)(struct dma_chan *, dma_addr_t, dma_addr_t *, unsigned int, size_t, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_dma_xor_val)(struct dma_chan *, dma_addr_t *, unsigned int, size_t, enum sum_check_flags *, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_dma_pq)(struct dma_chan *, dma_addr_t *, dma_addr_t *, unsigned int, const unsigned char *, size_t, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_dma_pq_val)(struct dma_chan *, dma_addr_t *, dma_addr_t *, unsigned int, const unsigned char *, size_t, enum sum_check_flags *, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_dma_memset)(struct dma_chan *, dma_addr_t, int, size_t, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_dma_memset_sg)(struct dma_chan *, struct scatterlist *, unsigned int, int, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_dma_interrupt)(struct dma_chan *, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_slave_sg)(struct dma_chan *, struct scatterlist *, unsigned int, enum dma_transfer_direction, long unsigned int, void *); - struct dma_async_tx_descriptor * (*device_prep_dma_cyclic)(struct dma_chan *, dma_addr_t, size_t, size_t, enum dma_transfer_direction, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_interleaved_dma)(struct dma_chan *, struct dma_interleaved_template *, long unsigned int); - struct dma_async_tx_descriptor * (*device_prep_dma_imm_data)(struct dma_chan *, dma_addr_t, u64, long unsigned int); - void (*device_caps)(struct dma_chan *, struct dma_slave_caps *); - int (*device_config)(struct dma_chan *, struct dma_slave_config *); - int (*device_pause)(struct dma_chan *); - int (*device_resume)(struct dma_chan *); - int (*device_terminate_all)(struct dma_chan *); - void (*device_synchronize)(struct dma_chan *); - enum dma_status (*device_tx_status)(struct dma_chan *, dma_cookie_t, struct dma_tx_state *); - void (*device_issue_pending)(struct dma_chan *); - void (*device_release)(struct dma_device *); - void (*dbg_summary_show)(struct seq_file *, struct dma_device *); - struct dentry *dbg_dev_root; -}; - -struct dma_chan_dev { - struct dma_chan *chan; - struct device device; - int dev_id; - bool chan_dma_dev; -}; - -enum dma_slave_buswidth { - DMA_SLAVE_BUSWIDTH_UNDEFINED = 0, - DMA_SLAVE_BUSWIDTH_1_BYTE = 1, - DMA_SLAVE_BUSWIDTH_2_BYTES = 2, - DMA_SLAVE_BUSWIDTH_3_BYTES = 3, - DMA_SLAVE_BUSWIDTH_4_BYTES = 4, - DMA_SLAVE_BUSWIDTH_8_BYTES = 8, - DMA_SLAVE_BUSWIDTH_16_BYTES = 16, - DMA_SLAVE_BUSWIDTH_32_BYTES = 32, - DMA_SLAVE_BUSWIDTH_64_BYTES = 64, - DMA_SLAVE_BUSWIDTH_128_BYTES = 128, -}; - -struct dma_slave_config { - enum dma_transfer_direction direction; - phys_addr_t src_addr; - phys_addr_t dst_addr; - enum dma_slave_buswidth src_addr_width; - enum dma_slave_buswidth dst_addr_width; - u32 src_maxburst; - u32 dst_maxburst; - u32 src_port_window_size; - u32 dst_port_window_size; - bool device_fc; - void *peripheral_config; - size_t peripheral_size; -}; - -struct dma_slave_caps { - u32 src_addr_widths; - u32 dst_addr_widths; - u32 directions; - u32 min_burst; - u32 max_burst; - u32 max_sg_burst; - bool cmd_pause; - bool cmd_resume; - bool cmd_terminate; - enum dma_residue_granularity residue_granularity; - bool descriptor_reuse; -}; - -typedef void (*dma_async_tx_callback)(void *); - -enum dmaengine_tx_result { - DMA_TRANS_NOERROR = 0, - DMA_TRANS_READ_FAILED = 1, - DMA_TRANS_WRITE_FAILED = 2, - DMA_TRANS_ABORTED = 3, -}; - -struct dmaengine_result { - enum dmaengine_tx_result result; - u32 residue; -}; - -typedef void (*dma_async_tx_callback_result)(void *, const struct dmaengine_result *); - -struct dmaengine_unmap_data { - u8 map_cnt; - u8 to_cnt; - u8 from_cnt; - u8 bidi_cnt; - struct device *dev; - struct kref kref; - size_t len; - dma_addr_t addr[0]; +struct opal_shadow_mbr { + struct opal_key key; + const __u64 data; + __u64 offset; + __u64 size; }; -struct dma_descriptor_metadata_ops { - int (*attach)(struct dma_async_tx_descriptor *, void *, size_t); - void * (*get_ptr)(struct dma_async_tx_descriptor *, size_t *, size_t *); - int (*set_len)(struct dma_async_tx_descriptor *, size_t); +enum opal_table_ops { + OPAL_READ_TABLE = 0, + OPAL_WRITE_TABLE = 1, }; -struct dma_async_tx_descriptor { - dma_cookie_t cookie; - enum dma_ctrl_flags flags; - dma_addr_t phys; - struct dma_chan *chan; - dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *); - int (*desc_free)(struct dma_async_tx_descriptor *); - dma_async_tx_callback callback; - dma_async_tx_callback_result callback_result; - void *callback_param; - struct dmaengine_unmap_data *unmap; - enum dma_desc_metadata_mode desc_metadata_mode; - struct dma_descriptor_metadata_ops *metadata_ops; +struct 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 dma_tx_state { - dma_cookie_t last; - dma_cookie_t used; - u32 residue; - u32 in_flight_bytes; -}; +typedef int sec_send_recv(void *, u16, u8, void *, size_t, bool); -struct dma_slave_map { - const char *devname; - const char *slave; - void *param; +enum { + TCG_SECP_00 = 0, + TCG_SECP_01 = 1, }; -struct dma_chan_tbl_ent { - struct dma_chan *chan; +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 dmaengine_unmap_pool { - struct kmem_cache *cache; - const char *name; - mempool_t *pool; - size_t size; +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, }; -typedef __u16 __virtio16; - -typedef __u32 __virtio32; - -typedef __u64 __virtio64; +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 vring_desc { - __virtio64 addr; - __virtio32 len; - __virtio16 flags; - __virtio16 next; +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 vring_avail { - __virtio16 flags; - __virtio16 idx; - __virtio16 ring[0]; +enum opal_parameter { + OPAL_SUM_SET_LIST = 393216, }; -struct vring_used_elem { - __virtio32 id; - __virtio32 len; +struct opal_compacket { + __be32 reserved0; + u8 extendedComID[4]; + __be32 outstandingData; + __be32 minTransfer; + __be32 length; }; -typedef struct vring_used_elem vring_used_elem_t; - -struct vring_used { - __virtio16 flags; - __virtio16 idx; - vring_used_elem_t ring[0]; +struct opal_packet { + __be32 tsn; + __be32 hsn; + __be32 seq_number; + __be16 reserved0; + __be16 ack_type; + __be32 acknowledgment; + __be32 length; }; -typedef struct vring_desc vring_desc_t; - -typedef struct vring_avail vring_avail_t; - -typedef struct vring_used vring_used_t; - -struct vring { - unsigned int num; - vring_desc_t *desc; - vring_avail_t *avail; - vring_used_t *used; +struct opal_data_subpacket { + u8 reserved0[6]; + __be16 kind; + __be32 length; }; -struct vring_packed_desc_event { - __le16 off_wrap; - __le16 flags; +struct opal_header { + struct opal_compacket cp; + struct opal_packet pkt; + struct opal_data_subpacket subpkt; }; -struct vring_packed_desc { - __le64 addr; - __le32 len; - __le16 id; - __le16 flags; +struct d0_header { + __be32 length; + __be32 revision; + __be32 reserved01; + __be32 reserved02; + u8 ignored[32]; }; -struct vring_desc_state_split { - void *data; - struct vring_desc *indir_desc; +struct d0_tper_features { + u8 supported_features; + u8 reserved01[3]; + __be32 reserved02; + __be32 reserved03; }; -struct vring_desc_state_packed { - void *data; - struct vring_packed_desc *indir_desc; - u16 num; - u16 last; +struct d0_locking_features { + u8 supported_features; + u8 reserved01[3]; + __be32 reserved02; + __be32 reserved03; }; -struct vring_desc_extra { - dma_addr_t addr; - u32 len; - u16 flags; - u16 next; +struct d0_geometry_features { + u8 header[4]; + u8 reserved01; + u8 reserved02[7]; + __be32 logical_block_size; + __be64 alignment_granularity; + __be64 lowest_aligned_lba; }; -struct vring_virtqueue { - struct virtqueue vq; - bool packed_ring; - bool use_dma_api; - bool weak_barriers; - bool broken; - bool indirect; - bool event; - 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; - struct { - struct { - unsigned int num; - struct vring_packed_desc *desc; - struct vring_packed_desc_event *driver; - struct vring_packed_desc_event *device; - } vring; - bool avail_wrap_counter; - bool used_wrap_counter; - u16 avail_used_flags; - u16 next_avail_idx; - u16 event_flags_shadow; - struct vring_desc_state_packed *desc_state; - struct vring_desc_extra *desc_extra; - dma_addr_t ring_dma_addr; - dma_addr_t driver_event_dma_addr; - dma_addr_t device_event_dma_addr; - size_t ring_size_in_bytes; - size_t event_size_in_bytes; - } packed; - }; - bool (*notify)(struct virtqueue *); - bool we_own_ring; +struct d0_opal_v100 { + __be16 baseComID; + __be16 numComIDs; }; -struct virtio_driver { - struct device_driver driver; - const struct virtio_device_id *id_table; - const unsigned int *feature_table; - unsigned int feature_table_size; - const unsigned int *feature_table_legacy; - unsigned int feature_table_size_legacy; - int (*validate)(struct virtio_device *); - int (*probe)(struct virtio_device *); - void (*scan)(struct virtio_device *); - void (*remove)(struct virtio_device *); - void (*config_changed)(struct virtio_device *); +struct d0_single_user_mode { + __be32 num_locking_objects; + u8 reserved01; + u8 reserved02; + __be16 reserved03; + __be32 reserved04; }; -struct virtio_pci_common_cfg { - __le32 device_feature_select; - __le32 device_feature; - __le32 guest_feature_select; - __le32 guest_feature; - __le16 msix_config; - __le16 num_queues; - __u8 device_status; - __u8 config_generation; - __le16 queue_select; - __le16 queue_size; - __le16 queue_msix_vector; - __le16 queue_enable; - __le16 queue_notify_off; - __le32 queue_desc_lo; - __le32 queue_desc_hi; - __le32 queue_avail_lo; - __le32 queue_avail_hi; - __le32 queue_used_lo; - __le32 queue_used_hi; +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 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 d0_features { + __be16 code; + u8 r_version; + u8 length; + u8 features[0]; }; -struct virtio_pci_legacy_device { - struct pci_dev *pci_dev; - u8 *isr; - void *ioaddr; - struct virtio_device_id id; -}; +struct opal_dev; -struct virtio_pci_vq_info { - struct virtqueue *vq; - struct list_head node; - unsigned int msix_vector; +struct opal_step { + int (*fn)(struct opal_dev *, void *); + void *data; }; -struct virtio_pci_device { - struct virtio_device vdev; - struct pci_dev *pci_dev; - struct virtio_pci_legacy_device ldev; - struct virtio_pci_modern_device mdev; - bool is_legacy; - u8 *isr; - spinlock_t lock; - struct list_head virtqueues; - struct virtio_pci_vq_info **vqs; - int msix_enabled; - int intx_enabled; - cpumask_var_t *msix_affinity_masks; - char (*msix_names)[256]; - unsigned int msix_vectors; - unsigned int msix_used_vectors; - bool per_vq_vectors; - struct virtqueue * (*setup_vq)(struct virtio_pci_device *, struct virtio_pci_vq_info *, unsigned int, void (*)(struct virtqueue *), const char *, bool, u16); - void (*del_vq)(struct virtio_pci_vq_info *); - u16 (*config_vector)(struct virtio_pci_device *, u16); +enum opal_atom_width { + OPAL_WIDTH_TINY = 0, + OPAL_WIDTH_SHORT = 1, + OPAL_WIDTH_MEDIUM = 2, + OPAL_WIDTH_LONG = 3, + OPAL_WIDTH_TOKEN = 4, }; -enum { - VP_MSIX_CONFIG_VECTOR = 0, - VP_MSIX_VQ_VECTOR = 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; }; -typedef int suspend_state_t; - -struct regulator_dev; - -struct regulator_ops { - int (*list_voltage)(struct regulator_dev *, unsigned int); - int (*set_voltage)(struct regulator_dev *, int, int, unsigned int *); - int (*map_voltage)(struct regulator_dev *, int, int); - int (*set_voltage_sel)(struct regulator_dev *, unsigned int); - int (*get_voltage)(struct regulator_dev *); - int (*get_voltage_sel)(struct regulator_dev *); - int (*set_current_limit)(struct regulator_dev *, int, int); - int (*get_current_limit)(struct regulator_dev *); - int (*set_input_current_limit)(struct regulator_dev *, int); - int (*set_over_current_protection)(struct regulator_dev *, int, int, bool); - int (*set_over_voltage_protection)(struct regulator_dev *, int, int, bool); - int (*set_under_voltage_protection)(struct regulator_dev *, int, int, bool); - int (*set_thermal_protection)(struct regulator_dev *, int, int, bool); - int (*set_active_discharge)(struct regulator_dev *, bool); - int (*enable)(struct regulator_dev *); - int (*disable)(struct regulator_dev *); - int (*is_enabled)(struct regulator_dev *); - int (*set_mode)(struct regulator_dev *, unsigned int); - unsigned int (*get_mode)(struct regulator_dev *); - int (*get_error_flags)(struct regulator_dev *, unsigned int *); - int (*enable_time)(struct regulator_dev *); - int (*set_ramp_delay)(struct regulator_dev *, int); - int (*set_voltage_time)(struct regulator_dev *, int, int); - int (*set_voltage_time_sel)(struct regulator_dev *, unsigned int, unsigned int); - int (*set_soft_start)(struct regulator_dev *); - int (*get_status)(struct regulator_dev *); - unsigned int (*get_optimum_mode)(struct regulator_dev *, int, int, int); - int (*set_load)(struct regulator_dev *, int); - int (*set_bypass)(struct regulator_dev *, bool); - int (*get_bypass)(struct regulator_dev *, bool *); - int (*set_suspend_voltage)(struct regulator_dev *, int); - int (*set_suspend_enable)(struct regulator_dev *); - int (*set_suspend_disable)(struct regulator_dev *); - int (*set_suspend_mode)(struct regulator_dev *, unsigned int); - int (*resume)(struct regulator_dev *); - int (*set_pull_down)(struct regulator_dev *); -}; - -struct regulator_coupler; - -struct coupling_desc { - struct regulator_dev **coupled_rdevs; - struct regulator_coupler *coupler; - int n_resolved; - int n_coupled; +struct parsed_resp { + int num; + struct opal_resp_tok toks[64]; }; -struct regmap; - -struct regulator_desc; - -struct regulation_constraints; +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 regulator_enable_gpio; +typedef int cont_fn(struct opal_dev *); -struct regulator_dev { - const struct regulator_desc *desc; - int exclusive; - u32 use_count; - u32 open_count; - u32 bypass_count; - struct list_head list; - struct list_head consumer_list; - struct coupling_desc coupling_desc; - struct blocking_notifier_head notifier; - struct ww_mutex mutex; - struct task_struct *mutex_owner; - int ref_cnt; - struct module *owner; - struct device dev; - struct regulation_constraints *constraints; - struct regulator *supply; - const char *supply_name; - struct regmap *regmap; - struct delayed_work disable_work; - void *reg_data; - struct dentry *debugfs; - struct regulator_enable_gpio *ena_pin; - unsigned int ena_gpio_state: 1; - unsigned int is_switch: 1; - ktime_t last_off; - int cached_err; - bool use_cached_err; - spinlock_t err_lock; +struct opal_suspend_data { + struct opal_lock_unlock unlk; + u8 lr; + struct list_head node; }; -enum regulator_type { - REGULATOR_VOLTAGE = 0, - REGULATOR_CURRENT = 1, +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 regulator_config; +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 regulator_desc { - const char *name; - const char *supply_name; - const char *of_match; - bool of_match_full_name; - const char *regulators_node; - int (*of_parse_cb)(struct device_node *, const struct regulator_desc *, struct regulator_config *); - int id; - unsigned int continuous_voltage_range: 1; - unsigned int n_voltages; - unsigned int n_current_limits; - const struct regulator_ops *ops; - int irq; - enum regulator_type type; - struct module *owner; - unsigned int min_uV; - unsigned int uV_step; - unsigned int linear_min_sel; - int fixed_uV; - unsigned int ramp_delay; - int min_dropout_uV; - const struct linear_range *linear_ranges; - const unsigned int *linear_range_selectors; - int n_linear_ranges; - const unsigned int *volt_table; - const unsigned int *curr_table; - unsigned int vsel_range_reg; - unsigned int vsel_range_mask; - unsigned int vsel_reg; - unsigned int vsel_mask; - unsigned int vsel_step; - unsigned int csel_reg; - unsigned int csel_mask; - unsigned int apply_reg; - unsigned int apply_bit; - unsigned int enable_reg; - unsigned int enable_mask; - unsigned int enable_val; - unsigned int disable_val; - bool enable_is_inverted; - unsigned int bypass_reg; - unsigned int bypass_mask; - unsigned int bypass_val_on; - unsigned int bypass_val_off; - unsigned int active_discharge_on; - unsigned int active_discharge_off; - unsigned int active_discharge_mask; - unsigned int active_discharge_reg; - unsigned int soft_start_reg; - unsigned int soft_start_mask; - unsigned int soft_start_val_on; - unsigned int pull_down_reg; - unsigned int pull_down_mask; - unsigned int pull_down_val_on; - unsigned int ramp_reg; - unsigned int ramp_mask; - const unsigned int *ramp_delay_table; - unsigned int n_ramp_values; - unsigned int enable_time; - unsigned int off_on_delay; - unsigned int poll_enabled_time; - unsigned int (*of_map_mode)(unsigned int); -}; - -struct regulator_init_data; - -struct regulator_config { +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; - const struct regulator_init_data *init_data; - void *driver_data; - struct device_node *of_node; - struct regmap *regmap; - struct gpio_desc *ena_gpiod; + 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 regulator_state { - int uV; - int min_uV; - int max_uV; - unsigned int mode; - int enabled; - bool changeable; +struct blk_crypto_mode { + const char *cipher_str; + unsigned int keysize; + unsigned int ivsize; }; -struct notification_limit { - int prot; - int err; - int warn; +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; + }; + }; }; -struct regulation_constraints { - const char *name; - int min_uV; - int max_uV; - int uV_offset; - int min_uA; - int max_uA; - int ilim_uA; - int system_load; - u32 *max_spread; - int max_uV_step; - unsigned int valid_modes_mask; - unsigned int valid_ops_mask; - int input_uV; - struct regulator_state state_disk; - struct regulator_state state_mem; - struct regulator_state state_standby; - struct notification_limit over_curr_limits; - struct notification_limit over_voltage_limits; - struct notification_limit under_voltage_limits; - struct notification_limit temp_limits; - suspend_state_t initial_state; - unsigned int initial_mode; - unsigned int ramp_delay; - unsigned int settling_time; - unsigned int settling_time_up; - unsigned int settling_time_down; - unsigned int enable_time; - unsigned int active_discharge; - unsigned int always_on: 1; - unsigned int boot_on: 1; - unsigned int apply_uV: 1; - unsigned int ramp_disable: 1; - unsigned int soft_start: 1; - unsigned int pull_down: 1; - unsigned int over_current_protection: 1; - unsigned int over_current_detection: 1; - unsigned int over_voltage_detection: 1; - unsigned int under_voltage_detection: 1; - unsigned int over_temp_detection: 1; -}; - -struct regulator_consumer_supply; - -struct regulator_init_data { - const char *supply_regulator; - struct regulation_constraints constraints; - int num_consumer_supplies; - struct regulator_consumer_supply *consumer_supplies; - int (*regulator_init)(void *); - void *driver_data; +struct blk_crypto_keyslot { + enum blk_crypto_mode_num crypto_mode; + struct crypto_skcipher *tfms[4]; }; -struct regulator_consumer_supply { - const char *dev_name; - const char *supply; +union blk_crypto_iv { + __le64 dun[4]; + u8 bytes[32]; }; -struct fixed_voltage_config { - const char *supply_name; - const char *input_supply; - int microvolts; - unsigned int startup_delay; - unsigned int off_on_delay; - unsigned int enabled_at_boot: 1; - struct regulator_init_data *init_data; +struct bd_holder_disk { + struct list_head list; + struct block_device *bdev; + int refcnt; }; -struct fixed_regulator_data { - struct fixed_voltage_config cfg; - struct regulator_init_data init_data; - struct platform_device pdev; +struct xa_limit { + u32 max; + u32 min; }; -struct regulator_bulk_data { - const char *supply; - struct regulator *consumer; - int ret; -}; +struct io_wq_work_node; -struct regulator_voltage { - int min_uV; - int max_uV; +struct io_wq_work_list { + struct io_wq_work_node *first; + struct io_wq_work_node *last; }; -struct regulator { - struct device *dev; - struct list_head list; - unsigned int always_on: 1; - unsigned int bypass: 1; - unsigned int device_link: 1; - int uA_load; - unsigned int enable_count; - unsigned int deferred_disables; - struct regulator_voltage voltage[5]; - const char *supply_name; - struct device_attribute dev_attr; - struct regulator_dev *rdev; - struct dentry *debugfs; -}; +struct io_ring_ctx; + +struct io_wq; -struct regulator_err_state { - struct regulator_dev *rdev; - long unsigned int notifs; - long unsigned int errors; - int possible_errs; +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; }; -struct regulator_irq_data { - struct regulator_err_state *states; - int num_states; - void *data; - long int opaque; +struct iov_iter_state { + size_t iov_offset; + size_t count; + long unsigned int nr_segs; }; -struct regulator_irq_desc { - const char *name; - int fatal_cnt; - int reread_ms; - int irq_off_ms; - bool skip_off; - bool high_prio; - void *data; - int (*die)(struct regulator_irq_data *); - int (*map_event)(int, struct regulator_irq_data *, long unsigned int *); - int (*renable)(struct regulator_irq_data *); +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 regulator_get_type { - NORMAL_GET = 0, - EXCLUSIVE_GET = 1, - OPTIONAL_GET = 2, - MAX_GET_TYPE = 3, +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 regulator_bulk_devres { - struct regulator_bulk_data *consumers; - int num_consumers; +struct scm_fp_list { + short int count; + short int max; + struct user_struct *user; + struct file *fp[253]; }; -struct regulator_supply_alias_match { - struct device *dev; - const char *id; +struct unix_skb_parms { + struct pid *pid; + kuid_t uid; + kgid_t gid; + struct scm_fp_list *fp; + struct lsmblob lsmblob; + u32 consumed; }; -struct regulator_notifier_match { - struct regulator *regulator; - struct notifier_block *nb; +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 { - REGULATOR_ERROR_CLEARED = 0, - REGULATOR_FAILED_RETRY = 1, - REGULATOR_ERROR_ON = 2, +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 regulator_irq { - struct regulator_irq_data rdata; - struct regulator_irq_desc desc; - int irq; - int retry_cnt; - struct delayed_work isr_work; +struct trace_event_raw_io_uring_file_get { + struct trace_entry ent; + void *ctx; + int fd; + char __data[0]; }; -struct ww_class { - atomic_long_t stamp; - struct lock_class_key acquire_key; - struct lock_class_key mutex_key; - const char *acquire_name; - const char *mutex_name; - unsigned int is_wait_die; +struct io_wq_work; + +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 pre_voltage_change_data { - long unsigned int old_uV; - long unsigned int min_uV; - long unsigned int max_uV; +struct io_wq_work_node { + struct io_wq_work_node *next; }; -struct regulator_coupler { - struct list_head list; - int (*attach_regulator)(struct regulator_coupler *, struct regulator_dev *); - int (*detach_regulator)(struct regulator_coupler *, struct regulator_dev *); - int (*balance_voltage)(struct regulator_coupler *, struct regulator_dev *, suspend_state_t); +struct io_wq_work { + struct io_wq_work_node list; + unsigned int flags; }; -enum regulator_status { - REGULATOR_STATUS_OFF = 0, - REGULATOR_STATUS_ON = 1, - REGULATOR_STATUS_ERROR = 2, - REGULATOR_STATUS_FAST = 3, - REGULATOR_STATUS_NORMAL = 4, - REGULATOR_STATUS_IDLE = 5, - REGULATOR_STATUS_STANDBY = 6, - REGULATOR_STATUS_BYPASS = 7, - REGULATOR_STATUS_UNDEFINED = 8, +struct trace_event_raw_io_uring_defer { + struct trace_entry ent; + void *ctx; + void *req; + long long unsigned int data; + char __data[0]; }; -enum regulator_detection_severity { - REGULATOR_SEVERITY_PROT = 0, - REGULATOR_SEVERITY_ERR = 1, - REGULATOR_SEVERITY_WARN = 2, +struct trace_event_raw_io_uring_link { + struct trace_entry ent; + void *ctx; + void *req; + void *target_req; + char __data[0]; }; -struct regulator_enable_gpio { - struct list_head list; - struct gpio_desc *gpiod; - u32 enable_count; - u32 request_count; +struct trace_event_raw_io_uring_cqring_wait { + struct trace_entry ent; + void *ctx; + int min_events; + char __data[0]; }; -enum regulator_active_discharge { - REGULATOR_ACTIVE_DISCHARGE_DEFAULT = 0, - REGULATOR_ACTIVE_DISCHARGE_DISABLE = 1, - REGULATOR_ACTIVE_DISCHARGE_ENABLE = 2, +struct trace_event_raw_io_uring_fail_link { + struct trace_entry ent; + void *req; + void *link; + char __data[0]; }; -struct trace_event_raw_regulator_basic { +struct trace_event_raw_io_uring_complete { struct trace_entry ent; - u32 __data_loc_name; + void *ctx; + u64 user_data; + int res; + unsigned int cflags; char __data[0]; }; -struct trace_event_raw_regulator_range { +struct trace_event_raw_io_uring_submit_sqe { struct trace_entry ent; - u32 __data_loc_name; - int min; - int max; + void *ctx; + void *req; + u8 opcode; + u64 user_data; + u32 flags; + bool force_nonblock; + bool sq_thread; char __data[0]; }; -struct trace_event_raw_regulator_value { +struct trace_event_raw_io_uring_poll_arm { struct trace_entry ent; - u32 __data_loc_name; - unsigned int val; + void *ctx; + void *req; + u8 opcode; + u64 user_data; + int mask; + int events; char __data[0]; }; -struct trace_event_data_offsets_regulator_basic { - u32 name; +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 trace_event_data_offsets_regulator_range { - u32 name; +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 trace_event_data_offsets_regulator_value { - u32 name; +struct trace_event_raw_io_uring_task_run { + struct trace_entry ent; + void *ctx; + void *req; + u8 opcode; + u64 user_data; + char __data[0]; }; -typedef void (*btf_trace_regulator_enable)(void *, const char *); +struct trace_event_data_offsets_io_uring_create {}; -typedef void (*btf_trace_regulator_enable_delay)(void *, const char *); +struct trace_event_data_offsets_io_uring_register {}; -typedef void (*btf_trace_regulator_enable_complete)(void *, const char *); +struct trace_event_data_offsets_io_uring_file_get {}; -typedef void (*btf_trace_regulator_disable)(void *, const char *); +struct trace_event_data_offsets_io_uring_queue_async_work {}; -typedef void (*btf_trace_regulator_disable_complete)(void *, const char *); +struct trace_event_data_offsets_io_uring_defer {}; -typedef void (*btf_trace_regulator_bypass_enable)(void *, const char *); +struct trace_event_data_offsets_io_uring_link {}; -typedef void (*btf_trace_regulator_bypass_enable_complete)(void *, const char *); +struct trace_event_data_offsets_io_uring_cqring_wait {}; -typedef void (*btf_trace_regulator_bypass_disable)(void *, const char *); +struct trace_event_data_offsets_io_uring_fail_link {}; -typedef void (*btf_trace_regulator_bypass_disable_complete)(void *, const char *); +struct trace_event_data_offsets_io_uring_complete {}; -typedef void (*btf_trace_regulator_set_voltage)(void *, const char *, int, int); +struct trace_event_data_offsets_io_uring_submit_sqe {}; -typedef void (*btf_trace_regulator_set_voltage_complete)(void *, const char *, unsigned int); +struct trace_event_data_offsets_io_uring_poll_arm {}; -struct regulator_map { - struct list_head list; - const char *dev_name; - const char *supply; - struct regulator_dev *regulator; -}; +struct trace_event_data_offsets_io_uring_poll_wake {}; -struct regulator_supply_alias { - struct list_head list; - struct device *src_dev; - const char *src_supply; - struct device *alias_dev; - const char *alias_supply; -}; +struct trace_event_data_offsets_io_uring_task_add {}; -struct summary_data { - struct seq_file *s; - struct regulator_dev *parent; - int level; -}; +struct trace_event_data_offsets_io_uring_task_run {}; -struct summary_lock_data { - struct ww_acquire_ctx *ww_ctx; - struct regulator_dev **new_contended_rdev; - struct regulator_dev **old_contended_rdev; -}; +typedef void (*btf_trace_io_uring_create)(void *, int, void *, u32, u32, u32); -struct serial_icounter_struct { - int cts; - int dsr; - int rng; - int dcd; - int rx; - int tx; - int frame; - int overrun; - int parity; - int brk; - int buf_overrun; - int reserved[9]; -}; +typedef void (*btf_trace_io_uring_register)(void *, void *, unsigned int, unsigned int, unsigned int, bool, long int); -struct serial_struct { - int type; - int line; - unsigned int port; - int irq; - int flags; - int xmit_fifo_size; - int custom_divisor; - int baud_base; - short unsigned int close_delay; - char io_type; - char reserved_char[1]; - int hub6; - short unsigned int closing_wait; - short unsigned int closing_wait2; - unsigned char *iomem_base; - short unsigned int iomem_reg_shift; - unsigned int port_high; - long unsigned int iomap_base; -}; +typedef void (*btf_trace_io_uring_file_get)(void *, void *, int); -struct serial_struct32 { - compat_int_t type; - compat_int_t line; - compat_uint_t port; - compat_int_t irq; - compat_int_t flags; - compat_int_t xmit_fifo_size; - compat_int_t custom_divisor; - compat_int_t baud_base; - short unsigned int close_delay; - char io_type; - char reserved_char; - compat_int_t hub6; - short unsigned int closing_wait; - short unsigned int closing_wait2; - compat_uint_t iomem_base; - short unsigned int iomem_reg_shift; - unsigned int port_high; - compat_int_t reserved; -}; +typedef void (*btf_trace_io_uring_queue_async_work)(void *, void *, int, void *, struct io_wq_work *, unsigned int); -struct n_tty_data { - size_t read_head; - size_t commit_head; - size_t canon_head; - size_t echo_head; - size_t echo_commit; - size_t echo_mark; - long unsigned int char_map[4]; - long unsigned int overrun_time; - int num_overrun; - bool no_room; - unsigned char lnext: 1; - unsigned char erasing: 1; - unsigned char raw: 1; - unsigned char real_raw: 1; - unsigned char icanon: 1; - unsigned char push: 1; - char read_buf[4096]; - long unsigned int read_flags[64]; - unsigned char echo_buf[4096]; - size_t read_tail; - size_t line_start; - unsigned int column; - unsigned int canon_column; - size_t echo_tail; - struct mutex atomic_read_lock; - struct mutex output_lock; -}; +typedef void (*btf_trace_io_uring_defer)(void *, void *, void *, long long unsigned int); -enum { - ERASE = 0, - WERASE = 1, - KILL = 2, -}; +typedef void (*btf_trace_io_uring_link)(void *, void *, void *, void *); -struct termios { - tcflag_t c_iflag; - tcflag_t c_oflag; - tcflag_t c_cflag; - tcflag_t c_lflag; - cc_t c_line; - cc_t c_cc[19]; -}; +typedef void (*btf_trace_io_uring_cqring_wait)(void *, void *, int); -struct termios2 { - tcflag_t c_iflag; - tcflag_t c_oflag; - tcflag_t c_cflag; - tcflag_t c_lflag; - cc_t c_line; - cc_t c_cc[19]; - speed_t c_ispeed; - speed_t c_ospeed; -}; +typedef void (*btf_trace_io_uring_fail_link)(void *, void *, void *); -struct termio { - short unsigned int c_iflag; - short unsigned int c_oflag; - short unsigned int c_cflag; - short unsigned int c_lflag; - unsigned char c_line; - unsigned char c_cc[8]; -}; +typedef void (*btf_trace_io_uring_complete)(void *, void *, u64, int, unsigned int); -struct ldsem_waiter { - struct list_head list; - struct task_struct *task; -}; +typedef void (*btf_trace_io_uring_submit_sqe)(void *, void *, void *, u8, u64, u32, bool, bool); -struct pts_fs_info; +typedef void (*btf_trace_io_uring_poll_arm)(void *, void *, void *, u8, u64, int, int); -struct tty_audit_buf { - struct mutex mutex; - dev_t dev; - unsigned int icanon: 1; - size_t valid; - unsigned char *data; -}; +typedef void (*btf_trace_io_uring_poll_wake)(void *, void *, u8, u64, int); -struct input_id { - __u16 bustype; - __u16 vendor; - __u16 product; - __u16 version; -}; +typedef void (*btf_trace_io_uring_task_add)(void *, void *, u8, u64, int); -struct input_absinfo { - __s32 value; - __s32 minimum; - __s32 maximum; - __s32 fuzz; - __s32 flat; - __s32 resolution; -}; +typedef void (*btf_trace_io_uring_task_run)(void *, void *, void *, u8, u64); -struct input_keymap_entry { +struct io_uring_sqe { + __u8 opcode; __u8 flags; - __u8 len; - __u16 index; - __u32 keycode; - __u8 scancode[32]; + __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 ff_replay { - __u16 length; - __u16 delay; +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 ff_trigger { - __u16 button; - __u16 interval; +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 ff_envelope { - __u16 attack_length; - __u16 attack_level; - __u16 fade_length; - __u16 fade_level; +struct io_uring_cqe { + __u64 user_data; + __s32 res; + __u32 flags; }; -struct ff_constant_effect { - __s16 level; - struct ff_envelope envelope; +enum { + IORING_CQE_BUFFER_SHIFT = 16, }; -struct ff_ramp_effect { - __s16 start_level; - __s16 end_level; - struct ff_envelope envelope; +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 ff_condition_effect { - __u16 right_saturation; - __u16 left_saturation; - __s16 right_coeff; - __s16 left_coeff; - __u16 deadband; - __s16 center; +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 ff_periodic_effect { - __u16 waveform; - __u16 period; - __s16 magnitude; - __s16 offset; - __u16 phase; - struct ff_envelope envelope; - __u32 custom_len; - __s16 *custom_data; +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 ff_rumble_effect { - __u16 strong_magnitude; - __u16 weak_magnitude; +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 ff_effect { - __u16 type; - __s16 id; - __u16 direction; - struct ff_trigger trigger; - struct ff_replay replay; - union { - struct ff_constant_effect constant; - struct ff_ramp_effect ramp; - struct ff_periodic_effect periodic; - struct ff_condition_effect condition[2]; - struct ff_rumble_effect rumble; - } u; +struct io_uring_rsrc_register { + __u32 nr; + __u32 resv; + __u64 resv2; + __u64 data; + __u64 tags; }; -struct input_device_id { - kernel_ulong_t flags; - __u16 bustype; - __u16 vendor; - __u16 product; - __u16 version; - kernel_ulong_t evbit[1]; - kernel_ulong_t keybit[12]; - kernel_ulong_t relbit[1]; - kernel_ulong_t absbit[1]; - kernel_ulong_t mscbit[1]; - kernel_ulong_t ledbit[1]; - kernel_ulong_t sndbit[1]; - kernel_ulong_t ffbit[2]; - kernel_ulong_t swbit[1]; - kernel_ulong_t propbit[1]; - kernel_ulong_t driver_info; +struct io_uring_rsrc_update2 { + __u32 offset; + __u32 resv; + __u64 data; + __u64 tags; + __u32 nr; + __u32 resv2; }; -struct input_value { - __u16 type; - __u16 code; - __s32 value; +struct io_uring_probe_op { + __u8 op; + __u8 resv; + __u16 flags; + __u32 resv2; }; -enum input_clock_type { - INPUT_CLK_REAL = 0, - INPUT_CLK_MONO = 1, - INPUT_CLK_BOOT = 2, - INPUT_CLK_MAX = 3, +struct io_uring_probe { + __u8 last_op; + __u8 ops_len; + __u16 resv; + __u32 resv2[3]; + struct io_uring_probe_op ops[0]; }; -struct ff_device; - -struct input_dev_poller; - -struct input_mt; - -struct input_handle; +struct io_uring_restriction { + __u16 opcode; + union { + __u8 register_op; + __u8 sqe_op; + __u8 sqe_flags; + }; + __u8 resv; + __u32 resv2[3]; +}; -struct input_dev { - const char *name; - const char *phys; - const char *uniq; - struct input_id id; - long unsigned int propbit[1]; - long unsigned int evbit[1]; - long unsigned int keybit[12]; - long unsigned int relbit[1]; - long unsigned int absbit[1]; - long unsigned int mscbit[1]; - long unsigned int ledbit[1]; - long unsigned int sndbit[1]; - long unsigned int ffbit[2]; - long unsigned int swbit[1]; - unsigned int hint_events_per_packet; - unsigned int keycodemax; - unsigned int keycodesize; - void *keycode; - int (*setkeycode)(struct input_dev *, const struct input_keymap_entry *, unsigned int *); - int (*getkeycode)(struct input_dev *, struct input_keymap_entry *); - struct ff_device *ff; - struct input_dev_poller *poller; - unsigned int repeat_key; - struct timer_list timer; - int rep[2]; - struct input_mt *mt; - struct input_absinfo *absinfo; - long unsigned int key[12]; - long unsigned int led[1]; - long unsigned int snd[1]; - long unsigned int sw[1]; - int (*open)(struct input_dev *); - void (*close)(struct input_dev *); - int (*flush)(struct input_dev *, struct file *); - int (*event)(struct input_dev *, unsigned int, unsigned int, int); - struct input_handle *grab; - spinlock_t event_lock; - struct mutex mutex; - unsigned int users; - bool going_away; - struct device dev; - struct list_head h_list; - struct list_head node; - unsigned int num_vals; - unsigned int max_vals; - struct input_value *vals; - bool devres_managed; - ktime_t timestamp[3]; - bool inhibited; +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 ff_device { - int (*upload)(struct input_dev *, struct ff_effect *, struct ff_effect *); - int (*erase)(struct input_dev *, int); - int (*playback)(struct input_dev *, int, int); - void (*set_gain)(struct input_dev *, u16); - void (*set_autocenter)(struct input_dev *, u16); - void (*destroy)(struct ff_device *); - void *private; - long unsigned int ffbit[2]; - struct mutex mutex; - int max_effects; - struct ff_effect *effects; - struct file *effect_owners[0]; +struct io_uring_getevents_arg { + __u64 sigmask; + __u32 sigmask_sz; + __u32 pad; + __u64 ts; }; -struct input_handler; - -struct input_handle { - void *private; - int open; - const char *name; - struct input_dev *dev; - struct input_handler *handler; - struct list_head d_node; - struct list_head h_node; +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 input_handler { - void *private; - void (*event)(struct input_handle *, unsigned int, unsigned int, int); - void (*events)(struct input_handle *, const struct input_value *, unsigned int); - bool (*filter)(struct input_handle *, unsigned int, unsigned int, int); - bool (*match)(struct input_handler *, struct input_dev *); - int (*connect)(struct input_handler *, struct input_dev *, const struct input_device_id *); - void (*disconnect)(struct input_handle *); - void (*start)(struct input_handle *); - bool legacy_minors; - int minor; - const char *name; - const struct input_device_id *id_table; - struct list_head h_list; - struct list_head node; +enum io_wq_cancel { + IO_WQ_CANCEL_OK = 0, + IO_WQ_CANCEL_RUNNING = 1, + IO_WQ_CANCEL_NOTFOUND = 2, }; -struct sysrq_state { - struct input_handle handle; - struct work_struct reinject_work; - long unsigned int key_down[12]; - unsigned int alt; - unsigned int alt_use; - unsigned int shift; - unsigned int shift_use; - bool active; - bool need_reinject; - bool reinjecting; - bool reset_canceled; - bool reset_requested; - long unsigned int reset_keybit[12]; - int reset_seq_len; - int reset_seq_cnt; - int reset_seq_version; - struct timer_list keyreset_timer; +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; }; -struct unipair { - short unsigned int unicode; - short unsigned int fontpos; +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 unimapdesc { - short unsigned int entry_ct; - struct unipair *entries; +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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 kbentry { - unsigned char kb_table; - unsigned char kb_index; - short unsigned int kb_value; +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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 io_uring_cqe cqes[0]; }; -struct kbsentry { - unsigned char kb_func; - unsigned char kb_string[512]; +enum io_uring_cmd_flags { + IO_URING_F_NONBLOCK = 1, + IO_URING_F_COMPLETE_DEFER = 2, }; -struct kbkeycode { - unsigned int scancode; - unsigned int keycode; +struct io_mapped_ubuf { + u64 ubuf; + u64 ubuf_end; + unsigned int nr_bvecs; + long unsigned int acct_pages; + struct bio_vec bvec[0]; }; -struct kbd_repeat { - int delay; - int period; +struct io_overflow_cqe { + struct io_uring_cqe cqe; + struct list_head list; }; -struct console_font_op { - unsigned int op; - unsigned int flags; - unsigned int width; - unsigned int height; - unsigned int charcount; - unsigned char *data; +struct io_fixed_file { + long unsigned int file_ptr; }; -struct vt_stat { - short unsigned int v_active; - short unsigned int v_signal; - short unsigned int v_state; +struct io_rsrc_put { + struct list_head list; + u64 tag; + union { + void *rsrc; + struct file *file; + struct io_mapped_ubuf *buf; + }; }; -struct vt_sizes { - short unsigned int v_rows; - short unsigned int v_cols; - short unsigned int v_scrollsize; +struct io_file_table { + struct io_fixed_file *files; }; -struct vt_consize { - short unsigned int v_rows; - short unsigned int v_cols; - short unsigned int v_vlin; - short unsigned int v_clin; - short unsigned int v_vcol; - short unsigned int v_ccol; +struct io_rsrc_data; + +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 vt_event { - unsigned int event; - unsigned int oldev; - unsigned int newev; - unsigned int pad[4]; +typedef void rsrc_put_fn(struct io_ring_ctx *, struct io_rsrc_put *); + +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 vt_setactivate { - unsigned int console; - struct vt_mode mode; +struct io_kiocb; + +struct io_submit_link { + struct io_kiocb *head; + struct io_kiocb *last; }; -struct vt_spawn_console { - spinlock_t lock; - struct pid *pid; - int sig; +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 vt_event_wait { - struct list_head list; - struct vt_event event; - int done; +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 compat_console_font_op { - compat_uint_t op; - compat_uint_t flags; - compat_uint_t width; - compat_uint_t height; - compat_uint_t charcount; - compat_caddr_t data; +struct io_sq_data; + +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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 { + 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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 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; + long: 64; + long: 64; + long: 64; + long: 64; + 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 { + 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; + long: 64; + long: 64; + long: 64; + long: 64; + 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 { + 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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -struct compat_unimapdesc { - short unsigned int entry_ct; - compat_caddr_t entries; +struct io_buffer { + struct list_head list; + __u64 addr; + __u32 len; + __u16 bid; }; -struct vt_notifier_param { - struct vc_data *vc; - unsigned int c; +enum { + IO_SQ_THREAD_SHOULD_STOP = 0, + IO_SQ_THREAD_SHOULD_PARK = 1, }; -struct vcs_poll_data { - struct notifier_block notifier; - unsigned int cons_num; - int event; - wait_queue_head_t waitq; - struct fasync_struct *fasync; +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 kbdiacr { - unsigned char diacr; - unsigned char base; - unsigned char result; +struct io_rw { + struct kiocb kiocb; + u64 addr; + u64 len; }; -struct kbdiacrs { - unsigned int kb_cnt; - struct kbdiacr kbdiacr[256]; +struct io_poll_iocb { + struct file *file; + struct wait_queue_head *head; + __poll_t events; + int retries; + struct wait_queue_entry wait; }; -struct kbdiacruc { - unsigned int diacr; - unsigned int base; - unsigned int result; +struct io_poll_update { + struct file *file; + u64 old_user_data; + u64 new_user_data; + __poll_t events; + bool update_events; + bool update_user_data; }; -struct kbdiacrsuc { - unsigned int kb_cnt; - struct kbdiacruc kbdiacruc[256]; +struct io_accept { + struct file *file; + struct sockaddr *addr; + int *addr_len; + int flags; + u32 file_slot; + long unsigned int nofile; }; -struct keyboard_notifier_param { - struct vc_data *vc; - int down; - int shift; - int ledstate; - unsigned int value; +struct io_sync { + struct file *file; + loff_t len; + loff_t off; + int flags; + int mode; }; -struct kbd_struct { - unsigned char lockstate; - unsigned char slockstate; - unsigned char ledmode: 1; - unsigned char ledflagstate: 4; - char: 3; - unsigned char default_ledflagstate: 4; - unsigned char kbdmode: 3; - char: 1; - unsigned char modeflags: 5; +struct io_cancel { + struct file *file; + u64 addr; }; -typedef void k_handler_fn(struct vc_data *, unsigned char, char); +struct io_timeout { + struct file *file; + u32 off; + u32 target_seq; + struct list_head list; + struct io_kiocb *head; + struct io_kiocb *prev; +}; -typedef void fn_handler_fn(struct vc_data *); +struct io_timeout_rem { + struct file *file; + u64 addr; + struct timespec64 ts; + u32 flags; + bool ltimeout; +}; -struct getset_keycode_data { - struct input_keymap_entry ke; - int error; +struct io_connect { + struct file *file; + struct sockaddr *addr; + int addr_len; }; -struct tiocl_selection { - short unsigned int xs; - short unsigned int ys; - short unsigned int xe; - short unsigned int ye; - short unsigned int sel_mode; +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; + void *msg_control; }; -struct vc_selection { - struct mutex lock; - struct vc_data *cons; - char *buffer; - unsigned int buf_len; - volatile int start; - int end; +struct io_open { + struct file *file; + int dfd; + u32 file_slot; + struct filename *filename; + struct open_how how; + long unsigned int nofile; }; -struct uni_pagedir { - u16 **uni_pgdir[32]; - long unsigned int refcount; - long unsigned int sum; - unsigned char *inverse_translations[4]; - u16 *inverse_trans_unicode; +struct io_close { + struct file *file; + int fd; + u32 file_slot; }; -typedef uint32_t char32_t; +struct io_rsrc_update { + struct file *file; + u64 arg; + u32 nr_args; + u32 offset; +}; -struct uni_screen { - char32_t *lines[0]; +struct io_fadvise { + struct file *file; + u64 offset; + u32 len; + u32 advice; }; -struct con_driver { - const struct consw *con; - const char *desc; - struct device *dev; - int node; - int first; - int last; - int flag; +struct io_madvise { + struct file *file; + u64 addr; + u32 len; + u32 advice; }; -enum { - blank_off = 0, - blank_normal_wait = 1, - blank_vesa_wait = 2, +struct io_epoll { + struct file *file; + int epfd; + int op; + int fd; + struct epoll_event event; }; -enum { - EPecma = 0, - EPdec = 1, - EPeq = 2, - EPgt = 3, - EPlt = 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 rgb { - u8 r; - u8 g; - u8 b; +struct io_provide_buf { + struct file *file; + __u64 addr; + __u32 len; + __u32 bgid; + __u16 nbufs; + __u16 bid; }; -enum { - ESnormal = 0, - ESesc = 1, - ESsquare = 2, - ESgetpars = 3, - ESfunckey = 4, - EShash = 5, - ESsetG0 = 6, - ESsetG1 = 7, - ESpercent = 8, - EScsiignore = 9, - ESnonstd = 10, - ESpalette = 11, - ESosc = 12, - ESapc = 13, - ESpm = 14, - ESdcs = 15, +struct io_statx { + struct file *file; + int dfd; + unsigned int mask; + unsigned int flags; + const char *filename; + struct statx *buffer; }; -struct interval { - uint32_t first; - uint32_t last; +struct io_shutdown { + struct file *file; + int how; }; -struct vc_draw_region { - long unsigned int from; - long unsigned int to; - int x; +struct io_rename { + struct file *file; + int old_dfd; + int new_dfd; + struct filename *oldpath; + struct filename *newpath; + int flags; }; -struct hv_ops; +struct io_unlink { + struct file *file; + int dfd; + int flags; + struct filename *filename; +}; -struct hvc_struct { - struct tty_port port; - spinlock_t lock; - int index; - int do_wakeup; - char *outbuf; - int outbuf_size; - int n_outbuf; - uint32_t vtermno; - const struct hv_ops *ops; - int irq_requested; - int data; - struct winsize ws; - struct work_struct tty_resize; - struct list_head next; - long unsigned int flags; +struct io_mkdir { + struct file *file; + int dfd; + umode_t mode; + struct filename *filename; }; -struct hv_ops { - int (*get_chars)(uint32_t, char *, int); - int (*put_chars)(uint32_t, const char *, int); - int (*flush)(uint32_t, bool); - int (*notifier_add)(struct hvc_struct *, int); - void (*notifier_del)(struct hvc_struct *, int); - void (*notifier_hangup)(struct hvc_struct *, int); - int (*tiocmget)(struct hvc_struct *); - int (*tiocmset)(struct hvc_struct *, unsigned int, unsigned int); - void (*dtr_rts)(struct hvc_struct *, int); +struct io_symlink { + struct file *file; + int new_dfd; + struct filename *oldpath; + struct filename *newpath; }; -struct iucv_handler; +struct io_hardlink { + struct file *file; + int old_dfd; + int new_dfd; + struct filename *oldpath; + struct filename *newpath; + int flags; +}; -struct iucv_path { - u16 pathid; - u16 msglim; - u8 flags; - void *private; - struct iucv_handler *handler; - struct list_head list; +struct io_completion { + struct file *file; + u32 cflags; }; -struct iucv_message; +typedef void (*io_req_tw_func_t)(struct io_kiocb *, bool *); -struct iucv_handler { - int (*path_pending)(struct iucv_path *, u8 *, u8 *); - void (*path_complete)(struct iucv_path *, u8 *); - void (*path_severed)(struct iucv_path *, u8 *); - void (*path_quiesced)(struct iucv_path *, u8 *); - void (*path_resumed)(struct iucv_path *, u8 *); - void (*message_pending)(struct iucv_path *, struct iucv_message *); - void (*message_complete)(struct iucv_path *, struct iucv_message *); - struct list_head list; - struct list_head paths; +struct io_task_work { + union { + struct io_wq_work_node node; + struct llist_node fallback_node; + }; + io_req_tw_func_t func; }; -struct iucv_message { - u32 id; - u32 audit; - u32 class; - u32 tag; - u32 length; - u32 reply_size; - u8 rmmsg[8]; - u8 flags; -} __attribute__((packed)); +struct async_poll; -struct iucv_tty_msg { - u8 version; - u8 type; - u16 datalen; - u8 data[0]; +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 iucv_state_t { - IUCV_DISCONN = 0, - IUCV_CONNECTED = 1, - IUCV_SEVERED = 2, +struct io_timeout_data { + struct io_kiocb *req; + struct hrtimer timer; + struct timespec64 ts; + enum hrtimer_mode mode; + u32 flags; }; -enum tty_state_t { - TTY_CLOSED = 0, - TTY_OPENED = 1, +struct io_async_connect { + struct __kernel_sockaddr_storage address; }; -struct hvc_iucv_private { - struct hvc_struct *hvc; - u8 srv_name[8]; - unsigned char is_console; - enum iucv_state_t iucv_state; - enum tty_state_t tty_state; - struct iucv_path *path; - spinlock_t lock; - void *sndbuf; - size_t sndbuf_len; - struct delayed_work sndbuf_work; - wait_queue_head_t sndbuf_waitq; - struct list_head tty_outqueue; - struct list_head tty_inqueue; - struct device *dev; - u8 info_path[16]; +struct io_async_msghdr { + struct iovec fast_iov[8]; + struct iovec *free_iov; + struct sockaddr *uaddr; + struct msghdr msg; + struct __kernel_sockaddr_storage addr; }; -struct iucv_tty_buffer { - struct list_head list; - struct iucv_message msg; - size_t offset; - struct iucv_tty_msg *mbuf; +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; }; -struct serdev_device; - -struct serdev_device_ops { - int (*receive_buf)(struct serdev_device *, const unsigned char *, size_t); - void (*write_wakeup)(struct serdev_device *); +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 serdev_controller; - -struct serdev_device { - struct device dev; - int nr; - struct serdev_controller *ctrl; - const struct serdev_device_ops *ops; - struct completion write_comp; - struct mutex write_lock; +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 serdev_controller_ops; - -struct serdev_controller { - struct device dev; - unsigned int nr; - struct serdev_device *serdev; - const struct serdev_controller_ops *ops; +struct async_poll { + struct io_poll_iocb poll; + struct io_poll_iocb *double_poll; }; -struct serdev_device_driver { - struct device_driver driver; - int (*probe)(struct serdev_device *); - void (*remove)(struct serdev_device *); +enum { + IORING_RSRC_FILE = 0, + IORING_RSRC_BUFFER = 1, }; -enum serdev_parity { - SERDEV_PARITY_NONE = 0, - SERDEV_PARITY_EVEN = 1, - SERDEV_PARITY_ODD = 2, +struct io_tctx_node { + struct list_head ctx_node; + struct task_struct *task; + struct io_ring_ctx *ctx; }; -struct serdev_controller_ops { - int (*write_buf)(struct serdev_controller *, const unsigned char *, size_t); - void (*write_flush)(struct serdev_controller *); - int (*write_room)(struct serdev_controller *); - int (*open)(struct serdev_controller *); - void (*close)(struct serdev_controller *); - void (*set_flow_control)(struct serdev_controller *, bool); - int (*set_parity)(struct serdev_controller *, enum serdev_parity); - unsigned int (*set_baudrate)(struct serdev_controller *, unsigned int); - void (*wait_until_sent)(struct serdev_controller *, long int); - int (*get_tiocm)(struct serdev_controller *); - int (*set_tiocm)(struct serdev_controller *, unsigned int, unsigned int); +struct io_defer_entry { + struct list_head list; + struct io_kiocb *req; + u32 seq; }; -struct serport { - struct tty_port *port; - struct tty_struct *tty; - struct tty_driver *tty_drv; - int tty_idx; - long unsigned int flags; +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 memdev { - const char *name; - umode_t mode; - const struct file_operations *fops; - fmode_t fmode; +struct req_batch { + struct task_struct *task; + int task_refs; + int ctx_refs; }; -struct timer_rand_state { - long unsigned int last_time; - long int last_delta; - long int last_delta2; +struct io_poll_table { + struct poll_table_struct pt; + struct io_kiocb *req; + int nr_entries; + int error; }; enum { - CRNG_EMPTY = 0, - CRNG_EARLY = 1, - CRNG_READY = 2, + IO_APOLL_OK = 0, + IO_APOLL_ABORTED = 1, + IO_APOLL_READY = 2, }; -enum { - CRNG_RESEED_START_INTERVAL = 100, - CRNG_RESEED_INTERVAL = 6000, +struct io_cancel_data { + struct io_ring_ctx *ctx; + u64 user_data; }; -struct crng { - u8 key[32]; - long unsigned int generation; - local_lock_t lock; +struct io_wait_queue { + struct wait_queue_entry wq; + struct io_ring_ctx *ctx; + unsigned int cq_tail; + unsigned int nr_timeouts; }; -struct batch_u64 { - u64 entropy[12]; - local_lock_t lock; - long unsigned int generation; - unsigned int position; +struct io_tctx_exit { + struct callback_head task_work; + struct completion completion; + struct io_ring_ctx *ctx; }; -struct batch_u32 { - u32 entropy[24]; - local_lock_t lock; - long unsigned int generation; - unsigned int position; +struct io_task_cancel { + struct task_struct *task; + bool all; }; +struct creds; + enum { - POOL_BITS = 256, - POOL_READY_BITS = 256, - POOL_EARLY_BITS = 128, + IO_WQ_BOUND = 0, + IO_WQ_UNBOUND = 1, }; -struct fast_pool { - struct work_struct mix; - long unsigned int pool[4]; - long unsigned int last; - unsigned int count; +enum { + IO_WORKER_F_UP = 1, + IO_WORKER_F_RUNNING = 2, + IO_WORKER_F_FREE = 4, + IO_WORKER_F_BOUND = 8, }; enum { - MIX_INFLIGHT = 2147483648, + IO_WQ_BIT_EXIT = 0, }; -struct virtrng_info { - struct hwrng hwrng; - struct virtqueue *vq; - char name[25]; - int index; - bool hwrng_register_done; - bool hwrng_removed; - struct completion have_data; - unsigned int data_avail; - unsigned int data_idx; - u8 data[256]; +enum { + IO_ACCT_STALLED_BIT = 0, }; -enum tpm2_startup_types { - TPM2_SU_CLEAR = 0, - TPM2_SU_STATE = 1, -}; +struct io_wqe; -enum tpm_chip_flags { - TPM_CHIP_FLAG_TPM2 = 2, - TPM_CHIP_FLAG_IRQ = 4, - TPM_CHIP_FLAG_VIRTUAL = 8, - TPM_CHIP_FLAG_HAVE_TIMEOUTS = 16, - TPM_CHIP_FLAG_ALWAYS_POWERED = 32, - TPM_CHIP_FLAG_FIRMWARE_POWER_MANAGED = 64, - TPM_CHIP_FLAG_FIRMWARE_UPGRADE = 128, +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 file_priv { - struct tpm_chip *chip; - struct tpm_space *space; - struct mutex buffer_mutex; - struct timer_list user_read_timer; - struct work_struct timeout_work; - struct work_struct async_work; - wait_queue_head_t async_wait; - ssize_t response_length; - bool response_read; - bool command_enqueued; - u8 data_buffer[4096]; +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; }; -enum TPM_OPS_FLAGS { - TPM_OPS_AUTO_STARTUP = 1, +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; }; -enum tpm2_timeouts { - TPM2_TIMEOUT_A = 750, - TPM2_TIMEOUT_B = 2000, - TPM2_TIMEOUT_C = 200, - TPM2_TIMEOUT_D = 30, - TPM2_DURATION_SHORT = 20, - TPM2_DURATION_MEDIUM = 750, - TPM2_DURATION_LONG = 2000, - TPM2_DURATION_LONG_LONG = 300000, - TPM2_DURATION_DEFAULT = 120000, +enum { + IO_WQ_ACCT_BOUND = 0, + IO_WQ_ACCT_UNBOUND = 1, + IO_WQ_ACCT_NR = 2, }; -enum tpm_timeout { - TPM_TIMEOUT = 5, - TPM_TIMEOUT_RETRY = 100, - TPM_TIMEOUT_RANGE_US = 300, - TPM_TIMEOUT_POLL = 1, - TPM_TIMEOUT_USECS_MIN = 100, - TPM_TIMEOUT_USECS_MAX = 500, +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]; }; -struct stclear_flags_t { - __be16 tag; - u8 deactivated; - u8 disableForceClear; - u8 physicalPresence; - u8 physicalPresenceLock; - u8 bGlobalLock; -} __attribute__((packed)); +struct io_cb_cancel_data { + work_cancel_fn *fn; + void *data; + int nr_running; + int nr_pending; + bool cancel_all; +}; -struct tpm1_version { - u8 major; - u8 minor; - u8 rev_major; - u8 rev_minor; +struct online_data { + unsigned int cpu; + bool online; }; -struct tpm1_version2 { - __be16 tag; - struct tpm1_version version; +typedef int (*cmp_r_func_t)(const void *, const void *, const void *); + +struct siprand_state { + long unsigned int v0; + long unsigned int v1; + long unsigned int v2; + long unsigned int v3; }; -struct timeout_t { - __be32 a; - __be32 b; - __be32 c; - __be32 d; +struct region { + unsigned int start; + unsigned int off; + unsigned int group_len; + unsigned int end; + unsigned int nbits; }; -struct duration_t { - __be32 tpm_short; - __be32 tpm_medium; - __be32 tpm_long; +enum { + REG_OP_ISFREE = 0, + REG_OP_ALLOC = 1, + REG_OP_RELEASE = 2, }; -struct permanent_flags_t { - __be16 tag; - u8 disable; - u8 ownership; - u8 deactivated; - u8 readPubek; - u8 disableOwnerClear; - u8 allowMaintenance; - u8 physicalPresenceLifetimeLock; - u8 physicalPresenceHWEnable; - u8 physicalPresenceCMDEnable; - u8 CEKPUsed; - u8 TPMpost; - u8 TPMpostLock; - u8 FIPS; - u8 operator; - u8 enableRevokeEK; - u8 nvLocked; - u8 readSRKPub; - u8 tpmEstablished; - u8 maintenanceDone; - u8 disableFullDALogicInfo; +struct sg_append_table { + struct sg_table sgt; + struct scatterlist *prv; + unsigned int total_nents; }; -typedef union { - struct permanent_flags_t perm_flags; - struct stclear_flags_t stclear_flags; - __u8 owned; - __be32 num_pcrs; - struct tpm1_version version1; - struct tpm1_version2 version2; - __be32 manufacturer_id; - struct timeout_t timeout; - struct duration_t duration; -} cap_t; +typedef struct scatterlist *sg_alloc_fn(unsigned int, gfp_t); -enum tpm_capabilities { - TPM_CAP_FLAG = 4, - TPM_CAP_PROP = 5, - TPM_CAP_VERSION_1_1 = 6, - TPM_CAP_VERSION_1_2 = 26, -}; +typedef void sg_free_fn(struct scatterlist *, unsigned int); -enum tpm_sub_capabilities { - TPM_CAP_PROP_PCR = 257, - TPM_CAP_PROP_MANUFACTURER = 259, - TPM_CAP_FLAG_PERM = 264, - TPM_CAP_FLAG_VOL = 265, - TPM_CAP_PROP_OWNER = 273, - TPM_CAP_PROP_TIS_TIMEOUT = 277, - TPM_CAP_PROP_TIS_DURATION = 288, +struct sg_page_iter { + struct scatterlist *sg; + unsigned int sg_pgoffset; + unsigned int __nents; + int __pg_advance; }; -struct tpm1_get_random_out { - __be32 rng_data_len; - u8 rng_data[128]; +struct sg_dma_page_iter { + struct sg_page_iter base; }; -enum tpm2_const { - TPM2_PLATFORM_PCR = 24, - TPM2_PCR_SELECT_MIN = 3, +struct sg_mapping_iter { + struct page *page; + void *addr; + size_t length; + size_t consumed; + struct sg_page_iter piter; + unsigned int __offset; + unsigned int __remaining; + unsigned int __flags; }; -enum tpm2_capabilities { - TPM2_CAP_HANDLES = 1, - TPM2_CAP_COMMANDS = 2, - TPM2_CAP_PCRS = 5, - TPM2_CAP_TPM_PROPERTIES = 6, +struct csum_state { + __wsum csum; + size_t off; }; -enum tpm2_properties { - TPM_PT_TOTAL_COMMANDS = 297, +struct __kfifo { + unsigned int in; + unsigned int out; + unsigned int mask; + unsigned int esize; + void *data; }; -enum tpm2_cc_attrs { - TPM2_CC_ATTR_CHANDLES = 25, - TPM2_CC_ATTR_RHANDLE = 28, +struct rhltable { + struct rhashtable ht; }; -struct tpm2_pcr_read_out { - __be32 update_cnt; - __be32 pcr_selects_cnt; - __be16 hash_alg; - u8 pcr_select_size; - u8 pcr_select[3]; - __be32 digests_cnt; - __be16 digest_size; - u8 digest[0]; -} __attribute__((packed)); - -struct tpm2_null_auth_area { - __be32 handle; - __be16 nonce_size; - u8 attributes; - __be16 auth_size; -} __attribute__((packed)); - -struct tpm2_get_random_out { - __be16 size; - u8 buffer[128]; +struct rhashtable_walker { + struct list_head list; + struct bucket_table *tbl; }; -struct tpm2_get_cap_out { - u8 more_data; - __be32 subcap_id; - __be32 property_cnt; - __be32 property_id; - __be32 value; -} __attribute__((packed)); - -struct tpm2_pcr_selection { - __be16 hash_alg; - u8 size_of_select; - u8 pcr_select[3]; +struct rhashtable_iter { + struct rhashtable *ht; + struct rhash_head *p; + struct rhlist_head *list; + struct rhashtable_walker walker; + unsigned int slot; + unsigned int skip; + bool end_of_table; }; -struct tpmrm_priv { - struct file_priv priv; - struct tpm_space space; +union nested_table { + union nested_table *table; + struct rhash_lock_head *bucket; }; -enum tpm2_handle_types { - TPM2_HT_HMAC_SESSION = 33554432, - TPM2_HT_POLICY_SESSION = 50331648, - TPM2_HT_TRANSIENT = 2147483648, +struct once_work { + struct work_struct work; + struct static_key_true *key; + struct module *module; }; -struct tpm2_context { - __be64 sequence; - __be32 saved_handle; - __be32 hierarchy; - __be16 blob_size; -} __attribute__((packed)); - -struct tpm2_cap_handles { - u8 more_data; - __be32 capability; - __be32 count; - __be32 handles[0]; -} __attribute__((packed)); +struct genradix_iter { + size_t offset; + size_t pos; +}; -struct tpm_readpubek_out { - u8 algorithm[4]; - u8 encscheme[2]; - u8 sigscheme[2]; - __be32 paramsize; - u8 parameters[12]; - __be32 keysize; - u8 modulus[256]; - u8 checksum[20]; +struct genradix_node { + union { + struct genradix_node *children[512]; + u8 data[4096]; + }; }; -struct tpm_pcr_attr { - int alg_id; - int pcr; - struct device_attribute attr; +struct reciprocal_value_adv { + u32 m; + u8 sh; + u8 exp; + bool is_wide_m; }; -struct tcpa_event { - u32 pcr_index; - u32 event_type; - u8 pcr_value[20]; - u32 event_size; - u8 event_data[0]; +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, }; -enum tcpa_event_types { - PREBOOT = 0, - POST_CODE = 1, - UNUSED___2 = 2, - NO_ACTION = 3, - SEPARATOR = 4, - ACTION = 5, - EVENT_TAG = 6, - SCRTM_CONTENTS = 7, - SCRTM_VERSION = 8, - CPU_MICROCODE = 9, - PLATFORM_CONFIG_FLAGS = 10, - TABLE_OF_DEVICES = 11, - COMPACT_HASH = 12, - IPL = 13, - IPL_PARTITION_DATA = 14, - NONHOST_CODE = 15, - NONHOST_CONFIG = 16, - NONHOST_INFO = 17, +struct blake2s_state { + u32 h[8]; + u32 t[2]; + u32 f[2]; + u8 buf[64]; + unsigned int buflen; + unsigned int outlen; }; -struct tcpa_pc_event { - u32 event_id; - u32 event_size; - u8 event_data[0]; +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 tcpa_pc_event_ids { - SMBIOS = 1, - BIS_CERT = 2, - POST_BIOS_ROM = 3, - ESCD = 4, - CMOS = 5, - NVRAM = 6, - OPTION_ROM_EXEC = 7, - OPTION_ROM_CONFIG = 8, - OPTION_ROM_MICROCODE = 10, - S_CRTM_VERSION = 11, - S_CRTM_CONTENTS = 12, - POST_CONTENTS = 13, - HOST_TABLE_OF_DEVICES = 14, +enum devm_ioremap_type { + DEVM_IOREMAP = 0, + DEVM_IOREMAP_UC = 1, + DEVM_IOREMAP_WC = 2, + DEVM_IOREMAP_NP = 3, }; -struct tcg_efi_specid_event_algs { - u16 alg_id; - u16 digest_size; +struct pcim_iomap_devres { + void *table[6]; }; -struct tcg_efi_specid_event_head { - u8 signature[16]; - u32 platform_class; - u8 spec_version_minor; - u8 spec_version_major; - u8 spec_errata; - u8 uintnsize; - u32 num_algs; - struct tcg_efi_specid_event_algs digest_sizes[0]; +enum assoc_array_walk_status { + assoc_array_walk_tree_empty = 0, + assoc_array_walk_found_terminal_node = 1, + assoc_array_walk_found_wrong_shortcut = 2, }; -struct tcg_pcr_event { - u32 pcr_idx; - u32 event_type; - u8 digest[20]; - u32 event_size; - u8 event[0]; +struct assoc_array_walk_result { + struct { + struct assoc_array_node *node; + int level; + int slot; + } terminal_node; + struct { + struct assoc_array_shortcut *shortcut; + int level; + int sc_level; + long unsigned int sc_segments; + long unsigned int dissimilarity; + } wrong_shortcut; }; -struct tcg_event_field { - u32 event_size; - u8 event[0]; +struct assoc_array_delete_collapse_context { + struct assoc_array_node *node; + const void *skip_leaf; + int slot; }; -struct tcg_pcr_event2_head { - u32 pcr_idx; - u32 event_type; - u32 count; - struct tpm_digest digests[0]; +struct xxh32_state { + uint32_t total_len_32; + uint32_t large_len; + uint32_t v1; + uint32_t v2; + uint32_t v3; + uint32_t v4; + uint32_t mem32[4]; + uint32_t memsize; }; -struct iommu_group { - struct kobject kobj; - struct kobject *devices_kobj; - struct list_head devices; - struct mutex mutex; - struct blocking_notifier_head notifier; - void *iommu_data; - void (*iommu_data_release)(void *); - char *name; - int id; - struct iommu_domain *default_domain; - struct iommu_domain *domain; - struct list_head entry; +struct xxh64_state { + uint64_t total_len; + uint64_t v1; + uint64_t v2; + uint64_t v3; + uint64_t v4; + uint64_t mem64[4]; + uint32_t memsize; }; -enum iommu_fault_type { - IOMMU_FAULT_DMA_UNRECOV = 1, - IOMMU_FAULT_PAGE_REQ = 2, -}; +struct gen_pool; -enum iommu_resv_type { - IOMMU_RESV_DIRECT = 0, - IOMMU_RESV_DIRECT_RELAXABLE = 1, - IOMMU_RESV_RESERVED = 2, - IOMMU_RESV_MSI = 3, - IOMMU_RESV_SW_MSI = 4, +typedef long unsigned int (*genpool_algo_t)(long unsigned int *, long unsigned int, long unsigned int, unsigned int, void *, struct gen_pool *, long unsigned int); + +struct gen_pool { + spinlock_t lock; + struct list_head chunks; + int min_alloc_order; + genpool_algo_t algo; + void *data; + const char *name; }; -struct iommu_resv_region { - struct list_head list; - phys_addr_t start; - size_t length; - int prot; - enum iommu_resv_type type; +struct gen_pool_chunk { + struct list_head next_chunk; + atomic_long_t avail; + phys_addr_t phys_addr; + void *owner; + long unsigned int start_addr; + long unsigned int end_addr; + long unsigned int bits[0]; }; -struct fsl_mc_obj_desc { - char type[16]; - int id; - u16 vendor; - u16 ver_major; - u16 ver_minor; - u8 irq_count; - u8 region_count; - u32 state; - char label[16]; - u16 flags; +struct genpool_data_align { + int align; }; -struct fsl_mc_io; +struct genpool_data_fixed { + long unsigned int offset; +}; -struct fsl_mc_device_irq; +typedef struct { + unsigned char op; + unsigned char bits; + short unsigned int val; +} code; -struct fsl_mc_resource; +typedef enum { + HEAD = 0, + FLAGS = 1, + TIME = 2, + OS = 3, + EXLEN = 4, + EXTRA = 5, + NAME = 6, + COMMENT = 7, + HCRC = 8, + DICTID = 9, + DICT = 10, + TYPE = 11, + TYPEDO = 12, + STORED = 13, + COPY = 14, + TABLE = 15, + LENLENS = 16, + CODELENS = 17, + LEN = 18, + LENEXT = 19, + DIST = 20, + DISTEXT = 21, + MATCH = 22, + LIT = 23, + CHECK = 24, + LENGTH = 25, + DONE = 26, + BAD = 27, + MEM = 28, + SYNC = 29, +} inflate_mode; -struct fsl_mc_device { - struct device dev; - u64 dma_mask; - u16 flags; - u32 icid; - u16 mc_handle; - struct fsl_mc_io *mc_io; - struct fsl_mc_obj_desc obj_desc; - struct resource *regions; - struct fsl_mc_device_irq **irqs; - struct fsl_mc_resource *resource; - struct device_link *consumer_link; - char *driver_override; +struct inflate_state { + inflate_mode mode; + int last; + int wrap; + int havedict; + int flags; + unsigned int dmax; + long unsigned int check; + long unsigned int total; + unsigned int wbits; + unsigned int wsize; + unsigned int whave; + unsigned int write; + unsigned char *window; + long unsigned int hold; + unsigned int bits; + unsigned int length; + unsigned int offset; + unsigned int extra; + const code *lencode; + const code *distcode; + unsigned int lenbits; + unsigned int distbits; + unsigned int ncode; + unsigned int nlen; + unsigned int ndist; + unsigned int have; + code *next; + short unsigned int lens[320]; + short unsigned int work[288]; + code codes[2048]; }; -enum fsl_mc_pool_type { - FSL_MC_POOL_DPMCP = 0, - FSL_MC_POOL_DPBP = 1, - FSL_MC_POOL_DPCON = 2, - FSL_MC_POOL_IRQ = 3, - FSL_MC_NUM_POOL_TYPES = 4, +union uu { + short unsigned int us; + unsigned char b[2]; }; -struct fsl_mc_resource_pool; +typedef unsigned int uInt; -struct fsl_mc_resource { - enum fsl_mc_pool_type type; - s32 id; - void *data; - struct fsl_mc_resource_pool *parent_pool; - struct list_head node; -}; +typedef enum { + CODES = 0, + LENS = 1, + DISTS = 2, +} codetype; -struct fsl_mc_device_irq { - unsigned int virq; - struct fsl_mc_device *mc_dev; - u8 dev_irq_index; - struct fsl_mc_resource resource; +struct dfltcc_qaf_param { + char fns[16]; + char reserved1[8]; + char fmts[2]; + char reserved2[6]; }; -struct fsl_mc_io { - struct device *dev; - u16 flags; - u32 portal_size; - phys_addr_t portal_phys_addr; - void *portal_virt_addr; - struct fsl_mc_device *dpmcp_dev; - union { - struct mutex mutex; - raw_spinlock_t spinlock; - }; +struct dfltcc_param_v0 { + uint16_t pbvn; + uint8_t mvn; + uint8_t ribm; + unsigned int reserved32: 31; + unsigned int cf: 1; + uint8_t reserved64[8]; + unsigned int nt: 1; + unsigned int reserved129: 1; + unsigned int cvt: 1; + unsigned int reserved131: 1; + unsigned int htt: 1; + unsigned int bcf: 1; + unsigned int bcc: 1; + unsigned int bhf: 1; + unsigned int reserved136: 1; + unsigned int reserved137: 1; + unsigned int dhtgc: 1; + unsigned int reserved139: 5; + unsigned int reserved144: 5; + unsigned int sbb: 3; + uint8_t oesc; + unsigned int reserved160: 12; + unsigned int ifs: 4; + uint16_t ifl; + uint8_t reserved192[8]; + uint8_t reserved256[8]; + uint8_t reserved320[4]; + uint16_t hl; + unsigned int reserved368: 1; + uint16_t ho: 15; + uint32_t cv; + unsigned int eobs: 15; + unsigned int reserved431: 1; + uint8_t eobl: 4; + unsigned int reserved436: 12; + unsigned int reserved448: 4; + uint16_t cdhtl: 12; + uint8_t reserved464[6]; + uint8_t cdht[288]; + uint8_t reserved[32]; + uint8_t csb[1152]; }; -struct group_device { - struct list_head list; - struct device *dev; - char *name; +struct dfltcc_state { + struct dfltcc_param_v0 param; + struct dfltcc_qaf_param af; + uLong level_mask; + uLong block_size; + uLong block_threshold; + uLong dht_threshold; + char msg[64]; }; -struct iommu_group_attribute { - struct attribute attr; - ssize_t (*show)(struct iommu_group *, char *); - ssize_t (*store)(struct iommu_group *, const char *, size_t); -}; +typedef enum { + DFLTCC_INFLATE_CONTINUE = 0, + DFLTCC_INFLATE_BREAK = 1, + DFLTCC_INFLATE_SOFTWARE = 2, +} dfltcc_inflate_action; -struct group_for_pci_data { - struct pci_dev *pdev; - struct iommu_group *group; +struct inflate_workspace { + struct inflate_state inflate_state; + struct dfltcc_state dfltcc_state; + unsigned char working_window[36864]; }; -struct __group_domain_type { - struct device *dev; - unsigned int type; -}; +typedef unsigned char uch; -struct trace_event_raw_iommu_group_event { - struct trace_entry ent; - int gid; - u32 __data_loc_device; - char __data[0]; -}; +typedef short unsigned int ush; -struct trace_event_raw_iommu_device_event { - struct trace_entry ent; - u32 __data_loc_device; - char __data[0]; +typedef long unsigned int ulg; + +struct ct_data_s { + union { + ush freq; + ush code; + } fc; + union { + ush dad; + ush len; + } dl; }; -struct trace_event_raw_map { - struct trace_entry ent; - u64 iova; - u64 paddr; - size_t size; - char __data[0]; +typedef struct ct_data_s ct_data; + +struct static_tree_desc_s { + const ct_data *static_tree; + const int *extra_bits; + int extra_base; + int elems; + int max_length; }; -struct trace_event_raw_unmap { - struct trace_entry ent; - u64 iova; - size_t size; - size_t unmapped_size; - char __data[0]; +typedef struct static_tree_desc_s static_tree_desc; + +struct tree_desc_s { + ct_data *dyn_tree; + int max_code; + static_tree_desc *stat_desc; }; -struct trace_event_raw_iommu_error { - struct trace_entry ent; - u32 __data_loc_device; - u32 __data_loc_driver; - u64 iova; - int flags; - char __data[0]; +typedef ush Pos; + +typedef unsigned int IPos; + +struct deflate_state { + z_streamp strm; + int status; + Byte *pending_buf; + ulg pending_buf_size; + Byte *pending_out; + int pending; + int noheader; + Byte data_type; + Byte method; + int last_flush; + uInt w_size; + uInt w_bits; + uInt w_mask; + Byte *window; + ulg window_size; + Pos *prev; + Pos *head; + uInt ins_h; + uInt hash_size; + uInt hash_bits; + uInt hash_mask; + uInt hash_shift; + long int block_start; + uInt match_length; + IPos prev_match; + int match_available; + uInt strstart; + uInt match_start; + uInt lookahead; + uInt prev_length; + uInt max_chain_length; + uInt max_lazy_match; + int level; + int strategy; + uInt good_match; + int nice_match; + struct ct_data_s dyn_ltree[573]; + struct ct_data_s dyn_dtree[61]; + struct ct_data_s bl_tree[39]; + struct tree_desc_s l_desc; + struct tree_desc_s d_desc; + struct tree_desc_s bl_desc; + ush bl_count[16]; + int heap[573]; + int heap_len; + int heap_max; + uch depth[573]; + uch *l_buf; + uInt lit_bufsize; + uInt last_lit; + ush *d_buf; + ulg opt_len; + ulg static_len; + ulg compressed_len; + uInt matches; + int last_eob_len; + ush bi_buf; + int bi_valid; }; -struct trace_event_data_offsets_iommu_group_event { - u32 device; +typedef struct deflate_state deflate_state; + +typedef enum { + need_more = 0, + block_done = 1, + finish_started = 2, + finish_done = 3, +} block_state; + +typedef block_state (*compress_func)(deflate_state *, int); + +struct deflate_workspace { + deflate_state deflate_memory; + struct dfltcc_state dfltcc_memory; + Byte *window_memory; + Pos *prev_memory; + Pos *head_memory; + char *overlay_memory; }; -struct trace_event_data_offsets_iommu_device_event { - u32 device; +typedef struct deflate_workspace deflate_workspace; + +struct config_s { + ush good_length; + ush max_lazy; + ush nice_length; + ush max_chain; + compress_func func; }; -struct trace_event_data_offsets_map {}; +typedef struct config_s config; -struct trace_event_data_offsets_unmap {}; +typedef struct tree_desc_s tree_desc; -struct trace_event_data_offsets_iommu_error { - u32 device; - u32 driver; -}; +typedef enum { + DFLTCC_CC_OK = 0, + DFLTCC_CC_OP1_TOO_SHORT = 1, + DFLTCC_CC_OP2_TOO_SHORT = 2, + DFLTCC_CC_OP2_CORRUPT = 2, + DFLTCC_CC_AGAIN = 3, +} dfltcc_cc; -typedef void (*btf_trace_add_device_to_group)(void *, int, struct device *); +typedef struct { + const uint8_t *externalDict; + size_t extDictSize; + const uint8_t *prefixEnd; + size_t prefixSize; +} LZ4_streamDecode_t_internal; -typedef void (*btf_trace_remove_device_from_group)(void *, int, struct device *); +typedef union { + long long unsigned int table[4]; + LZ4_streamDecode_t_internal internal_donotuse; +} LZ4_streamDecode_t; -typedef void (*btf_trace_attach_device_to_domain)(void *, struct device *); +typedef uint16_t U16; -typedef void (*btf_trace_detach_device_from_domain)(void *, struct device *); +typedef uint64_t U64; -typedef void (*btf_trace_map)(void *, long unsigned int, phys_addr_t, size_t); +typedef uintptr_t uptrval; -typedef void (*btf_trace_unmap)(void *, long unsigned int, size_t, size_t); +typedef enum { + noDict = 0, + withPrefix64k = 1, + usingExtDict = 2, +} dict_directive; -typedef void (*btf_trace_io_page_fault)(void *, struct device *, long unsigned int, int); +typedef enum { + endOnOutputSize = 0, + endOnInputSize = 1, +} endCondition_directive; -struct cb_id { - __u32 idx; - __u32 val; -}; +typedef enum { + decode_full_block = 0, + partial_decode = 1, +} earlyEnd_directive; -struct cn_msg { - struct cb_id id; - __u32 seq; - __u32 ack; - __u16 len; - __u16 flags; - __u8 data[0]; -}; +typedef struct { + size_t bitContainer; + unsigned int bitsConsumed; + const char *ptr; + const char *start; +} BIT_DStream_t; -struct cn_queue_dev { - atomic_t refcnt; - unsigned char name[32]; - struct list_head queue_list; - spinlock_t queue_lock; - struct sock *nls; -}; +typedef enum { + BIT_DStream_unfinished = 0, + BIT_DStream_endOfBuffer = 1, + BIT_DStream_completed = 2, + BIT_DStream_overflow = 3, +} BIT_DStream_status; -struct cn_callback_id { - unsigned char name[32]; - struct cb_id id; -}; +typedef U32 HUF_DTable; -struct cn_callback_entry { - struct list_head callback_entry; - refcount_t refcnt; - struct cn_queue_dev *pdev; - struct cn_callback_id id; - void (*callback)(struct cn_msg *, struct netlink_skb_parms *); - u32 seq; - u32 group; -}; +typedef struct { + BYTE maxTableLog; + BYTE tableType; + BYTE tableLog; + BYTE reserved; +} DTableDesc; -struct s390_domain { - struct iommu_domain domain; - struct list_head devices; - long unsigned int *dma_table; - spinlock_t dma_table_lock; - spinlock_t list_lock; -}; +typedef struct { + BYTE byte; + BYTE nbBits; +} HUF_DEltX2; -struct s390_domain_device { - struct list_head list; - struct zpci_dev *zdev; -}; +typedef struct { + U16 sequence; + BYTE nbBits; + BYTE length; +} HUF_DEltX4; -struct cn_dev { - struct cb_id id; - u32 seq; - u32 groups; - struct sock *nls; - struct cn_queue_dev *cbdev; -}; +typedef struct { + BYTE symbol; + BYTE weight; +} sortedSymbol_t; -struct component_ops { - int (*bind)(struct device *, struct device *, void *); - void (*unbind)(struct device *, struct device *, void *); -}; +typedef U32 rankValCol_t[13]; -struct component_master_ops { - int (*bind)(struct device *); - void (*unbind)(struct device *); -}; +typedef struct { + U32 tableTime; + U32 decode256Time; +} algo_time_t; -struct component; +typedef s16 int16_t; -struct component_match_array { - void *data; - int (*compare)(struct device *, void *); - int (*compare_typed)(struct device *, int, void *); - void (*release)(struct device *, void *); - struct component *component; - bool duplicate; -}; +typedef unsigned int FSE_DTable; -struct aggregate_device; +typedef struct { + FSE_DTable LLTable[513]; + FSE_DTable OFTable[257]; + FSE_DTable MLTable[513]; + HUF_DTable hufTable[4097]; + U64 workspace[384]; + U32 rep[3]; +} ZSTD_entropyTables_t; -struct component { - struct list_head node; - struct aggregate_device *adev; - bool bound; - const struct component_ops *ops; - int subcomponent; - struct device *dev; -}; +typedef enum { + bt_raw = 0, + bt_rle = 1, + bt_compressed = 2, + bt_reserved = 3, +} blockType_e; -struct component_match { - size_t alloc; - size_t num; - struct component_match_array *compare; -}; +typedef enum { + ZSTDds_getFrameHeaderSize = 0, + ZSTDds_decodeFrameHeader = 1, + ZSTDds_decodeBlockHeader = 2, + ZSTDds_decompressBlock = 3, + ZSTDds_decompressLastBlock = 4, + ZSTDds_checkChecksum = 5, + ZSTDds_decodeSkippableHeader = 6, + ZSTDds_skipFrame = 7, +} ZSTD_dStage; -struct aggregate_device { - struct list_head node; - bool bound; - const struct component_master_ops *ops; - struct device *parent; - struct component_match *match; +struct ZSTD_DCtx_s { + const FSE_DTable *LLTptr; + const FSE_DTable *MLTptr; + const FSE_DTable *OFTptr; + const HUF_DTable *HUFptr; + ZSTD_entropyTables_t entropy; + const void *previousDstEnd; + const void *base; + const void *vBase; + const void *dictEnd; + size_t expected; + ZSTD_frameParams fParams; + blockType_e bType; + ZSTD_dStage stage; + U32 litEntropy; + U32 fseEntropy; + struct xxh64_state xxhState; + size_t headerSize; + U32 dictID; + const BYTE *litPtr; + ZSTD_customMem customMem; + size_t litSize; + size_t rleSize; + BYTE litBuffer[131080]; + BYTE headerBuffer[18]; }; -struct fwnode_link { - struct fwnode_handle *supplier; - struct list_head s_hook; - struct fwnode_handle *consumer; - struct list_head c_hook; +struct ZSTD_DDict_s { + void *dictBuffer; + const void *dictContent; + size_t dictSize; + ZSTD_entropyTables_t entropy; + U32 dictID; + U32 entropyPresent; + ZSTD_customMem cMem; }; -enum dpm_order { - DPM_ORDER_NONE = 0, - DPM_ORDER_DEV_AFTER_PARENT = 1, - DPM_ORDER_PARENT_BEFORE_DEV = 2, - DPM_ORDER_DEV_LAST = 3, -}; +typedef enum { + ZSTDnit_frameHeader = 0, + ZSTDnit_blockHeader = 1, + ZSTDnit_block = 2, + ZSTDnit_lastBlock = 3, + ZSTDnit_checksum = 4, + ZSTDnit_skippableFrame = 5, +} ZSTD_nextInputType_e; -struct subsys_private { - struct kset subsys; - struct kset *devices_kset; - struct list_head interfaces; - struct mutex mutex; - struct kset *drivers_kset; - struct klist klist_devices; - struct klist klist_drivers; - struct blocking_notifier_head bus_notifier; - unsigned int drivers_autoprobe: 1; - struct bus_type *bus; - struct kset glue_dirs; - struct class *class; -}; +typedef int16_t S16; -struct class_interface { - struct list_head node; - struct class *class; - int (*add_dev)(struct device *, struct class_interface *); - void (*remove_dev)(struct device *, struct class_interface *); -}; +typedef uintptr_t uPtrDiff; -struct driver_private { - struct kobject kobj; - struct klist klist_devices; - struct klist_node knode_bus; - struct module_kobject *mkobj; - struct device_driver *driver; -}; +typedef struct { + size_t state; + const void *table; +} FSE_DState_t; -struct dev_ext_attribute { - struct device_attribute attr; - void *var; -}; +typedef struct { + U16 tableLog; + U16 fastMode; +} FSE_DTableHeader; -struct device_private { - struct klist klist_children; - struct klist_node knode_parent; - struct klist_node knode_driver; - struct klist_node knode_bus; - struct klist_node knode_class; - struct list_head deferred_probe; - struct device_driver *async_driver; - char *deferred_probe_reason; - struct device *device; - u8 dead: 1; -}; +typedef struct { + short unsigned int newState; + unsigned char symbol; + unsigned char nbBits; +} FSE_decode_t; -union device_attr_group_devres { - const struct attribute_group *group; - const struct attribute_group **groups; -}; +typedef enum { + set_basic = 0, + set_rle = 1, + set_compressed = 2, + set_repeat = 3, +} symbolEncodingType_e; -struct class_dir { - struct kobject kobj; - struct class *class; -}; +typedef struct { + blockType_e blockType; + U32 lastBlock; + U32 origSize; +} blockProperties_t; -struct root_device { - struct device dev; - struct module *owner; -}; +typedef union { + FSE_decode_t realData; + U32 alignedBy4; +} FSE_decode_t4; -enum proc_cn_mcast_op { - PROC_CN_MCAST_LISTEN = 1, - PROC_CN_MCAST_IGNORE = 2, -}; +typedef struct { + size_t litLength; + size_t matchLength; + size_t offset; + const BYTE *match; +} seq_t; -struct fork_proc_event { - __kernel_pid_t parent_pid; - __kernel_pid_t parent_tgid; - __kernel_pid_t child_pid; - __kernel_pid_t child_tgid; -}; +typedef struct { + BIT_DStream_t DStream; + FSE_DState_t stateLL; + FSE_DState_t stateOffb; + FSE_DState_t stateML; + size_t prevOffset[3]; + const BYTE *base; + size_t pos; + uPtrDiff gotoDict; +} seqState_t; -struct exec_proc_event { - __kernel_pid_t process_pid; - __kernel_pid_t process_tgid; +typedef struct { + void *ptr; + const void *end; +} ZSTD_stack; + +typedef uint64_t vli_type; + +enum xz_check { + XZ_CHECK_NONE = 0, + XZ_CHECK_CRC32 = 1, + XZ_CHECK_CRC64 = 4, + XZ_CHECK_SHA256 = 10, }; -struct id_proc_event { - __kernel_pid_t process_pid; - __kernel_pid_t process_tgid; - union { - __u32 ruid; - __u32 rgid; - } r; - union { - __u32 euid; - __u32 egid; - } e; +struct xz_dec_hash { + vli_type unpadded; + vli_type uncompressed; + uint32_t crc32; }; -struct sid_proc_event { - __kernel_pid_t process_pid; - __kernel_pid_t process_tgid; +struct xz_dec_lzma2; + +struct xz_dec { + enum { + SEQ_STREAM_HEADER = 0, + SEQ_BLOCK_START = 1, + SEQ_BLOCK_HEADER = 2, + SEQ_BLOCK_UNCOMPRESS = 3, + SEQ_BLOCK_PADDING = 4, + SEQ_BLOCK_CHECK = 5, + SEQ_INDEX = 6, + SEQ_INDEX_PADDING = 7, + SEQ_INDEX_CRC32 = 8, + SEQ_STREAM_FOOTER = 9, + } sequence; + uint32_t pos; + vli_type vli; + size_t in_start; + size_t out_start; + uint32_t crc32; + enum xz_check check_type; + enum xz_mode mode; + bool allow_buf_error; + struct { + vli_type compressed; + vli_type uncompressed; + uint32_t size; + } block_header; + struct { + vli_type compressed; + vli_type uncompressed; + vli_type count; + struct xz_dec_hash hash; + } block; + struct { + enum { + SEQ_INDEX_COUNT = 0, + SEQ_INDEX_UNPADDED = 1, + SEQ_INDEX_UNCOMPRESSED = 2, + } sequence; + vli_type size; + vli_type count; + struct xz_dec_hash hash; + } index; + struct { + size_t pos; + size_t size; + uint8_t buf[1024]; + } temp; + struct xz_dec_lzma2 *lzma2; }; -struct ptrace_proc_event { - __kernel_pid_t process_pid; - __kernel_pid_t process_tgid; - __kernel_pid_t tracer_pid; - __kernel_pid_t tracer_tgid; +enum lzma_state { + STATE_LIT_LIT = 0, + STATE_MATCH_LIT_LIT = 1, + STATE_REP_LIT_LIT = 2, + STATE_SHORTREP_LIT_LIT = 3, + STATE_MATCH_LIT = 4, + STATE_REP_LIT = 5, + STATE_SHORTREP_LIT = 6, + STATE_LIT_MATCH = 7, + STATE_LIT_LONGREP = 8, + STATE_LIT_SHORTREP = 9, + STATE_NONLIT_MATCH = 10, + STATE_NONLIT_REP = 11, }; -struct comm_proc_event { - __kernel_pid_t process_pid; - __kernel_pid_t process_tgid; - char comm[16]; +struct dictionary { + uint8_t *buf; + size_t start; + size_t pos; + size_t full; + size_t limit; + size_t end; + uint32_t size; + uint32_t size_max; + uint32_t allocated; + enum xz_mode mode; }; -struct coredump_proc_event { - __kernel_pid_t process_pid; - __kernel_pid_t process_tgid; - __kernel_pid_t parent_pid; - __kernel_pid_t parent_tgid; +struct rc_dec { + uint32_t range; + uint32_t code; + uint32_t init_bytes_left; + const uint8_t *in; + size_t in_pos; + size_t in_limit; }; -struct exit_proc_event { - __kernel_pid_t process_pid; - __kernel_pid_t process_tgid; - __u32 exit_code; - __u32 exit_signal; - __kernel_pid_t parent_pid; - __kernel_pid_t parent_tgid; +struct lzma_len_dec { + uint16_t choice; + uint16_t choice2; + uint16_t low[128]; + uint16_t mid[128]; + uint16_t high[256]; }; -struct proc_event { - enum what what; - __u32 cpu; - __u64 timestamp_ns; - union { - struct { - __u32 err; - } ack; - struct fork_proc_event fork; - struct exec_proc_event exec; - struct id_proc_event id; - struct sid_proc_event sid; - struct ptrace_proc_event ptrace; - struct comm_proc_event comm; - struct coredump_proc_event coredump; - struct exit_proc_event exit; - } event_data; +struct lzma_dec { + uint32_t rep0; + uint32_t rep1; + uint32_t rep2; + uint32_t rep3; + enum lzma_state state; + uint32_t len; + uint32_t lc; + uint32_t literal_pos_mask; + uint32_t pos_mask; + uint16_t is_match[192]; + uint16_t is_rep[12]; + uint16_t is_rep0[12]; + uint16_t is_rep1[12]; + uint16_t is_rep2[12]; + uint16_t is_rep0_long[192]; + uint16_t dist_slot[256]; + uint16_t dist_special[114]; + uint16_t dist_align[16]; + struct lzma_len_dec match_len_dec; + struct lzma_len_dec rep_len_dec; + uint16_t literal[12288]; }; -struct local_event { - local_lock_t lock; - __u32 count; +enum lzma2_seq { + SEQ_CONTROL = 0, + SEQ_UNCOMPRESSED_1 = 1, + SEQ_UNCOMPRESSED_2 = 2, + SEQ_COMPRESSED_0 = 3, + SEQ_COMPRESSED_1 = 4, + SEQ_PROPERTIES = 5, + SEQ_LZMA_PREPARE = 6, + SEQ_LZMA_RUN = 7, + SEQ_COPY = 8, }; -struct subsys_dev_iter { - struct klist_iter ki; - const struct device_type *type; +struct lzma2_dec { + enum lzma2_seq sequence; + enum lzma2_seq next_sequence; + uint32_t uncompressed; + uint32_t compressed; + bool need_dict_reset; + bool need_props; }; -struct subsys_interface { - const char *name; - struct bus_type *subsys; - struct list_head node; - int (*add_dev)(struct device *, struct subsys_interface *); - void (*remove_dev)(struct device *, struct subsys_interface *); +struct xz_dec_lzma2 { + struct rc_dec rc; + struct dictionary dict; + struct lzma2_dec lzma2; + struct lzma_dec lzma; + struct { + uint32_t size; + uint8_t buf[63]; + } temp; }; -struct class_attribute { - struct attribute attr; - ssize_t (*show)(struct class *, struct class_attribute *, char *); - ssize_t (*store)(struct class *, struct class_attribute *, const char *, size_t); +struct ts_state { + unsigned int offset; + char cb[48]; }; -struct class_attribute_string { - struct class_attribute attr; - char *str; -}; +struct ts_config; -struct class_compat { - struct kobject *kobj; +struct ts_ops { + const char *name; + struct ts_config * (*init)(const void *, unsigned int, gfp_t, int); + unsigned int (*find)(struct ts_config *, struct ts_state *); + void (*destroy)(struct ts_config *); + void * (*get_pattern)(struct ts_config *); + unsigned int (*get_pattern_len)(struct ts_config *); + struct module *owner; + struct list_head list; }; -typedef void *acpi_handle; +struct ts_config { + struct ts_ops *ops; + int flags; + unsigned int (*get_next_block)(unsigned int, const u8 **, struct ts_config *, struct ts_state *); + void (*finish)(struct ts_config *, struct ts_state *); +}; -struct irq_affinity_devres { - unsigned int count; - unsigned int irq[0]; +struct ts_linear_state { + unsigned int len; + const void *data; }; -struct platform_object { - struct platform_device pdev; - char name[0]; +typedef s32 pcp_op_T_____9; + +struct ei_entry { + struct list_head list; + long unsigned int start_addr; + long unsigned int end_addr; + int etype; + void *priv; }; -struct device_attach_data { - struct device *dev; - bool check_async; - bool want_async; - bool have_async; +struct ddebug_table { + struct list_head link; + const char *mod_name; + unsigned int num_ddebugs; + struct _ddebug *ddebugs; }; -struct cpu_attr { - struct device_attribute attr; - const struct cpumask * const map; +struct ddebug_query { + const char *filename; + const char *module; + const char *function; + const char *format; + unsigned int first_lineno; + unsigned int last_lineno; }; -struct probe { - struct probe *next; - dev_t dev; - long unsigned int range; - struct module *owner; - kobj_probe_t *get; - int (*lock)(dev_t, void *); - void *data; +struct ddebug_iter { + struct ddebug_table *table; + unsigned int idx; }; -struct kobj_map { - struct probe *probes[255]; - struct mutex *lock; +struct flag_settings { + unsigned int flags; + unsigned int mask; }; -struct devres_node { - struct list_head entry; - dr_release_t release; - const char *name; - size_t size; +struct flagsbuf { + char buf[7]; }; -struct devres { - struct devres_node node; - u8 data[0]; +struct nla_bitfield32 { + __u32 value; + __u32 selector; }; -struct devres_group { - struct devres_node node[2]; - void *id; - int color; +enum nla_policy_validation { + NLA_VALIDATE_NONE = 0, + NLA_VALIDATE_RANGE = 1, + NLA_VALIDATE_RANGE_WARN_TOO_LONG = 2, + NLA_VALIDATE_MIN = 3, + NLA_VALIDATE_MAX = 4, + NLA_VALIDATE_MASK = 5, + NLA_VALIDATE_RANGE_PTR = 6, + NLA_VALIDATE_FUNCTION = 7, }; -struct action_devres { - void *data; - void (*action)(void *); +enum netlink_validation { + NL_VALIDATE_LIBERAL = 0, + NL_VALIDATE_TRAILING = 1, + NL_VALIDATE_MAXTYPE = 2, + NL_VALIDATE_UNSPEC = 4, + NL_VALIDATE_STRICT_ATTRS = 8, + NL_VALIDATE_NESTED = 16, }; -struct pages_devres { - long unsigned int addr; - unsigned int order; +struct cpu_rmap { + struct kref refcount; + u16 size; + u16 used; + void **obj; + struct { + u16 index; + u16 dist; + } near[0]; }; -struct attribute_container { - struct list_head node; - struct klist containers; - struct class *class; - const struct attribute_group *grp; - struct device_attribute **attrs; - int (*match)(struct attribute_container *, struct device *); - long unsigned int flags; +struct irq_glue { + struct irq_affinity_notify notify; + struct cpu_rmap *rmap; + u16 index; }; -struct transport_container; +typedef mpi_limb_t *mpi_ptr_t; -struct transport_class { - struct class class; - int (*setup)(struct transport_container *, struct device *, struct device *); - int (*configure)(struct transport_container *, struct device *, struct device *); - int (*remove)(struct transport_container *, struct device *, struct device *); -}; +typedef int mpi_size_t; -struct transport_container { - struct attribute_container ac; - const struct attribute_group *statistics; -}; +typedef mpi_limb_t UWtype; -struct anon_transport_class { - struct transport_class tclass; - struct attribute_container container; -}; +typedef unsigned int UHWtype; -struct container_dev { - struct device dev; - int (*offline)(struct container_dev *); +enum gcry_mpi_constants { + MPI_C_ZERO = 0, + MPI_C_ONE = 1, + MPI_C_TWO = 2, + MPI_C_THREE = 3, + MPI_C_FOUR = 4, + MPI_C_EIGHT = 5, }; -struct internal_container { - struct klist_node node; - struct attribute_container *cont; - struct device classdev; +struct barrett_ctx_s; + +typedef struct barrett_ctx_s *mpi_barrett_t; + +struct gcry_mpi_point { + MPI x; + MPI y; + MPI z; }; -typedef void * (*devcon_match_fn_t)(struct fwnode_handle *, const char *, void *); +typedef struct gcry_mpi_point *MPI_POINT; -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; +enum gcry_mpi_ec_models { + MPI_EC_WEIERSTRASS = 0, + MPI_EC_MONTGOMERY = 1, + MPI_EC_EDWARDS = 2, +}; -struct software_node_ref_args { - const struct software_node *node; - unsigned int nargs; - u64 args[8]; +enum ecc_dialects { + ECC_DIALECT_STANDARD = 0, + ECC_DIALECT_ED25519 = 1, + ECC_DIALECT_SAFECURVE = 2, }; -struct swnode { - struct kobject kobj; - struct fwnode_handle fwnode; - const struct software_node *node; - int id; - struct ida child_ids; - struct list_head entry; - struct list_head children; - struct swnode *parent; - unsigned int allocated: 1; - unsigned int managed: 1; +struct mpi_ec_ctx { + enum gcry_mpi_ec_models model; + enum ecc_dialects dialect; + int flags; + unsigned int nbits; + MPI p; + MPI a; + MPI b; + MPI_POINT G; + MPI n; + unsigned int h; + MPI_POINT Q; + MPI d; + const char *name; + struct { + struct { + unsigned int a_is_pminus3: 1; + unsigned int two_inv_p: 1; + } valid; + int a_is_pminus3; + MPI two_inv_p; + mpi_barrett_t p_barrett; + MPI scratch[11]; + } t; + void (*addm)(MPI, MPI, MPI, struct mpi_ec_ctx *); + void (*subm)(MPI, MPI, MPI, struct mpi_ec_ctx *); + void (*mulm)(MPI, MPI, MPI, struct mpi_ec_ctx *); + void (*pow2)(MPI, const MPI, struct mpi_ec_ctx *); + void (*mul2)(MPI, MPI, struct mpi_ec_ctx *); }; -struct auxiliary_device_id { - char name[32]; - kernel_ulong_t driver_data; +struct field_table { + const char *p; + void (*addm)(MPI, MPI, MPI, struct mpi_ec_ctx *); + void (*subm)(MPI, MPI, MPI, struct mpi_ec_ctx *); + void (*mulm)(MPI, MPI, MPI, struct mpi_ec_ctx *); + void (*mul2)(MPI, MPI, struct mpi_ec_ctx *); + void (*pow2)(MPI, const MPI, struct mpi_ec_ctx *); }; -struct auxiliary_device { - struct device dev; - const char *name; - u32 id; +enum gcry_mpi_format { + GCRYMPI_FMT_NONE = 0, + GCRYMPI_FMT_STD = 1, + GCRYMPI_FMT_PGP = 2, + GCRYMPI_FMT_SSH = 3, + GCRYMPI_FMT_HEX = 4, + GCRYMPI_FMT_USG = 5, + GCRYMPI_FMT_OPAQUE = 8, }; -struct auxiliary_driver { - int (*probe)(struct auxiliary_device *, const struct auxiliary_device_id *); - void (*remove)(struct auxiliary_device *); - void (*shutdown)(struct auxiliary_device *); - int (*suspend)(struct auxiliary_device *, pm_message_t); - int (*resume)(struct auxiliary_device *); - const char *name; - struct device_driver driver; - const struct auxiliary_device_id *id_table; +struct barrett_ctx_s { + MPI m; + int m_copied; + int k; + MPI y; + MPI r1; + MPI r2; + MPI r3; }; -struct req { - struct req *next; - struct completion done; - int err; - const char *name; - umode_t mode; - kuid_t uid; - kgid_t gid; - struct device *dev; +struct karatsuba_ctx { + struct karatsuba_ctx *next; + mpi_ptr_t tspace; + mpi_size_t tspace_size; + mpi_ptr_t tp; + mpi_size_t tp_size; }; -struct firmware_fallback_config { - unsigned int force_sysfs_fallback; - unsigned int ignore_sysfs_fallback; - int old_timeout; - int loading_timeout; +typedef long int mpi_limb_signed_t; + +enum dim_tune_state { + DIM_PARKING_ON_TOP = 0, + DIM_PARKING_TIRED = 1, + DIM_GOING_RIGHT = 2, + DIM_GOING_LEFT = 3, }; -struct pm_clk_notifier_block { - struct notifier_block nb; - struct dev_pm_domain *pm_domain; - char *con_ids[0]; +struct dim_cq_moder { + u16 usec; + u16 pkts; + u16 comps; + u8 cq_period_mode; }; -struct firmware { - size_t size; - const u8 *data; - void *priv; +enum dim_cq_period_mode { + DIM_CQ_PERIOD_MODE_START_FROM_EQE = 0, + DIM_CQ_PERIOD_MODE_START_FROM_CQE = 1, + DIM_CQ_PERIOD_NUM_MODES = 2, }; -enum fw_opt { - FW_OPT_UEVENT = 1, - FW_OPT_NOWAIT = 2, - FW_OPT_USERHELPER = 4, - FW_OPT_NO_WARN = 8, - FW_OPT_NOCACHE = 16, - FW_OPT_NOFALLBACK_SYSFS = 32, - FW_OPT_FALLBACK_PLATFORM = 64, - FW_OPT_PARTIAL = 128, +enum dim_state { + DIM_START_MEASURE = 0, + DIM_MEASURE_IN_PROGRESS = 1, + DIM_APPLY_NEW_PROFILE = 2, }; -enum fw_status { - FW_STATUS_UNKNOWN = 0, - FW_STATUS_LOADING = 1, - FW_STATUS_DONE = 2, - FW_STATUS_ABORTED = 3, +enum dim_stats_state { + DIM_STATS_WORSE = 0, + DIM_STATS_SAME = 1, + DIM_STATS_BETTER = 2, }; -struct fw_state { - struct completion completion; - enum fw_status status; +enum dim_step_result { + DIM_STEPPED = 0, + DIM_TOO_TIRED = 1, + DIM_ON_EDGE = 2, }; -struct firmware_cache; +enum pubkey_algo { + PUBKEY_ALGO_RSA = 0, + PUBKEY_ALGO_MAX = 1, +}; -struct fw_priv { - struct kref ref; - struct list_head list; - struct firmware_cache *fwc; - struct fw_state fw_st; - void *data; +struct pubkey_hdr { + uint8_t version; + uint32_t timestamp; + uint8_t algo; + uint8_t nmpi; + char mpi[0]; +} __attribute__((packed)); + +struct signature_hdr { + uint8_t version; + uint32_t timestamp; + uint8_t algo; + uint8_t hash; + uint8_t keyid[8]; + uint8_t nmpi; + char mpi[0]; +} __attribute__((packed)); + +struct word_at_a_time { + const long unsigned int high_bits; + const long unsigned int low_bits; +}; + +struct sg_pool { size_t size; - size_t allocated_size; - size_t offset; - u32 opt_flags; - bool is_paged_buf; - struct page **pages; - int nr_pages; - int page_array_size; - bool need_uevent; - struct list_head pending_list; - const char *fw_name; + char *name; + struct kmem_cache *slab; + mempool_t *pool; }; -struct firmware_cache { - spinlock_t lock; - struct list_head head; - int state; +enum { + IRQ_POLL_F_SCHED = 0, + IRQ_POLL_F_DISABLE = 1, }; -struct firmware_work { - struct work_struct work; - struct module *module; +struct font_desc { + int idx; const char *name; - struct device *device; - void *context; - void (*cont)(const struct firmware *, void *); - u32 opt_flags; + unsigned int width; + unsigned int height; + unsigned int charcount; + const void *data; + int pref; }; -struct builtin_fw { - char *name; - void *data; - long unsigned int size; +struct font_data { + unsigned int extra[4]; + const unsigned char data[0]; }; -struct fw_sysfs { - bool nowait; - struct device dev; - struct fw_priv *fw_priv; - struct firmware *fw; +enum { + type_kind_int = 0, + type_kind_float = 1, + type_unknown = 65535, }; -struct node_access_nodes { - struct device dev; - struct list_head list_node; - unsigned int access; +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 node_attr { - struct device_attribute attr; - enum node_states state; +struct overflow_data { + struct source_location location; + struct type_descriptor *type; }; -struct for_each_memory_block_cb_data { - walk_memory_blocks_func_t func; - void *arg; +struct type_mismatch_data { + struct source_location location; + struct type_descriptor *type; + long unsigned int alignment; + unsigned char type_check_kind; }; -enum regcache_type { - REGCACHE_NONE = 0, - REGCACHE_RBTREE = 1, - REGCACHE_COMPRESSED = 2, - REGCACHE_FLAT = 3, +struct type_mismatch_data_v1 { + struct source_location location; + struct type_descriptor *type; + unsigned char log_alignment; + unsigned char type_check_kind; }; -struct reg_default { - unsigned int reg; - unsigned int def; +struct type_mismatch_data_common { + struct source_location *location; + struct type_descriptor *type; + long unsigned int alignment; + unsigned char type_check_kind; }; -struct reg_sequence { - unsigned int reg; - unsigned int def; - unsigned int delay_us; +struct out_of_bounds_data { + struct source_location location; + struct type_descriptor *array_type; + struct type_descriptor *index_type; }; -enum regmap_endian { - REGMAP_ENDIAN_DEFAULT = 0, - REGMAP_ENDIAN_BIG = 1, - REGMAP_ENDIAN_LITTLE = 2, - REGMAP_ENDIAN_NATIVE = 3, +struct shift_out_of_bounds_data { + struct source_location location; + struct type_descriptor *lhs_type; + struct type_descriptor *rhs_type; }; -struct regmap_range { - unsigned int range_min; - unsigned int range_max; +struct unreachable_data { + struct source_location location; }; -struct regmap_access_table { - const struct regmap_range *yes_ranges; - unsigned int n_yes_ranges; - const struct regmap_range *no_ranges; - unsigned int n_no_ranges; +struct invalid_value_data { + struct source_location location; + struct type_descriptor *type; }; -typedef void (*regmap_lock)(void *); +struct alignment_assumption_data { + struct source_location location; + struct source_location assumption_location; + struct type_descriptor *type; +}; -typedef void (*regmap_unlock)(void *); +typedef s64 s_max; -struct regmap_range_cfg; +typedef u64 u_max; -struct regmap_config { +struct xor_block_template { + struct xor_block_template *next; const char *name; - int reg_bits; - int reg_stride; - int reg_downshift; - unsigned int reg_base; - int pad_bits; - int val_bits; - bool (*writeable_reg)(struct device *, unsigned int); - bool (*readable_reg)(struct device *, unsigned int); - bool (*volatile_reg)(struct device *, unsigned int); - bool (*precious_reg)(struct device *, unsigned int); - bool (*writeable_noinc_reg)(struct device *, unsigned int); - bool (*readable_noinc_reg)(struct device *, unsigned int); - bool disable_locking; - regmap_lock lock; - regmap_unlock unlock; - void *lock_arg; - int (*reg_read)(void *, unsigned int, unsigned int *); - int (*reg_write)(void *, unsigned int, unsigned int); - int (*reg_update_bits)(void *, unsigned int, unsigned int, unsigned int); - bool fast_io; - unsigned int max_register; - const struct regmap_access_table *wr_table; - const struct regmap_access_table *rd_table; - const struct regmap_access_table *volatile_table; - const struct regmap_access_table *precious_table; - const struct regmap_access_table *wr_noinc_table; - const struct regmap_access_table *rd_noinc_table; - const struct reg_default *reg_defaults; - unsigned int num_reg_defaults; - enum regcache_type cache_type; - const void *reg_defaults_raw; - unsigned int num_reg_defaults_raw; - long unsigned int read_flag_mask; - long unsigned int write_flag_mask; - bool zero_flag_mask; - bool use_single_read; - bool use_single_write; - bool use_relaxed_mmio; - bool can_multi_write; - enum regmap_endian reg_format_endian; - enum regmap_endian val_format_endian; - const struct regmap_range_cfg *ranges; - unsigned int num_ranges; - bool use_hwlock; - bool use_raw_spinlock; - unsigned int hwlock_id; - unsigned int hwlock_mode; - bool can_sleep; + int speed; + void (*do_2)(long unsigned int, long unsigned int *, long unsigned int *); + void (*do_3)(long unsigned int, long unsigned int *, long unsigned int *, long unsigned int *); + void (*do_4)(long unsigned int, long unsigned int *, long unsigned int *, long unsigned int *, long unsigned int *); + void (*do_5)(long unsigned int, long unsigned int *, long unsigned int *, long unsigned int *, long unsigned int *, long unsigned int *); }; -struct regmap_range_cfg { +struct compress_format { + unsigned char magic[2]; const char *name; - unsigned int range_min; - unsigned int range_max; - unsigned int selector_reg; - unsigned int selector_mask; - int selector_shift; - unsigned int window_start; - unsigned int window_len; + decompress_fn decompressor; }; -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 group_data { + int limit[21]; + int base[20]; + int permute[258]; + int minLen; + int maxLen; +}; -struct regmap_async; +struct bunzip_data { + int writeCopies; + int writePos; + int writeRunCountdown; + int writeCount; + int writeCurrent; + long int (*fill)(void *, long unsigned int); + long int inbufCount; + long int inbufPos; + unsigned char *inbuf; + unsigned int inbufBitCount; + unsigned int inbufBits; + unsigned int crc32Table[256]; + unsigned int headerCRC; + unsigned int totalCRC; + unsigned int writeCRC; + unsigned int *dbuf; + unsigned int dbufSize; + unsigned char selectors[32768]; + struct group_data groups[6]; + int io_error; + int byteCount[256]; + unsigned char symToByte[256]; + unsigned char mtfSymbol[256]; +}; -typedef int (*regmap_hw_async_write)(void *, const void *, size_t, const void *, size_t, struct regmap_async *); +struct rc { + long int (*fill)(void *, long unsigned int); + uint8_t *ptr; + uint8_t *buffer; + uint8_t *buffer_end; + long int buffer_size; + uint32_t code; + uint32_t range; + uint32_t bound; + void (*error)(char *); +}; -struct regmap; +struct lzma_header { + uint8_t pos; + uint32_t dict_size; + uint64_t dst_size; +} __attribute__((packed)); -struct regmap_async { - struct list_head list; - struct regmap *map; - void *work_buf; +struct writer { + uint8_t *buffer; + uint8_t previous_byte; + size_t buffer_pos; + int bufsize; + size_t global_pos; + long int (*flush)(void *, long unsigned int); + struct lzma_header *header; }; -typedef int (*regmap_hw_read)(void *, const void *, size_t, void *, size_t); - -typedef int (*regmap_hw_reg_read)(void *, unsigned int, unsigned int *); +struct cstate { + int state; + uint32_t rep0; + uint32_t rep1; + uint32_t rep2; + uint32_t rep3; +}; -typedef int (*regmap_hw_reg_write)(void *, unsigned int, unsigned int); +struct cpio_data { + void *data; + size_t size; + char name[18]; +}; -typedef int (*regmap_hw_reg_update_bits)(void *, unsigned int, unsigned int, unsigned int); +enum cpio_fields { + C_MAGIC = 0, + C_INO = 1, + C_MODE = 2, + C_UID = 3, + C_GID = 4, + C_NLINK = 5, + C_MTIME = 6, + C_FILESIZE = 7, + C_MAJ = 8, + C_MIN = 9, + C_RMAJ = 10, + C_RMIN = 11, + C_NAMESIZE = 12, + C_CHKSUM = 13, + C_NFIELDS = 14, +}; -typedef struct regmap_async * (*regmap_hw_async_alloc)(); +struct fprop_local_single { + long unsigned int events; + unsigned int period; + raw_spinlock_t lock; +}; -typedef void (*regmap_hw_free_context)(void *); +struct ida_bitmap { + long unsigned int bitmap[16]; +}; -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 klist_waiter { + struct list_head list; + struct klist_node *node; + struct task_struct *process; + int woken; }; -struct regmap_format { - size_t buf_size; - size_t reg_bytes; - size_t pad_bytes; - size_t reg_downshift; - size_t val_bytes; - void (*format_write)(struct regmap *, unsigned int, unsigned int); - void (*format_reg)(void *, unsigned int, unsigned int); - void (*format_val)(void *, unsigned int, unsigned int); - unsigned int (*parse_val)(const void *); - void (*parse_inplace)(void *); +struct uevent_sock { + struct list_head list; + struct sock *sk; }; -struct hwspinlock; +enum { + LOGIC_PIO_INDIRECT = 0, + LOGIC_PIO_CPU_MMIO = 1, +}; -struct regcache_ops; +struct logic_pio_host_ops; -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; - void *lock_arg; - gfp_t alloc_flags; - unsigned int reg_base; - struct device *dev; - void *work_buf; - struct regmap_format format; - const struct regmap_bus *bus; - void *bus_context; - const char *name; - bool async; - spinlock_t async_lock; - wait_queue_head_t async_waitq; - struct list_head async_list; - struct list_head async_free; - int async_ret; - bool debugfs_disable; - struct dentry *debugfs; - const char *debugfs_name; - unsigned int debugfs_reg_len; - unsigned int debugfs_val_len; - unsigned int debugfs_tot_len; - struct list_head debugfs_off_cache; - struct mutex cache_lock; - unsigned int max_register; - bool (*writeable_reg)(struct device *, unsigned int); - bool (*readable_reg)(struct device *, unsigned int); - bool (*volatile_reg)(struct device *, unsigned int); - bool (*precious_reg)(struct device *, unsigned int); - bool (*writeable_noinc_reg)(struct device *, unsigned int); - bool (*readable_noinc_reg)(struct device *, unsigned int); - const struct regmap_access_table *wr_table; - const struct regmap_access_table *rd_table; - const struct regmap_access_table *volatile_table; - const struct regmap_access_table *precious_table; - const struct regmap_access_table *wr_noinc_table; - const struct regmap_access_table *rd_noinc_table; - int (*reg_read)(void *, unsigned int, unsigned int *); - int (*reg_write)(void *, unsigned int, unsigned int); - int (*reg_update_bits)(void *, unsigned int, unsigned int, unsigned int); - bool defer_caching; - long unsigned int read_flag_mask; - long unsigned int write_flag_mask; - int reg_shift; - int reg_stride; - int reg_stride_order; - const struct regcache_ops *cache_ops; - enum regcache_type cache_type; - unsigned int cache_size_raw; - unsigned int cache_word_size; - unsigned int num_reg_defaults; - unsigned int num_reg_defaults_raw; - bool cache_only; - bool cache_bypass; - bool cache_free; - struct reg_default *reg_defaults; - const void *reg_defaults_raw; - void *cache; - bool cache_dirty; - bool no_sync_defaults; - struct reg_sequence *patch; - int patch_regs; - bool use_single_read; - bool use_single_write; - bool can_multi_write; - size_t max_raw_read; - size_t max_raw_write; - struct rb_root range_tree; - void *selector_work_buf; - struct hwspinlock *hwlock; - bool can_sleep; +struct logic_pio_hwaddr { + struct list_head list; + struct fwnode_handle *fwnode; + resource_size_t hw_start; + resource_size_t io_start; + resource_size_t size; + long unsigned int flags; + void *hostdata; + const struct logic_pio_host_ops *ops; }; -struct regcache_ops { - const char *name; - enum regcache_type type; - int (*init)(struct regmap *); - int (*exit)(struct regmap *); - void (*debugfs_init)(struct regmap *); - int (*read)(struct regmap *, unsigned int, unsigned int *); - int (*write)(struct regmap *, unsigned int, unsigned int); - int (*sync)(struct regmap *, unsigned int, unsigned int); - int (*drop)(struct regmap *, unsigned int, unsigned int); +struct logic_pio_host_ops { + u32 (*in)(void *, long unsigned int, size_t); + void (*out)(void *, long unsigned int, u32, size_t); + u32 (*ins)(void *, long unsigned int, void *, size_t, unsigned int); + void (*outs)(void *, long unsigned int, const void *, size_t, unsigned int); }; -struct reg_field { - unsigned int reg; - unsigned int lsb; - unsigned int msb; - unsigned int id_size; - unsigned int id_offset; +struct radix_tree_preload { + unsigned int nr; + struct xa_node *nodes; }; -struct regmap_range_node { - struct rb_node node; - const char *name; - struct regmap *map; - unsigned int range_min; - unsigned int range_max; - unsigned int selector_reg; - unsigned int selector_mask; - int selector_shift; - unsigned int window_start; - unsigned int window_len; -}; +typedef struct { + long unsigned int key[2]; +} hsiphash_key_t; -struct regmap_field { - struct regmap *regmap; - unsigned int mask; - unsigned int shift; - unsigned int reg; - unsigned int id_size; - unsigned int id_offset; +enum format_type { + FORMAT_TYPE_NONE = 0, + FORMAT_TYPE_WIDTH = 1, + FORMAT_TYPE_PRECISION = 2, + FORMAT_TYPE_CHAR = 3, + FORMAT_TYPE_STR = 4, + FORMAT_TYPE_PTR = 5, + FORMAT_TYPE_PERCENT_CHAR = 6, + FORMAT_TYPE_INVALID = 7, + FORMAT_TYPE_LONG_LONG = 8, + FORMAT_TYPE_ULONG = 9, + FORMAT_TYPE_LONG = 10, + FORMAT_TYPE_UBYTE = 11, + FORMAT_TYPE_BYTE = 12, + FORMAT_TYPE_USHORT = 13, + FORMAT_TYPE_SHORT = 14, + FORMAT_TYPE_UINT = 15, + FORMAT_TYPE_INT = 16, + FORMAT_TYPE_SIZE_T = 17, + FORMAT_TYPE_PTRDIFF = 18, }; -struct trace_event_raw_regmap_reg { - struct trace_entry ent; - u32 __data_loc_name; - unsigned int reg; - unsigned int val; - char __data[0]; +struct printf_spec { + unsigned int type: 8; + int field_width: 24; + unsigned int flags: 8; + unsigned int base: 8; + int precision: 16; }; -struct trace_event_raw_regmap_block { - struct trace_entry ent; - u32 __data_loc_name; - unsigned int reg; - int count; - char __data[0]; +struct page_flags_fields { + int width; + int shift; + int mask; + const struct printf_spec *spec; + const char *name; }; -struct trace_event_raw_regcache_sync { - struct trace_entry ent; - u32 __data_loc_name; - u32 __data_loc_status; - u32 __data_loc_type; - char __data[0]; +struct minmax_sample { + u32 t; + u32 v; }; -struct trace_event_raw_regmap_bool { - struct trace_entry ent; - u32 __data_loc_name; - int flag; - char __data[0]; +struct minmax { + struct minmax_sample s[3]; }; -struct trace_event_raw_regmap_async { - struct trace_entry ent; - u32 __data_loc_name; - char __data[0]; +struct spin_wait { + struct spin_wait *next; + struct spin_wait *prev; + int node_id; + long: 64; }; -struct trace_event_raw_regcache_drop_region { - struct trace_entry ent; - u32 __data_loc_name; - unsigned int from; - unsigned int to; - char __data[0]; -}; +struct gpio_chip; -struct trace_event_data_offsets_regmap_reg { - u32 name; +struct gpio_irq_chip { + struct irq_chip *chip; + struct irq_domain *domain; + const struct irq_domain_ops *domain_ops; + struct fwnode_handle *fwnode; + struct irq_domain *parent_domain; + int (*child_to_parent_hwirq)(struct gpio_chip *, unsigned int, unsigned int, unsigned int *, unsigned int *); + void * (*populate_parent_alloc_arg)(struct gpio_chip *, unsigned int, unsigned int); + unsigned int (*child_offset_to_irq)(struct gpio_chip *, unsigned int); + struct irq_domain_ops child_irq_domain_ops; + irq_flow_handler_t handler; + unsigned int default_type; + struct lock_class_key *lock_key; + struct lock_class_key *request_key; + irq_flow_handler_t parent_handler; + union { + void *parent_handler_data; + void **parent_handler_data_array; + }; + unsigned int num_parents; + unsigned int *parents; + unsigned int *map; + bool threaded; + bool per_parent_data; + 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 *); + void (*irq_disable)(struct irq_data *); + void (*irq_unmask)(struct irq_data *); + void (*irq_mask)(struct irq_data *); }; -struct trace_event_data_offsets_regmap_block { - u32 name; +struct gpio_device; + +struct gpio_chip { + const char *label; + struct gpio_device *gpiodev; + struct device *parent; + struct module *owner; + int (*request)(struct gpio_chip *, unsigned int); + void (*free)(struct gpio_chip *, unsigned int); + int (*get_direction)(struct gpio_chip *, unsigned int); + int (*direction_input)(struct gpio_chip *, unsigned int); + int (*direction_output)(struct gpio_chip *, unsigned int, int); + int (*get)(struct gpio_chip *, unsigned int); + int (*get_multiple)(struct gpio_chip *, long unsigned int *, long unsigned int *); + void (*set)(struct gpio_chip *, unsigned int, int); + void (*set_multiple)(struct gpio_chip *, long unsigned int *, long unsigned int *); + int (*set_config)(struct gpio_chip *, unsigned int, long unsigned int); + int (*to_irq)(struct gpio_chip *, unsigned int); + void (*dbg_show)(struct seq_file *, struct gpio_chip *); + int (*init_valid_mask)(struct gpio_chip *, long unsigned int *, unsigned int); + 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 *); + void (*write_reg)(void *, long unsigned int); + bool be_bits; + void *reg_dat; + void *reg_set; + void *reg_clr; + void *reg_dir_out; + void *reg_dir_in; + bool bgpio_dir_unreadable; + int bgpio_bits; + raw_spinlock_t bgpio_lock; + long unsigned int bgpio_data; + long unsigned int bgpio_dir; + struct gpio_irq_chip irq; + long unsigned int *valid_mask; +}; + +enum pin_config_param { + PIN_CONFIG_BIAS_BUS_HOLD = 0, + PIN_CONFIG_BIAS_DISABLE = 1, + PIN_CONFIG_BIAS_HIGH_IMPEDANCE = 2, + PIN_CONFIG_BIAS_PULL_DOWN = 3, + PIN_CONFIG_BIAS_PULL_PIN_DEFAULT = 4, + PIN_CONFIG_BIAS_PULL_UP = 5, + PIN_CONFIG_DRIVE_OPEN_DRAIN = 6, + PIN_CONFIG_DRIVE_OPEN_SOURCE = 7, + PIN_CONFIG_DRIVE_PUSH_PULL = 8, + PIN_CONFIG_DRIVE_STRENGTH = 9, + PIN_CONFIG_DRIVE_STRENGTH_UA = 10, + PIN_CONFIG_INPUT_DEBOUNCE = 11, + PIN_CONFIG_INPUT_ENABLE = 12, + PIN_CONFIG_INPUT_SCHMITT = 13, + PIN_CONFIG_INPUT_SCHMITT_ENABLE = 14, + PIN_CONFIG_MODE_LOW_POWER = 15, + PIN_CONFIG_MODE_PWM = 16, + PIN_CONFIG_OUTPUT = 17, + PIN_CONFIG_OUTPUT_ENABLE = 18, + PIN_CONFIG_PERSIST_STATE = 19, + PIN_CONFIG_POWER_SOURCE = 20, + PIN_CONFIG_SKEW_DELAY = 21, + PIN_CONFIG_SLEEP_HARDWARE_STATE = 22, + PIN_CONFIG_SLEW_RATE = 23, + PIN_CONFIG_END = 127, + PIN_CONFIG_MAX = 255, }; -struct trace_event_data_offsets_regcache_sync { - u32 name; - u32 status; - u32 type; +struct gpio_desc; + +struct gpio_device { + int id; + struct device dev; + struct cdev chrdev; + struct device *mockdev; + struct module *owner; + struct gpio_chip *chip; + struct gpio_desc *descs; + int base; + u16 ngpio; + const char *label; + void *data; + struct list_head list; + struct blocking_notifier_head notifier; + struct rw_semaphore sem; }; -struct trace_event_data_offsets_regmap_bool { - u32 name; +struct gpio_array; + +struct gpio_descs { + struct gpio_array *info; + unsigned int ndescs; + struct gpio_desc *desc[0]; }; -struct trace_event_data_offsets_regmap_async { - u32 name; +struct gpio_array { + struct gpio_desc **desc; + unsigned int size; + struct gpio_chip *chip; + long unsigned int *get_mask; + long unsigned int *set_mask; + long unsigned int invert_mask[0]; }; -struct trace_event_data_offsets_regcache_drop_region { - u32 name; +struct gpio_desc { + struct gpio_device *gdev; + long unsigned int flags; + const char *label; + const char *name; + unsigned int debounce_period_us; }; -typedef void (*btf_trace_regmap_reg_write)(void *, struct regmap *, unsigned int, unsigned int); +enum gpiod_flags { + GPIOD_ASIS = 0, + GPIOD_IN = 1, + GPIOD_OUT_LOW = 3, + GPIOD_OUT_HIGH = 7, + GPIOD_OUT_LOW_OPEN_DRAIN = 11, + GPIOD_OUT_HIGH_OPEN_DRAIN = 15, +}; -typedef void (*btf_trace_regmap_reg_read)(void *, struct regmap *, unsigned int, unsigned int); +enum gpio_lookup_flags { + GPIO_ACTIVE_HIGH = 0, + GPIO_ACTIVE_LOW = 1, + GPIO_OPEN_DRAIN = 2, + GPIO_OPEN_SOURCE = 4, + GPIO_PERSISTENT = 0, + GPIO_TRANSITORY = 8, + GPIO_PULL_UP = 16, + GPIO_PULL_DOWN = 32, + GPIO_LOOKUP_FLAGS_DEFAULT = 0, +}; -typedef void (*btf_trace_regmap_reg_read_cache)(void *, struct regmap *, unsigned int, unsigned int); +struct gpiod_lookup { + const char *key; + u16 chip_hwnum; + const char *con_id; + unsigned int idx; + long unsigned int flags; +}; -typedef void (*btf_trace_regmap_hw_read_start)(void *, struct regmap *, unsigned int, int); +struct gpiod_lookup_table { + struct list_head list; + const char *dev_id; + struct gpiod_lookup table[0]; +}; -typedef void (*btf_trace_regmap_hw_read_done)(void *, struct regmap *, unsigned int, int); +struct gpiod_hog { + struct list_head list; + const char *chip_label; + u16 chip_hwnum; + const char *line_name; + long unsigned int lflags; + int dflags; +}; -typedef void (*btf_trace_regmap_hw_write_start)(void *, struct regmap *, unsigned int, int); +enum { + GPIOLINE_CHANGED_REQUESTED = 1, + GPIOLINE_CHANGED_RELEASED = 2, + GPIOLINE_CHANGED_CONFIG = 3, +}; -typedef void (*btf_trace_regmap_hw_write_done)(void *, struct regmap *, unsigned int, int); +struct acpi_device; -typedef void (*btf_trace_regcache_sync)(void *, struct regmap *, const char *, const char *); +struct acpi_gpio_info { + struct acpi_device *adev; + enum gpiod_flags flags; + bool gpioint; + int pin_config; + int polarity; + int triggering; + unsigned int debounce; + unsigned int quirks; +}; -typedef void (*btf_trace_regmap_cache_only)(void *, struct regmap *, bool); +struct trace_event_raw_gpio_direction { + struct trace_entry ent; + unsigned int gpio; + int in; + int err; + char __data[0]; +}; -typedef void (*btf_trace_regmap_cache_bypass)(void *, struct regmap *, bool); +struct trace_event_raw_gpio_value { + struct trace_entry ent; + unsigned int gpio; + int get; + int value; + char __data[0]; +}; -typedef void (*btf_trace_regmap_async_write_start)(void *, struct regmap *, unsigned int, int); +struct trace_event_data_offsets_gpio_direction {}; -typedef void (*btf_trace_regmap_async_io_complete)(void *, struct regmap *); +struct trace_event_data_offsets_gpio_value {}; -typedef void (*btf_trace_regmap_async_complete_start)(void *, struct regmap *); +typedef void (*btf_trace_gpio_direction)(void *, unsigned int, int, int); -typedef void (*btf_trace_regmap_async_complete_done)(void *, struct regmap *); +typedef void (*btf_trace_gpio_value)(void *, unsigned int, int, int); -typedef void (*btf_trace_regcache_drop_region)(void *, struct regmap *, unsigned int, unsigned int); +struct gpio { + unsigned int gpio; + long unsigned int flags; + const char *label; +}; -struct regcache_rbtree_node { - void *block; - long int *cache_present; - unsigned int base_reg; - unsigned int blklen; - struct rb_node node; +struct gpiochip_info { + char name[32]; + char label[32]; + __u32 lines; +}; + +enum gpio_v2_line_flag { + GPIO_V2_LINE_FLAG_USED = 1, + GPIO_V2_LINE_FLAG_ACTIVE_LOW = 2, + GPIO_V2_LINE_FLAG_INPUT = 4, + GPIO_V2_LINE_FLAG_OUTPUT = 8, + GPIO_V2_LINE_FLAG_EDGE_RISING = 16, + GPIO_V2_LINE_FLAG_EDGE_FALLING = 32, + GPIO_V2_LINE_FLAG_OPEN_DRAIN = 64, + GPIO_V2_LINE_FLAG_OPEN_SOURCE = 128, + GPIO_V2_LINE_FLAG_BIAS_PULL_UP = 256, + GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = 512, + GPIO_V2_LINE_FLAG_BIAS_DISABLED = 1024, + GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = 2048, +}; + +struct gpio_v2_line_values { + __u64 bits; + __u64 mask; }; -struct regcache_rbtree_ctx { - struct rb_root root; - struct regcache_rbtree_node *cached_rbnode; +enum gpio_v2_line_attr_id { + GPIO_V2_LINE_ATTR_ID_FLAGS = 1, + GPIO_V2_LINE_ATTR_ID_OUTPUT_VALUES = 2, + GPIO_V2_LINE_ATTR_ID_DEBOUNCE = 3, }; -struct regmap_debugfs_off_cache { - struct list_head list; - off_t min; - off_t max; - unsigned int base_reg; - unsigned int max_reg; +struct gpio_v2_line_attribute { + __u32 id; + __u32 padding; + union { + __u64 flags; + __u64 values; + __u32 debounce_period_us; + }; }; -struct regmap_debugfs_node { - struct regmap *map; - struct list_head link; +struct gpio_v2_line_config_attribute { + struct gpio_v2_line_attribute attr; + __u64 mask; }; -struct regmap_mmio_context { - void *regs; - unsigned int val_bytes; - bool relaxed_mmio; - bool attached_clk; - struct clk *clk; - void (*reg_write)(struct regmap_mmio_context *, unsigned int, unsigned int); - unsigned int (*reg_read)(struct regmap_mmio_context *, unsigned int); +struct gpio_v2_line_config { + __u64 flags; + __u32 num_attrs; + __u32 padding[5]; + struct gpio_v2_line_config_attribute attrs[10]; +}; + +struct gpio_v2_line_request { + __u32 offsets[64]; + char consumer[32]; + struct gpio_v2_line_config config; + __u32 num_lines; + __u32 event_buffer_size; + __u32 padding[5]; + __s32 fd; }; -struct devcd_entry { - struct device devcd_dev; - void *data; - size_t datalen; - struct module *owner; - ssize_t (*read)(char *, loff_t, size_t, void *, size_t); - void (*free)(void *); - struct delayed_work del_wk; - struct device *failing_dev; +struct gpio_v2_line_info { + char name[32]; + char consumer[32]; + __u32 offset; + __u32 num_attrs; + __u64 flags; + struct gpio_v2_line_attribute attrs[10]; + __u32 padding[4]; }; -struct 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]; +enum gpio_v2_line_changed_type { + GPIO_V2_LINE_CHANGED_REQUESTED = 1, + GPIO_V2_LINE_CHANGED_RELEASED = 2, + GPIO_V2_LINE_CHANGED_CONFIG = 3, }; -struct trace_event_data_offsets_devres { - u32 devname; +struct gpio_v2_line_info_changed { + struct gpio_v2_line_info info; + __u64 timestamp_ns; + __u32 event_type; + __u32 padding[5]; }; -typedef void (*btf_trace_devres_log)(void *, struct device *, const char *, void *, const char *, size_t); +enum gpio_v2_line_event_id { + GPIO_V2_LINE_EVENT_RISING_EDGE = 1, + GPIO_V2_LINE_EVENT_FALLING_EDGE = 2, +}; -typedef void (*irq_write_msi_msg_t)(struct msi_desc *, struct msi_msg *); +struct gpio_v2_line_event { + __u64 timestamp_ns; + __u32 id; + __u32 offset; + __u32 seqno; + __u32 line_seqno; + __u32 padding[6]; +}; -struct platform_msi_priv_data { - struct device *dev; - void *host_data; - msi_alloc_info_t arg; - irq_write_msi_msg_t write_msg; - int devid; +struct gpioline_info { + __u32 line_offset; + __u32 flags; + char name[32]; + char consumer[32]; }; -struct syscon_platform_data { - const char *label; +struct gpioline_info_changed { + struct gpioline_info info; + __u64 timestamp; + __u32 event_type; + __u32 padding[5]; }; -struct syscon { - struct device_node *np; - struct regmap *regmap; - struct list_head list; +struct gpiohandle_request { + __u32 lineoffsets[64]; + __u32 flags; + __u8 default_values[64]; + char consumer_label[32]; + __u32 lines; + int fd; }; -struct dax_operations { - long int (*direct_access)(struct dax_device *, long unsigned int, long int, void **, pfn_t *); - bool (*dax_supported)(struct dax_device *, struct block_device *, int, sector_t, sector_t); - int (*zero_page_range)(struct dax_device *, long unsigned int, size_t); +struct gpiohandle_config { + __u32 flags; + __u8 default_values[64]; + __u32 padding[4]; }; -struct dax_region { - int id; - int target_node; - struct kref kref; - struct device *dev; - unsigned int align; - struct ida ida; - struct resource res; - struct device *seed; - struct device *youngest; +struct gpiohandle_data { + __u8 values[64]; }; -struct dax_mapping { - struct device dev; - int range_id; - int id; +struct gpioevent_request { + __u32 lineoffset; + __u32 handleflags; + __u32 eventflags; + char consumer_label[32]; + int fd; }; -struct dev_dax_range { - long unsigned int pgoff; - struct range range; - struct dax_mapping *mapping; +struct gpioevent_data { + __u64 timestamp; + __u32 id; }; -struct dev_dax { - struct dax_region *region; - struct dax_device *dax_dev; - unsigned int align; - int target_node; - int id; - struct ida ida; - struct device dev; - struct dev_pagemap *pgmap; - int nr_range; - struct dev_dax_range *ranges; +typedef __poll_t (*poll_fn)(struct file *, struct poll_table_struct *); + +typedef long int (*ioctl_fn___2)(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 dev_dax_data { - struct dax_region *dax_region; - struct dev_pagemap *pgmap; - resource_size_t size; - int id; +struct linereq; + +struct line { + struct gpio_desc *desc; + struct linereq *req; + unsigned int irq; + u64 eflags; + u64 timestamp_ns; + u32 req_seqno; + u32 line_seqno; + struct delayed_work work; + unsigned int sw_debounced; + unsigned int level; }; -struct dax_device_driver { - struct device_driver drv; - struct list_head ids; - int match_always; - int (*probe)(struct dev_dax *); - void (*remove)(struct dev_dax *); +struct linereq { + struct gpio_device *gdev; + const char *label; + u32 num_lines; + wait_queue_head_t wait; + u32 event_buffer_size; + struct { + union { + struct __kfifo kfifo; + struct gpio_v2_line_event *type; + const struct gpio_v2_line_event *const_type; + char (*rectype)[0]; + struct gpio_v2_line_event *ptr; + const struct gpio_v2_line_event *ptr_const; + }; + struct gpio_v2_line_event buf[0]; + } events; + atomic_t seqno; + struct mutex config_mutex; + struct line lines[0]; }; -struct dax_id { - struct list_head list; - char dev_name[30]; +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; }; -enum id_action { - ID_REMOVE = 0, - ID_ADD = 1, +struct gpio_chardev_data { + struct gpio_device *gdev; + wait_queue_head_t wait; + struct { + union { + struct __kfifo kfifo; + struct gpio_v2_line_info_changed *type; + const struct gpio_v2_line_info_changed *const_type; + char (*rectype)[0]; + struct gpio_v2_line_info_changed *ptr; + const struct gpio_v2_line_info_changed *ptr_const; + }; + struct gpio_v2_line_info_changed buf[32]; + } events; + struct notifier_block lineinfo_changed_nb; + long unsigned int *watched_lines; + atomic_t watch_abi_version; }; -struct dax_device { - struct inode inode; - struct cdev cdev; - void *private; - long unsigned int flags; - const struct dax_operations *ops; +struct class_attribute { + struct attribute attr; + ssize_t (*show)(struct class *, struct class_attribute *, char *); + ssize_t (*store)(struct class *, struct class_attribute *, const char *, size_t); }; -enum dax_device_flags { - DAXDEV_ALIVE = 0, - DAXDEV_WRITE_CACHE = 1, - DAXDEV_SYNC = 2, - DAXDEV_NOCACHE = 3, - DAXDEV_NOMC = 4, -}; - -enum { - CXL_MEM_COMMAND_ID_INVALID = 0, - CXL_MEM_COMMAND_ID_IDENTIFY = 1, - CXL_MEM_COMMAND_ID_RAW = 2, - CXL_MEM_COMMAND_ID_GET_SUPPORTED_LOGS = 3, - CXL_MEM_COMMAND_ID_GET_FW_INFO = 4, - CXL_MEM_COMMAND_ID_GET_PARTITION_INFO = 5, - CXL_MEM_COMMAND_ID_GET_LSA = 6, - CXL_MEM_COMMAND_ID_GET_HEALTH_INFO = 7, - CXL_MEM_COMMAND_ID_GET_LOG = 8, - CXL_MEM_COMMAND_ID_SET_PARTITION_INFO = 9, - CXL_MEM_COMMAND_ID_SET_LSA = 10, - CXL_MEM_COMMAND_ID_GET_ALERT_CONFIG = 11, - CXL_MEM_COMMAND_ID_SET_ALERT_CONFIG = 12, - CXL_MEM_COMMAND_ID_GET_SHUTDOWN_STATE = 13, - CXL_MEM_COMMAND_ID_SET_SHUTDOWN_STATE = 14, - CXL_MEM_COMMAND_ID_GET_POISON = 15, - CXL_MEM_COMMAND_ID_INJECT_POISON = 16, - CXL_MEM_COMMAND_ID_CLEAR_POISON = 17, - CXL_MEM_COMMAND_ID_GET_SCAN_MEDIA_CAPS = 18, - CXL_MEM_COMMAND_ID_SCAN_MEDIA = 19, - CXL_MEM_COMMAND_ID_GET_SCAN_MEDIA = 20, - CXL_MEM_COMMAND_ID_MAX = 21, -}; - -enum { - NDD_UNARMED = 1, - NDD_LOCKED = 2, - NDD_SECURITY_OVERWRITE = 3, - NDD_WORK_PENDING = 4, - NDD_LABELING = 6, - ND_IOCTL_MAX_BUFLEN = 4194304, - ND_CMD_MAX_ELEM = 5, - ND_CMD_MAX_ENVELOPE = 256, - ND_MAX_MAPPINGS = 32, - ND_REGION_PAGEMAP = 0, - ND_REGION_PERSIST_CACHE = 1, - ND_REGION_PERSIST_MEMCTRL = 2, - ND_REGION_ASYNC = 3, - DPA_RESOURCE_ADJUSTED = 1, -}; - -struct cxl_component_regs { - void *hdm_decoder; -}; - -struct cxl_device_regs { - void *status; - void *mbox; - void *memdev; -}; - -struct cxl_regs { - union { - struct { - void *hdm_decoder; - }; - struct cxl_component_regs component; - }; - union { - struct { - void *status; - void *mbox; - void *memdev; - }; - struct cxl_device_regs device_regs; - }; +struct gpiod_data { + struct gpio_desc *desc; + struct mutex mutex; + struct kernfs_node *value_kn; + int irq; + unsigned char irq_flags; + bool direction_can_change; }; -struct cxl_reg_map { - bool valid; - long unsigned int offset; - long unsigned int size; +struct pci_bus_resource { + struct list_head list; + struct resource *res; + unsigned int flags; }; -struct cxl_component_reg_map { - struct cxl_reg_map hdm_decoder; +typedef u64 pci_bus_addr_t; + +struct pci_bus_region { + pci_bus_addr_t start; + pci_bus_addr_t end; }; -struct cxl_device_reg_map { - struct cxl_reg_map status; - struct cxl_reg_map mbox; - struct cxl_reg_map memdev; +enum pci_fixup_pass { + pci_fixup_early = 0, + pci_fixup_header = 1, + pci_fixup_final = 2, + pci_fixup_enable = 3, + pci_fixup_resume = 4, + pci_fixup_suspend = 5, + pci_fixup_resume_early = 6, + pci_fixup_suspend_late = 7, }; -struct cxl_register_map { - void *base; - u64 block_offset; - u8 reg_type; - u8 barno; - union { - struct cxl_component_reg_map component_map; - struct cxl_device_reg_map device_map; - }; +enum pci_dev_flags { + PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG = 1, + PCI_DEV_FLAGS_NO_D3 = 2, + PCI_DEV_FLAGS_ASSIGNED = 4, + PCI_DEV_FLAGS_ACS_ENABLED_QUIRK = 8, + PCI_DEV_FLAG_PCIE_BRIDGE_ALIAS = 32, + PCI_DEV_FLAGS_NO_BUS_RESET = 64, + PCI_DEV_FLAGS_NO_PM_RESET = 128, + PCI_DEV_FLAGS_VPD_REF_F0 = 256, + PCI_DEV_FLAGS_BRIDGE_XLATE_ROOT = 512, + PCI_DEV_FLAGS_NO_FLR_RESET = 1024, + PCI_DEV_FLAGS_NO_RELAXED_ORDERING = 2048, + PCI_DEV_FLAGS_ENABLE_ASPM = 4096, + PCI_DEV_FLAGS_HAS_MSI_MASKING = 8192, }; -enum cxl_decoder_type { - CXL_DECODER_ACCELERATOR = 2, - CXL_DECODER_EXPANDER = 3, +enum pci_bus_flags { + PCI_BUS_FLAGS_NO_MSI = 1, + PCI_BUS_FLAGS_NO_MMRBC = 2, + PCI_BUS_FLAGS_NO_AERSID = 4, + PCI_BUS_FLAGS_NO_EXTCFG = 8, }; -struct cxl_dport; - -struct cxl_decoder { +struct pci_host_bridge { struct device dev; - int id; - union { - struct resource platform_res; - struct range decoder_range; - }; - int interleave_ways; - int interleave_granularity; - enum cxl_decoder_type target_type; - long unsigned int flags; - seqlock_t target_lock; - int nr_targets; - struct cxl_dport *target[0]; + struct pci_bus *bus; + struct pci_ops *ops; + struct pci_ops *child_ops; + void *sysdata; + int busnr; + int domain_nr; + struct list_head windows; + struct list_head dma_ranges; + u8 (*swizzle_irq)(struct pci_dev *, u8 *); + int (*map_irq)(const struct pci_dev *, u8, u8); + void (*release_fn)(struct pci_host_bridge *); + void *release_data; + unsigned int ignore_reset_delay: 1; + unsigned int no_ext_tags: 1; + unsigned int no_inc_mrrs: 1; + unsigned int native_aer: 1; + unsigned int native_pcie_hotplug: 1; + unsigned int native_shpc_hotplug: 1; + unsigned int native_pme: 1; + unsigned int native_ltr: 1; + unsigned int native_dpc: 1; + unsigned int 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; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long unsigned int private[0]; }; -struct cxl_port; - -struct cxl_dport { - struct device *dport; - int port_id; - resource_size_t component_reg_phys; - struct cxl_port *port; - struct list_head list; +enum { + PCI_REASSIGN_ALL_RSRC = 1, + PCI_REASSIGN_ALL_BUS = 2, + PCI_PROBE_ONLY = 4, + PCI_CAN_SKIP_ISA_ALIGN = 8, + PCI_ENABLE_PROC_DOMAINS = 16, + PCI_COMPAT_DOMAIN_0 = 32, + PCI_SCAN_ALL_PCIE_DEVS = 64, }; -struct cxl_port { - struct device dev; - struct device *uport; - int id; - struct list_head dports; - struct list_head endpoints; - struct ida decoder_ida; - resource_size_t component_reg_phys; - bool dead; - unsigned int depth; +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 cxl_dev_state; - -struct cxl_memdev { - struct device dev; - struct cdev cdev; - struct cxl_dev_state *cxlds; - struct work_struct detach_work; - int id; +enum pci_bar_type { + pci_bar_unknown = 0, + pci_bar_io = 1, + pci_bar_mem32 = 2, + pci_bar_mem64 = 3, }; -struct cxl_ep { - struct device *ep; +struct pci_domain_busn_res { struct list_head list; + struct resource res; + int domain_nr; }; -struct cxl_driver { - const char *name; - int (*probe)(struct device *); - void (*remove)(struct device *); - struct device_driver drv; - int id; +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 cxl_endpoint_dvsec_info { - bool mem_enabled; - int ranges; - struct range dvsec_range[2]; +struct dmi_strmatch { + unsigned char slot: 7; + unsigned char exact_match: 1; + char substr[79]; }; -struct cxl_mbox_cmd; - -struct cxl_dev_state { - struct device *dev; - struct cxl_regs regs; - int cxl_dvsec; - size_t payload_size; - size_t lsa_size; - struct mutex mbox_mutex; - char firmware_version[16]; - long unsigned int enabled_cmds[1]; - long unsigned int exclusive_cmds[1]; - struct range pmem_range; - struct range ram_range; - u64 total_bytes; - u64 volatile_only_bytes; - u64 persistent_only_bytes; - u64 partition_align_bytes; - u64 active_volatile_bytes; - u64 active_persistent_bytes; - u64 next_volatile_bytes; - u64 next_persistent_bytes; - resource_size_t component_reg_phys; - struct cxl_endpoint_dvsec_info info; - u64 serial; - int (*mbox_send)(struct cxl_dev_state *, struct cxl_mbox_cmd *); - int (*wait_media_ready)(struct cxl_dev_state *); -}; - -struct cxl_mbox_cmd { - u16 opcode; - void *payload_in; - void *payload_out; - size_t size_in; - size_t size_out; - u16 return_code; +struct dmi_system_id { + int (*callback)(const struct dmi_system_id *); + const char *ident; + struct dmi_strmatch matches[4]; + void *driver_data; }; -enum cxl_regloc_type { - CXL_REGLOC_RBI_EMPTY = 0, - CXL_REGLOC_RBI_COMPONENT = 1, - CXL_REGLOC_RBI_VIRT = 2, - CXL_REGLOC_RBI_MEMDEV = 3, - CXL_REGLOC_RBI_TYPES = 4, +struct bus_attribute { + struct attribute attr; + ssize_t (*show)(struct bus_type *, char *); + ssize_t (*store)(struct bus_type *, const char *, size_t); }; -struct cxl_find_port_ctx { - const struct device *dport_dev; - const struct cxl_port *parent_port; +enum pcie_reset_state { + pcie_deassert_reset = 1, + pcie_warm_reset = 2, + pcie_hot_reset = 3, }; -struct nvdimm; - -struct nvdimm_bus_descriptor; - -typedef int (*ndctl_fn)(struct nvdimm_bus_descriptor *, struct nvdimm *, unsigned int, void *, unsigned int, int *); - -struct nvdimm_bus_fw_ops; - -struct nvdimm_bus_descriptor { - const struct attribute_group **attr_groups; - long unsigned int cmd_mask; - long unsigned int dimm_family_mask; - long unsigned int bus_family_mask; - struct module *module; - char *provider_name; - struct device_node *of_node; - ndctl_fn ndctl; - int (*flush_probe)(struct nvdimm_bus_descriptor *); - int (*clear_to_send)(struct nvdimm_bus_descriptor *, struct nvdimm *, unsigned int, void *); - const struct nvdimm_bus_fw_ops *fw_ops; +enum pcie_link_width { + PCIE_LNK_WIDTH_RESRV = 0, + PCIE_LNK_X1 = 1, + PCIE_LNK_X2 = 2, + PCIE_LNK_X4 = 4, + PCIE_LNK_X8 = 8, + PCIE_LNK_X12 = 12, + PCIE_LNK_X16 = 16, + PCIE_LNK_X32 = 32, + PCIE_LNK_WIDTH_UNKNOWN = 255, }; -enum nvdimm_fwa_state { - NVDIMM_FWA_INVALID = 0, - NVDIMM_FWA_IDLE = 1, - NVDIMM_FWA_ARMED = 2, - NVDIMM_FWA_BUSY = 3, - NVDIMM_FWA_ARM_OVERFLOW = 4, -}; +typedef int (*arch_set_vga_state_t)(struct pci_dev *, bool, unsigned int, u32); -enum nvdimm_fwa_capability { - NVDIMM_FWA_CAP_INVALID = 0, - NVDIMM_FWA_CAP_NONE = 1, - NVDIMM_FWA_CAP_QUIESCE = 2, - NVDIMM_FWA_CAP_LIVE = 3, +struct pci_cap_saved_data { + u16 cap_nr; + bool cap_extended; + unsigned int size; + u32 data[0]; }; -struct nvdimm_bus_fw_ops { - enum nvdimm_fwa_state (*activate_state)(struct nvdimm_bus_descriptor *); - enum nvdimm_fwa_capability (*capability)(struct nvdimm_bus_descriptor *); - int (*activate)(struct nvdimm_bus_descriptor *); +struct pci_cap_saved_state { + struct hlist_node next; + struct pci_cap_saved_data cap; }; -enum cxl_nvdimm_brige_state { - CXL_NVB_NEW = 0, - CXL_NVB_DEAD = 1, - CXL_NVB_ONLINE = 2, - CXL_NVB_OFFLINE = 3, +struct pci_platform_pm_ops { + bool (*bridge_d3)(struct pci_dev *); + bool (*is_manageable)(struct pci_dev *); + int (*set_state)(struct pci_dev *, pci_power_t); + pci_power_t (*get_state)(struct pci_dev *); + void (*refresh_state)(struct pci_dev *); + pci_power_t (*choose_state)(struct pci_dev *); + int (*set_wakeup)(struct pci_dev *, bool); + bool (*need_resume)(struct pci_dev *); }; -struct nvdimm_bus; - -struct cxl_nvdimm_bridge { - int id; - struct device dev; - struct cxl_port *port; - struct nvdimm_bus *nvdimm_bus; - struct nvdimm_bus_descriptor nd_desc; - struct work_struct state_work; - enum cxl_nvdimm_brige_state state; +struct pci_reset_fn_method { + int (*reset_fn)(struct pci_dev *, bool); + char *name; }; -struct cxl_nvdimm { - struct device dev; - struct cxl_memdev *cxlmd; - struct nvdimm *nvdimm; +struct pci_pme_device { + struct list_head list; + struct pci_dev *dev; }; -struct cxl_command_info { - __u32 id; - __u32 flags; - __s32 size_in; - __s32 size_out; +struct pci_saved_state { + u32 config_space[16]; + struct pci_cap_saved_data cap[0]; }; -struct cxl_mem_query_commands { - __u32 n_commands; - __u32 rsvd; - struct cxl_command_info commands[0]; +struct pci_devres { + unsigned int enabled: 1; + unsigned int pinned: 1; + unsigned int orig_intx: 1; + unsigned int restore_intx: 1; + unsigned int mwi: 1; + u32 region_mask; }; -struct cxl_send_command { - __u32 id; - __u32 flags; - union { - struct { - __u16 opcode; - __u16 rsvd; - } raw; - __u32 rsvd; - }; - __u32 retval; - struct { - __s32 size; - __u32 rsvd; - __u64 payload; - } in; - struct { - __s32 size; - __u32 rsvd; - __u64 payload; - } out; +struct driver_attribute { + struct attribute attr; + ssize_t (*show)(struct device_driver *, char *); + ssize_t (*store)(struct device_driver *, const char *, size_t); }; -struct cxl_walk_context { - struct pci_bus *bus; - struct cxl_port *port; - int type; - int error; - int count; +enum dev_dma_attr { + DEV_DMA_NOT_SUPPORTED = 0, + DEV_DMA_NON_COHERENT = 1, + DEV_DMA_COHERENT = 2, }; -enum cxl_opcode { - CXL_MBOX_OP_INVALID = 0, - CXL_MBOX_OP_RAW = 0, - CXL_MBOX_OP_GET_FW_INFO = 512, - CXL_MBOX_OP_ACTIVATE_FW = 514, - CXL_MBOX_OP_GET_SUPPORTED_LOGS = 1024, - CXL_MBOX_OP_GET_LOG = 1025, - CXL_MBOX_OP_IDENTIFY = 16384, - CXL_MBOX_OP_GET_PARTITION_INFO = 16640, - CXL_MBOX_OP_SET_PARTITION_INFO = 16641, - CXL_MBOX_OP_GET_LSA = 16642, - CXL_MBOX_OP_SET_LSA = 16643, - CXL_MBOX_OP_GET_HEALTH_INFO = 16896, - CXL_MBOX_OP_GET_ALERT_CONFIG = 16897, - CXL_MBOX_OP_SET_ALERT_CONFIG = 16898, - CXL_MBOX_OP_GET_SHUTDOWN_STATE = 16899, - CXL_MBOX_OP_SET_SHUTDOWN_STATE = 16900, - CXL_MBOX_OP_GET_POISON = 17152, - CXL_MBOX_OP_INJECT_POISON = 17153, - CXL_MBOX_OP_CLEAR_POISON = 17154, - CXL_MBOX_OP_GET_SCAN_MEDIA_CAPS = 17155, - CXL_MBOX_OP_SCAN_MEDIA = 17156, - CXL_MBOX_OP_GET_SCAN_MEDIA = 17157, - CXL_MBOX_OP_MAX = 65536, -}; - -struct cxl_gsl_entry { - uuid_t uuid; - __le32 size; +struct pcie_device { + int irq; + struct pci_dev *port; + u32 service; + void *priv_data; + struct device device; }; -struct cxl_mbox_get_supported_logs { - __le16 entries; - u8 rsvd[6]; - struct cxl_gsl_entry entry[0]; +struct pcie_port_service_driver { + const char *name; + int (*probe)(struct pcie_device *); + void (*remove)(struct pcie_device *); + int (*suspend)(struct pcie_device *); + int (*resume_noirq)(struct pcie_device *); + int (*resume)(struct pcie_device *); + int (*runtime_suspend)(struct pcie_device *); + int (*runtime_resume)(struct pcie_device *); + int (*slot_reset)(struct pcie_device *); + void (*error_resume)(struct pci_dev *); + int port_type; + u32 service; + struct device_driver driver; }; -struct cxl_cel_entry { - __le16 opcode; - __le16 effect; +struct pci_dynid { + struct list_head node; + struct pci_device_id id; }; -struct cxl_mbox_get_log { - uuid_t uuid; - __le32 offset; - __le32 length; -}; - -struct cxl_mbox_identify { - char fw_revision[16]; - __le64 total_capacity; - __le64 volatile_capacity; - __le64 persistent_capacity; - __le64 partition_align; - __le16 info_event_log_size; - __le16 warning_event_log_size; - __le16 failure_event_log_size; - __le16 fatal_event_log_size; - __le32 lsa_size; - u8 poison_list_max_mer[3]; - __le16 inject_poison_limit; - u8 poison_caps; - u8 qos_telemetry_caps; -} __attribute__((packed)); - -struct cxl_mem_command { - struct cxl_command_info info; - enum cxl_opcode opcode; - u32 flags; +struct drv_dev_and_id { + struct pci_driver *drv; + struct pci_dev *dev; + const struct pci_device_id *id; }; -enum { - CEL_UUID = 0, - VENDOR_DEBUG_UUID = 1, +struct pci_dev_resource { + struct list_head list; + struct resource *res; + struct pci_dev *dev; + resource_size_t start; + resource_size_t end; + resource_size_t add_size; + resource_size_t min_align; + long unsigned int flags; }; -struct cxl_mbox_get_partition_info { - __le64 active_volatile_cap; - __le64 active_persistent_cap; - __le64 next_volatile_cap; - __le64 next_persistent_cap; +enum release_type { + leaf_only = 0, + whole_subtree = 1, }; -struct cxl_hdm { - struct cxl_component_regs regs; - unsigned int decoder_count; - unsigned int target_count; - unsigned int interleave_mask; - struct cxl_port *port; +enum enable_type { + undefined = 4294967295, + user_disabled = 0, + auto_disabled = 1, + user_enabled = 2, + auto_enabled = 3, }; -struct seqcount_ww_mutex { - seqcount_t seqcount; +struct msix_entry { + u32 vector; + u16 entry; }; -typedef struct seqcount_ww_mutex seqcount_ww_mutex_t; - -struct iosys_map { - union { - void *vaddr_iomem; - void *vaddr; - }; - bool is_iomem; +struct portdrv_service_data { + struct pcie_port_service_driver *drv; + struct device *dev; + u32 service; }; -struct dma_fence_ops; +typedef int (*pcie_callback_t)(struct pcie_device *); -struct dma_fence { - spinlock_t *lock; - const struct dma_fence_ops *ops; - union { - struct list_head cb_list; - ktime_t timestamp; - struct callback_head rcu; - }; - u64 context; - u64 seqno; - long unsigned int flags; - struct kref refcount; - int error; +struct walk_rcec_data { + struct pci_dev *rcec; + int (*user_callback)(struct pci_dev *, void *); + void *user_data; }; -struct dma_fence_ops { - bool use_64bit_seqno; - const char * (*get_driver_name)(struct dma_fence *); - const char * (*get_timeline_name)(struct dma_fence *); - bool (*enable_signaling)(struct dma_fence *); - bool (*signaled)(struct dma_fence *); - long int (*wait)(struct dma_fence *, bool, long int); - void (*release)(struct dma_fence *); - void (*fence_value_str)(struct dma_fence *, char *, int); - void (*timeline_value_str)(struct dma_fence *, char *, int); +struct aspm_latency { + u32 l0s; + u32 l1; }; -struct dma_fence_cb; - -typedef void (*dma_fence_func_t)(struct dma_fence *, struct dma_fence_cb *); - -struct dma_fence_cb { - struct list_head node; - dma_fence_func_t func; +struct pcie_link_state { + struct pci_dev *pdev; + struct pci_dev *downstream; + struct pcie_link_state *root; + struct pcie_link_state *parent; + struct list_head sibling; + u32 aspm_support: 7; + u32 aspm_enabled: 7; + u32 aspm_capable: 7; + u32 aspm_default: 7; + int: 4; + u32 aspm_disable: 7; + u32 clkpm_capable: 1; + u32 clkpm_enabled: 1; + u32 clkpm_default: 1; + u32 clkpm_disable: 1; + struct aspm_latency latency_up; + struct aspm_latency latency_dw; + struct aspm_latency acceptable[8]; }; -struct dma_buf; - -struct dma_buf_attachment; +struct aer_stats { + u64 dev_cor_errs[16]; + u64 dev_fatal_errs[27]; + u64 dev_nonfatal_errs[27]; + u64 dev_total_cor_errs; + u64 dev_total_fatal_errs; + u64 dev_total_nonfatal_errs; + u64 rootport_total_cor_errs; + u64 rootport_total_fatal_errs; + u64 rootport_total_nonfatal_errs; +}; -struct dma_buf_ops { - bool cache_sgt_mapping; - int (*attach)(struct dma_buf *, struct dma_buf_attachment *); - void (*detach)(struct dma_buf *, struct dma_buf_attachment *); - int (*pin)(struct dma_buf_attachment *); - void (*unpin)(struct dma_buf_attachment *); - struct sg_table * (*map_dma_buf)(struct dma_buf_attachment *, enum dma_data_direction); - void (*unmap_dma_buf)(struct dma_buf_attachment *, struct sg_table *, enum dma_data_direction); - void (*release)(struct dma_buf *); - int (*begin_cpu_access)(struct dma_buf *, enum dma_data_direction); - int (*end_cpu_access)(struct dma_buf *, enum dma_data_direction); - int (*mmap)(struct dma_buf *, struct vm_area_struct *); - int (*vmap)(struct dma_buf *, struct iosys_map *); - void (*vunmap)(struct dma_buf *, struct iosys_map *); +struct aer_header_log_regs { + unsigned int dw0; + unsigned int dw1; + unsigned int dw2; + unsigned int dw3; }; -struct dma_buf_poll_cb_t { - struct dma_fence_cb cb; - wait_queue_head_t *poll; - __poll_t active; +struct aer_err_info { + struct pci_dev *dev[5]; + int error_dev_num; + unsigned int id: 16; + unsigned int severity: 2; + unsigned int __pad1: 5; + unsigned int multi_error_valid: 1; + unsigned int first_error: 5; + unsigned int __pad2: 2; + unsigned int tlp_header_valid: 1; + unsigned int status; + unsigned int mask; + struct aer_header_log_regs tlp; }; -struct dma_resv; +struct aer_err_source { + unsigned int status; + unsigned int id; +}; -struct dma_buf_sysfs_entry; +struct aer_rpc { + struct pci_dev *rpd; + struct { + union { + struct __kfifo kfifo; + struct aer_err_source *type; + const struct aer_err_source *const_type; + char (*rectype)[0]; + struct aer_err_source *ptr; + const struct aer_err_source *ptr_const; + }; + struct aer_err_source buf[128]; + } aer_fifo; +}; -struct dma_buf { - size_t size; - struct file *file; - struct list_head attachments; - const struct dma_buf_ops *ops; - struct mutex lock; - unsigned int vmapping_counter; - struct iosys_map vmap_ptr; - const char *exp_name; - const char *name; - spinlock_t name_lock; - struct module *owner; - struct list_head list_node; - void *priv; - struct dma_resv *resv; - wait_queue_head_t poll; - struct dma_buf_poll_cb_t cb_in; - struct dma_buf_poll_cb_t cb_out; - struct dma_buf_sysfs_entry *sysfs_entry; +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 dma_buf_attach_ops; +struct slot { + u8 number; + unsigned int devfn; + struct pci_bus *bus; + struct pci_dev *dev; + unsigned int latch_status: 1; + unsigned int adapter_status: 1; + unsigned int extracting; + struct hotplug_slot hotplug_slot; + struct list_head slot_list; +}; -struct dma_buf_attachment { - struct dma_buf *dmabuf; - struct device *dev; - struct list_head node; - struct sg_table *sgt; - enum dma_data_direction dir; - bool peer2peer; - const struct dma_buf_attach_ops *importer_ops; - void *importer_priv; - void *priv; +struct cpci_hp_controller_ops { + int (*query_enum)(); + int (*enable_irq)(); + int (*disable_irq)(); + int (*check_irq)(void *); + int (*hardware_test)(struct slot *, u32); + u8 (*get_power)(struct slot *); + int (*set_power)(struct slot *, int); }; -struct dma_buf_sysfs_entry { - struct kobject kobj; - struct dma_buf *dmabuf; +struct cpci_hp_controller { + unsigned int irq; + long unsigned int irq_flags; + char *devname; + void *dev_id; + char *name; + struct cpci_hp_controller_ops *ops; }; -struct dma_resv_list; +struct controller { + struct pcie_device *pcie; + u32 slot_cap; + unsigned int inband_presence_disabled: 1; + u16 slot_ctrl; + struct mutex ctrl_lock; + long unsigned int cmd_started; + unsigned int cmd_busy: 1; + wait_queue_head_t queue; + atomic_t pending_events; + unsigned int notification_enabled: 1; + unsigned int power_fault_detected; + struct task_struct *poll_thread; + u8 state; + struct mutex state_lock; + 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; +}; -struct dma_resv { - struct ww_mutex lock; - seqcount_ww_mutex_t seq; - struct dma_fence *fence_excl; - struct dma_resv_list *fence; +struct pci_fixup { + u16 vendor; + u16 device; + u32 class; + unsigned int class_shift; + void (*hook)(struct pci_dev *); }; -struct dma_buf_attach_ops { - bool allow_peer2peer; - void (*move_notify)(struct dma_buf_attachment *); +struct pci_epf_device_id { + char name[20]; + kernel_ulong_t driver_data; }; -struct dma_buf_export_info { - const char *exp_name; - struct module *owner; - const struct dma_buf_ops *ops; - size_t size; - int flags; - struct dma_resv *resv; - void *priv; +enum pci_interrupt_pin { + PCI_INTERRUPT_UNKNOWN = 0, + PCI_INTERRUPT_INTA = 1, + PCI_INTERRUPT_INTB = 2, + PCI_INTERRUPT_INTC = 3, + PCI_INTERRUPT_INTD = 4, }; -struct dma_resv_list { - struct callback_head rcu; - u32 shared_count; - u32 shared_max; - struct dma_fence *shared[0]; +enum pci_barno { + NO_BAR = 4294967295, + BAR_0 = 0, + BAR_1 = 1, + BAR_2 = 2, + BAR_3 = 3, + BAR_4 = 4, + BAR_5 = 5, }; -struct dma_resv_iter { - struct dma_resv *obj; - bool all_fences; - struct dma_fence *fence; - unsigned int seq; - unsigned int index; - struct dma_resv_list *fences; - unsigned int shared_count; - bool is_restarted; +struct pci_epf_header { + u16 vendorid; + u16 deviceid; + u8 revid; + u8 progif_code; + u8 subclass_code; + u8 baseclass_code; + u8 cache_line_size; + u16 subsys_vendor_id; + u16 subsys_id; + enum pci_interrupt_pin interrupt_pin; }; -struct dma_buf_sync { - __u64 flags; +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 dma_buf_list { - struct list_head head; - struct mutex lock; +struct pci_epf_bar { + dma_addr_t phys_addr; + void *addr; + size_t size; + enum pci_barno barno; + int flags; }; -struct dma_fence_array; +struct pci_epc; -struct dma_fence_array_cb { - struct dma_fence_cb cb; - struct dma_fence_array *array; -}; +struct pci_epf_driver; -struct dma_fence_array { - struct dma_fence base; - spinlock_t lock; - unsigned int num_fences; - atomic_t num_pending; - struct dma_fence **fences; - struct irq_work work; +struct pci_epf { + struct device dev; + const char *name; + struct pci_epf_header *header; + struct pci_epf_bar bar[6]; + u8 msi_interrupts; + u16 msix_interrupts; + u8 func_no; + u8 vfunc_no; + struct pci_epc *epc; + struct pci_epf *epf_pf; + struct pci_epf_driver *driver; + 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 *); + void (*remove)(struct pci_epf *); + struct device_driver driver; + struct pci_epf_ops *ops; + struct module *owner; + struct list_head epf_group; + const struct pci_epf_device_id *id_table; }; -enum dma_fence_flag_bits { - DMA_FENCE_FLAG_SIGNALED_BIT = 0, - DMA_FENCE_FLAG_TIMESTAMP_BIT = 1, - DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT = 2, - DMA_FENCE_FLAG_USER_BITS = 3, +struct pci_epc_ops; + +struct pci_epc_mem; + +struct pci_epc { + struct device dev; + struct list_head pci_epf; + const struct pci_epc_ops *ops; + struct pci_epc_mem **windows; + struct pci_epc_mem *mem; + unsigned int num_windows; + u8 max_functions; + u8 *max_vfs; + struct config_group *group; + struct mutex lock; + 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, + PCI_EPC_IRQ_MSI = 2, + PCI_EPC_IRQ_MSIX = 3, +}; + +struct pci_epc_features; + +struct pci_epc_ops { + int (*write_header)(struct pci_epc *, u8, u8, struct pci_epf_header *); + int (*set_bar)(struct pci_epc *, u8, u8, struct pci_epf_bar *); + void (*clear_bar)(struct pci_epc *, u8, u8, struct pci_epf_bar *); + int (*map_addr)(struct pci_epc *, u8, u8, phys_addr_t, u64, size_t); + void (*unmap_addr)(struct pci_epc *, u8, u8, phys_addr_t); + int (*set_msi)(struct pci_epc *, u8, u8, u8); + int (*get_msi)(struct pci_epc *, u8, u8); + int (*set_msix)(struct pci_epc *, u8, u8, u16, enum pci_barno, u32); + int (*get_msix)(struct pci_epc *, u8, u8); + int (*raise_irq)(struct pci_epc *, u8, u8, enum pci_epc_irq_type, u16); + int (*map_msi_irq)(struct pci_epc *, u8, u8, phys_addr_t, u8, u32, u32 *, u32 *); + int (*start)(struct pci_epc *); + void (*stop)(struct pci_epc *); + const struct pci_epc_features * (*get_features)(struct pci_epc *, u8, u8); + struct module *owner; }; -struct trace_event_raw_dma_fence { - struct trace_entry ent; - u32 __data_loc_driver; - u32 __data_loc_timeline; - unsigned int context; - unsigned int seqno; - char __data[0]; +struct pci_epc_features { + unsigned int linkup_notifier: 1; + unsigned int core_init_notifier: 1; + unsigned int msi_capable: 1; + unsigned int msix_capable: 1; + u8 reserved_bar; + u8 bar_fixed_64bit; + u64 bar_fixed_size[6]; + size_t align; }; -struct trace_event_data_offsets_dma_fence { - u32 driver; - u32 timeline; +struct pci_epc_mem_window { + phys_addr_t phys_base; + size_t size; + size_t page_size; }; -typedef void (*btf_trace_dma_fence_emit)(void *, struct dma_fence *); +struct pci_epc_mem { + struct pci_epc_mem_window window; + long unsigned int *bitmap; + int pages; + struct mutex lock; +}; -typedef void (*btf_trace_dma_fence_init)(void *, struct dma_fence *); +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; +}; -typedef void (*btf_trace_dma_fence_destroy)(void *, struct dma_fence *); +struct pci_epc_group { + struct config_group group; + struct pci_epc *epc; + bool start; +}; -typedef void (*btf_trace_dma_fence_enable_signal)(void *, struct dma_fence *); +enum pci_notify_event { + CORE_INIT = 0, + LINK_UP = 1, +}; -typedef void (*btf_trace_dma_fence_signaled)(void *, struct dma_fence *); +enum dw_pcie_region_type { + DW_PCIE_REGION_UNKNOWN = 0, + DW_PCIE_REGION_INBOUND = 1, + DW_PCIE_REGION_OUTBOUND = 2, +}; -typedef void (*btf_trace_dma_fence_wait_start)(void *, struct dma_fence *); +struct pcie_port; -typedef void (*btf_trace_dma_fence_wait_end)(void *, struct dma_fence *); +struct dw_pcie_host_ops { + int (*host_init)(struct pcie_port *); + int (*msi_host_init)(struct pcie_port *); +}; -struct default_wait_cb { - struct dma_fence_cb base; - struct task_struct *task; +struct pcie_port { + bool has_msi_ctrl: 1; + u64 cfg0_base; + void *va_cfg0_base; + u32 cfg0_size; + resource_size_t io_base; + phys_addr_t io_bus_addr; + u32 io_size; + int irq; + const struct dw_pcie_host_ops *ops; + int msi_irq; + struct irq_domain *irq_domain; + struct irq_domain *msi_domain; + u16 msi_msg; + dma_addr_t msi_data; + struct irq_chip *msi_irq_chip; + u32 num_vectors; + u32 irq_mask[8]; + struct pci_host_bridge *bridge; + raw_spinlock_t lock; + long unsigned int msi_irq_in_use[4]; }; -struct dma_fence_chain { - struct dma_fence base; - struct dma_fence *prev; - u64 prev_seqno; - struct dma_fence *fence; - union { - struct dma_fence_cb cb; - struct irq_work work; - }; - spinlock_t lock; +enum dw_pcie_as_type { + DW_PCIE_AS_UNKNOWN = 0, + DW_PCIE_AS_MEM = 1, + DW_PCIE_AS_IO = 2, }; -struct dma_heap; +struct dw_pcie_ep; -struct dma_heap_ops { - struct dma_buf * (*allocate)(struct dma_heap *, long unsigned int, long unsigned int, long unsigned int); +struct dw_pcie_ep_ops { + void (*ep_init)(struct dw_pcie_ep *); + int (*raise_irq)(struct dw_pcie_ep *, u8, enum pci_epc_irq_type, u16); + const struct pci_epc_features * (*get_features)(struct dw_pcie_ep *); + unsigned int (*func_conf_select)(struct dw_pcie_ep *, u8); }; -struct dma_heap { - const char *name; - const struct dma_heap_ops *ops; - void *priv; - dev_t heap_devt; - struct list_head list; - struct cdev heap_cdev; +struct dw_pcie_ep { + struct pci_epc *epc; + struct list_head func_list; + const struct dw_pcie_ep_ops *ops; + phys_addr_t phys_base; + size_t addr_size; + size_t page_size; + u8 bar_to_atu[6]; + phys_addr_t *outbound_addr; + long unsigned int *ib_window_map; + long unsigned int *ob_window_map; + void *msi_mem; + phys_addr_t msi_mem_phys; + struct pci_epf_bar *epf_bar[6]; +}; + +struct dw_pcie; + +struct dw_pcie_ops { + u64 (*cpu_addr_fixup)(struct dw_pcie *, u64); + u32 (*read_dbi)(struct dw_pcie *, void *, u32, size_t); + void (*write_dbi)(struct dw_pcie *, void *, u32, size_t, u32); + void (*write_dbi2)(struct dw_pcie *, void *, u32, size_t, u32); + int (*link_up)(struct dw_pcie *); + int (*start_link)(struct dw_pcie *); + void (*stop_link)(struct dw_pcie *); +}; + +struct dw_pcie { + struct device *dev; + void *dbi_base; + void *dbi_base2; + void *atu_base; + size_t atu_size; + u32 num_ib_windows; + u32 num_ob_windows; + struct pcie_port pp; + struct dw_pcie_ep ep; + const struct dw_pcie_ops *ops; + unsigned int version; + int num_lanes; + int link_gen; + u8 n_fts[2]; + bool iatu_unroll_enabled: 1; + bool io_cfg_atu_shared: 1; }; -struct dma_heap_export_info { - const char *name; - const struct dma_heap_ops *ops; - void *priv; +struct pci_epf_msix_tbl { + u64 msg_addr; + u32 msg_data; + u32 vector_ctrl; }; -struct dma_heap_allocation_data { - __u64 len; - __u32 fd; - __u32 fd_flags; - __u64 heap_flags; +struct dw_pcie_ep_func { + struct list_head list; + u8 func_no; + u8 msi_cap; + u8 msix_cap; }; -struct system_heap_buffer { - struct dma_heap *heap; - struct list_head attachments; - struct mutex lock; - long unsigned int len; - struct sg_table sg_table; - int vmap_cnt; - void *vaddr; +enum dw_pcie_device_mode { + DW_PCIE_UNKNOWN_TYPE = 0, + DW_PCIE_EP_TYPE = 1, + DW_PCIE_LEG_EP_TYPE = 2, + DW_PCIE_RC_TYPE = 3, }; -struct dma_heap_attachment { - struct device *dev; - struct sg_table *table; - struct list_head list; - bool mapped; -}; +struct regmap; -struct dma_fence_unwrap { - struct dma_fence *chain; - struct dma_fence *array; - unsigned int index; +struct dw_plat_pcie { + struct dw_pcie *pci; + struct regmap *regmap; + enum dw_pcie_device_mode mode; }; -struct sync_file { - struct file *file; - char user_name[32]; - struct list_head sync_file_list; - wait_queue_head_t wq; - long unsigned int flags; - struct dma_fence *fence; - struct dma_fence_cb cb; +struct dw_plat_pcie_of_data { + enum dw_pcie_device_mode mode; }; -struct sync_merge_data { - char name[32]; - __s32 fd2; - __s32 fence; - __u32 flags; - __u32 pad; +enum hdmi_infoframe_type { + HDMI_INFOFRAME_TYPE_VENDOR = 129, + HDMI_INFOFRAME_TYPE_AVI = 130, + HDMI_INFOFRAME_TYPE_SPD = 131, + HDMI_INFOFRAME_TYPE_AUDIO = 132, + HDMI_INFOFRAME_TYPE_DRM = 135, }; -struct sync_fence_info { - char obj_name[32]; - char driver_name[32]; - __s32 status; - __u32 flags; - __u64 timestamp_ns; +struct hdmi_any_infoframe { + enum hdmi_infoframe_type type; + unsigned char version; + unsigned char length; }; -struct sync_file_info { - char name[32]; - __s32 status; - __u32 flags; - __u32 num_fences; - __u32 pad; - __u64 sync_fence_info; +enum hdmi_colorspace { + HDMI_COLORSPACE_RGB = 0, + HDMI_COLORSPACE_YUV422 = 1, + HDMI_COLORSPACE_YUV444 = 2, + HDMI_COLORSPACE_YUV420 = 3, + HDMI_COLORSPACE_RESERVED4 = 4, + HDMI_COLORSPACE_RESERVED5 = 5, + HDMI_COLORSPACE_RESERVED6 = 6, + HDMI_COLORSPACE_IDO_DEFINED = 7, }; -struct dma_buf_stats_attribute { - struct attribute attr; - ssize_t (*show)(struct dma_buf *, struct dma_buf_stats_attribute *, char *); +enum hdmi_scan_mode { + HDMI_SCAN_MODE_NONE = 0, + HDMI_SCAN_MODE_OVERSCAN = 1, + HDMI_SCAN_MODE_UNDERSCAN = 2, + HDMI_SCAN_MODE_RESERVED = 3, }; -struct udmabuf_create { - __u32 memfd; - __u32 flags; - __u64 offset; - __u64 size; +enum hdmi_colorimetry { + HDMI_COLORIMETRY_NONE = 0, + HDMI_COLORIMETRY_ITU_601 = 1, + HDMI_COLORIMETRY_ITU_709 = 2, + HDMI_COLORIMETRY_EXTENDED = 3, }; -struct udmabuf_create_item { - __u32 memfd; - __u32 __pad; - __u64 offset; - __u64 size; +enum hdmi_picture_aspect { + HDMI_PICTURE_ASPECT_NONE = 0, + HDMI_PICTURE_ASPECT_4_3 = 1, + HDMI_PICTURE_ASPECT_16_9 = 2, + HDMI_PICTURE_ASPECT_64_27 = 3, + HDMI_PICTURE_ASPECT_256_135 = 4, + HDMI_PICTURE_ASPECT_RESERVED = 5, }; -struct udmabuf_create_list { - __u32 flags; - __u32 count; - struct udmabuf_create_item list[0]; +enum hdmi_active_aspect { + HDMI_ACTIVE_ASPECT_16_9_TOP = 2, + HDMI_ACTIVE_ASPECT_14_9_TOP = 3, + HDMI_ACTIVE_ASPECT_16_9_CENTER = 4, + HDMI_ACTIVE_ASPECT_PICTURE = 8, + HDMI_ACTIVE_ASPECT_4_3 = 9, + HDMI_ACTIVE_ASPECT_16_9 = 10, + HDMI_ACTIVE_ASPECT_14_9 = 11, + HDMI_ACTIVE_ASPECT_4_3_SP_14_9 = 13, + HDMI_ACTIVE_ASPECT_16_9_SP_14_9 = 14, + HDMI_ACTIVE_ASPECT_16_9_SP_4_3 = 15, }; -struct udmabuf { - long unsigned int pagecount; - struct page **pages; - struct sg_table *sg; - struct miscdevice *device; +enum hdmi_extended_colorimetry { + HDMI_EXTENDED_COLORIMETRY_XV_YCC_601 = 0, + HDMI_EXTENDED_COLORIMETRY_XV_YCC_709 = 1, + HDMI_EXTENDED_COLORIMETRY_S_YCC_601 = 2, + HDMI_EXTENDED_COLORIMETRY_OPYCC_601 = 3, + HDMI_EXTENDED_COLORIMETRY_OPRGB = 4, + HDMI_EXTENDED_COLORIMETRY_BT2020_CONST_LUM = 5, + HDMI_EXTENDED_COLORIMETRY_BT2020 = 6, + HDMI_EXTENDED_COLORIMETRY_RESERVED = 7, }; -enum 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 hdmi_quantization_range { + HDMI_QUANTIZATION_RANGE_DEFAULT = 0, + HDMI_QUANTIZATION_RANGE_LIMITED = 1, + HDMI_QUANTIZATION_RANGE_FULL = 2, + HDMI_QUANTIZATION_RANGE_RESERVED = 3, }; -struct scsi_sense_hdr { - u8 response_code; - u8 sense_key; - u8 asc; - u8 ascq; - u8 byte4; - u8 byte5; - u8 byte6; - u8 additional_length; +enum hdmi_nups { + HDMI_NUPS_UNKNOWN = 0, + HDMI_NUPS_HORIZONTAL = 1, + HDMI_NUPS_VERTICAL = 2, + HDMI_NUPS_BOTH = 3, }; -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 hdmi_ycc_quantization_range { + HDMI_YCC_QUANTIZATION_RANGE_LIMITED = 0, + HDMI_YCC_QUANTIZATION_RANGE_FULL = 1, }; -enum scsi_disposition { - NEEDS_RETRY = 8193, - SUCCESS = 8194, - FAILED = 8195, - QUEUED = 8196, - SOFT_ERROR = 8197, - ADD_TO_MLQUEUE = 8198, - TIMEOUT_ERROR = 8199, - SCSI_RETURN_NOT_HANDLED = 8200, - FAST_IO_FAIL = 8201, +enum hdmi_content_type { + HDMI_CONTENT_TYPE_GRAPHICS = 0, + HDMI_CONTENT_TYPE_PHOTO = 1, + HDMI_CONTENT_TYPE_CINEMA = 2, + HDMI_CONTENT_TYPE_GAME = 3, }; -typedef __u64 blist_flags_t; +enum hdmi_metadata_type { + HDMI_STATIC_METADATA_TYPE1 = 0, +}; -enum scsi_device_state { - SDEV_CREATED = 1, - SDEV_RUNNING = 2, - SDEV_CANCEL = 3, - SDEV_DEL = 4, - SDEV_QUIESCE = 5, - SDEV_OFFLINE = 6, - SDEV_TRANSPORT_OFFLINE = 7, - SDEV_BLOCK = 8, - SDEV_CREATED_BLOCK = 9, +enum hdmi_eotf { + HDMI_EOTF_TRADITIONAL_GAMMA_SDR = 0, + HDMI_EOTF_TRADITIONAL_GAMMA_HDR = 1, + HDMI_EOTF_SMPTE_ST2084 = 2, + HDMI_EOTF_BT_2100_HLG = 3, }; -struct scsi_vpd { - struct callback_head rcu; - int len; - unsigned char data[0]; +struct hdmi_avi_infoframe { + enum hdmi_infoframe_type type; + unsigned char version; + unsigned char length; + enum hdmi_colorspace colorspace; + enum hdmi_scan_mode scan_mode; + enum hdmi_colorimetry colorimetry; + enum hdmi_picture_aspect picture_aspect; + enum hdmi_active_aspect active_aspect; + bool itc; + enum hdmi_extended_colorimetry extended_colorimetry; + enum hdmi_quantization_range quantization_range; + enum hdmi_nups nups; + unsigned char video_code; + enum hdmi_ycc_quantization_range ycc_quantization_range; + enum hdmi_content_type content_type; + unsigned char pixel_repeat; + short unsigned int top_bar; + short unsigned int bottom_bar; + short unsigned int left_bar; + short unsigned int right_bar; }; -struct Scsi_Host; +struct hdmi_drm_infoframe { + enum hdmi_infoframe_type type; + unsigned char version; + unsigned char length; + enum hdmi_eotf eotf; + enum hdmi_metadata_type metadata_type; + struct { + u16 x; + u16 y; + } display_primaries[3]; + struct { + u16 x; + u16 y; + } white_point; + u16 max_display_mastering_luminance; + u16 min_display_mastering_luminance; + u16 max_cll; + u16 max_fall; +}; -struct scsi_target; +enum hdmi_spd_sdi { + HDMI_SPD_SDI_UNKNOWN = 0, + HDMI_SPD_SDI_DSTB = 1, + HDMI_SPD_SDI_DVDP = 2, + HDMI_SPD_SDI_DVHS = 3, + HDMI_SPD_SDI_HDDVR = 4, + HDMI_SPD_SDI_DVC = 5, + HDMI_SPD_SDI_DSC = 6, + HDMI_SPD_SDI_VCD = 7, + HDMI_SPD_SDI_GAME = 8, + HDMI_SPD_SDI_PC = 9, + HDMI_SPD_SDI_BD = 10, + HDMI_SPD_SDI_SACD = 11, + HDMI_SPD_SDI_HDDVD = 12, + HDMI_SPD_SDI_PMP = 13, +}; -struct scsi_device_handler; +struct hdmi_spd_infoframe { + enum hdmi_infoframe_type type; + unsigned char version; + unsigned char length; + char vendor[8]; + char product[16]; + enum hdmi_spd_sdi sdi; +}; -struct scsi_device { - struct Scsi_Host *host; - struct request_queue *request_queue; - struct list_head siblings; - struct list_head same_target_siblings; - struct sbitmap budget_map; - atomic_t device_blocked; - atomic_t restarts; - spinlock_t list_lock; - struct list_head starved_entry; - short unsigned int queue_depth; - short unsigned int max_queue_depth; - short unsigned int last_queue_full_depth; - short unsigned int last_queue_full_count; - long unsigned int last_queue_full_time; - long unsigned int queue_ramp_up_period; - long unsigned int last_queue_ramp_up; - unsigned int id; - unsigned int channel; - u64 lun; - unsigned int manufacturer; - unsigned int sector_size; - void *hostdata; - unsigned char type; - char scsi_level; - char inq_periph_qual; - struct mutex inquiry_mutex; - unsigned char inquiry_len; - unsigned char *inquiry; - const char *vendor; - const char *model; - const char *rev; - struct scsi_vpd *vpd_pg0; - struct scsi_vpd *vpd_pg83; - struct scsi_vpd *vpd_pg80; - struct scsi_vpd *vpd_pg89; - struct scsi_target *sdev_target; - blist_flags_t sdev_bflags; - unsigned int eh_timeout; - unsigned int removable: 1; - unsigned int changed: 1; - unsigned int busy: 1; - unsigned int lockable: 1; - unsigned int locked: 1; - unsigned int borken: 1; - unsigned int disconnect: 1; - unsigned int soft_reset: 1; - unsigned int sdtr: 1; - unsigned int wdtr: 1; - unsigned int ppr: 1; - unsigned int tagged_supported: 1; - unsigned int simple_tags: 1; - unsigned int was_reset: 1; - unsigned int expecting_cc_ua: 1; - unsigned int use_10_for_rw: 1; - unsigned int use_10_for_ms: 1; - unsigned int set_dbd_for_ms: 1; - unsigned int no_report_opcodes: 1; - unsigned int no_write_same: 1; - unsigned int use_16_for_rw: 1; - unsigned int skip_ms_page_8: 1; - unsigned int skip_ms_page_3f: 1; - unsigned int skip_vpd_pages: 1; - unsigned int try_vpd_pages: 1; - unsigned int use_192_bytes_for_3f: 1; - unsigned int no_start_on_add: 1; - unsigned int allow_restart: 1; - unsigned int manage_start_stop: 1; - unsigned int start_stop_pwr_cond: 1; - unsigned int no_uld_attach: 1; - unsigned int select_no_atn: 1; - unsigned int fix_capacity: 1; - unsigned int guess_capacity: 1; - unsigned int retry_hwerror: 1; - unsigned int last_sector_bug: 1; - unsigned int no_read_disc_info: 1; - unsigned int no_read_capacity_16: 1; - unsigned int try_rc_10_first: 1; - unsigned int security_supported: 1; - unsigned int is_visible: 1; - unsigned int wce_default_on: 1; - unsigned int no_dif: 1; - unsigned int broken_fua: 1; - unsigned int lun_in_cdb: 1; - unsigned int unmap_limit_for_ws: 1; - unsigned int rpm_autosuspend: 1; - unsigned int ignore_media_change: 1; - unsigned int silence_suspend: 1; - unsigned int queue_stopped; - bool offline_already; - atomic_t disk_events_disable_depth; - long unsigned int supported_events[1]; - long unsigned int pending_events[1]; - struct list_head event_list; - struct work_struct event_work; - unsigned int max_device_blocked; - atomic_t iorequest_cnt; - atomic_t iodone_cnt; - atomic_t ioerr_cnt; - struct device sdev_gendev; - struct device sdev_dev; - struct execute_work ew; - struct work_struct requeue_work; - struct scsi_device_handler *handler; - void *handler_data; - size_t dma_drain_len; - void *dma_drain_buf; - unsigned int sg_timeout; - unsigned int sg_reserved_size; - struct bsg_device *bsg_dev; - unsigned char access_state; - struct mutex state_mutex; - enum scsi_device_state sdev_state; - struct task_struct *quiesced_by; - long unsigned int sdev_data[0]; +enum hdmi_audio_coding_type { + HDMI_AUDIO_CODING_TYPE_STREAM = 0, + HDMI_AUDIO_CODING_TYPE_PCM = 1, + HDMI_AUDIO_CODING_TYPE_AC3 = 2, + HDMI_AUDIO_CODING_TYPE_MPEG1 = 3, + HDMI_AUDIO_CODING_TYPE_MP3 = 4, + HDMI_AUDIO_CODING_TYPE_MPEG2 = 5, + HDMI_AUDIO_CODING_TYPE_AAC_LC = 6, + HDMI_AUDIO_CODING_TYPE_DTS = 7, + HDMI_AUDIO_CODING_TYPE_ATRAC = 8, + HDMI_AUDIO_CODING_TYPE_DSD = 9, + HDMI_AUDIO_CODING_TYPE_EAC3 = 10, + HDMI_AUDIO_CODING_TYPE_DTS_HD = 11, + HDMI_AUDIO_CODING_TYPE_MLP = 12, + HDMI_AUDIO_CODING_TYPE_DST = 13, + HDMI_AUDIO_CODING_TYPE_WMA_PRO = 14, + HDMI_AUDIO_CODING_TYPE_CXT = 15, }; -enum scsi_host_state { - SHOST_CREATED = 1, - SHOST_RUNNING = 2, - SHOST_CANCEL = 3, - SHOST_DEL = 4, - SHOST_RECOVERY = 5, - SHOST_CANCEL_RECOVERY = 6, - SHOST_DEL_RECOVERY = 7, +enum hdmi_audio_sample_size { + HDMI_AUDIO_SAMPLE_SIZE_STREAM = 0, + HDMI_AUDIO_SAMPLE_SIZE_16 = 1, + HDMI_AUDIO_SAMPLE_SIZE_20 = 2, + HDMI_AUDIO_SAMPLE_SIZE_24 = 3, }; -struct scsi_host_template; +enum hdmi_audio_sample_frequency { + HDMI_AUDIO_SAMPLE_FREQUENCY_STREAM = 0, + HDMI_AUDIO_SAMPLE_FREQUENCY_32000 = 1, + HDMI_AUDIO_SAMPLE_FREQUENCY_44100 = 2, + HDMI_AUDIO_SAMPLE_FREQUENCY_48000 = 3, + HDMI_AUDIO_SAMPLE_FREQUENCY_88200 = 4, + HDMI_AUDIO_SAMPLE_FREQUENCY_96000 = 5, + HDMI_AUDIO_SAMPLE_FREQUENCY_176400 = 6, + HDMI_AUDIO_SAMPLE_FREQUENCY_192000 = 7, +}; -struct scsi_transport_template; +enum hdmi_audio_coding_type_ext { + HDMI_AUDIO_CODING_TYPE_EXT_CT = 0, + HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC = 1, + HDMI_AUDIO_CODING_TYPE_EXT_HE_AAC_V2 = 2, + HDMI_AUDIO_CODING_TYPE_EXT_MPEG_SURROUND = 3, + HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC = 4, + HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_V2 = 5, + HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC = 6, + HDMI_AUDIO_CODING_TYPE_EXT_DRA = 7, + HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_HE_AAC_SURROUND = 8, + HDMI_AUDIO_CODING_TYPE_EXT_MPEG4_AAC_LC_SURROUND = 10, +}; -struct Scsi_Host { - struct list_head __devices; - struct list_head __targets; - struct list_head starved_list; - spinlock_t default_lock; - spinlock_t *host_lock; - struct mutex scan_mutex; - struct list_head eh_abort_list; - struct list_head eh_cmd_q; - struct task_struct *ehandler; - struct completion *eh_action; - wait_queue_head_t host_wait; - struct scsi_host_template *hostt; - struct scsi_transport_template *transportt; - struct blk_mq_tag_set tag_set; - atomic_t host_blocked; - unsigned int host_failed; - unsigned int host_eh_scheduled; - unsigned int host_no; - int eh_deadline; - long unsigned int last_reset; - unsigned int max_channel; - unsigned int max_id; - u64 max_lun; - unsigned int unique_id; - short unsigned int max_cmd_len; - int this_id; - int can_queue; - short int cmd_per_lun; - 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; - unsigned int nr_hw_queues; - unsigned int nr_maps; - unsigned int active_mode: 2; - unsigned int host_self_blocked: 1; - unsigned int reverse_ordering: 1; - unsigned int tmf_in_progress: 1; - unsigned int async_scan: 1; - unsigned int eh_noresume: 1; - unsigned int no_write_same: 1; - unsigned int host_tagset: 1; - unsigned int short_inquiry: 1; - unsigned int no_scsi2_lun_in_cdb: 1; - char work_q_name[20]; - struct workqueue_struct *work_q; - struct workqueue_struct *tmf_work_q; - unsigned int max_host_blocked; - unsigned int prot_capabilities; - unsigned char prot_guard_type; - long unsigned int base; - long unsigned int io_port; - unsigned char n_io_port; - unsigned char dma_channel; - unsigned int irq; - enum scsi_host_state shost_state; - struct device shost_gendev; - struct device shost_dev; - void *shost_data; - struct device *dma_dev; - long unsigned int hostdata[0]; +struct hdmi_audio_infoframe { + enum hdmi_infoframe_type type; + unsigned char version; + unsigned char length; + unsigned char channels; + enum hdmi_audio_coding_type coding_type; + enum hdmi_audio_sample_size sample_size; + enum hdmi_audio_sample_frequency sample_frequency; + enum hdmi_audio_coding_type_ext coding_type_ext; + unsigned char channel_allocation; + unsigned char level_shift_value; + bool downmix_inhibit; }; -enum scsi_target_state { - STARGET_CREATED = 1, - STARGET_RUNNING = 2, - STARGET_REMOVE = 3, - STARGET_CREATED_REMOVE = 4, - STARGET_DEL = 5, +enum hdmi_3d_structure { + HDMI_3D_STRUCTURE_INVALID = 4294967295, + HDMI_3D_STRUCTURE_FRAME_PACKING = 0, + HDMI_3D_STRUCTURE_FIELD_ALTERNATIVE = 1, + HDMI_3D_STRUCTURE_LINE_ALTERNATIVE = 2, + HDMI_3D_STRUCTURE_SIDE_BY_SIDE_FULL = 3, + HDMI_3D_STRUCTURE_L_DEPTH = 4, + HDMI_3D_STRUCTURE_L_DEPTH_GFX_GFX_DEPTH = 5, + HDMI_3D_STRUCTURE_TOP_AND_BOTTOM = 6, + HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF = 8, }; -struct scsi_target { - struct scsi_device *starget_sdev_user; - struct list_head siblings; - struct list_head devices; - struct device dev; - struct kref reap_ref; - unsigned int channel; - unsigned int id; - unsigned int create: 1; - unsigned int single_lun: 1; - unsigned int pdt_1f_for_no_lun: 1; - unsigned int no_report_luns: 1; - unsigned int expecting_lun_change: 1; - atomic_t target_busy; - atomic_t target_blocked; - unsigned int can_queue; - unsigned int max_target_blocked; - char scsi_level; - enum scsi_target_state state; - void *hostdata; - long unsigned int starget_data[0]; +struct hdmi_vendor_infoframe { + enum hdmi_infoframe_type type; + unsigned char version; + unsigned char length; + unsigned int oui; + u8 vic; + enum hdmi_3d_structure s3d_struct; + unsigned int s3d_ext_data; }; -struct scsi_data_buffer { - struct sg_table table; - unsigned int length; +union hdmi_vendor_any_infoframe { + struct { + enum hdmi_infoframe_type type; + unsigned char version; + unsigned char length; + unsigned int oui; + } any; + struct hdmi_vendor_infoframe hdmi; }; -enum scsi_cmnd_submitter { - SUBMITTED_BY_BLOCK_LAYER = 0, - SUBMITTED_BY_SCSI_ERROR_HANDLER = 1, - SUBMITTED_BY_SCSI_RESET_IOCTL = 2, +union hdmi_infoframe { + struct hdmi_any_infoframe any; + struct hdmi_avi_infoframe avi; + struct hdmi_spd_infoframe spd; + union hdmi_vendor_any_infoframe vendor; + struct hdmi_audio_infoframe audio; + struct hdmi_drm_infoframe drm; }; -struct scsi_cmnd { - struct scsi_device *device; - struct list_head eh_entry; - struct delayed_work abort_work; - struct callback_head rcu; - int eh_eflags; - int budget_token; - long unsigned int jiffies_at_alloc; - int retries; - int allowed; - unsigned char prot_op; - unsigned char prot_type; - unsigned char prot_flags; - enum scsi_cmnd_submitter submitter; - short unsigned int cmd_len; - enum dma_data_direction sc_data_direction; - unsigned char cmnd[32]; - struct scsi_data_buffer sdb; - struct scsi_data_buffer *prot_sdb; - unsigned int underflow; - unsigned int transfersize; - unsigned int resid_len; - unsigned int sense_len; - unsigned char *sense_buffer; - int flags; - long unsigned int state; - unsigned int extra_len; - unsigned char *host_scribble; - int result; +enum con_scroll { + SM_UP = 0, + SM_DOWN = 1, }; -enum scsi_prot_operations { - SCSI_PROT_NORMAL = 0, - SCSI_PROT_READ_INSERT = 1, - SCSI_PROT_WRITE_STRIP = 2, - SCSI_PROT_READ_STRIP = 3, - SCSI_PROT_WRITE_INSERT = 4, - SCSI_PROT_READ_PASS = 5, - SCSI_PROT_WRITE_PASS = 6, +enum vc_intensity { + VCI_HALF_BRIGHT = 0, + VCI_NORMAL = 1, + VCI_BOLD = 2, + VCI_MASK = 3, }; -struct scsi_driver { - struct device_driver gendrv; - void (*rescan)(struct device *); - blk_status_t (*init_command)(struct scsi_cmnd *); - void (*uninit_command)(struct scsi_cmnd *); - int (*done)(struct scsi_cmnd *); - int (*eh_action)(struct scsi_cmnd *, int); - void (*eh_reset)(struct scsi_cmnd *); +struct 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 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; - const struct attribute_group **shost_groups; - const struct attribute_group **sdev_groups; - u64 vendor_id; - int rpm_autosuspend_delay; +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 trace_event_raw_scsi_dispatch_cmd_start { - struct trace_entry ent; - unsigned int host_no; - unsigned int channel; - unsigned int id; - unsigned int lun; - unsigned int opcode; - unsigned int cmd_len; - unsigned int data_sglen; - unsigned int prot_sglen; - unsigned char prot_op; - u32 __data_loc_cmnd; - char __data[0]; +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; + __u32 smem_len; + __u32 type; + __u32 type_aux; + __u32 visual; + __u16 xpanstep; + __u16 ypanstep; + __u16 ywrapstep; + __u32 line_length; + long unsigned int mmio_start; + __u32 mmio_len; + __u32 accel; + __u16 capabilities; + __u16 reserved[2]; +}; + +struct fb_bitfield { + __u32 offset; + __u32 length; + __u32 msb_right; +}; + +struct fb_var_screeninfo { + __u32 xres; + __u32 yres; + __u32 xres_virtual; + __u32 yres_virtual; + __u32 xoffset; + __u32 yoffset; + __u32 bits_per_pixel; + __u32 grayscale; + struct fb_bitfield red; + struct fb_bitfield green; + struct fb_bitfield blue; + struct fb_bitfield transp; + __u32 nonstd; + __u32 activate; + __u32 height; + __u32 width; + __u32 accel_flags; + __u32 pixclock; + __u32 left_margin; + __u32 right_margin; + __u32 upper_margin; + __u32 lower_margin; + __u32 hsync_len; + __u32 vsync_len; + __u32 sync; + __u32 vmode; + __u32 rotate; + __u32 colorspace; + __u32 reserved[4]; +}; + +struct fb_cmap { + __u32 start; + __u32 len; + __u16 *red; + __u16 *green; + __u16 *blue; + __u16 *transp; +}; + +enum { + FB_BLANK_UNBLANK = 0, + FB_BLANK_NORMAL = 1, + FB_BLANK_VSYNC_SUSPEND = 2, + FB_BLANK_HSYNC_SUSPEND = 3, + FB_BLANK_POWERDOWN = 4, +}; + +struct fb_copyarea { + __u32 dx; + __u32 dy; + __u32 width; + __u32 height; + __u32 sx; + __u32 sy; }; -struct trace_event_raw_scsi_dispatch_cmd_error { - struct trace_entry ent; - unsigned int host_no; - unsigned int channel; - unsigned int id; - unsigned int lun; - int rtn; - unsigned int opcode; - unsigned int cmd_len; - unsigned int data_sglen; - unsigned int prot_sglen; - unsigned char prot_op; - u32 __data_loc_cmnd; - char __data[0]; +struct fb_fillrect { + __u32 dx; + __u32 dy; + __u32 width; + __u32 height; + __u32 color; + __u32 rop; }; -struct trace_event_raw_scsi_cmd_done_timeout_template { - struct trace_entry ent; - unsigned int host_no; - unsigned int channel; - unsigned int id; - unsigned int lun; - int result; - unsigned int opcode; - unsigned int cmd_len; - unsigned int data_sglen; - unsigned int prot_sglen; - unsigned char prot_op; - u32 __data_loc_cmnd; - char __data[0]; +struct fb_image { + __u32 dx; + __u32 dy; + __u32 width; + __u32 height; + __u32 fg_color; + __u32 bg_color; + __u8 depth; + const char *data; + struct fb_cmap cmap; }; -struct trace_event_raw_scsi_eh_wakeup { - struct trace_entry ent; - unsigned int host_no; - char __data[0]; +struct fbcurpos { + __u16 x; + __u16 y; }; -struct trace_event_data_offsets_scsi_dispatch_cmd_start { - u32 cmnd; +struct fb_cursor { + __u16 set; + __u16 enable; + __u16 rop; + const char *mask; + struct fbcurpos hot; + struct fb_image image; }; -struct trace_event_data_offsets_scsi_dispatch_cmd_error { - u32 cmnd; +struct fb_chroma { + __u32 redx; + __u32 greenx; + __u32 bluex; + __u32 whitex; + __u32 redy; + __u32 greeny; + __u32 bluey; + __u32 whitey; }; -struct trace_event_data_offsets_scsi_cmd_done_timeout_template { - u32 cmnd; +struct fb_videomode; + +struct fb_monspecs { + struct fb_chroma chroma; + struct fb_videomode *modedb; + __u8 manufacturer[4]; + __u8 monitor[14]; + __u8 serial_no[14]; + __u8 ascii[14]; + __u32 modedb_len; + __u32 model; + __u32 serial; + __u32 year; + __u32 week; + __u32 hfmin; + __u32 hfmax; + __u32 dclkmin; + __u32 dclkmax; + __u16 input; + __u16 dpms; + __u16 signal; + __u16 vfmin; + __u16 vfmax; + __u16 gamma; + __u16 gtf: 1; + __u16 misc; + __u8 version; + __u8 revision; + __u8 max_x; + __u8 max_y; }; -struct trace_event_data_offsets_scsi_eh_wakeup {}; +struct fb_info; -typedef void (*btf_trace_scsi_dispatch_cmd_start)(void *, struct scsi_cmnd *); +struct fb_pixmap { + u8 *addr; + u32 size; + u32 offset; + u32 buf_align; + u32 scan_align; + u32 access_align; + u32 flags; + u32 blit_x; + u32 blit_y; + void (*writeio)(struct fb_info *, void *, void *, unsigned int); + void (*readio)(struct fb_info *, void *, void *, unsigned int); +}; -typedef void (*btf_trace_scsi_dispatch_cmd_error)(void *, struct scsi_cmnd *, int); +struct fb_deferred_io; -typedef void (*btf_trace_scsi_dispatch_cmd_done)(void *, struct scsi_cmnd *); +struct fb_ops; -typedef void (*btf_trace_scsi_dispatch_cmd_timeout)(void *, struct scsi_cmnd *); +struct apertures_struct; -typedef void (*btf_trace_scsi_eh_wakeup)(void *, struct Scsi_Host *); +struct fb_info { + refcount_t count; + int node; + int flags; + int fbcon_rotate_hint; + struct mutex lock; + struct mutex mm_lock; + struct fb_var_screeninfo var; + struct fb_fix_screeninfo fix; + struct fb_monspecs monspecs; + struct work_struct queue; + struct fb_pixmap pixmap; + struct fb_pixmap sprite; + struct fb_cmap cmap; + struct list_head modelist; + struct fb_videomode *mode; + struct delayed_work deferred_work; + struct fb_deferred_io *fbdefio; + const struct fb_ops *fbops; + struct device *device; + struct device *dev; + int class_flag; + union { + char *screen_base; + char *screen_buffer; + }; + long unsigned int screen_size; + void *pseudo_palette; + u32 state; + void *fbcon_par; + void *par; + struct apertures_struct *apertures; + bool skip_vt_switch; + bool forced_out; +}; -struct cdrom_device_ops; +struct fb_videomode { + const char *name; + u32 refresh; + u32 xres; + u32 yres; + u32 pixclock; + u32 left_margin; + u32 right_margin; + u32 upper_margin; + u32 lower_margin; + u32 hsync_len; + u32 vsync_len; + u32 sync; + u32 vmode; + u32 flag; +}; -struct 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; - __s64 last_media_change_ms; +struct fb_cmap_user { + __u32 start; + __u32 len; + __u16 *red; + __u16 *green; + __u16 *blue; + __u16 *transp; }; -struct cdrom_msf0 { - __u8 minute; - __u8 second; - __u8 frame; +struct fb_event { + struct fb_info *info; + void *data; }; -union cdrom_addr { - struct cdrom_msf0 msf; - int lba; +struct fb_blit_caps { + u32 x; + u32 y; + u32 len; + u32 flags; }; -struct cdrom_multisession { - union cdrom_addr addr; - __u8 xa_flag; - __u8 addr_format; +struct fb_deferred_io { + long unsigned int delay; + struct mutex lock; + struct list_head pagelist; + void (*first_io)(struct fb_info *); + void (*deferred_io)(struct fb_info *, struct list_head *); }; -struct cdrom_mcn { - __u8 medium_catalog_number[14]; +struct fb_ops { + struct module *owner; + int (*fb_open)(struct fb_info *, int); + int (*fb_release)(struct fb_info *, int); + ssize_t (*fb_read)(struct fb_info *, char *, size_t, loff_t *); + ssize_t (*fb_write)(struct fb_info *, const char *, size_t, loff_t *); + int (*fb_check_var)(struct fb_var_screeninfo *, struct fb_info *); + int (*fb_set_par)(struct fb_info *); + int (*fb_setcolreg)(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, struct fb_info *); + int (*fb_setcmap)(struct fb_cmap *, struct fb_info *); + int (*fb_blank)(int, struct fb_info *); + int (*fb_pan_display)(struct fb_var_screeninfo *, struct fb_info *); + void (*fb_fillrect)(struct fb_info *, const struct fb_fillrect *); + void (*fb_copyarea)(struct fb_info *, const struct fb_copyarea *); + void (*fb_imageblit)(struct fb_info *, const struct fb_image *); + int (*fb_cursor)(struct fb_info *, struct fb_cursor *); + int (*fb_sync)(struct fb_info *); + int (*fb_ioctl)(struct fb_info *, unsigned int, long unsigned int); + int (*fb_compat_ioctl)(struct fb_info *, unsigned int, long unsigned int); + int (*fb_mmap)(struct fb_info *, struct vm_area_struct *); + void (*fb_get_caps)(struct fb_info *, struct fb_blit_caps *, struct fb_var_screeninfo *); + void (*fb_destroy)(struct fb_info *); + int (*fb_debug_enter)(struct fb_info *); + int (*fb_debug_leave)(struct fb_info *); }; -struct request_sense; +struct aperture { + resource_size_t base; + resource_size_t size; +}; -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 apertures_struct { + unsigned int count; + struct aperture ranges[0]; }; -struct request_sense { - __u8 valid: 1; - __u8 error_code: 7; - __u8 segment_number; - __u8 reserved1: 2; - __u8 ili: 1; - __u8 reserved2: 1; - __u8 sense_key: 4; - __u8 information[4]; - __u8 add_sense_len; - __u8 command_info[4]; - __u8 asc; - __u8 ascq; - __u8 fruc; - __u8 sks[3]; - __u8 asb[46]; +struct fb_modelist { + struct list_head list; + struct fb_videomode mode; }; -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 fb_fix_screeninfo32 { + char id[16]; + compat_caddr_t smem_start; + u32 smem_len; + u32 type; + u32 type_aux; + u32 visual; + u16 xpanstep; + u16 ypanstep; + u16 ywrapstep; + u32 line_length; + compat_caddr_t mmio_start; + u32 mmio_len; + u32 accel; + u16 reserved[3]; }; -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; +struct fb_cmap32 { + u32 start; + u32 len; + compat_caddr_t red; + compat_caddr_t green; + compat_caddr_t blue; + compat_caddr_t transp; }; -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 dmt_videomode { + u32 dmt_id; + u32 std_2byte_code; + u32 cvt_3byte_code; + const struct fb_videomode *mode; }; -struct scsi_ioctl_command { - unsigned int inlen; - unsigned int outlen; - unsigned char data[0]; +struct broken_edid { + u8 manufacturer[4]; + u32 model; + u32 fix; }; -struct scsi_idlun { - __u32 dev_id; - __u32 host_unique_id; +struct __fb_timings { + u32 dclk; + u32 hfreq; + u32 vfreq; + u32 hactive; + u32 vactive; + u32 hblank; + u32 vblank; + u32 htotal; + u32 vtotal; }; -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; +typedef unsigned int u_int; + +struct fb_cvt_data { + u32 xres; + u32 yres; + u32 refresh; + u32 f_refresh; + u32 pixclock; + u32 hperiod; + u32 hblank; + u32 hfreq; + u32 htotal; + u32 vtotal; + u32 vsync; + u32 hsync; + u32 h_front_porch; + u32 h_back_porch; + u32 v_front_porch; + u32 v_back_porch; + u32 h_margin; + u32 v_margin; + u32 interlace; + u32 aspect_ratio; + u32 active_pixels; + u32 flags; + u32 status; }; -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; +typedef unsigned char u_char; + +typedef short unsigned int u_short; + +struct fb_con2fbmap { + __u32 console; + __u32 framebuffer; }; -struct compat_cdrom_generic_command { - unsigned char cmd[12]; - compat_caddr_t buffer; - compat_uint_t buflen; - compat_int_t stat; - compat_caddr_t sense; - unsigned char data_direction; - unsigned char pad[3]; - compat_int_t quiet; - compat_int_t timeout; - compat_caddr_t unused; +struct vc { + struct vc_data *d; + struct work_struct SAK_work; }; -struct scsi_transport_template { - struct transport_container host_attrs; - struct transport_container target_attrs; - struct transport_container device_attrs; - int (*user_scan)(struct Scsi_Host *, uint, uint, u64); - int device_size; - int device_private_offset; - int target_size; - int target_private_offset; - int host_size; - unsigned int create_work_queue: 1; - void (*eh_strategy_handler)(struct Scsi_Host *); +struct fbcon_display { + const u_char *fontdata; + int userfont; + u_short inverse; + short int yscroll; + int vrows; + int cursor_shape; + int con_rotate; + u32 xres_virtual; + u32 yres_virtual; + u32 height; + u32 width; + u32 bits_per_pixel; + u32 grayscale; + u32 nonstd; + u32 accel_flags; + u32 rotate; + struct fb_bitfield red; + struct fb_bitfield green; + struct fb_bitfield blue; + struct fb_bitfield transp; + const struct fb_videomode *mode; }; -struct scsi_host_busy_iter_data { - bool (*fn)(struct scsi_cmnd *, void *, bool); - void *priv; +struct fbcon_ops { + void (*bmove)(struct vc_data *, struct fb_info *, int, int, int, int, int, int); + void (*clear)(struct vc_data *, struct fb_info *, int, int, int, int); + void (*putcs)(struct vc_data *, struct fb_info *, const short unsigned int *, int, int, int, int, int); + void (*clear_margins)(struct vc_data *, struct fb_info *, int, int); + void (*cursor)(struct vc_data *, struct fb_info *, int, int, int); + int (*update_start)(struct fb_info *); + int (*rotate_font)(struct fb_info *, struct vc_data *); + struct fb_var_screeninfo var; + struct timer_list cursor_timer; + struct fb_cursor cursor_state; + struct fbcon_display *p; + struct fb_info *info; + int currcon; + int cur_blink_jiffies; + int cursor_flash; + int cursor_reset; + int blank_state; + int graphics; + int save_graphics; + int flags; + int rotate; + int cur_rotate; + char *cursor_data; + u8 *fontbuffer; + u8 *fontdata; + u8 *cursor_src; + u32 cursor_size; + u32 fd_size; }; -typedef void (*activate_complete)(void *, int); - -struct scsi_device_handler { - struct list_head list; - struct module *module; - const char *name; - enum scsi_disposition (*check_sense)(struct scsi_device *, struct scsi_sense_hdr *); - int (*attach)(struct scsi_device *); - void (*detach)(struct scsi_device *); - int (*activate)(struct scsi_device *, activate_complete, void *); - blk_status_t (*prep_fn)(struct scsi_device *, struct request *); - int (*set_params)(struct scsi_device *, const char *); - void (*rescan)(struct scsi_device *); +enum { + FBCON_LOGO_CANSHOW = 4294967295, + FBCON_LOGO_DRAW = 4294967294, + FBCON_LOGO_DONTSHOW = 4294967293, }; -struct scsi_eh_save { - int result; - unsigned int resid_len; - int eh_eflags; - enum dma_data_direction data_direction; - unsigned int underflow; - unsigned char cmd_len; - unsigned char prot_op; - unsigned char cmnd[32]; - struct scsi_data_buffer sdb; - struct scatterlist sense_sgl; +struct virtio_driver { + struct device_driver driver; + const struct virtio_device_id *id_table; + const unsigned int *feature_table; + unsigned int feature_table_size; + const unsigned int *feature_table_legacy; + unsigned int feature_table_size_legacy; + int (*validate)(struct virtio_device *); + int (*probe)(struct virtio_device *); + void (*scan)(struct virtio_device *); + void (*remove)(struct virtio_device *); + void (*config_changed)(struct virtio_device *); }; -struct value_name_pair; +typedef __u16 __virtio16; -struct sa_name_list { - int opcode; - const struct value_name_pair *arr; - int arr_sz; -}; +typedef __u32 __virtio32; -struct value_name_pair { - int value; - const char *name; -}; +typedef __u64 __virtio64; -struct error_info { - short unsigned int code12; - short unsigned int size; +struct vring_desc { + __virtio64 addr; + __virtio32 len; + __virtio16 flags; + __virtio16 next; }; -struct error_info2 { - unsigned char code1; - unsigned char code2_min; - unsigned char code2_max; - const char *str; - const char *fmt; +struct vring_avail { + __virtio16 flags; + __virtio16 idx; + __virtio16 ring[0]; }; -struct scsi_lun { - __u8 scsi_lun[8]; +struct vring_used_elem { + __virtio32 id; + __virtio32 len; }; -enum scsi_timeouts { - SCSI_DEFAULT_EH_TIMEOUT = 1000, -}; +typedef struct vring_used_elem vring_used_elem_t; -enum scsi_scan_mode { - SCSI_SCAN_INITIAL = 0, - SCSI_SCAN_RESCAN = 1, - SCSI_SCAN_MANUAL = 2, +struct vring_used { + __virtio16 flags; + __virtio16 idx; + vring_used_elem_t ring[0]; }; -struct async_scan_data { - struct list_head list; - struct Scsi_Host *shost; - struct completion prev_finished; -}; +typedef struct vring_desc vring_desc_t; -struct scsi_event { - enum scsi_device_event evt_type; - struct list_head node; -}; +typedef struct vring_avail vring_avail_t; -enum scsi_devinfo_key { - SCSI_DEVINFO_GLOBAL = 0, - SCSI_DEVINFO_SPI = 1, +typedef struct vring_used vring_used_t; + +struct vring { + unsigned int num; + vring_desc_t *desc; + vring_avail_t *avail; + vring_used_t *used; }; -struct scsi_dev_info_list { - struct list_head dev_info_list; - char vendor[8]; - char model[16]; - blist_flags_t flags; - unsigned int compatible; +struct vring_packed_desc_event { + __le16 off_wrap; + __le16 flags; }; -struct scsi_dev_info_list_table { - struct list_head node; - struct list_head scsi_dev_info_list; - const char *name; - int key; +struct vring_packed_desc { + __le64 addr; + __le32 len; + __le16 id; + __le16 flags; }; -struct double_list { - struct list_head *top; - struct list_head *bottom; +struct vring_desc_state_split { + void *data; + struct vring_desc *indir_desc; }; -struct scsi_mode_data { - __u32 length; - __u16 block_descriptor_length; - __u8 medium_type; - __u8 device_specific; - __u8 header_length; - __u8 longlba: 1; +struct vring_desc_state_packed { + void *data; + struct vring_packed_desc *indir_desc; + u16 num; + u16 last; }; -enum scsi_host_prot_capabilities { - SHOST_DIF_TYPE1_PROTECTION = 1, - SHOST_DIF_TYPE2_PROTECTION = 2, - SHOST_DIF_TYPE3_PROTECTION = 4, - SHOST_DIX_TYPE0_PROTECTION = 8, - SHOST_DIX_TYPE1_PROTECTION = 16, - SHOST_DIX_TYPE2_PROTECTION = 32, - SHOST_DIX_TYPE3_PROTECTION = 64, +struct vring_desc_extra { + dma_addr_t addr; + u32 len; + u16 flags; + u16 next; }; -enum { - ACTION_FAIL = 0, - ACTION_REPREP = 1, - ACTION_RETRY = 2, - ACTION_DELAYED_RETRY = 3, +struct vring_virtqueue { + struct virtqueue vq; + bool packed_ring; + bool use_dma_api; + bool weak_barriers; + bool broken; + bool indirect; + bool event; + 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; + struct { + struct { + unsigned int num; + struct vring_packed_desc *desc; + struct vring_packed_desc_event *driver; + struct vring_packed_desc_event *device; + } vring; + bool avail_wrap_counter; + bool used_wrap_counter; + u16 avail_used_flags; + u16 next_avail_idx; + u16 event_flags_shadow; + struct vring_desc_state_packed *desc_state; + struct vring_desc_extra *desc_extra; + dma_addr_t ring_dma_addr; + dma_addr_t driver_event_dma_addr; + dma_addr_t device_event_dma_addr; + size_t ring_size_in_bytes; + size_t event_size_in_bytes; + } packed; + }; + bool (*notify)(struct virtqueue *); + bool we_own_ring; }; -struct scsi_nl_hdr { - __u8 version; - __u8 transport; - __u16 magic; - __u16 msgtype; - __u16 msglen; +struct virtio_pci_common_cfg { + __le32 device_feature_select; + __le32 device_feature; + __le32 guest_feature_select; + __le32 guest_feature; + __le16 msix_config; + __le16 num_queues; + __u8 device_status; + __u8 config_generation; + __le16 queue_select; + __le16 queue_size; + __le16 queue_msix_vector; + __le16 queue_enable; + __le16 queue_notify_off; + __le32 queue_desc_lo; + __le32 queue_desc_hi; + __le32 queue_avail_lo; + __le32 queue_avail_hi; + __le32 queue_used_lo; + __le32 queue_used_hi; }; -enum { - SCSI_DH_OK = 0, - SCSI_DH_DEV_FAILED = 1, - SCSI_DH_DEV_TEMP_BUSY = 2, - SCSI_DH_DEV_UNSUPP = 3, - SCSI_DH_DEVICE_MAX = 4, - SCSI_DH_NOTCONN = 5, - SCSI_DH_CONN_FAILURE = 6, - SCSI_DH_TRANSPORT_MAX = 7, - SCSI_DH_IO = 8, - SCSI_DH_INVALID_IO = 9, - SCSI_DH_RETRY = 10, - SCSI_DH_IMM_RETRY = 11, - SCSI_DH_TIMED_OUT = 12, - SCSI_DH_RES_TEMP_UNAVAIL = 13, - SCSI_DH_DEV_OFFLINED = 14, - SCSI_DH_NOMEM = 15, - SCSI_DH_NOSYS = 16, - SCSI_DH_DRIVER_MAX = 17, +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 scsi_dh_blist { - const char *vendor; - const char *model; - const char *driver; +struct virtio_pci_vq_info { + struct virtqueue *vq; + struct list_head node; + unsigned int msix_vector; }; -enum scsi_prot_flags { - SCSI_PROT_TRANSFER_PI = 1, - SCSI_PROT_GUARD_CHECK = 2, - SCSI_PROT_REF_CHECK = 4, - SCSI_PROT_REF_INCREMENT = 8, - SCSI_PROT_IP_CHECKSUM = 16, +struct virtio_pci_device { + struct virtio_device vdev; + struct pci_dev *pci_dev; + struct virtio_pci_modern_device mdev; + u8 *isr; + void *ioaddr; + spinlock_t lock; + struct list_head virtqueues; + struct virtio_pci_vq_info **vqs; + int msix_enabled; + int intx_enabled; + cpumask_var_t *msix_affinity_masks; + char (*msix_names)[256]; + unsigned int msix_vectors; + unsigned int msix_used_vectors; + bool per_vq_vectors; + struct virtqueue * (*setup_vq)(struct virtio_pci_device *, struct virtio_pci_vq_info *, unsigned int, void (*)(struct virtqueue *), const char *, bool, u16); + void (*del_vq)(struct virtio_pci_vq_info *); + u16 (*config_vector)(struct virtio_pci_device *, u16); }; enum { - SD_EXT_CDB_SIZE = 32, - SD_MEMPOOL_SIZE = 2, + VP_MSIX_CONFIG_VECTOR = 0, + VP_MSIX_VQ_VECTOR = 1, }; -enum { - SD_DEF_XFER_BLOCKS = 65535, - SD_MAX_XFER_BLOCKS = 4294967295, - SD_MAX_WS10_BLOCKS = 65535, - SD_MAX_WS16_BLOCKS = 8388607, +struct virtio_balloon_config { + __le32 num_pages; + __le32 actual; + union { + __le32 free_page_hint_cmd_id; + __le32 free_page_report_cmd_id; + }; + __le32 poison_val; }; -enum { - SD_LBP_FULL = 0, - SD_LBP_UNMAP = 1, - SD_LBP_WS16 = 2, - SD_LBP_WS10 = 3, - SD_LBP_ZERO = 4, - SD_LBP_DISABLE = 5, +struct virtio_balloon_stat { + __virtio16 tag; + __virtio64 val; +} __attribute__((packed)); + +enum virtio_balloon_vq { + VIRTIO_BALLOON_VQ_INFLATE = 0, + VIRTIO_BALLOON_VQ_DEFLATE = 1, + VIRTIO_BALLOON_VQ_STATS = 2, + VIRTIO_BALLOON_VQ_FREE_PAGE = 3, + VIRTIO_BALLOON_VQ_REPORTING = 4, + VIRTIO_BALLOON_VQ_MAX = 5, }; -enum { - SD_ZERO_WRITE = 0, - SD_ZERO_WS = 1, - SD_ZERO_WS16_UNMAP = 2, - SD_ZERO_WS10_UNMAP = 3, +enum virtio_balloon_config_read { + VIRTIO_BALLOON_CONFIG_READ_CMD_ID = 0, }; -struct opal_dev; +struct virtio_balloon { + struct virtio_device *vdev; + struct virtqueue *inflate_vq; + struct virtqueue *deflate_vq; + struct virtqueue *stats_vq; + struct virtqueue *free_page_vq; + struct workqueue_struct *balloon_wq; + struct work_struct report_free_page_work; + struct work_struct update_balloon_stats_work; + struct work_struct update_balloon_size_work; + spinlock_t stop_update_lock; + bool stop_update; + long unsigned int config_read_bitmap; + struct list_head free_page_list; + spinlock_t free_page_list_lock; + long unsigned int num_free_page_blocks; + u32 cmd_id_received_cache; + __virtio32 cmd_id_active; + __virtio32 cmd_id_stop; + wait_queue_head_t acked; + unsigned int num_pages; + struct balloon_dev_info vb_dev_info; + struct mutex balloon_lock; + unsigned int num_pfns; + __virtio32 pfns[256]; + struct virtio_balloon_stat stats[10]; + struct shrinker shrinker; + struct notifier_block oom_nb; + struct virtqueue *reporting_vq; + struct page_reporting_dev_info pr_dev_info; +}; -struct scsi_disk { - struct scsi_device *device; - struct device disk_dev; - struct gendisk *disk; - struct opal_dev *opal_dev; - u32 nr_zones; - u32 rev_nr_zones; - u32 zone_blocks; - u32 rev_zone_blocks; - u32 zones_optimal_open; - u32 zones_optimal_nonseq; - u32 zones_max_open; - u32 *zones_wp_offset; - spinlock_t zones_wp_offset_lock; - u32 *rev_wp_offset; - struct mutex rev_mutex; - struct work_struct zone_wp_offset_work; - char *zone_wp_update_buf; - atomic_t openers; - sector_t capacity; - int max_retries; - u32 max_xfer_blocks; - u32 opt_xfer_blocks; - u32 max_ws_blocks; - u32 max_unmap_blocks; - u32 unmap_granularity; - u32 unmap_alignment; - u32 index; - unsigned int physical_block_size; - unsigned int max_medium_access_timeouts; - unsigned int medium_access_timed_out; - u8 media_present; - u8 write_prot; - u8 protection_type; - u8 provisioning_mode; - u8 zeroing_mode; - u8 nr_actuators; - unsigned int ATO: 1; - unsigned int cache_override: 1; - unsigned int WCE: 1; - unsigned int RCD: 1; - unsigned int DPOFUA: 1; - unsigned int first_scan: 1; - unsigned int lbpme: 1; - unsigned int lbprz: 1; - unsigned int lbpu: 1; - unsigned int lbpws: 1; - unsigned int lbpws10: 1; - unsigned int lbpvpd: 1; - unsigned int ws10: 1; - unsigned int ws16: 1; - unsigned int rc_basis: 2; - unsigned int zoned: 2; - unsigned int urswrz: 1; - unsigned int security: 1; - unsigned int ignore_medium_access_errors: 1; +struct serial_icounter_struct { + int cts; + int dsr; + int rng; + int dcd; + int rx; + int tx; + int frame; + int overrun; + int parity; + int brk; + int buf_overrun; + int reserved[9]; }; -struct scsi_varlen_cdb_hdr { - __u8 opcode; - __u8 control; - __u8 misc[5]; - __u8 additional_cdb_length; - __be16 service_action; +struct serial_struct { + int type; + int line; + unsigned int port; + int irq; + int flags; + int xmit_fifo_size; + int custom_divisor; + int baud_base; + short unsigned int close_delay; + char io_type; + char reserved_char[1]; + int hub6; + short unsigned int closing_wait; + short unsigned int closing_wait2; + unsigned char *iomem_base; + short unsigned int iomem_reg_shift; + unsigned int port_high; + long unsigned int iomap_base; }; -enum scsi_host_guard_type { - SHOST_DIX_GUARD_CRC = 1, - SHOST_DIX_GUARD_IP = 2, +struct serial_struct32 { + compat_int_t type; + compat_int_t line; + compat_uint_t port; + compat_int_t irq; + compat_int_t flags; + compat_int_t xmit_fifo_size; + compat_int_t custom_divisor; + compat_int_t baud_base; + short unsigned int close_delay; + char io_type; + char reserved_char; + compat_int_t hub6; + short unsigned int closing_wait; + short unsigned int closing_wait2; + compat_uint_t iomem_base; + short unsigned int iomem_reg_shift; + unsigned int port_high; + compat_int_t reserved; }; -enum { - mechtype_caddy = 0, - mechtype_tray = 1, - mechtype_popup = 2, - mechtype_individual_changer = 4, - mechtype_cartridge_changer = 5, +struct n_tty_data { + size_t read_head; + size_t commit_head; + size_t canon_head; + size_t echo_head; + size_t echo_commit; + size_t echo_mark; + long unsigned int char_map[4]; + long unsigned int overrun_time; + int num_overrun; + bool no_room; + unsigned char lnext: 1; + unsigned char erasing: 1; + unsigned char raw: 1; + unsigned char real_raw: 1; + unsigned char icanon: 1; + unsigned char push: 1; + char read_buf[4096]; + long unsigned int read_flags[64]; + unsigned char echo_buf[4096]; + size_t read_tail; + size_t line_start; + unsigned int column; + unsigned int canon_column; + size_t echo_tail; + struct mutex atomic_read_lock; + struct mutex output_lock; }; -struct event_header { - __be16 data_len; - __u8 nea: 1; - __u8 reserved1: 4; - __u8 notification_class: 3; - __u8 supp_event_class; +enum { + ERASE = 0, + WERASE = 1, + KILL = 2, }; -struct media_event_desc { - __u8 reserved1: 4; - __u8 media_event_code: 4; - __u8 reserved2: 6; - __u8 media_present: 1; - __u8 door_open: 1; - __u8 start_slot; - __u8 end_slot; +struct termios { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[19]; }; -struct scsi_cd { - unsigned int capacity; - struct scsi_device *device; - unsigned int vendor; - long unsigned int ms_offset; - unsigned int writeable: 1; - unsigned int use: 1; - unsigned int xa_flag: 1; - unsigned int readcd_known: 1; - unsigned int readcd_cdda: 1; - unsigned int media_present: 1; - int tur_mismatch; - bool tur_changed: 1; - bool get_event_changed: 1; - bool ignore_get_event: 1; - struct cdrom_device_info cdi; - struct mutex lock; - struct gendisk *disk; +struct termios2 { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_line; + cc_t c_cc[19]; + speed_t c_ispeed; + speed_t c_ospeed; }; -typedef struct scsi_cd Scsi_CD; - -struct cdrom_ti { - __u8 cdti_trk0; - __u8 cdti_ind0; - __u8 cdti_trk1; - __u8 cdti_ind1; +struct termio { + short unsigned int c_iflag; + short unsigned int c_oflag; + short unsigned int c_cflag; + short unsigned int c_lflag; + unsigned char c_line; + unsigned char c_cc[8]; }; -struct cdrom_tochdr { - __u8 cdth_trk0; - __u8 cdth_trk1; +struct ldsem_waiter { + struct list_head list; + struct task_struct *task; }; -struct cdrom_tocentry { - __u8 cdte_track; - __u8 cdte_adr: 4; - __u8 cdte_ctrl: 4; - __u8 cdte_format; - union cdrom_addr cdte_addr; - __u8 cdte_datamode; +struct tty_audit_buf { + struct mutex mutex; + dev_t dev; + unsigned int icanon: 1; + size_t valid; + unsigned char *data; }; -struct ccs_modesel_head { - __u8 _r1; - __u8 medium; - __u8 _r2; - __u8 block_desc_length; - __u8 density; - __u8 number_blocks_hi; - __u8 number_blocks_med; - __u8 number_blocks_lo; - __u8 _r3; - __u8 block_length_hi; - __u8 block_length_med; - __u8 block_length_lo; +struct input_id { + __u16 bustype; + __u16 vendor; + __u16 product; + __u16 version; }; -enum zbc_zone_type { - ZBC_ZONE_TYPE_CONV = 1, - ZBC_ZONE_TYPE_SEQWRITE_REQ = 2, - ZBC_ZONE_TYPE_SEQWRITE_PREF = 3, +struct input_absinfo { + __s32 value; + __s32 minimum; + __s32 maximum; + __s32 fuzz; + __s32 flat; + __s32 resolution; }; -enum zbc_zone_cond { - ZBC_ZONE_COND_NO_WP = 0, - ZBC_ZONE_COND_EMPTY = 1, - ZBC_ZONE_COND_IMP_OPEN = 2, - ZBC_ZONE_COND_EXP_OPEN = 3, - ZBC_ZONE_COND_CLOSED = 4, - ZBC_ZONE_COND_READONLY = 13, - ZBC_ZONE_COND_FULL = 14, - ZBC_ZONE_COND_OFFLINE = 15, +struct input_keymap_entry { + __u8 flags; + __u8 len; + __u16 index; + __u32 keycode; + __u8 scancode[32]; }; -typedef struct sg_io_hdr sg_io_hdr_t; - -struct sg_scsi_id { - int host_no; - int channel; - int scsi_id; - int lun; - int scsi_type; - short int h_cmd_per_lun; - short int d_queue_depth; - int unused[2]; +struct ff_replay { + __u16 length; + __u16 delay; }; -typedef struct sg_scsi_id sg_scsi_id_t; - -struct sg_req_info { - char req_state; - char orphan; - char sg_io_owned; - char problem; - int pack_id; - void *usr_ptr; - unsigned int duration; - int unused; +struct ff_trigger { + __u16 button; + __u16 interval; }; -typedef struct sg_req_info sg_req_info_t; - -struct sg_header { - int pack_len; - int reply_len; - int pack_id; - int result; - unsigned int twelve_byte: 1; - unsigned int target_status: 5; - unsigned int host_status: 8; - unsigned int driver_status: 8; - unsigned int other_flags: 10; - unsigned char sense_buffer[16]; +struct ff_envelope { + __u16 attack_length; + __u16 attack_level; + __u16 fade_length; + __u16 fade_level; }; -struct sg_scatter_hold { - short unsigned int k_use_sg; - unsigned int sglist_len; - unsigned int bufflen; - struct page **pages; - int page_order; - char dio_in_use; - unsigned char cmd_opcode; +struct ff_constant_effect { + __s16 level; + struct ff_envelope envelope; }; -typedef struct sg_scatter_hold Sg_scatter_hold; - -struct sg_fd; - -struct sg_request { - struct list_head entry; - struct sg_fd *parentfp; - Sg_scatter_hold data; - sg_io_hdr_t header; - unsigned char sense_b[96]; - char res_used; - char orphan; - char sg_io_owned; - char done; - struct request *rq; - struct bio *bio; - struct execute_work ew; +struct ff_ramp_effect { + __s16 start_level; + __s16 end_level; + struct ff_envelope envelope; }; -typedef struct sg_request Sg_request; - -struct sg_device; - -struct sg_fd { - struct list_head sfd_siblings; - struct sg_device *parentdp; - wait_queue_head_t read_wait; - rwlock_t rq_list_lock; - struct mutex f_mutex; - int timeout; - int timeout_user; - Sg_scatter_hold reserve; - struct list_head rq_list; - struct fasync_struct *async_qp; - Sg_request req_arr[16]; - char force_packid; - char cmd_q; - unsigned char next_cmd_len; - char keep_orphan; - char mmap_called; - char res_in_use; - struct kref f_ref; - struct execute_work ew; +struct ff_condition_effect { + __u16 right_saturation; + __u16 left_saturation; + __s16 right_coeff; + __s16 left_coeff; + __u16 deadband; + __s16 center; }; -struct sg_device { - struct scsi_device *device; - wait_queue_head_t open_wait; - struct mutex open_rel_lock; - int sg_tablesize; - u32 index; - struct list_head sfds; - rwlock_t sfd_lock; - atomic_t detaching; - bool exclude; - int open_cnt; - char sgdebug; - char name[32]; - struct cdev *cdev; - struct kref d_ref; +struct ff_periodic_effect { + __u16 waveform; + __u16 period; + __s16 magnitude; + __s16 offset; + __u16 phase; + struct ff_envelope envelope; + __u32 custom_len; + __s16 *custom_data; }; -typedef struct sg_fd Sg_fd; - -typedef struct sg_device Sg_device; - -struct compat_sg_req_info { - char req_state; - char orphan; - char sg_io_owned; - char problem; - int pack_id; - compat_uptr_t usr_ptr; - unsigned int duration; - int unused; +struct ff_rumble_effect { + __u16 strong_magnitude; + __u16 weak_magnitude; }; -struct sg_proc_deviter { - loff_t index; - size_t max; +struct ff_effect { + __u16 type; + __s16 id; + __u16 direction; + struct ff_trigger trigger; + struct ff_replay replay; + union { + struct ff_constant_effect constant; + struct ff_ramp_effect ramp; + struct ff_periodic_effect periodic; + struct ff_condition_effect condition[2]; + struct ff_rumble_effect rumble; + } u; }; -enum { - ATA_MAX_DEVICES = 2, - ATA_MAX_PRD = 256, - ATA_SECT_SIZE = 512, - ATA_MAX_SECTORS_128 = 128, - ATA_MAX_SECTORS = 256, - ATA_MAX_SECTORS_1024 = 1024, - ATA_MAX_SECTORS_LBA48 = 65535, - ATA_MAX_SECTORS_TAPE = 65535, - ATA_MAX_TRIM_RNUM = 64, - ATA_ID_WORDS = 256, - ATA_ID_CONFIG = 0, - ATA_ID_CYLS = 1, - ATA_ID_HEADS = 3, - ATA_ID_SECTORS = 6, - ATA_ID_SERNO = 10, - ATA_ID_BUF_SIZE = 21, - ATA_ID_FW_REV = 23, - ATA_ID_PROD = 27, - ATA_ID_MAX_MULTSECT = 47, - ATA_ID_DWORD_IO = 48, - ATA_ID_TRUSTED = 48, - ATA_ID_CAPABILITY = 49, - ATA_ID_OLD_PIO_MODES = 51, - ATA_ID_OLD_DMA_MODES = 52, - ATA_ID_FIELD_VALID = 53, - ATA_ID_CUR_CYLS = 54, - ATA_ID_CUR_HEADS = 55, - ATA_ID_CUR_SECTORS = 56, - ATA_ID_MULTSECT = 59, - ATA_ID_LBA_CAPACITY = 60, - ATA_ID_SWDMA_MODES = 62, - ATA_ID_MWDMA_MODES = 63, - ATA_ID_PIO_MODES = 64, - ATA_ID_EIDE_DMA_MIN = 65, - ATA_ID_EIDE_DMA_TIME = 66, - ATA_ID_EIDE_PIO = 67, - ATA_ID_EIDE_PIO_IORDY = 68, - ATA_ID_ADDITIONAL_SUPP = 69, - ATA_ID_QUEUE_DEPTH = 75, - ATA_ID_SATA_CAPABILITY = 76, - ATA_ID_SATA_CAPABILITY_2 = 77, - ATA_ID_FEATURE_SUPP = 78, - ATA_ID_MAJOR_VER = 80, - ATA_ID_COMMAND_SET_1 = 82, - ATA_ID_COMMAND_SET_2 = 83, - ATA_ID_CFSSE = 84, - ATA_ID_CFS_ENABLE_1 = 85, - ATA_ID_CFS_ENABLE_2 = 86, - ATA_ID_CSF_DEFAULT = 87, - ATA_ID_UDMA_MODES = 88, - ATA_ID_HW_CONFIG = 93, - ATA_ID_SPG = 98, - ATA_ID_LBA_CAPACITY_2 = 100, - ATA_ID_SECTOR_SIZE = 106, - ATA_ID_WWN = 108, - ATA_ID_LOGICAL_SECTOR_SIZE = 117, - ATA_ID_COMMAND_SET_3 = 119, - ATA_ID_COMMAND_SET_4 = 120, - ATA_ID_LAST_LUN = 126, - ATA_ID_DLF = 128, - ATA_ID_CSFO = 129, - ATA_ID_CFA_POWER = 160, - ATA_ID_CFA_KEY_MGMT = 162, - ATA_ID_CFA_MODES = 163, - ATA_ID_DATA_SET_MGMT = 169, - ATA_ID_SCT_CMD_XPORT = 206, - ATA_ID_ROT_SPEED = 217, - ATA_ID_PIO4 = 2, - ATA_ID_SERNO_LEN = 20, - ATA_ID_FW_REV_LEN = 8, - ATA_ID_PROD_LEN = 40, - ATA_ID_WWN_LEN = 8, - ATA_PCI_CTL_OFS = 2, - ATA_PIO0 = 1, - ATA_PIO1 = 3, - ATA_PIO2 = 7, - ATA_PIO3 = 15, - ATA_PIO4 = 31, - ATA_PIO5 = 63, - ATA_PIO6 = 127, - ATA_PIO4_ONLY = 16, - ATA_SWDMA0 = 1, - ATA_SWDMA1 = 3, - ATA_SWDMA2 = 7, - ATA_SWDMA2_ONLY = 4, - ATA_MWDMA0 = 1, - ATA_MWDMA1 = 3, - ATA_MWDMA2 = 7, - ATA_MWDMA3 = 15, - ATA_MWDMA4 = 31, - ATA_MWDMA12_ONLY = 6, - ATA_MWDMA2_ONLY = 4, - ATA_UDMA0 = 1, - ATA_UDMA1 = 3, - ATA_UDMA2 = 7, - ATA_UDMA3 = 15, - ATA_UDMA4 = 31, - ATA_UDMA5 = 63, - ATA_UDMA6 = 127, - ATA_UDMA7 = 255, - ATA_UDMA24_ONLY = 20, - ATA_UDMA_MASK_40C = 7, - ATA_PRD_SZ = 8, - ATA_PRD_TBL_SZ = 2048, - ATA_PRD_EOT = 2147483648, - ATA_DMA_TABLE_OFS = 4, - ATA_DMA_STATUS = 2, - ATA_DMA_CMD = 0, - ATA_DMA_WR = 8, - ATA_DMA_START = 1, - ATA_DMA_INTR = 4, - ATA_DMA_ERR = 2, - ATA_DMA_ACTIVE = 1, - ATA_HOB = 128, - ATA_NIEN = 2, - ATA_LBA = 64, - ATA_DEV1 = 16, - ATA_DEVICE_OBS = 160, - ATA_DEVCTL_OBS = 8, - ATA_BUSY = 128, - ATA_DRDY = 64, - ATA_DF = 32, - ATA_DSC = 16, - ATA_DRQ = 8, - ATA_CORR = 4, - ATA_SENSE = 2, - ATA_ERR = 1, - ATA_SRST = 4, - ATA_ICRC = 128, - ATA_BBK = 128, - ATA_UNC = 64, - ATA_MC = 32, - ATA_IDNF = 16, - ATA_MCR = 8, - ATA_ABORTED = 4, - ATA_TRK0NF = 2, - ATA_AMNF = 1, - ATAPI_LFS = 240, - ATAPI_EOM = 2, - ATAPI_ILI = 1, - ATAPI_IO = 2, - ATAPI_COD = 1, - ATA_REG_DATA = 0, - ATA_REG_ERR = 1, - ATA_REG_NSECT = 2, - ATA_REG_LBAL = 3, - ATA_REG_LBAM = 4, - ATA_REG_LBAH = 5, - ATA_REG_DEVICE = 6, - ATA_REG_STATUS = 7, - ATA_REG_FEATURE = 1, - ATA_REG_CMD = 7, - ATA_REG_BYTEL = 4, - ATA_REG_BYTEH = 5, - ATA_REG_DEVSEL = 6, - ATA_REG_IRQ = 2, - ATA_CMD_DEV_RESET = 8, - ATA_CMD_CHK_POWER = 229, - ATA_CMD_STANDBY = 226, - ATA_CMD_IDLE = 227, - ATA_CMD_EDD = 144, - ATA_CMD_DOWNLOAD_MICRO = 146, - ATA_CMD_DOWNLOAD_MICRO_DMA = 147, - ATA_CMD_NOP = 0, - ATA_CMD_FLUSH = 231, - ATA_CMD_FLUSH_EXT = 234, - ATA_CMD_ID_ATA = 236, - ATA_CMD_ID_ATAPI = 161, - ATA_CMD_SERVICE = 162, - ATA_CMD_READ = 200, - ATA_CMD_READ_EXT = 37, - ATA_CMD_READ_QUEUED = 38, - ATA_CMD_READ_STREAM_EXT = 43, - ATA_CMD_READ_STREAM_DMA_EXT = 42, - ATA_CMD_WRITE = 202, - ATA_CMD_WRITE_EXT = 53, - ATA_CMD_WRITE_QUEUED = 54, - ATA_CMD_WRITE_STREAM_EXT = 59, - ATA_CMD_WRITE_STREAM_DMA_EXT = 58, - ATA_CMD_WRITE_FUA_EXT = 61, - ATA_CMD_WRITE_QUEUED_FUA_EXT = 62, - ATA_CMD_FPDMA_READ = 96, - ATA_CMD_FPDMA_WRITE = 97, - ATA_CMD_NCQ_NON_DATA = 99, - ATA_CMD_FPDMA_SEND = 100, - ATA_CMD_FPDMA_RECV = 101, - ATA_CMD_PIO_READ = 32, - ATA_CMD_PIO_READ_EXT = 36, - ATA_CMD_PIO_WRITE = 48, - ATA_CMD_PIO_WRITE_EXT = 52, - ATA_CMD_READ_MULTI = 196, - ATA_CMD_READ_MULTI_EXT = 41, - ATA_CMD_WRITE_MULTI = 197, - ATA_CMD_WRITE_MULTI_EXT = 57, - ATA_CMD_WRITE_MULTI_FUA_EXT = 206, - ATA_CMD_SET_FEATURES = 239, - ATA_CMD_SET_MULTI = 198, - ATA_CMD_PACKET = 160, - ATA_CMD_VERIFY = 64, - ATA_CMD_VERIFY_EXT = 66, - ATA_CMD_WRITE_UNCORR_EXT = 69, - ATA_CMD_STANDBYNOW1 = 224, - ATA_CMD_IDLEIMMEDIATE = 225, - ATA_CMD_SLEEP = 230, - ATA_CMD_INIT_DEV_PARAMS = 145, - ATA_CMD_READ_NATIVE_MAX = 248, - ATA_CMD_READ_NATIVE_MAX_EXT = 39, - ATA_CMD_SET_MAX = 249, - ATA_CMD_SET_MAX_EXT = 55, - ATA_CMD_READ_LOG_EXT = 47, - ATA_CMD_WRITE_LOG_EXT = 63, - ATA_CMD_READ_LOG_DMA_EXT = 71, - ATA_CMD_WRITE_LOG_DMA_EXT = 87, - ATA_CMD_TRUSTED_NONDATA = 91, - ATA_CMD_TRUSTED_RCV = 92, - ATA_CMD_TRUSTED_RCV_DMA = 93, - ATA_CMD_TRUSTED_SND = 94, - ATA_CMD_TRUSTED_SND_DMA = 95, - ATA_CMD_PMP_READ = 228, - ATA_CMD_PMP_READ_DMA = 233, - ATA_CMD_PMP_WRITE = 232, - ATA_CMD_PMP_WRITE_DMA = 235, - ATA_CMD_CONF_OVERLAY = 177, - ATA_CMD_SEC_SET_PASS = 241, - ATA_CMD_SEC_UNLOCK = 242, - ATA_CMD_SEC_ERASE_PREP = 243, - ATA_CMD_SEC_ERASE_UNIT = 244, - ATA_CMD_SEC_FREEZE_LOCK = 245, - ATA_CMD_SEC_DISABLE_PASS = 246, - ATA_CMD_CONFIG_STREAM = 81, - ATA_CMD_SMART = 176, - ATA_CMD_MEDIA_LOCK = 222, - ATA_CMD_MEDIA_UNLOCK = 223, - ATA_CMD_DSM = 6, - ATA_CMD_CHK_MED_CRD_TYP = 209, - ATA_CMD_CFA_REQ_EXT_ERR = 3, - ATA_CMD_CFA_WRITE_NE = 56, - ATA_CMD_CFA_TRANS_SECT = 135, - ATA_CMD_CFA_ERASE = 192, - ATA_CMD_CFA_WRITE_MULT_NE = 205, - ATA_CMD_REQ_SENSE_DATA = 11, - ATA_CMD_SANITIZE_DEVICE = 180, - ATA_CMD_ZAC_MGMT_IN = 74, - ATA_CMD_ZAC_MGMT_OUT = 159, - ATA_CMD_RESTORE = 16, - ATA_SUBCMD_FPDMA_RECV_RD_LOG_DMA_EXT = 1, - ATA_SUBCMD_FPDMA_RECV_ZAC_MGMT_IN = 2, - ATA_SUBCMD_FPDMA_SEND_DSM = 0, - ATA_SUBCMD_FPDMA_SEND_WR_LOG_DMA_EXT = 2, - ATA_SUBCMD_NCQ_NON_DATA_ABORT_QUEUE = 0, - ATA_SUBCMD_NCQ_NON_DATA_SET_FEATURES = 5, - ATA_SUBCMD_NCQ_NON_DATA_ZERO_EXT = 6, - ATA_SUBCMD_NCQ_NON_DATA_ZAC_MGMT_OUT = 7, - ATA_SUBCMD_ZAC_MGMT_IN_REPORT_ZONES = 0, - ATA_SUBCMD_ZAC_MGMT_OUT_CLOSE_ZONE = 1, - ATA_SUBCMD_ZAC_MGMT_OUT_FINISH_ZONE = 2, - ATA_SUBCMD_ZAC_MGMT_OUT_OPEN_ZONE = 3, - ATA_SUBCMD_ZAC_MGMT_OUT_RESET_WRITE_POINTER = 4, - ATA_LOG_DIRECTORY = 0, - ATA_LOG_SATA_NCQ = 16, - ATA_LOG_NCQ_NON_DATA = 18, - ATA_LOG_NCQ_SEND_RECV = 19, - ATA_LOG_IDENTIFY_DEVICE = 48, - ATA_LOG_CONCURRENT_POSITIONING_RANGES = 71, - ATA_LOG_SECURITY = 6, - ATA_LOG_SATA_SETTINGS = 8, - ATA_LOG_ZONED_INFORMATION = 9, - ATA_LOG_DEVSLP_OFFSET = 48, - ATA_LOG_DEVSLP_SIZE = 8, - ATA_LOG_DEVSLP_MDAT = 0, - ATA_LOG_DEVSLP_MDAT_MASK = 31, - ATA_LOG_DEVSLP_DETO = 1, - ATA_LOG_DEVSLP_VALID = 7, - ATA_LOG_DEVSLP_VALID_MASK = 128, - ATA_LOG_NCQ_PRIO_OFFSET = 9, - ATA_LOG_NCQ_SEND_RECV_SUBCMDS_OFFSET = 0, - ATA_LOG_NCQ_SEND_RECV_SUBCMDS_DSM = 1, - ATA_LOG_NCQ_SEND_RECV_DSM_OFFSET = 4, - ATA_LOG_NCQ_SEND_RECV_DSM_TRIM = 1, - ATA_LOG_NCQ_SEND_RECV_RD_LOG_OFFSET = 8, - ATA_LOG_NCQ_SEND_RECV_RD_LOG_SUPPORTED = 1, - ATA_LOG_NCQ_SEND_RECV_WR_LOG_OFFSET = 12, - ATA_LOG_NCQ_SEND_RECV_WR_LOG_SUPPORTED = 1, - ATA_LOG_NCQ_SEND_RECV_ZAC_MGMT_OFFSET = 16, - ATA_LOG_NCQ_SEND_RECV_ZAC_MGMT_OUT_SUPPORTED = 1, - ATA_LOG_NCQ_SEND_RECV_ZAC_MGMT_IN_SUPPORTED = 2, - ATA_LOG_NCQ_SEND_RECV_SIZE = 20, - ATA_LOG_NCQ_NON_DATA_SUBCMDS_OFFSET = 0, - ATA_LOG_NCQ_NON_DATA_ABORT_OFFSET = 0, - ATA_LOG_NCQ_NON_DATA_ABORT_NCQ = 1, - ATA_LOG_NCQ_NON_DATA_ABORT_ALL = 2, - ATA_LOG_NCQ_NON_DATA_ABORT_STREAMING = 4, - ATA_LOG_NCQ_NON_DATA_ABORT_NON_STREAMING = 8, - ATA_LOG_NCQ_NON_DATA_ABORT_SELECTED = 16, - ATA_LOG_NCQ_NON_DATA_ZAC_MGMT_OFFSET = 28, - ATA_LOG_NCQ_NON_DATA_ZAC_MGMT_OUT = 1, - ATA_LOG_NCQ_NON_DATA_SIZE = 64, - ATA_CMD_READ_LONG = 34, - ATA_CMD_READ_LONG_ONCE = 35, - ATA_CMD_WRITE_LONG = 50, - ATA_CMD_WRITE_LONG_ONCE = 51, - SETFEATURES_XFER = 3, - XFER_UDMA_7 = 71, - XFER_UDMA_6 = 70, - XFER_UDMA_5 = 69, - XFER_UDMA_4 = 68, - XFER_UDMA_3 = 67, - XFER_UDMA_2 = 66, - XFER_UDMA_1 = 65, - XFER_UDMA_0 = 64, - XFER_MW_DMA_4 = 36, - XFER_MW_DMA_3 = 35, - XFER_MW_DMA_2 = 34, - XFER_MW_DMA_1 = 33, - XFER_MW_DMA_0 = 32, - XFER_SW_DMA_2 = 18, - XFER_SW_DMA_1 = 17, - XFER_SW_DMA_0 = 16, - XFER_PIO_6 = 14, - XFER_PIO_5 = 13, - XFER_PIO_4 = 12, - XFER_PIO_3 = 11, - XFER_PIO_2 = 10, - XFER_PIO_1 = 9, - XFER_PIO_0 = 8, - XFER_PIO_SLOW = 0, - SETFEATURES_WC_ON = 2, - SETFEATURES_WC_OFF = 130, - SETFEATURES_RA_ON = 170, - SETFEATURES_RA_OFF = 85, - SETFEATURES_AAM_ON = 66, - SETFEATURES_AAM_OFF = 194, - SETFEATURES_SPINUP = 7, - SETFEATURES_SPINUP_TIMEOUT = 30000, - SETFEATURES_SATA_ENABLE = 16, - SETFEATURES_SATA_DISABLE = 144, - SATA_FPDMA_OFFSET = 1, - SATA_FPDMA_AA = 2, - SATA_DIPM = 3, - SATA_FPDMA_IN_ORDER = 4, - SATA_AN = 5, - SATA_SSP = 6, - SATA_DEVSLP = 9, - SETFEATURE_SENSE_DATA = 195, - ATA_SET_MAX_ADDR = 0, - ATA_SET_MAX_PASSWD = 1, - ATA_SET_MAX_LOCK = 2, - ATA_SET_MAX_UNLOCK = 3, - ATA_SET_MAX_FREEZE_LOCK = 4, - ATA_SET_MAX_PASSWD_DMA = 5, - ATA_SET_MAX_UNLOCK_DMA = 6, - ATA_DCO_RESTORE = 192, - ATA_DCO_FREEZE_LOCK = 193, - ATA_DCO_IDENTIFY = 194, - ATA_DCO_SET = 195, - ATA_SMART_ENABLE = 216, - ATA_SMART_READ_VALUES = 208, - ATA_SMART_READ_THRESHOLDS = 209, - ATA_DSM_TRIM = 1, - ATA_SMART_LBAM_PASS = 79, - ATA_SMART_LBAH_PASS = 194, - ATAPI_PKT_DMA = 1, - ATAPI_DMADIR = 4, - ATAPI_CDB_LEN = 16, - SATA_PMP_MAX_PORTS = 15, - SATA_PMP_CTRL_PORT = 15, - SATA_PMP_GSCR_DWORDS = 128, - SATA_PMP_GSCR_PROD_ID = 0, - SATA_PMP_GSCR_REV = 1, - SATA_PMP_GSCR_PORT_INFO = 2, - SATA_PMP_GSCR_ERROR = 32, - SATA_PMP_GSCR_ERROR_EN = 33, - SATA_PMP_GSCR_FEAT = 64, - SATA_PMP_GSCR_FEAT_EN = 96, - SATA_PMP_PSCR_STATUS = 0, - SATA_PMP_PSCR_ERROR = 1, - SATA_PMP_PSCR_CONTROL = 2, - SATA_PMP_FEAT_BIST = 1, - SATA_PMP_FEAT_PMREQ = 2, - SATA_PMP_FEAT_DYNSSC = 4, - SATA_PMP_FEAT_NOTIFY = 8, - ATA_CBL_NONE = 0, - ATA_CBL_PATA40 = 1, - ATA_CBL_PATA80 = 2, - ATA_CBL_PATA40_SHORT = 3, - ATA_CBL_PATA_UNK = 4, - ATA_CBL_PATA_IGN = 5, - ATA_CBL_SATA = 6, - SCR_STATUS = 0, - SCR_ERROR = 1, - SCR_CONTROL = 2, - SCR_ACTIVE = 3, - SCR_NOTIFICATION = 4, - SERR_DATA_RECOVERED = 1, - SERR_COMM_RECOVERED = 2, - SERR_DATA = 256, - SERR_PERSISTENT = 512, - SERR_PROTOCOL = 1024, - SERR_INTERNAL = 2048, - SERR_PHYRDY_CHG = 65536, - SERR_PHY_INT_ERR = 131072, - SERR_COMM_WAKE = 262144, - SERR_10B_8B_ERR = 524288, - SERR_DISPARITY = 1048576, - SERR_CRC = 2097152, - SERR_HANDSHAKE = 4194304, - SERR_LINK_SEQ_ERR = 8388608, - SERR_TRANS_ST_ERROR = 16777216, - SERR_UNRECOG_FIS = 33554432, - SERR_DEV_XCHG = 67108864, -}; - -enum ata_prot_flags { - ATA_PROT_FLAG_PIO = 1, - ATA_PROT_FLAG_DMA = 2, - ATA_PROT_FLAG_NCQ = 4, - ATA_PROT_FLAG_ATAPI = 8, - ATA_PROT_UNKNOWN = 255, - ATA_PROT_NODATA = 0, - ATA_PROT_PIO = 1, - ATA_PROT_DMA = 2, - ATA_PROT_NCQ_NODATA = 4, - ATA_PROT_NCQ = 6, - ATAPI_PROT_NODATA = 8, - ATAPI_PROT_PIO = 9, - ATAPI_PROT_DMA = 10, -}; - -struct ata_bmdma_prd { - __le32 addr; - __le32 flags_len; -}; - -enum { - LIBATA_MAX_PRD = 128, - LIBATA_DUMB_MAX_PRD = 64, - ATA_DEF_QUEUE = 1, - ATA_MAX_QUEUE = 32, - ATA_TAG_INTERNAL = 32, - ATA_SHORT_PAUSE = 16, - ATAPI_MAX_DRAIN = 16384, - ATA_ALL_DEVICES = 3, - ATA_SHT_EMULATED = 1, - ATA_SHT_THIS_ID = 4294967295, - ATA_TFLAG_LBA48 = 1, - ATA_TFLAG_ISADDR = 2, - ATA_TFLAG_DEVICE = 4, - ATA_TFLAG_WRITE = 8, - ATA_TFLAG_LBA = 16, - ATA_TFLAG_FUA = 32, - ATA_TFLAG_POLLING = 64, - ATA_DFLAG_LBA = 1, - ATA_DFLAG_LBA48 = 2, - ATA_DFLAG_CDB_INTR = 4, - ATA_DFLAG_NCQ = 8, - ATA_DFLAG_FLUSH_EXT = 16, - ATA_DFLAG_ACPI_PENDING = 32, - ATA_DFLAG_ACPI_FAILED = 64, - ATA_DFLAG_AN = 128, - ATA_DFLAG_TRUSTED = 256, - ATA_DFLAG_DMADIR = 1024, - ATA_DFLAG_CFG_MASK = 4095, - ATA_DFLAG_PIO = 4096, - ATA_DFLAG_NCQ_OFF = 8192, - ATA_DFLAG_SLEEPING = 32768, - ATA_DFLAG_DUBIOUS_XFER = 65536, - ATA_DFLAG_NO_UNLOAD = 131072, - ATA_DFLAG_UNLOCK_HPA = 262144, - ATA_DFLAG_NCQ_SEND_RECV = 524288, - ATA_DFLAG_NCQ_PRIO = 1048576, - ATA_DFLAG_NCQ_PRIO_ENABLE = 2097152, - ATA_DFLAG_INIT_MASK = 16777215, - ATA_DFLAG_DETACH = 16777216, - ATA_DFLAG_DETACHED = 33554432, - ATA_DFLAG_DA = 67108864, - ATA_DFLAG_DEVSLP = 134217728, - 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, - ATA_DEV_ATAPI = 3, - ATA_DEV_ATAPI_UNSUP = 4, - ATA_DEV_PMP = 5, - ATA_DEV_PMP_UNSUP = 6, - ATA_DEV_SEMB = 7, - ATA_DEV_SEMB_UNSUP = 8, - ATA_DEV_ZAC = 9, - ATA_DEV_ZAC_UNSUP = 10, - ATA_DEV_NONE = 11, - ATA_LFLAG_NO_HRST = 2, - ATA_LFLAG_NO_SRST = 4, - ATA_LFLAG_ASSUME_ATA = 8, - ATA_LFLAG_ASSUME_SEMB = 16, - ATA_LFLAG_ASSUME_CLASS = 24, - ATA_LFLAG_NO_RETRY = 32, - ATA_LFLAG_DISABLED = 64, - ATA_LFLAG_SW_ACTIVITY = 128, - ATA_LFLAG_NO_LPM = 256, - ATA_LFLAG_RST_ONCE = 512, - ATA_LFLAG_CHANGED = 1024, - ATA_LFLAG_NO_DEBOUNCE_DELAY = 2048, - ATA_FLAG_SLAVE_POSS = 1, - ATA_FLAG_SATA = 2, - ATA_FLAG_NO_LPM = 4, - ATA_FLAG_NO_LOG_PAGE = 32, - ATA_FLAG_NO_ATAPI = 64, - ATA_FLAG_PIO_DMA = 128, - ATA_FLAG_PIO_LBA48 = 256, - ATA_FLAG_PIO_POLLING = 512, - ATA_FLAG_NCQ = 1024, - ATA_FLAG_NO_POWEROFF_SPINDOWN = 2048, - ATA_FLAG_NO_HIBERNATE_SPINDOWN = 4096, - ATA_FLAG_DEBUGMSG = 8192, - ATA_FLAG_FPDMA_AA = 16384, - ATA_FLAG_IGN_SIMPLEX = 32768, - ATA_FLAG_NO_IORDY = 65536, - ATA_FLAG_ACPI_SATA = 131072, - ATA_FLAG_AN = 262144, - ATA_FLAG_PMP = 524288, - ATA_FLAG_FPDMA_AUX = 1048576, - ATA_FLAG_EM = 2097152, - ATA_FLAG_SW_ACTIVITY = 4194304, - ATA_FLAG_NO_DIPM = 8388608, - ATA_FLAG_SAS_HOST = 16777216, - ATA_PFLAG_EH_PENDING = 1, - ATA_PFLAG_EH_IN_PROGRESS = 2, - ATA_PFLAG_FROZEN = 4, - ATA_PFLAG_RECOVERED = 8, - ATA_PFLAG_LOADING = 16, - ATA_PFLAG_SCSI_HOTPLUG = 64, - ATA_PFLAG_INITIALIZING = 128, - ATA_PFLAG_RESETTING = 256, - ATA_PFLAG_UNLOADING = 512, - ATA_PFLAG_UNLOADED = 1024, - ATA_PFLAG_SUSPENDED = 131072, - ATA_PFLAG_PM_PENDING = 262144, - ATA_PFLAG_INIT_GTM_VALID = 524288, - ATA_PFLAG_PIO32 = 1048576, - ATA_PFLAG_PIO32CHANGE = 2097152, - ATA_PFLAG_EXTERNAL = 4194304, - ATA_QCFLAG_ACTIVE = 1, - ATA_QCFLAG_DMAMAP = 2, - ATA_QCFLAG_IO = 8, - ATA_QCFLAG_RESULT_TF = 16, - ATA_QCFLAG_CLEAR_EXCL = 32, - ATA_QCFLAG_QUIET = 64, - ATA_QCFLAG_RETRY = 128, - ATA_QCFLAG_FAILED = 65536, - ATA_QCFLAG_SENSE_VALID = 131072, - ATA_QCFLAG_EH_SCHEDULED = 262144, - ATA_HOST_SIMPLEX = 1, - ATA_HOST_STARTED = 2, - ATA_HOST_PARALLEL_SCAN = 4, - ATA_HOST_IGNORE_ATA = 8, - ATA_TMOUT_BOOT = 30000, - ATA_TMOUT_BOOT_QUICK = 7000, - ATA_TMOUT_INTERNAL_QUICK = 5000, - ATA_TMOUT_MAX_PARK = 30000, - ATA_TMOUT_FF_WAIT_LONG = 2000, - ATA_TMOUT_FF_WAIT = 800, - ATA_WAIT_AFTER_RESET = 150, - ATA_TMOUT_PMP_SRST_WAIT = 5000, - ATA_TMOUT_SPURIOUS_PHY = 10000, - BUS_UNKNOWN = 0, - BUS_DMA = 1, - BUS_IDLE = 2, - BUS_NOINTR = 3, - BUS_NODATA = 4, - BUS_TIMER = 5, - BUS_PIO = 6, - BUS_EDD = 7, - BUS_IDENTIFY = 8, - BUS_PACKET = 9, - PORT_UNKNOWN = 0, - PORT_ENABLED = 1, - PORT_DISABLED = 2, - ATA_NR_PIO_MODES = 7, - ATA_NR_MWDMA_MODES = 5, - ATA_NR_UDMA_MODES = 8, - ATA_SHIFT_PIO = 0, - ATA_SHIFT_MWDMA = 7, - ATA_SHIFT_UDMA = 12, - ATA_SHIFT_PRIO = 6, - ATA_PRIO_HIGH = 2, - ATA_DMA_PAD_SZ = 4, - ATA_ERING_SIZE = 32, - ATA_DEFER_LINK = 1, - ATA_DEFER_PORT = 2, - ATA_EH_DESC_LEN = 80, - ATA_EH_REVALIDATE = 1, - ATA_EH_SOFTRESET = 2, - ATA_EH_HARDRESET = 4, - ATA_EH_RESET = 6, - ATA_EH_ENABLE_LINK = 8, - ATA_EH_PARK = 32, - ATA_EH_PERDEV_MASK = 33, - ATA_EH_ALL_ACTIONS = 15, - ATA_EHI_HOTPLUGGED = 1, - ATA_EHI_NO_AUTOPSY = 4, - ATA_EHI_QUIET = 8, - ATA_EHI_NO_RECOVERY = 16, - ATA_EHI_DID_SOFTRESET = 65536, - ATA_EHI_DID_HARDRESET = 131072, - ATA_EHI_PRINTINFO = 262144, - ATA_EHI_SETMODE = 524288, - ATA_EHI_POST_SETMODE = 1048576, - ATA_EHI_DID_RESET = 196608, - ATA_EHI_TO_SLAVE_MASK = 12, - ATA_EH_MAX_TRIES = 5, - ATA_LINK_RESUME_TRIES = 5, - ATA_PROBE_MAX_TRIES = 3, - ATA_EH_DEV_TRIES = 3, - ATA_EH_PMP_TRIES = 5, - ATA_EH_PMP_LINK_TRIES = 3, - SATA_PMP_RW_TIMEOUT = 3000, - ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 7, - ATA_HORKAGE_DIAGNOSTIC = 1, - ATA_HORKAGE_NODMA = 2, - ATA_HORKAGE_NONCQ = 4, - ATA_HORKAGE_MAX_SEC_128 = 8, - ATA_HORKAGE_BROKEN_HPA = 16, - ATA_HORKAGE_DISABLE = 32, - ATA_HORKAGE_HPA_SIZE = 64, - ATA_HORKAGE_IVB = 256, - ATA_HORKAGE_STUCK_ERR = 512, - ATA_HORKAGE_BRIDGE_OK = 1024, - ATA_HORKAGE_ATAPI_MOD16_DMA = 2048, - ATA_HORKAGE_FIRMWARE_WARN = 4096, - ATA_HORKAGE_1_5_GBPS = 8192, - ATA_HORKAGE_NOSETXFER = 16384, - ATA_HORKAGE_BROKEN_FPDMA_AA = 32768, - ATA_HORKAGE_DUMP_ID = 65536, - ATA_HORKAGE_MAX_SEC_LBA48 = 131072, - ATA_HORKAGE_ATAPI_DMADIR = 262144, - ATA_HORKAGE_NO_NCQ_TRIM = 524288, - ATA_HORKAGE_NOLPM = 1048576, - ATA_HORKAGE_WD_BROKEN_LPM = 2097152, - ATA_HORKAGE_ZERO_AFTER_TRIM = 4194304, - ATA_HORKAGE_NO_DMA_LOG = 8388608, - ATA_HORKAGE_NOTRIM = 16777216, - ATA_HORKAGE_MAX_SEC_1024 = 33554432, - ATA_HORKAGE_MAX_TRIM_128M = 67108864, - ATA_HORKAGE_NO_NCQ_ON_ATI = 134217728, - ATA_HORKAGE_NO_ID_DEV_LOG = 268435456, - ATA_HORKAGE_NO_LOG_DIR = 536870912, - ATA_DMA_MASK_ATA = 1, - ATA_DMA_MASK_ATAPI = 2, - ATA_DMA_MASK_CFA = 4, - ATAPI_READ = 0, - ATAPI_WRITE = 1, - ATAPI_READ_CD = 2, - ATAPI_PASS_THRU = 3, - ATAPI_MISC = 4, - ATA_TIMING_SETUP = 1, - ATA_TIMING_ACT8B = 2, - ATA_TIMING_REC8B = 4, - ATA_TIMING_CYC8B = 8, - ATA_TIMING_8BIT = 14, - ATA_TIMING_ACTIVE = 16, - ATA_TIMING_RECOVER = 32, - ATA_TIMING_DMACK_HOLD = 64, - ATA_TIMING_CYCLE = 128, - ATA_TIMING_UDMA = 256, - ATA_TIMING_ALL = 511, - ATA_ACPI_FILTER_SETXFER = 1, - ATA_ACPI_FILTER_LOCK = 2, - ATA_ACPI_FILTER_DIPM = 4, - ATA_ACPI_FILTER_FPDMA_OFFSET = 8, - ATA_ACPI_FILTER_FPDMA_AA = 16, - ATA_ACPI_FILTER_DEFAULT = 7, -}; - -enum ata_completion_errors { - AC_ERR_OK = 0, - AC_ERR_DEV = 1, - AC_ERR_HSM = 2, - AC_ERR_TIMEOUT = 4, - AC_ERR_MEDIA = 8, - AC_ERR_ATA_BUS = 16, - AC_ERR_HOST_BUS = 32, - AC_ERR_SYSTEM = 64, - AC_ERR_INVALID = 128, - AC_ERR_OTHER = 256, - AC_ERR_NODEV_HINT = 512, - AC_ERR_NCQ = 1024, -}; - -enum ata_lpm_policy { - ATA_LPM_UNKNOWN = 0, - ATA_LPM_MAX_POWER = 1, - ATA_LPM_MED_POWER = 2, - ATA_LPM_MED_POWER_WITH_DIPM = 3, - ATA_LPM_MIN_POWER_WITH_PARTIAL = 4, - ATA_LPM_MIN_POWER = 5, -}; - -struct ata_queued_cmd; - -typedef void (*ata_qc_cb_t)(struct ata_queued_cmd *); - -struct ata_taskfile { - long unsigned int flags; - u8 protocol; - u8 ctl; - u8 hob_feature; - u8 hob_nsect; - u8 hob_lbal; - u8 hob_lbam; - u8 hob_lbah; - union { - u8 error; - u8 feature; - }; - u8 nsect; - u8 lbal; - u8 lbam; - u8 lbah; - u8 device; - union { - u8 status; - u8 command; - }; - u32 auxiliary; +struct input_device_id { + kernel_ulong_t flags; + __u16 bustype; + __u16 vendor; + __u16 product; + __u16 version; + kernel_ulong_t evbit[1]; + kernel_ulong_t keybit[12]; + kernel_ulong_t relbit[1]; + kernel_ulong_t absbit[1]; + kernel_ulong_t mscbit[1]; + kernel_ulong_t ledbit[1]; + kernel_ulong_t sndbit[1]; + kernel_ulong_t ffbit[2]; + kernel_ulong_t swbit[1]; + kernel_ulong_t propbit[1]; + kernel_ulong_t driver_info; }; -struct ata_port; - -struct ata_device; +struct input_value { + __u16 type; + __u16 code; + __s32 value; +}; -struct ata_queued_cmd { - struct ata_port *ap; - struct ata_device *dev; - struct scsi_cmnd *scsicmd; - void (*scsidone)(struct scsi_cmnd *); - struct ata_taskfile tf; - u8 cdb[16]; - long unsigned int flags; - unsigned int tag; - unsigned int hw_tag; - unsigned int n_elem; - unsigned int orig_n_elem; - int dma_dir; - unsigned int sect_size; - unsigned int nbytes; - unsigned int extrabytes; - unsigned int curbytes; - struct scatterlist sgent; - struct scatterlist *sg; - struct scatterlist *cursg; - unsigned int cursg_ofs; - unsigned int err_mask; - struct ata_taskfile result_tf; - ata_qc_cb_t complete_fn; - void *private_data; - void *lldd_task; +enum input_clock_type { + INPUT_CLK_REAL = 0, + INPUT_CLK_MONO = 1, + INPUT_CLK_BOOT = 2, + INPUT_CLK_MAX = 3, }; -struct ata_link; +struct ff_device; -typedef int (*ata_prereset_fn_t)(struct ata_link *, long unsigned int); +struct input_dev_poller; -struct ata_eh_info { - struct ata_device *dev; - u32 serror; - unsigned int err_mask; - unsigned int action; - unsigned int dev_action[2]; - unsigned int flags; - unsigned int probe_mask; - char desc[80]; - int desc_len; -}; - -struct ata_eh_context { - struct ata_eh_info i; - int tries[2]; - int cmd_timeout_idx[14]; - unsigned int classes[2]; - unsigned int did_probe_mask; - unsigned int unloaded_mask; - unsigned int saved_ncq_enabled; - u8 saved_xfer_mode[2]; - long unsigned int last_reset; -}; +struct input_mt; -struct ata_ering_entry { - unsigned int eflags; - unsigned int err_mask; - u64 timestamp; -}; +struct input_handle; -struct ata_ering { - int cursor; - struct ata_ering_entry ring[32]; +struct input_dev { + const char *name; + const char *phys; + const char *uniq; + struct input_id id; + long unsigned int propbit[1]; + long unsigned int evbit[1]; + long unsigned int keybit[12]; + long unsigned int relbit[1]; + long unsigned int absbit[1]; + long unsigned int mscbit[1]; + long unsigned int ledbit[1]; + long unsigned int sndbit[1]; + long unsigned int ffbit[2]; + long unsigned int swbit[1]; + unsigned int hint_events_per_packet; + unsigned int keycodemax; + unsigned int keycodesize; + void *keycode; + int (*setkeycode)(struct input_dev *, const struct input_keymap_entry *, unsigned int *); + int (*getkeycode)(struct input_dev *, struct input_keymap_entry *); + struct ff_device *ff; + struct input_dev_poller *poller; + unsigned int repeat_key; + struct timer_list timer; + int rep[2]; + struct input_mt *mt; + struct input_absinfo *absinfo; + long unsigned int key[12]; + long unsigned int led[1]; + long unsigned int snd[1]; + long unsigned int sw[1]; + int (*open)(struct input_dev *); + void (*close)(struct input_dev *); + int (*flush)(struct input_dev *, struct file *); + int (*event)(struct input_dev *, unsigned int, unsigned int, int); + struct input_handle *grab; + spinlock_t event_lock; + struct mutex mutex; + unsigned int users; + bool going_away; + struct device dev; + struct list_head h_list; + struct list_head node; + unsigned int num_vals; + unsigned int max_vals; + struct input_value *vals; + bool devres_managed; + ktime_t timestamp[3]; + bool inhibited; }; -struct ata_cpr_log; - -struct ata_device { - struct ata_link *link; - unsigned int devno; - unsigned int horkage; - long unsigned int flags; - struct scsi_device *sdev; - void *private_data; - struct device tdev; - u64 n_sectors; - u64 n_native_sectors; - unsigned int class; - long unsigned int unpark_deadline; - u8 pio_mode; - u8 dma_mode; - u8 xfer_mode; - unsigned int xfer_shift; - unsigned int multi_count; - unsigned int max_sectors; - unsigned int cdb_len; - long unsigned int pio_mask; - long unsigned int mwdma_mask; - long unsigned int udma_mask; - u16 cylinders; - u16 heads; - u16 sectors; - long: 16; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - union { - u16 id[256]; - u32 gscr[128]; - }; - u8 devslp_timing[8]; - u8 ncq_send_recv_cmds[20]; - u8 ncq_non_data_cmds[64]; - u32 zac_zoned_cap; - u32 zac_zones_optimal_open; - u32 zac_zones_optimal_nonseq; - u32 zac_zones_max_open; - struct ata_cpr_log *cpr_log; - int spdn_cnt; - struct ata_ering ering; - long: 64; - long: 64; - long: 64; - 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 ff_device { + int (*upload)(struct input_dev *, struct ff_effect *, struct ff_effect *); + int (*erase)(struct input_dev *, int); + int (*playback)(struct input_dev *, int, int); + void (*set_gain)(struct input_dev *, u16); + void (*set_autocenter)(struct input_dev *, u16); + void (*destroy)(struct ff_device *); + void *private; + long unsigned int ffbit[2]; + struct mutex mutex; + int max_effects; + struct ff_effect *effects; + struct file *effect_owners[0]; }; -struct ata_link { - struct ata_port *ap; - int pmp; - struct device tdev; - unsigned int active_tag; - u32 sactive; - unsigned int flags; - u32 saved_scontrol; - unsigned int hw_sata_spd_limit; - unsigned int sata_spd_limit; - unsigned int sata_spd; - enum ata_lpm_policy lpm_policy; - struct ata_eh_info eh_info; - struct ata_eh_context eh_context; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 ata_device device[2]; - long unsigned int last_lpm_change; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 input_handler; + +struct input_handle { + void *private; + int open; + const char *name; + struct input_dev *dev; + struct input_handler *handler; + struct list_head d_node; + struct list_head h_node; }; -typedef int (*ata_reset_fn_t)(struct ata_link *, unsigned int *, long unsigned int); +struct input_handler { + void *private; + void (*event)(struct input_handle *, unsigned int, unsigned int, int); + void (*events)(struct input_handle *, const struct input_value *, unsigned int); + bool (*filter)(struct input_handle *, unsigned int, unsigned int, int); + bool (*match)(struct input_handler *, struct input_dev *); + int (*connect)(struct input_handler *, struct input_dev *, const struct input_device_id *); + void (*disconnect)(struct input_handle *); + void (*start)(struct input_handle *); + bool legacy_minors; + int minor; + const char *name; + const struct input_device_id *id_table; + struct list_head h_list; + struct list_head node; +}; -typedef void (*ata_postreset_fn_t)(struct ata_link *, unsigned int *); +struct sysrq_state { + struct input_handle handle; + struct work_struct reinject_work; + long unsigned int key_down[12]; + unsigned int alt; + unsigned int alt_use; + unsigned int shift; + unsigned int shift_use; + bool active; + bool need_reinject; + bool reinjecting; + bool reset_canceled; + bool reset_requested; + long unsigned int reset_keybit[12]; + int reset_seq_len; + int reset_seq_cnt; + int reset_seq_version; + struct timer_list keyreset_timer; +}; -enum sw_activity { - OFF = 0, - BLINK_ON = 1, - BLINK_OFF = 2, +struct unipair { + short unsigned int unicode; + short unsigned int fontpos; }; -struct ata_ioports { - void *cmd_addr; - void *data_addr; - void *error_addr; - void *feature_addr; - void *nsect_addr; - void *lbal_addr; - void *lbam_addr; - void *lbah_addr; - void *device_addr; - void *status_addr; - void *command_addr; - void *altstatus_addr; - void *ctl_addr; - void *bmdma_addr; - void *scr_addr; +struct unimapdesc { + short unsigned int entry_ct; + struct unipair *entries; }; -struct ata_port_operations; +struct kbentry { + unsigned char kb_table; + unsigned char kb_index; + short unsigned int kb_value; +}; -struct ata_host { - spinlock_t lock; - struct device *dev; - void * const *iomap; - unsigned int n_ports; - unsigned int n_tags; - void *private_data; - struct ata_port_operations *ops; - long unsigned int flags; - struct kref kref; - struct mutex eh_mutex; - struct task_struct *eh_owner; - struct ata_port *simplex_claimed; - struct ata_port *ports[0]; -}; - -struct ata_port_operations { - int (*qc_defer)(struct ata_queued_cmd *); - int (*check_atapi_dma)(struct ata_queued_cmd *); - enum ata_completion_errors (*qc_prep)(struct ata_queued_cmd *); - unsigned int (*qc_issue)(struct ata_queued_cmd *); - bool (*qc_fill_rtf)(struct ata_queued_cmd *); - int (*cable_detect)(struct ata_port *); - long unsigned int (*mode_filter)(struct ata_device *, long unsigned int); - void (*set_piomode)(struct ata_port *, struct ata_device *); - void (*set_dmamode)(struct ata_port *, struct ata_device *); - int (*set_mode)(struct ata_link *, struct ata_device **); - unsigned int (*read_id)(struct ata_device *, struct ata_taskfile *, __le16 *); - void (*dev_config)(struct ata_device *); - void (*freeze)(struct ata_port *); - void (*thaw)(struct ata_port *); - ata_prereset_fn_t prereset; - ata_reset_fn_t softreset; - ata_reset_fn_t hardreset; - ata_postreset_fn_t postreset; - ata_prereset_fn_t pmp_prereset; - ata_reset_fn_t pmp_softreset; - ata_reset_fn_t pmp_hardreset; - ata_postreset_fn_t pmp_postreset; - void (*error_handler)(struct ata_port *); - void (*lost_interrupt)(struct ata_port *); - void (*post_internal_cmd)(struct ata_queued_cmd *); - void (*sched_eh)(struct ata_port *); - void (*end_eh)(struct ata_port *); - int (*scr_read)(struct ata_link *, unsigned int, u32 *); - int (*scr_write)(struct ata_link *, unsigned int, u32); - void (*pmp_attach)(struct ata_port *); - void (*pmp_detach)(struct ata_port *); - int (*set_lpm)(struct ata_link *, enum ata_lpm_policy, unsigned int); - int (*port_suspend)(struct ata_port *, pm_message_t); - int (*port_resume)(struct ata_port *); - int (*port_start)(struct ata_port *); - void (*port_stop)(struct ata_port *); - void (*host_stop)(struct ata_host *); - void (*sff_dev_select)(struct ata_port *, unsigned int); - void (*sff_set_devctl)(struct ata_port *, u8); - u8 (*sff_check_status)(struct ata_port *); - u8 (*sff_check_altstatus)(struct ata_port *); - void (*sff_tf_load)(struct ata_port *, const struct ata_taskfile *); - void (*sff_tf_read)(struct ata_port *, struct ata_taskfile *); - void (*sff_exec_command)(struct ata_port *, const struct ata_taskfile *); - unsigned int (*sff_data_xfer)(struct ata_queued_cmd *, unsigned char *, unsigned int, int); - void (*sff_irq_on)(struct ata_port *); - bool (*sff_irq_check)(struct ata_port *); - void (*sff_irq_clear)(struct ata_port *); - void (*sff_drain_fifo)(struct ata_queued_cmd *); - void (*bmdma_setup)(struct ata_queued_cmd *); - void (*bmdma_start)(struct ata_queued_cmd *); - void (*bmdma_stop)(struct ata_queued_cmd *); - u8 (*bmdma_status)(struct ata_port *); - ssize_t (*em_show)(struct ata_port *, char *); - ssize_t (*em_store)(struct ata_port *, const char *, size_t); - ssize_t (*sw_activity_show)(struct ata_device *, char *); - ssize_t (*sw_activity_store)(struct ata_device *, enum sw_activity); - ssize_t (*transmit_led_message)(struct ata_port *, u32, ssize_t); - void (*phy_reset)(struct ata_port *); - void (*eng_timeout)(struct ata_port *); - const struct ata_port_operations *inherits; -}; - -struct ata_port_stats { - long unsigned int unhandled_irq; - long unsigned int idle_irq; - long unsigned int rw_reqbuf; -}; - -struct ata_port { - struct Scsi_Host *scsi_host; - struct ata_port_operations *ops; - spinlock_t *lock; - long unsigned int flags; - unsigned int pflags; - unsigned int print_id; - unsigned int local_port_no; - unsigned int port_no; - struct ata_ioports ioaddr; - u8 ctl; - u8 last_ctl; - struct ata_link *sff_pio_task_link; - struct delayed_work sff_pio_task; - struct ata_bmdma_prd *bmdma_prd; - dma_addr_t bmdma_prd_dma; - unsigned int pio_mask; - unsigned int mwdma_mask; - unsigned int udma_mask; - unsigned int cbl; - struct ata_queued_cmd qcmd[33]; - long unsigned int sas_tag_allocated; - u64 qc_active; - int nr_active_links; - unsigned int sas_last_tag; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 ata_link link; - struct ata_link *slave_link; - int nr_pmp_links; - struct ata_link *pmp_link; - struct ata_link *excl_link; - struct ata_port_stats stats; - struct ata_host *host; - struct device *dev; - struct device tdev; - struct mutex scsi_scan_mutex; - struct delayed_work hotplug_task; - struct work_struct scsi_rescan_task; - unsigned int hsm_task_state; - struct list_head eh_done_q; - wait_queue_head_t eh_wait_q; - int eh_tries; - struct completion park_req_pending; - pm_message_t pm_mesg; - enum ata_lpm_policy target_lpm_policy; - struct timer_list fastdrain_timer; - long unsigned int fastdrain_cnt; - async_cookie_t cookie; - int em_message_type; - void *private_data; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - u8 sector_buf[512]; +struct kbsentry { + unsigned char kb_func; + unsigned char kb_string[512]; }; -struct ata_cpr { - u8 num; - u8 num_storage_elements; - u64 start_lba; - u64 num_lbas; +struct kbkeycode { + unsigned int scancode; + unsigned int keycode; }; -struct ata_cpr_log { - u8 nr_cpr; - struct ata_cpr cpr[0]; +struct kbd_repeat { + int delay; + int period; }; -enum ata_link_iter_mode { - ATA_LITER_EDGE = 0, - ATA_LITER_HOST_FIRST = 1, - ATA_LITER_PMP_FIRST = 2, +struct console_font_op { + unsigned int op; + unsigned int flags; + unsigned int width; + unsigned int height; + unsigned int charcount; + unsigned char *data; }; -enum ata_dev_iter_mode { - ATA_DITER_ENABLED = 0, - ATA_DITER_ENABLED_REVERSE = 1, - ATA_DITER_ALL = 2, - ATA_DITER_ALL_REVERSE = 3, +struct vt_stat { + short unsigned int v_active; + short unsigned int v_signal; + short unsigned int v_state; }; -typedef unsigned int (*ata_xlat_func_t)(struct ata_queued_cmd *); +struct vt_sizes { + short unsigned int v_rows; + short unsigned int v_cols; + short unsigned int v_scrollsize; +}; -struct ata_scsi_args { - struct ata_device *dev; - u16 *id; - struct scsi_cmnd *cmd; +struct vt_consize { + short unsigned int v_rows; + short unsigned int v_cols; + short unsigned int v_vlin; + short unsigned int v_clin; + short unsigned int v_vcol; + short unsigned int v_ccol; }; -enum ata_xfer_mask { - ATA_MASK_PIO = 127, - ATA_MASK_MWDMA = 3968, - ATA_MASK_UDMA = 1044480, +struct vt_event { + unsigned int event; + unsigned int oldev; + unsigned int newev; + unsigned int pad[4]; }; -enum hsm_task_states { - HSM_ST_IDLE = 0, - HSM_ST_FIRST = 1, - HSM_ST = 2, - HSM_ST_LAST = 3, - HSM_ST_ERR = 4, +struct vt_setactivate { + unsigned int console; + struct vt_mode mode; }; -struct ata_port_info { - long unsigned int flags; - long unsigned int link_flags; - long unsigned int pio_mask; - long unsigned int mwdma_mask; - long unsigned int udma_mask; - struct ata_port_operations *port_ops; - void *private_data; +struct vt_spawn_console { + spinlock_t lock; + struct pid *pid; + int sig; }; -struct pci_bits { - unsigned int reg; - unsigned int width; - long unsigned int mask; - long unsigned int val; +struct vt_event_wait { + struct list_head list; + struct vt_event event; + int done; }; -struct trace_event_raw_ata_qc_issue_template { - struct trace_entry ent; - unsigned int ata_port; - unsigned int ata_dev; - unsigned int tag; - unsigned char cmd; - unsigned char dev; - unsigned char lbal; - unsigned char lbam; - unsigned char lbah; - unsigned char nsect; - unsigned char feature; - unsigned char hob_lbal; - unsigned char hob_lbam; - unsigned char hob_lbah; - unsigned char hob_nsect; - unsigned char hob_feature; - unsigned char ctl; - unsigned char proto; - long unsigned int flags; - char __data[0]; +struct compat_console_font_op { + compat_uint_t op; + compat_uint_t flags; + compat_uint_t width; + compat_uint_t height; + compat_uint_t charcount; + compat_caddr_t data; }; -struct trace_event_raw_ata_qc_complete_template { - struct trace_entry ent; - unsigned int ata_port; - unsigned int ata_dev; - unsigned int tag; - unsigned char status; - unsigned char dev; - unsigned char lbal; - unsigned char lbam; - unsigned char lbah; - unsigned char nsect; - unsigned char error; - unsigned char hob_lbal; - unsigned char hob_lbam; - unsigned char hob_lbah; - unsigned char hob_nsect; - unsigned char hob_feature; - unsigned char ctl; - long unsigned int flags; - char __data[0]; +struct compat_unimapdesc { + short unsigned int entry_ct; + compat_caddr_t entries; }; -struct trace_event_raw_ata_tf_load { - struct trace_entry ent; - unsigned int ata_port; - unsigned char cmd; - unsigned char dev; - unsigned char lbal; - unsigned char lbam; - unsigned char lbah; - unsigned char nsect; - unsigned char feature; - unsigned char hob_lbal; - unsigned char hob_lbam; - unsigned char hob_lbah; - unsigned char hob_nsect; - unsigned char hob_feature; - unsigned char proto; - char __data[0]; +struct vt_notifier_param { + struct vc_data *vc; + unsigned int c; }; -struct trace_event_raw_ata_exec_command_template { - struct trace_entry ent; - unsigned int ata_port; - unsigned int tag; - unsigned char cmd; - unsigned char feature; - unsigned char hob_nsect; - unsigned char proto; - char __data[0]; +struct vcs_poll_data { + struct notifier_block notifier; + unsigned int cons_num; + int event; + wait_queue_head_t waitq; + struct fasync_struct *fasync; }; -struct trace_event_raw_ata_bmdma_status { - struct trace_entry ent; - unsigned int ata_port; - unsigned int tag; - unsigned char host_stat; - char __data[0]; +struct tiocl_selection { + short unsigned int xs; + short unsigned int ys; + short unsigned int xe; + short unsigned int ye; + short unsigned int sel_mode; }; -struct trace_event_raw_ata_eh_link_autopsy { - struct trace_entry ent; - unsigned int ata_port; - unsigned int ata_dev; - unsigned int eh_action; - unsigned int eh_err_mask; - char __data[0]; +struct vc_selection { + struct mutex lock; + struct vc_data *cons; + char *buffer; + unsigned int buf_len; + volatile int start; + int end; }; -struct trace_event_raw_ata_eh_link_autopsy_qc { - struct trace_entry ent; - unsigned int ata_port; - unsigned int ata_dev; - unsigned int tag; - unsigned int qc_flags; - unsigned int eh_err_mask; - char __data[0]; +struct kbdiacr { + unsigned char diacr; + unsigned char base; + unsigned char result; }; -struct trace_event_raw_ata_eh_action_template { - struct trace_entry ent; - unsigned int ata_port; - unsigned int ata_dev; - unsigned int eh_action; - char __data[0]; +struct kbdiacrs { + unsigned int kb_cnt; + struct kbdiacr kbdiacr[256]; }; -struct trace_event_raw_ata_link_reset_begin_template { - struct trace_entry ent; - unsigned int ata_port; - unsigned int class[2]; - long unsigned int deadline; - char __data[0]; +struct kbdiacruc { + unsigned int diacr; + unsigned int base; + unsigned int result; }; -struct trace_event_raw_ata_link_reset_end_template { - struct trace_entry ent; - unsigned int ata_port; - unsigned int class[2]; - int rc; - char __data[0]; +struct kbdiacrsuc { + unsigned int kb_cnt; + struct kbdiacruc kbdiacruc[256]; }; -struct trace_event_raw_ata_port_eh_begin_template { - struct trace_entry ent; - unsigned int ata_port; - char __data[0]; +struct keyboard_notifier_param { + struct vc_data *vc; + int down; + int shift; + int ledstate; + unsigned int value; }; -struct trace_event_raw_ata_sff_hsm_template { - struct trace_entry ent; - unsigned int ata_port; - unsigned int ata_dev; - unsigned int tag; - unsigned int qc_flags; - unsigned int protocol; - unsigned int hsm_state; - unsigned char dev_state; - char __data[0]; +struct kbd_struct { + unsigned char lockstate; + unsigned char slockstate; + unsigned char ledmode: 1; + unsigned char ledflagstate: 4; + char: 3; + unsigned char default_ledflagstate: 4; + unsigned char kbdmode: 3; + int: 1; + unsigned char modeflags: 5; }; -struct trace_event_raw_ata_transfer_data_template { - struct trace_entry ent; - unsigned int ata_port; - unsigned int ata_dev; - unsigned int tag; - unsigned int flags; - unsigned int offset; - unsigned int bytes; - char __data[0]; +typedef void k_handler_fn(struct vc_data *, unsigned char, char); + +typedef void fn_handler_fn(struct vc_data *); + +struct getset_keycode_data { + struct input_keymap_entry ke; + int error; }; -struct trace_event_raw_ata_sff_template { - struct trace_entry ent; - unsigned int ata_port; - unsigned char hsm_state; - char __data[0]; +struct uni_pagedir { + u16 **uni_pgdir[32]; + long unsigned int refcount; + long unsigned int sum; + unsigned char *inverse_translations[4]; + u16 *inverse_trans_unicode; +}; + +typedef uint32_t char32_t; + +struct uni_screen { + char32_t *lines[0]; +}; + +struct con_driver { + const struct consw *con; + const char *desc; + struct device *dev; + int node; + int first; + int last; + int flag; +}; + +enum { + blank_off = 0, + blank_normal_wait = 1, + blank_vesa_wait = 2, }; -struct trace_event_data_offsets_ata_qc_issue_template {}; +enum { + EPecma = 0, + EPdec = 1, + EPeq = 2, + EPgt = 3, + EPlt = 4, +}; -struct trace_event_data_offsets_ata_qc_complete_template {}; +struct rgb { + u8 r; + u8 g; + u8 b; +}; -struct trace_event_data_offsets_ata_tf_load {}; +enum { + ESnormal = 0, + ESesc = 1, + ESsquare = 2, + ESgetpars = 3, + ESfunckey = 4, + EShash = 5, + ESsetG0 = 6, + ESsetG1 = 7, + ESpercent = 8, + EScsiignore = 9, + ESnonstd = 10, + ESpalette = 11, + ESosc = 12, + ESapc = 13, + ESpm = 14, + ESdcs = 15, +}; -struct trace_event_data_offsets_ata_exec_command_template {}; +struct interval { + uint32_t first; + uint32_t last; +}; -struct trace_event_data_offsets_ata_bmdma_status {}; +struct vc_draw_region { + long unsigned int from; + long unsigned int to; + int x; +}; -struct trace_event_data_offsets_ata_eh_link_autopsy {}; +struct hv_ops; -struct trace_event_data_offsets_ata_eh_link_autopsy_qc {}; +struct hvc_struct { + struct tty_port port; + spinlock_t lock; + int index; + int do_wakeup; + char *outbuf; + int outbuf_size; + int n_outbuf; + uint32_t vtermno; + const struct hv_ops *ops; + int irq_requested; + int data; + struct winsize ws; + struct work_struct tty_resize; + struct list_head next; + long unsigned int flags; +}; -struct trace_event_data_offsets_ata_eh_action_template {}; +struct hv_ops { + int (*get_chars)(uint32_t, char *, int); + int (*put_chars)(uint32_t, const char *, int); + int (*flush)(uint32_t, bool); + int (*notifier_add)(struct hvc_struct *, int); + void (*notifier_del)(struct hvc_struct *, int); + void (*notifier_hangup)(struct hvc_struct *, int); + int (*tiocmget)(struct hvc_struct *); + int (*tiocmset)(struct hvc_struct *, unsigned int, unsigned int); + void (*dtr_rts)(struct hvc_struct *, int); +}; -struct trace_event_data_offsets_ata_link_reset_begin_template {}; +struct iucv_handler; -struct trace_event_data_offsets_ata_link_reset_end_template {}; +struct iucv_path { + u16 pathid; + u16 msglim; + u8 flags; + void *private; + struct iucv_handler *handler; + struct list_head list; +}; -struct trace_event_data_offsets_ata_port_eh_begin_template {}; +struct iucv_message; -struct trace_event_data_offsets_ata_sff_hsm_template {}; +struct iucv_handler { + int (*path_pending)(struct iucv_path *, u8 *, u8 *); + void (*path_complete)(struct iucv_path *, u8 *); + void (*path_severed)(struct iucv_path *, u8 *); + void (*path_quiesced)(struct iucv_path *, u8 *); + void (*path_resumed)(struct iucv_path *, u8 *); + void (*message_pending)(struct iucv_path *, struct iucv_message *); + void (*message_complete)(struct iucv_path *, struct iucv_message *); + struct list_head list; + struct list_head paths; +}; -struct trace_event_data_offsets_ata_transfer_data_template {}; +struct iucv_message { + u32 id; + u32 audit; + u32 class; + u32 tag; + u32 length; + u32 reply_size; + u8 rmmsg[8]; + u8 flags; +} __attribute__((packed)); -struct trace_event_data_offsets_ata_sff_template {}; +struct iucv_tty_msg { + u8 version; + u8 type; + u16 datalen; + u8 data[0]; +}; -typedef void (*btf_trace_ata_qc_prep)(void *, struct ata_queued_cmd *); +enum iucv_state_t { + IUCV_DISCONN = 0, + IUCV_CONNECTED = 1, + IUCV_SEVERED = 2, +}; -typedef void (*btf_trace_ata_qc_issue)(void *, struct ata_queued_cmd *); +enum tty_state_t { + TTY_CLOSED = 0, + TTY_OPENED = 1, +}; -typedef void (*btf_trace_ata_qc_complete_internal)(void *, struct ata_queued_cmd *); +struct hvc_iucv_private { + struct hvc_struct *hvc; + u8 srv_name[8]; + unsigned char is_console; + enum iucv_state_t iucv_state; + enum tty_state_t tty_state; + struct iucv_path *path; + spinlock_t lock; + void *sndbuf; + size_t sndbuf_len; + struct delayed_work sndbuf_work; + wait_queue_head_t sndbuf_waitq; + struct list_head tty_outqueue; + struct list_head tty_inqueue; + struct device *dev; + u8 info_path[16]; +}; -typedef void (*btf_trace_ata_qc_complete_failed)(void *, struct ata_queued_cmd *); +struct iucv_tty_buffer { + struct list_head list; + struct iucv_message msg; + size_t offset; + struct iucv_tty_msg *mbuf; +}; -typedef void (*btf_trace_ata_qc_complete_done)(void *, struct ata_queued_cmd *); +struct serdev_device; -typedef void (*btf_trace_ata_tf_load)(void *, struct ata_port *, const struct ata_taskfile *); +struct serdev_device_ops { + int (*receive_buf)(struct serdev_device *, const unsigned char *, size_t); + void (*write_wakeup)(struct serdev_device *); +}; -typedef void (*btf_trace_ata_exec_command)(void *, struct ata_port *, const struct ata_taskfile *, unsigned int); +struct serdev_controller; -typedef void (*btf_trace_ata_bmdma_setup)(void *, struct ata_port *, const struct ata_taskfile *, unsigned int); +struct serdev_device { + struct device dev; + int nr; + struct serdev_controller *ctrl; + const struct serdev_device_ops *ops; + struct completion write_comp; + struct mutex write_lock; +}; -typedef void (*btf_trace_ata_bmdma_start)(void *, struct ata_port *, const struct ata_taskfile *, unsigned int); +struct serdev_controller_ops; -typedef void (*btf_trace_ata_bmdma_stop)(void *, struct ata_port *, const struct ata_taskfile *, unsigned int); +struct serdev_controller { + struct device dev; + unsigned int nr; + struct serdev_device *serdev; + const struct serdev_controller_ops *ops; +}; -typedef void (*btf_trace_ata_bmdma_status)(void *, struct ata_port *, unsigned int); +struct serdev_device_driver { + struct device_driver driver; + int (*probe)(struct serdev_device *); + void (*remove)(struct serdev_device *); +}; -typedef void (*btf_trace_ata_eh_link_autopsy)(void *, struct ata_device *, unsigned int, unsigned int); +enum serdev_parity { + SERDEV_PARITY_NONE = 0, + SERDEV_PARITY_EVEN = 1, + SERDEV_PARITY_ODD = 2, +}; -typedef void (*btf_trace_ata_eh_link_autopsy_qc)(void *, struct ata_queued_cmd *); +struct serdev_controller_ops { + int (*write_buf)(struct serdev_controller *, const unsigned char *, size_t); + void (*write_flush)(struct serdev_controller *); + int (*write_room)(struct serdev_controller *); + int (*open)(struct serdev_controller *); + void (*close)(struct serdev_controller *); + void (*set_flow_control)(struct serdev_controller *, bool); + int (*set_parity)(struct serdev_controller *, enum serdev_parity); + unsigned int (*set_baudrate)(struct serdev_controller *, unsigned int); + void (*wait_until_sent)(struct serdev_controller *, long int); + int (*get_tiocm)(struct serdev_controller *); + int (*set_tiocm)(struct serdev_controller *, unsigned int, unsigned int); +}; -typedef void (*btf_trace_ata_eh_about_to_do)(void *, struct ata_link *, unsigned int, unsigned int); +struct serport { + struct tty_port *port; + struct tty_struct *tty; + struct tty_driver *tty_drv; + int tty_idx; + long unsigned int flags; +}; -typedef void (*btf_trace_ata_eh_done)(void *, struct ata_link *, unsigned int, unsigned int); +struct memdev { + const char *name; + umode_t mode; + const struct file_operations *fops; + fmode_t fmode; +}; -typedef void (*btf_trace_ata_link_hardreset_begin)(void *, struct ata_link *, unsigned int *, long unsigned int); +struct timer_rand_state { + long unsigned int last_time; + long int last_delta; + long int last_delta2; +}; -typedef void (*btf_trace_ata_slave_hardreset_begin)(void *, struct ata_link *, unsigned int *, long unsigned int); +enum chacha_constants { + CHACHA_CONSTANT_EXPA = 1634760805, + CHACHA_CONSTANT_ND_3 = 857760878, + CHACHA_CONSTANT_2_BY = 2036477234, + CHACHA_CONSTANT_TE_K = 1797285236, +}; -typedef void (*btf_trace_ata_link_softreset_begin)(void *, struct ata_link *, unsigned int *, long unsigned int); +enum { + CRNG_EMPTY = 0, + CRNG_EARLY = 1, + CRNG_READY = 2, +}; -typedef void (*btf_trace_ata_link_hardreset_end)(void *, struct ata_link *, unsigned int *, int); +enum { + CRNG_RESEED_START_INTERVAL = 100, + CRNG_RESEED_INTERVAL = 6000, +}; -typedef void (*btf_trace_ata_slave_hardreset_end)(void *, struct ata_link *, unsigned int *, int); +struct crng { + u8 key[32]; + long unsigned int generation; + local_lock_t lock; +}; -typedef void (*btf_trace_ata_link_softreset_end)(void *, struct ata_link *, unsigned int *, int); +struct batch_u64 { + u64 entropy[12]; + local_lock_t lock; + long unsigned int generation; + unsigned int position; +}; -typedef void (*btf_trace_ata_link_postreset)(void *, struct ata_link *, unsigned int *, int); +struct batch_u32 { + u32 entropy[24]; + local_lock_t lock; + long unsigned int generation; + unsigned int position; +}; -typedef void (*btf_trace_ata_slave_postreset)(void *, struct ata_link *, unsigned int *, int); +enum { + POOL_BITS = 256, + POOL_READY_BITS = 256, + POOL_EARLY_BITS = 128, +}; -typedef void (*btf_trace_ata_std_sched_eh)(void *, struct ata_port *); +struct fast_pool { + long unsigned int pool[4]; + long unsigned int last; + unsigned int count; + struct timer_list mix; +}; -typedef void (*btf_trace_ata_port_freeze)(void *, struct ata_port *); +enum { + MIX_INFLIGHT = 2147483648, +}; -typedef void (*btf_trace_ata_port_thaw)(void *, struct ata_port *); +struct virtio_console_config { + __virtio16 cols; + __virtio16 rows; + __virtio32 max_nr_ports; + __virtio32 emerg_wr; +}; -typedef void (*btf_trace_ata_sff_hsm_state)(void *, struct ata_queued_cmd *, unsigned char); +struct virtio_console_control { + __virtio32 id; + __virtio16 event; + __virtio16 value; +}; -typedef void (*btf_trace_ata_sff_hsm_command_complete)(void *, struct ata_queued_cmd *, unsigned char); +struct ports_driver_data { + struct class *class; + struct dentry *debugfs_dir; + struct list_head portdevs; + unsigned int next_vtermno; + struct list_head consoles; +}; -typedef void (*btf_trace_ata_sff_port_intr)(void *, struct ata_queued_cmd *, unsigned char); +struct console___2 { + struct list_head list; + struct hvc_struct *hvc; + struct winsize ws; + u32 vtermno; +}; -typedef void (*btf_trace_ata_sff_pio_transfer_data)(void *, struct ata_queued_cmd *, unsigned int, unsigned int); +struct port_buffer { + char *buf; + size_t size; + size_t len; + size_t offset; + dma_addr_t dma; + struct device *dev; + struct list_head list; + unsigned int sgpages; + struct scatterlist sg[0]; +}; -typedef void (*btf_trace_atapi_pio_transfer_data)(void *, struct ata_queued_cmd *, unsigned int, unsigned int); +struct ports_device { + struct list_head list; + struct work_struct control_work; + struct work_struct config_work; + struct list_head ports; + spinlock_t ports_lock; + spinlock_t c_ivq_lock; + spinlock_t c_ovq_lock; + u32 max_nr_ports; + struct virtio_device *vdev; + struct virtqueue *c_ivq; + struct virtqueue *c_ovq; + struct virtio_console_control cpkt; + struct virtqueue **in_vqs; + struct virtqueue **out_vqs; + int chr_major; +}; -typedef void (*btf_trace_atapi_send_cdb)(void *, struct ata_queued_cmd *, unsigned int, unsigned int); +struct port_stats { + long unsigned int bytes_sent; + long unsigned int bytes_received; + long unsigned int bytes_discarded; +}; -typedef void (*btf_trace_ata_sff_flush_pio_task)(void *, struct ata_port *); +struct port { + struct list_head list; + struct ports_device *portdev; + struct port_buffer *inbuf; + spinlock_t inbuf_lock; + spinlock_t outvq_lock; + struct virtqueue *in_vq; + struct virtqueue *out_vq; + struct dentry *debugfs_file; + struct port_stats stats; + struct console___2 cons; + struct cdev *cdev; + struct device *dev; + struct kref kref; + wait_queue_head_t waitqueue; + char *name; + struct fasync_struct *async_queue; + u32 id; + bool outvq_full; + bool host_connected; + bool guest_connected; +}; -enum { - ATA_READID_POSTRESET = 1, - ATA_DNXFER_PIO = 0, - ATA_DNXFER_DMA = 1, - ATA_DNXFER_40C = 2, - ATA_DNXFER_FORCE_PIO = 3, - ATA_DNXFER_FORCE_PIO0 = 4, - ATA_DNXFER_QUIET = 2147483648, +struct sg_list { + unsigned int n; + unsigned int size; + size_t len; + struct scatterlist *sg; }; -struct ata_force_param { - const char *name; - u8 cbl; - u8 spd_limit; - long unsigned int xfer_mask; - unsigned int horkage_on; - unsigned int horkage_off; - u16 lflags; +enum tpm2_startup_types { + TPM2_SU_CLEAR = 0, + TPM2_SU_STATE = 1, }; -struct ata_force_ent { - int port; - int device; - struct ata_force_param param; +enum tpm_chip_flags { + TPM_CHIP_FLAG_TPM2 = 2, + TPM_CHIP_FLAG_IRQ = 4, + TPM_CHIP_FLAG_VIRTUAL = 8, + TPM_CHIP_FLAG_HAVE_TIMEOUTS = 16, + TPM_CHIP_FLAG_ALWAYS_POWERED = 32, + TPM_CHIP_FLAG_FIRMWARE_POWER_MANAGED = 64, }; -struct ata_xfer_ent { - int shift; - int bits; - u8 base; -}; - -struct ata_blacklist_entry { - const char *model_num; - const char *model_rev; - long unsigned int horkage; -}; - -enum ata_lpm_hints { - ATA_LPM_EMPTY = 1, - ATA_LPM_HIPM = 2, - ATA_LPM_WAKE_ONLY = 4, -}; - -enum { - ATA_EH_SPDN_NCQ_OFF = 1, - ATA_EH_SPDN_SPEED_DOWN = 2, - ATA_EH_SPDN_FALLBACK_TO_PIO = 4, - ATA_EH_SPDN_KEEP_ERRORS = 8, - ATA_EFLAG_IS_IO = 1, - ATA_EFLAG_DUBIOUS_XFER = 2, - ATA_EFLAG_OLD_ER = 2147483648, - ATA_ECAT_NONE = 0, - ATA_ECAT_ATA_BUS = 1, - ATA_ECAT_TOUT_HSM = 2, - ATA_ECAT_UNK_DEV = 3, - ATA_ECAT_DUBIOUS_NONE = 4, - ATA_ECAT_DUBIOUS_ATA_BUS = 5, - ATA_ECAT_DUBIOUS_TOUT_HSM = 6, - ATA_ECAT_DUBIOUS_UNK_DEV = 7, - ATA_ECAT_NR = 8, - ATA_EH_CMD_DFL_TIMEOUT = 5000, - ATA_EH_RESET_COOL_DOWN = 5000, - ATA_EH_PRERESET_TIMEOUT = 10000, - ATA_EH_FASTDRAIN_INTERVAL = 3000, - ATA_EH_UA_TRIES = 5, - ATA_EH_PROBE_TRIAL_INTERVAL = 60000, - ATA_EH_PROBE_TRIALS = 2, -}; - -struct ata_eh_cmd_timeout_ent { - const u8 *commands; - const long unsigned int *timeouts; -}; - -struct speed_down_verdict_arg { - u64 since; - int xfer_ok; - int nr_errors[8]; -}; - -struct ata_internal { - struct scsi_transport_template t; - struct device_attribute private_port_attrs[3]; - struct device_attribute private_link_attrs[3]; - struct device_attribute private_dev_attrs[9]; - struct transport_container link_attr_cont; - struct transport_container dev_attr_cont; - struct device_attribute *link_attrs[4]; - struct device_attribute *port_attrs[4]; - struct device_attribute *dev_attrs[10]; -}; - -struct ata_show_ering_arg { - char *buf; - int written; +struct file_priv { + struct tpm_chip *chip; + struct tpm_space *space; + struct mutex buffer_mutex; + struct timer_list user_read_timer; + struct work_struct timeout_work; + struct work_struct async_work; + wait_queue_head_t async_wait; + ssize_t response_length; + bool response_read; + bool command_enqueued; + u8 data_buffer[4096]; }; -struct ata_timing { - short unsigned int mode; - short unsigned int setup; - short unsigned int act8b; - short unsigned int rec8b; - short unsigned int cyc8b; - short unsigned int active; - short unsigned int recover; - short unsigned int dmack_hold; - short unsigned int cycle; - short unsigned int udma; -}; - -enum { - AHCI_MAX_PORTS = 32, - AHCI_MAX_CLKS = 5, - AHCI_MAX_SG = 168, - AHCI_DMA_BOUNDARY = 4294967295, - AHCI_MAX_CMDS = 32, - AHCI_CMD_SZ = 32, - AHCI_CMD_SLOT_SZ = 1024, - AHCI_RX_FIS_SZ = 256, - AHCI_CMD_TBL_CDB = 64, - AHCI_CMD_TBL_HDR_SZ = 128, - AHCI_CMD_TBL_SZ = 2816, - AHCI_CMD_TBL_AR_SZ = 90112, - AHCI_PORT_PRIV_DMA_SZ = 91392, - AHCI_PORT_PRIV_FBS_DMA_SZ = 95232, - AHCI_IRQ_ON_SG = 2147483648, - AHCI_CMD_ATAPI = 32, - AHCI_CMD_WRITE = 64, - AHCI_CMD_PREFETCH = 128, - AHCI_CMD_RESET = 256, - AHCI_CMD_CLR_BUSY = 1024, - RX_FIS_PIO_SETUP = 32, - RX_FIS_D2H_REG = 64, - RX_FIS_SDB = 88, - RX_FIS_UNK = 96, - HOST_CAP = 0, - HOST_CTL = 4, - HOST_IRQ_STAT = 8, - HOST_PORTS_IMPL = 12, - HOST_VERSION = 16, - HOST_EM_LOC = 28, - HOST_EM_CTL = 32, - HOST_CAP2 = 36, - HOST_RESET = 1, - HOST_IRQ_EN = 2, - HOST_MRSM = 4, - HOST_AHCI_EN = 2147483648, - HOST_CAP_SXS = 32, - HOST_CAP_EMS = 64, - HOST_CAP_CCC = 128, - HOST_CAP_PART = 8192, - HOST_CAP_SSC = 16384, - HOST_CAP_PIO_MULTI = 32768, - HOST_CAP_FBS = 65536, - HOST_CAP_PMP = 131072, - HOST_CAP_ONLY = 262144, - HOST_CAP_CLO = 16777216, - HOST_CAP_LED = 33554432, - HOST_CAP_ALPM = 67108864, - HOST_CAP_SSS = 134217728, - HOST_CAP_MPS = 268435456, - HOST_CAP_SNTF = 536870912, - HOST_CAP_NCQ = 1073741824, - HOST_CAP_64 = 2147483648, - HOST_CAP2_BOH = 1, - HOST_CAP2_NVMHCI = 2, - HOST_CAP2_APST = 4, - HOST_CAP2_SDS = 8, - HOST_CAP2_SADM = 16, - HOST_CAP2_DESO = 32, - PORT_LST_ADDR = 0, - PORT_LST_ADDR_HI = 4, - PORT_FIS_ADDR = 8, - PORT_FIS_ADDR_HI = 12, - PORT_IRQ_STAT = 16, - PORT_IRQ_MASK = 20, - PORT_CMD = 24, - PORT_TFDATA = 32, - PORT_SIG = 36, - PORT_CMD_ISSUE = 56, - PORT_SCR_STAT = 40, - PORT_SCR_CTL = 44, - PORT_SCR_ERR = 48, - PORT_SCR_ACT = 52, - PORT_SCR_NTF = 60, - PORT_FBS = 64, - PORT_DEVSLP = 68, - PORT_IRQ_COLD_PRES = 2147483648, - PORT_IRQ_TF_ERR = 1073741824, - PORT_IRQ_HBUS_ERR = 536870912, - PORT_IRQ_HBUS_DATA_ERR = 268435456, - PORT_IRQ_IF_ERR = 134217728, - PORT_IRQ_IF_NONFATAL = 67108864, - PORT_IRQ_OVERFLOW = 16777216, - PORT_IRQ_BAD_PMP = 8388608, - PORT_IRQ_PHYRDY = 4194304, - PORT_IRQ_DEV_ILCK = 128, - PORT_IRQ_CONNECT = 64, - PORT_IRQ_SG_DONE = 32, - PORT_IRQ_UNK_FIS = 16, - PORT_IRQ_SDB_FIS = 8, - PORT_IRQ_DMAS_FIS = 4, - PORT_IRQ_PIOS_FIS = 2, - PORT_IRQ_D2H_REG_FIS = 1, - PORT_IRQ_FREEZE = 683671632, - PORT_IRQ_ERROR = 2025848912, - DEF_PORT_IRQ = 2025848959, - PORT_CMD_ASP = 134217728, - PORT_CMD_ALPE = 67108864, - PORT_CMD_ATAPI = 16777216, - PORT_CMD_FBSCP = 4194304, - PORT_CMD_ESP = 2097152, - PORT_CMD_HPCP = 262144, - PORT_CMD_PMP = 131072, - PORT_CMD_LIST_ON = 32768, - PORT_CMD_FIS_ON = 16384, - PORT_CMD_FIS_RX = 16, - PORT_CMD_CLO = 8, - PORT_CMD_POWER_ON = 4, - PORT_CMD_SPIN_UP = 2, - PORT_CMD_START = 1, - PORT_CMD_ICC_MASK = 4026531840, - PORT_CMD_ICC_ACTIVE = 268435456, - PORT_CMD_ICC_PARTIAL = 536870912, - PORT_CMD_ICC_SLUMBER = 1610612736, - PORT_FBS_DWE_OFFSET = 16, - PORT_FBS_ADO_OFFSET = 12, - PORT_FBS_DEV_OFFSET = 8, - PORT_FBS_DEV_MASK = 3840, - PORT_FBS_SDE = 4, - PORT_FBS_DEC = 2, - PORT_FBS_EN = 1, - PORT_DEVSLP_DM_OFFSET = 25, - PORT_DEVSLP_DM_MASK = 503316480, - PORT_DEVSLP_DITO_OFFSET = 15, - PORT_DEVSLP_MDAT_OFFSET = 10, - PORT_DEVSLP_DETO_OFFSET = 2, - PORT_DEVSLP_DSP = 2, - PORT_DEVSLP_ADSE = 1, - AHCI_HFLAG_NO_NCQ = 1, - AHCI_HFLAG_IGN_IRQ_IF_ERR = 2, - AHCI_HFLAG_IGN_SERR_INTERNAL = 4, - AHCI_HFLAG_32BIT_ONLY = 8, - AHCI_HFLAG_MV_PATA = 16, - AHCI_HFLAG_NO_MSI = 32, - AHCI_HFLAG_NO_PMP = 64, - AHCI_HFLAG_SECT255 = 256, - AHCI_HFLAG_YES_NCQ = 512, - AHCI_HFLAG_NO_SUSPEND = 1024, - AHCI_HFLAG_SRST_TOUT_IS_OFFLINE = 2048, - AHCI_HFLAG_NO_SNTF = 4096, - AHCI_HFLAG_NO_FPDMA_AA = 8192, - AHCI_HFLAG_YES_FBS = 16384, - AHCI_HFLAG_DELAY_ENGINE = 32768, - AHCI_HFLAG_NO_DEVSLP = 131072, - AHCI_HFLAG_NO_FBS = 262144, - AHCI_HFLAG_MULTI_MSI = 1048576, - AHCI_HFLAG_WAKE_BEFORE_STOP = 4194304, - AHCI_HFLAG_YES_ALPM = 8388608, - AHCI_HFLAG_NO_WRITE_TO_RO = 16777216, - AHCI_HFLAG_USE_LPM_POLICY = 33554432, - AHCI_HFLAG_SUSPEND_PHYS = 67108864, - AHCI_HFLAG_NO_SXS = 268435456, - AHCI_FLAG_COMMON = 393346, - ICH_MAP = 144, - PCS_6 = 146, - PCS_7 = 148, - EM_MAX_SLOTS = 8, - EM_MAX_RETRY = 5, - EM_CTL_RST = 512, - EM_CTL_TM = 256, - EM_CTL_MR = 1, - EM_CTL_ALHD = 67108864, - EM_CTL_XMT = 33554432, - EM_CTL_SMB = 16777216, - EM_CTL_SGPIO = 524288, - EM_CTL_SES = 262144, - EM_CTL_SAFTE = 131072, - EM_CTL_LED = 65536, - EM_MSG_TYPE_LED = 1, - EM_MSG_TYPE_SAFTE = 2, - EM_MSG_TYPE_SES2 = 4, - EM_MSG_TYPE_SGPIO = 8, -}; - -struct ahci_cmd_hdr { - __le32 opts; - __le32 status; - __le32 tbl_addr; - __le32 tbl_addr_hi; - __le32 reserved[4]; -}; - -struct ahci_sg { - __le32 addr; - __le32 addr_hi; - __le32 reserved; - __le32 flags_size; -}; - -struct ahci_em_priv { - enum sw_activity blink_policy; - struct timer_list timer; - long unsigned int saved_activity; - long unsigned int activity; - long unsigned int led_state; - struct ata_link *link; -}; - -struct ahci_port_priv { - struct ata_link *active_link; - struct ahci_cmd_hdr *cmd_slot; - dma_addr_t cmd_slot_dma; - void *cmd_tbl; - dma_addr_t cmd_tbl_dma; - void *rx_fis; - dma_addr_t rx_fis_dma; - unsigned int ncq_saw_d2h: 1; - unsigned int ncq_saw_dmas: 1; - unsigned int ncq_saw_sdb: 1; - spinlock_t lock; - u32 intr_mask; - bool fbs_supported; - bool fbs_enabled; - int fbs_last_dev; - struct ahci_em_priv em_priv[8]; - char *irq_desc; +enum TPM_OPS_FLAGS { + TPM_OPS_AUTO_STARTUP = 1, }; -struct reset_control; +enum tpm2_timeouts { + TPM2_TIMEOUT_A = 750, + TPM2_TIMEOUT_B = 2000, + TPM2_TIMEOUT_C = 200, + TPM2_TIMEOUT_D = 30, + TPM2_DURATION_SHORT = 20, + TPM2_DURATION_MEDIUM = 750, + TPM2_DURATION_LONG = 2000, + TPM2_DURATION_LONG_LONG = 300000, + TPM2_DURATION_DEFAULT = 120000, +}; -struct ahci_host_priv { - unsigned int flags; - u32 force_port_map; - u32 mask_port_map; - void *mmio; - u32 cap; - u32 cap2; - u32 version; - u32 port_map; - u32 saved_cap; - u32 saved_cap2; - u32 saved_port_map; - u32 em_loc; - u32 em_buf_sz; - u32 em_msg_type; - u32 remapped_nvme; - bool got_runtime_pm; - struct clk *clks[5]; - struct reset_control *rsts; - struct regulator **target_pwrs; - struct regulator *ahci_regulator; - struct regulator *phy_regulator; - struct phy **phys; - unsigned int nports; - void *plat_data; - unsigned int irq; - void (*start_engine)(struct ata_port *); - int (*stop_engine)(struct ata_port *); - irqreturn_t (*irq_handler)(int, void *); - int (*get_irq_vector)(struct ata_host *, int); -}; - -enum { - AHCI_PCI_BAR_STA2X11 = 0, - AHCI_PCI_BAR_CAVIUM = 0, - AHCI_PCI_BAR_LOONGSON = 0, - AHCI_PCI_BAR_ENMOTUS = 2, - AHCI_PCI_BAR_CAVIUM_GEN5 = 4, - AHCI_PCI_BAR_STANDARD = 5, -}; - -enum board_ids { - board_ahci = 0, - board_ahci_ign_iferr = 1, - board_ahci_low_power = 2, - board_ahci_no_debounce_delay = 3, - board_ahci_nomsi = 4, - board_ahci_noncq = 5, - board_ahci_nosntf = 6, - board_ahci_yes_fbs = 7, - board_ahci_al = 8, - board_ahci_avn = 9, - board_ahci_mcp65 = 10, - board_ahci_mcp77 = 11, - board_ahci_mcp89 = 12, - board_ahci_mv = 13, - board_ahci_sb600 = 14, - board_ahci_sb700 = 15, - board_ahci_vt8251 = 16, - board_ahci_pcs7 = 17, - board_ahci_mcp_linux = 10, - board_ahci_mcp67 = 10, - board_ahci_mcp73 = 10, - board_ahci_mcp79 = 11, -}; - -enum { - PIIX_IOCFG = 84, - ICH5_PMR = 144, - ICH5_PCS = 146, - PIIX_SIDPR_BAR = 5, - PIIX_SIDPR_LEN = 16, - PIIX_SIDPR_IDX = 0, - PIIX_SIDPR_DATA = 4, - PIIX_FLAG_CHECKINTR = 268435456, - PIIX_FLAG_SIDPR = 536870912, - PIIX_PATA_FLAGS = 1, - PIIX_SATA_FLAGS = 268435458, - PIIX_FLAG_PIO16 = 1073741824, - PIIX_80C_PRI = 48, - PIIX_80C_SEC = 192, - P0 = 0, - P1 = 1, - P2 = 2, - P3 = 3, - IDE = 4294967295, - NA = 4294967294, - RV = 4294967293, - PIIX_AHCI_DEVICE = 6, - PIIX_HOST_BROKEN_SUSPEND = 16777216, -}; - -enum piix_controller_ids { - piix_pata_mwdma = 0, - piix_pata_33 = 1, - ich_pata_33 = 2, - ich_pata_66 = 3, - ich_pata_100 = 4, - ich_pata_100_nomwdma1 = 5, - ich5_sata = 6, - ich6_sata = 7, - ich6m_sata = 8, - ich8_sata = 9, - ich8_2port_sata = 10, - ich8m_apple_sata = 11, - tolapai_sata = 12, - piix_pata_vmw = 13, - ich8_sata_snb = 14, - ich8_2port_sata_snb = 15, - ich8_2port_sata_byt = 16, -}; - -struct piix_map_db { - const u32 mask; - const u16 port_enable; - const int map[0]; -}; - -struct piix_host_priv { - const int *map; - u32 saved_iocfg; - void *sidpr; -}; - -struct ich_laptop { - u16 device; - u16 subvendor; - u16 subdevice; +enum tpm_timeout { + TPM_TIMEOUT = 5, + TPM_TIMEOUT_RETRY = 100, + TPM_TIMEOUT_RANGE_US = 300, + TPM_TIMEOUT_POLL = 1, + TPM_TIMEOUT_USECS_MIN = 100, + TPM_TIMEOUT_USECS_MAX = 500, }; -struct mii_bus; +struct stclear_flags_t { + __be16 tag; + u8 deactivated; + u8 disableForceClear; + u8 physicalPresence; + u8 physicalPresenceLock; + u8 bGlobalLock; +} __attribute__((packed)); -struct mdio_device { - struct device dev; - struct mii_bus *bus; - char modalias[32]; - int (*bus_match)(struct device *, struct device_driver *); - void (*device_free)(struct mdio_device *); - void (*device_remove)(struct mdio_device *); - int addr; - int flags; - struct gpio_desc *reset_gpio; - struct reset_control *reset_ctrl; - unsigned int reset_assert_delay; - unsigned int reset_deassert_delay; +struct tpm1_version { + u8 major; + u8 minor; + u8 rev_major; + u8 rev_minor; }; -struct mdio_bus_stats { - u64_stats_t transfers; - u64_stats_t errors; - u64_stats_t writes; - u64_stats_t reads; - struct u64_stats_sync syncp; +struct tpm1_version2 { + __be16 tag; + struct tpm1_version version; }; -struct phy_package_shared; - -struct mii_bus { - struct module *owner; - const char *name; - char id[61]; - void *priv; - int (*read)(struct mii_bus *, int, int); - int (*write)(struct mii_bus *, int, int, u16); - int (*reset)(struct mii_bus *); - struct mdio_bus_stats stats[32]; - struct mutex mdio_lock; - struct device *parent; - enum { - MDIOBUS_ALLOCATED = 1, - MDIOBUS_REGISTERED = 2, - MDIOBUS_UNREGISTERED = 3, - MDIOBUS_RELEASED = 4, - } state; - struct device dev; - struct mdio_device *mdio_map[32]; - u32 phy_mask; - u32 phy_ignore_ta_mask; - int irq[32]; - int reset_delay_us; - int reset_post_delay_us; - struct gpio_desc *reset_gpiod; - enum { - MDIOBUS_NO_CAP = 0, - MDIOBUS_C22 = 1, - MDIOBUS_C45 = 2, - MDIOBUS_C22_C45 = 3, - } probe_capabilities; - struct mutex shared_lock; - struct phy_package_shared *shared[32]; +struct timeout_t { + __be32 a; + __be32 b; + __be32 c; + __be32 d; }; -struct phy_package_shared { - int addr; - refcount_t refcnt; - long unsigned int flags; - size_t priv_size; - void *priv; +struct duration_t { + __be32 tpm_short; + __be32 tpm_medium; + __be32 tpm_long; }; -struct mdio_board_info { - const char *bus_id; - char modalias[32]; - int mdio_addr; - const void *platform_data; +struct permanent_flags_t { + __be16 tag; + u8 disable; + u8 ownership; + u8 deactivated; + u8 readPubek; + u8 disableOwnerClear; + u8 allowMaintenance; + u8 physicalPresenceLifetimeLock; + u8 physicalPresenceHWEnable; + u8 physicalPresenceCMDEnable; + u8 CEKPUsed; + u8 TPMpost; + u8 TPMpostLock; + u8 FIPS; + u8 operator; + u8 enableRevokeEK; + u8 nvLocked; + u8 readSRKPub; + u8 tpmEstablished; + u8 maintenanceDone; + u8 disableFullDALogicInfo; }; -struct mdio_board_entry { - struct list_head list; - struct mdio_board_info board_info; +typedef union { + struct permanent_flags_t perm_flags; + struct stclear_flags_t stclear_flags; + __u8 owned; + __be32 num_pcrs; + struct tpm1_version version1; + struct tpm1_version2 version2; + __be32 manufacturer_id; + struct timeout_t timeout; + struct duration_t duration; +} cap_t; + +enum tpm_capabilities { + TPM_CAP_FLAG = 4, + TPM_CAP_PROP = 5, + TPM_CAP_VERSION_1_1 = 6, + TPM_CAP_VERSION_1_2 = 26, }; -struct mdiobus_devres { - struct mii_bus *mii; +enum tpm_sub_capabilities { + TPM_CAP_PROP_PCR = 257, + TPM_CAP_PROP_MANUFACTURER = 259, + TPM_CAP_FLAG_PERM = 264, + TPM_CAP_FLAG_VOL = 265, + TPM_CAP_PROP_OWNER = 273, + TPM_CAP_PROP_TIS_TIMEOUT = 277, + TPM_CAP_PROP_TIS_DURATION = 288, }; -enum netdev_state_t { - __LINK_STATE_START = 0, - __LINK_STATE_PRESENT = 1, - __LINK_STATE_NOCARRIER = 2, - __LINK_STATE_LINKWATCH_PENDING = 3, - __LINK_STATE_DORMANT = 4, - __LINK_STATE_TESTING = 5, +struct tpm1_get_random_out { + __be32 rng_data_len; + u8 rng_data[128]; }; -struct phy_c45_device_ids { - u32 devices_in_package; - u32 mmds_present; - u32 device_ids[32]; +enum tpm2_const { + TPM2_PLATFORM_PCR = 24, + TPM2_PCR_SELECT_MIN = 3, }; -enum phy_state { - PHY_DOWN = 0, - PHY_READY = 1, - PHY_HALTED = 2, - PHY_UP = 3, - PHY_RUNNING = 4, - PHY_NOLINK = 5, - PHY_CABLETEST = 6, +enum tpm2_capabilities { + TPM2_CAP_HANDLES = 1, + TPM2_CAP_COMMANDS = 2, + TPM2_CAP_PCRS = 5, + TPM2_CAP_TPM_PROPERTIES = 6, }; -struct phylink; +enum tpm2_properties { + TPM_PT_TOTAL_COMMANDS = 297, +}; -struct phy_driver; +enum tpm2_cc_attrs { + TPM2_CC_ATTR_CHANDLES = 25, + TPM2_CC_ATTR_RHANDLE = 28, +}; -struct mii_timestamper; +struct tpm2_pcr_read_out { + __be32 update_cnt; + __be32 pcr_selects_cnt; + __be16 hash_alg; + u8 pcr_select_size; + u8 pcr_select[3]; + __be32 digests_cnt; + __be16 digest_size; + u8 digest[0]; +} __attribute__((packed)); -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; - 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 tpm2_null_auth_area { + __be32 handle; + __be16 nonce_size; + u8 attributes; + __be16 auth_size; +} __attribute__((packed)); -struct phy_tdr_config { - u32 first; - u32 last; - u32 step; - s8 pair; +struct tpm2_get_random_out { + __be16 size; + u8 buffer[128]; }; -struct mii_ioctl_data { - __u16 phy_id; - __u16 reg_num; - __u16 val_in; - __u16 val_out; -}; +struct tpm2_get_cap_out { + u8 more_data; + __be32 subcap_id; + __be32 property_cnt; + __be32 property_id; + __be32 value; +} __attribute__((packed)); -enum { - ETHTOOL_MSG_KERNEL_NONE = 0, - ETHTOOL_MSG_STRSET_GET_REPLY = 1, - ETHTOOL_MSG_LINKINFO_GET_REPLY = 2, - ETHTOOL_MSG_LINKINFO_NTF = 3, - ETHTOOL_MSG_LINKMODES_GET_REPLY = 4, - ETHTOOL_MSG_LINKMODES_NTF = 5, - ETHTOOL_MSG_LINKSTATE_GET_REPLY = 6, - ETHTOOL_MSG_DEBUG_GET_REPLY = 7, - ETHTOOL_MSG_DEBUG_NTF = 8, - ETHTOOL_MSG_WOL_GET_REPLY = 9, - ETHTOOL_MSG_WOL_NTF = 10, - ETHTOOL_MSG_FEATURES_GET_REPLY = 11, - ETHTOOL_MSG_FEATURES_SET_REPLY = 12, - ETHTOOL_MSG_FEATURES_NTF = 13, - ETHTOOL_MSG_PRIVFLAGS_GET_REPLY = 14, - ETHTOOL_MSG_PRIVFLAGS_NTF = 15, - ETHTOOL_MSG_RINGS_GET_REPLY = 16, - ETHTOOL_MSG_RINGS_NTF = 17, - ETHTOOL_MSG_CHANNELS_GET_REPLY = 18, - ETHTOOL_MSG_CHANNELS_NTF = 19, - ETHTOOL_MSG_COALESCE_GET_REPLY = 20, - ETHTOOL_MSG_COALESCE_NTF = 21, - ETHTOOL_MSG_PAUSE_GET_REPLY = 22, - ETHTOOL_MSG_PAUSE_NTF = 23, - ETHTOOL_MSG_EEE_GET_REPLY = 24, - ETHTOOL_MSG_EEE_NTF = 25, - ETHTOOL_MSG_TSINFO_GET_REPLY = 26, - ETHTOOL_MSG_CABLE_TEST_NTF = 27, - ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 28, - ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 29, - ETHTOOL_MSG_FEC_GET_REPLY = 30, - ETHTOOL_MSG_FEC_NTF = 31, - ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY = 32, - ETHTOOL_MSG_STATS_GET_REPLY = 33, - ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY = 34, - ETHTOOL_MSG_MODULE_GET_REPLY = 35, - ETHTOOL_MSG_MODULE_NTF = 36, - __ETHTOOL_MSG_KERNEL_CNT = 37, - ETHTOOL_MSG_KERNEL_MAX = 36, +struct tpm2_pcr_selection { + __be16 hash_alg; + u8 size_of_select; + u8 pcr_select[3]; }; -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 tpmrm_priv { + struct file_priv priv; + struct tpm_space space; }; -struct mdio_driver_common { - struct device_driver driver; - int flags; +enum tpm2_handle_types { + TPM2_HT_HMAC_SESSION = 33554432, + TPM2_HT_POLICY_SESSION = 50331648, + TPM2_HT_TRANSIENT = 2147483648, }; -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 tpm2_context { + __be64 sequence; + __be32 saved_handle; + __be32 hierarchy; + __be16 blob_size; +} __attribute__((packed)); -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 tpm2_cap_handles { + u8 more_data; + __be32 capability; + __be32 count; + __be32 handles[0]; +} __attribute__((packed)); + +struct tpm_readpubek_out { + u8 algorithm[4]; + u8 encscheme[2]; + u8 sigscheme[2]; + __be32 paramsize; + u8 parameters[12]; + __be32 keysize; + u8 modulus[256]; + u8 checksum[20]; }; -struct phy_setting { - u32 speed; - u8 duplex; - u8 bit; +struct tpm_pcr_attr { + int alg_id; + int pcr; + struct device_attribute attr; }; -enum { - NETIF_F_SG_BIT = 0, - NETIF_F_IP_CSUM_BIT = 1, - __UNUSED_NETIF_F_1 = 2, - NETIF_F_HW_CSUM_BIT = 3, - NETIF_F_IPV6_CSUM_BIT = 4, - NETIF_F_HIGHDMA_BIT = 5, - NETIF_F_FRAGLIST_BIT = 6, - NETIF_F_HW_VLAN_CTAG_TX_BIT = 7, - NETIF_F_HW_VLAN_CTAG_RX_BIT = 8, - NETIF_F_HW_VLAN_CTAG_FILTER_BIT = 9, - NETIF_F_VLAN_CHALLENGED_BIT = 10, - NETIF_F_GSO_BIT = 11, - NETIF_F_LLTX_BIT = 12, - NETIF_F_NETNS_LOCAL_BIT = 13, - NETIF_F_GRO_BIT = 14, - NETIF_F_LRO_BIT = 15, - NETIF_F_GSO_SHIFT = 16, - NETIF_F_TSO_BIT = 16, - NETIF_F_GSO_ROBUST_BIT = 17, - NETIF_F_TSO_ECN_BIT = 18, - NETIF_F_TSO_MANGLEID_BIT = 19, - NETIF_F_TSO6_BIT = 20, - NETIF_F_FSO_BIT = 21, - NETIF_F_GSO_GRE_BIT = 22, - NETIF_F_GSO_GRE_CSUM_BIT = 23, - NETIF_F_GSO_IPXIP4_BIT = 24, - NETIF_F_GSO_IPXIP6_BIT = 25, - NETIF_F_GSO_UDP_TUNNEL_BIT = 26, - NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT = 27, - NETIF_F_GSO_PARTIAL_BIT = 28, - NETIF_F_GSO_TUNNEL_REMCSUM_BIT = 29, - NETIF_F_GSO_SCTP_BIT = 30, - NETIF_F_GSO_ESP_BIT = 31, - NETIF_F_GSO_UDP_BIT = 32, - NETIF_F_GSO_UDP_L4_BIT = 33, - NETIF_F_GSO_FRAGLIST_BIT = 34, - NETIF_F_GSO_LAST = 34, - NETIF_F_FCOE_CRC_BIT = 35, - NETIF_F_SCTP_CRC_BIT = 36, - NETIF_F_FCOE_MTU_BIT = 37, - NETIF_F_NTUPLE_BIT = 38, - NETIF_F_RXHASH_BIT = 39, - NETIF_F_RXCSUM_BIT = 40, - NETIF_F_NOCACHE_COPY_BIT = 41, - NETIF_F_LOOPBACK_BIT = 42, - NETIF_F_RXFCS_BIT = 43, - NETIF_F_RXALL_BIT = 44, - NETIF_F_HW_VLAN_STAG_TX_BIT = 45, - NETIF_F_HW_VLAN_STAG_RX_BIT = 46, - NETIF_F_HW_VLAN_STAG_FILTER_BIT = 47, - NETIF_F_HW_L2FW_DOFFLOAD_BIT = 48, - NETIF_F_HW_TC_BIT = 49, - NETIF_F_HW_ESP_BIT = 50, - NETIF_F_HW_ESP_TX_CSUM_BIT = 51, - NETIF_F_RX_UDP_TUNNEL_PORT_BIT = 52, - NETIF_F_HW_TLS_TX_BIT = 53, - NETIF_F_HW_TLS_RX_BIT = 54, - NETIF_F_GRO_HW_BIT = 55, - NETIF_F_HW_TLS_RECORD_BIT = 56, - NETIF_F_GRO_FRAGLIST_BIT = 57, - NETIF_F_HW_MACSEC_BIT = 58, - NETIF_F_GRO_UDP_FWD_BIT = 59, - NETIF_F_HW_HSR_TAG_INS_BIT = 60, - NETIF_F_HW_HSR_TAG_RM_BIT = 61, - NETIF_F_HW_HSR_FWD_BIT = 62, - NETIF_F_HW_HSR_DUP_BIT = 63, - NETDEV_FEATURE_COUNT = 64, +struct tcpa_event { + u32 pcr_index; + u32 event_type; + u8 pcr_value[20]; + u32 event_size; + u8 event_data[0]; }; -typedef struct bio_vec skb_frag_t; +enum tcpa_event_types { + PREBOOT = 0, + POST_CODE = 1, + UNUSED___2 = 2, + NO_ACTION = 3, + SEPARATOR = 4, + ACTION = 5, + EVENT_TAG = 6, + SCRTM_CONTENTS = 7, + SCRTM_VERSION = 8, + CPU_MICROCODE = 9, + PLATFORM_CONFIG_FLAGS = 10, + TABLE_OF_DEVICES = 11, + COMPACT_HASH = 12, + IPL = 13, + IPL_PARTITION_DATA = 14, + NONHOST_CODE = 15, + NONHOST_CONFIG = 16, + NONHOST_INFO = 17, +}; -struct skb_shared_hwtstamps { - ktime_t hwtstamp; +struct tcpa_pc_event { + u32 event_id; + u32 event_size; + u8 event_data[0]; }; -enum { - SKBTX_HW_TSTAMP = 1, - SKBTX_SW_TSTAMP = 2, - SKBTX_IN_PROGRESS = 4, - SKBTX_WIFI_STATUS = 16, - SKBTX_SCHED_TSTAMP = 64, +enum tcpa_pc_event_ids { + SMBIOS = 1, + BIS_CERT = 2, + POST_BIOS_ROM = 3, + ESCD = 4, + CMOS = 5, + NVRAM = 6, + OPTION_ROM_EXEC = 7, + OPTION_ROM_CONFIG = 8, + OPTION_ROM_MICROCODE = 10, + S_CRTM_VERSION = 11, + S_CRTM_CONTENTS = 12, + POST_CONTENTS = 13, + HOST_TABLE_OF_DEVICES = 14, }; -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; - unsigned int xdp_frags_size; - void *destructor_arg; - skb_frag_t frags[17]; +struct tcg_efi_specid_event_algs { + u16 alg_id; + u16 digest_size; }; -struct ethtool_phy_ops { - int (*get_sset_count)(struct phy_device *); - int (*get_strings)(struct phy_device *, u8 *); - int (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *); - int (*start_cable_test)(struct phy_device *, struct netlink_ext_ack *); - int (*start_cable_test_tdr)(struct phy_device *, struct netlink_ext_ack *, const struct phy_tdr_config *); +struct tcg_efi_specid_event_head { + u8 signature[16]; + u32 platform_class; + u8 spec_version_minor; + u8 spec_version_major; + u8 spec_errata; + u8 uintnsize; + u32 num_algs; + struct tcg_efi_specid_event_algs digest_sizes[0]; }; -struct phy_fixup { - struct list_head list; - char bus_id[64]; - u32 phy_uid; - u32 phy_uid_mask; - int (*run)(struct phy_device *); +struct tcg_pcr_event { + u32 pcr_idx; + u32 event_type; + u8 digest[20]; + u32 event_size; + u8 event[0]; }; -struct sfp_eeprom_base { - u8 phys_id; - u8 phys_ext_id; - u8 connector; - u8 e10g_base_er: 1; - u8 e10g_base_lrm: 1; - u8 e10g_base_lr: 1; - u8 e10g_base_sr: 1; - u8 if_1x_sx: 1; - u8 if_1x_lx: 1; - u8 if_1x_copper_active: 1; - u8 if_1x_copper_passive: 1; - u8 escon_mmf_1310_led: 1; - u8 escon_smf_1310_laser: 1; - u8 sonet_oc192_short_reach: 1; - u8 sonet_reach_bit1: 1; - u8 sonet_reach_bit2: 1; - u8 sonet_oc48_long_reach: 1; - u8 sonet_oc48_intermediate_reach: 1; - u8 sonet_oc48_short_reach: 1; - u8 unallocated_5_7: 1; - u8 sonet_oc12_smf_long_reach: 1; - u8 sonet_oc12_smf_intermediate_reach: 1; - u8 sonet_oc12_short_reach: 1; - u8 unallocated_5_3: 1; - u8 sonet_oc3_smf_long_reach: 1; - u8 sonet_oc3_smf_intermediate_reach: 1; - u8 sonet_oc3_short_reach: 1; - u8 e_base_px: 1; - u8 e_base_bx10: 1; - u8 e100_base_fx: 1; - u8 e100_base_lx: 1; - u8 e1000_base_t: 1; - u8 e1000_base_cx: 1; - u8 e1000_base_lx: 1; - u8 e1000_base_sx: 1; - u8 fc_ll_v: 1; - u8 fc_ll_s: 1; - u8 fc_ll_i: 1; - u8 fc_ll_l: 1; - u8 fc_ll_m: 1; - u8 fc_tech_sa: 1; - u8 fc_tech_lc: 1; - u8 fc_tech_electrical_inter_enclosure: 1; - u8 fc_tech_electrical_intra_enclosure: 1; - u8 fc_tech_sn: 1; - u8 fc_tech_sl: 1; - u8 fc_tech_ll: 1; - u8 sfp_ct_active: 1; - u8 sfp_ct_passive: 1; - u8 unallocated_8_1: 1; - u8 unallocated_8_0: 1; - u8 fc_media_tw: 1; - u8 fc_media_tp: 1; - u8 fc_media_mi: 1; - u8 fc_media_tv: 1; - u8 fc_media_m6: 1; - u8 fc_media_m5: 1; - u8 unallocated_9_1: 1; - u8 fc_media_sm: 1; - u8 fc_speed_1200: 1; - u8 fc_speed_800: 1; - u8 fc_speed_1600: 1; - u8 fc_speed_400: 1; - u8 fc_speed_3200: 1; - u8 fc_speed_200: 1; - u8 unallocated_10_1: 1; - u8 fc_speed_100: 1; - u8 encoding; - u8 br_nominal; - u8 rate_id; - u8 link_len[6]; - char vendor_name[16]; - u8 extended_cc; - char vendor_oui[3]; - char vendor_pn[16]; - char vendor_rev[4]; - union { - __be16 optical_wavelength; - __be16 cable_compliance; - struct { - u8 reserved60_2: 6; - u8 fc_pi_4_app_h: 1; - u8 sff8431_app_e: 1; - u8 reserved61: 8; - } passive; - struct { - u8 reserved60_4: 4; - u8 fc_pi_4_lim: 1; - u8 sff8431_lim: 1; - u8 fc_pi_4_app_h: 1; - u8 sff8431_app_e: 1; - u8 reserved61: 8; - } active; - }; - u8 reserved62; - u8 cc_base; +struct tcg_event_field { + u32 event_size; + u8 event[0]; }; -struct sfp_eeprom_ext { - __be16 options; - u8 br_max; - u8 br_min; - char vendor_sn[16]; - char datecode[8]; - u8 diagmon; - u8 enhopts; - u8 sff8472_compliance; - u8 cc_ext; +struct tcg_pcr_event2_head { + u32 pcr_idx; + u32 event_type; + u32 count; + struct tpm_digest digests[0]; }; -struct sfp_eeprom_id { - struct sfp_eeprom_base base; - struct sfp_eeprom_ext ext; +enum device_link_state { + DL_STATE_NONE = 4294967295, + DL_STATE_DORMANT = 0, + DL_STATE_AVAILABLE = 1, + DL_STATE_CONSUMER_PROBE = 2, + DL_STATE_ACTIVE = 3, + DL_STATE_SUPPLIER_UNBIND = 4, }; -struct sfp_upstream_ops { - void (*attach)(void *, struct sfp_bus *); - void (*detach)(void *, struct sfp_bus *); - int (*module_insert)(void *, const struct sfp_eeprom_id *); - void (*module_remove)(void *); - int (*module_start)(void *); - void (*module_stop)(void *); - void (*link_down)(void *); - void (*link_up)(void *); - int (*connect_phy)(void *, struct phy_device *); - void (*disconnect_phy)(void *); +struct iommu_group { + struct kobject kobj; + struct kobject *devices_kobj; + struct list_head devices; + struct mutex mutex; + struct blocking_notifier_head notifier; + void *iommu_data; + void (*iommu_data_release)(void *); + char *name; + int id; + struct iommu_domain *default_domain; + struct iommu_domain *domain; + struct list_head entry; }; -struct mdio_driver { - struct mdio_driver_common mdiodrv; - int (*probe)(struct mdio_device *); - void (*remove)(struct mdio_device *); - void (*shutdown)(struct mdio_device *); +struct device_link { + struct device *supplier; + struct list_head s_node; + struct device *consumer; + struct list_head c_node; + struct device link_dev; + enum device_link_state status; + u32 flags; + refcount_t rpm_active; + struct kref kref; + struct work_struct rm_work; + bool supplier_preactivated; }; -struct trace_event_raw_mdio_access { - struct trace_entry ent; - char busid[61]; - char read; - u8 addr; - u16 val; - unsigned int regnum; - char __data[0]; +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, + IOMMU_INV_GRANU_ADDR = 2, + IOMMU_INV_GRANU_NR = 3, +}; + +struct fsl_mc_obj_desc { + char type[16]; + int id; + u16 vendor; + u16 ver_major; + u16 ver_minor; + u8 irq_count; + u8 region_count; + u32 state; + char label[16]; + u16 flags; }; -struct trace_event_data_offsets_mdio_access {}; +struct fsl_mc_io; + +struct fsl_mc_device_irq; -typedef void (*btf_trace_mdio_access)(void *, struct mii_bus *, char, u8, unsigned int, u16, int); +struct fsl_mc_resource; -struct mdio_bus_stat_attr { - int addr; - unsigned int field_offset; +struct fsl_mc_device { + struct device dev; + u64 dma_mask; + u16 flags; + u32 icid; + u16 mc_handle; + struct fsl_mc_io *mc_io; + struct fsl_mc_obj_desc obj_desc; + struct resource *regions; + struct fsl_mc_device_irq **irqs; + struct fsl_mc_resource *resource; + struct device_link *consumer_link; + char *driver_override; }; -struct fixed_phy_status { - int link; - int speed; - int duplex; - int pause; - int asym_pause; +enum fsl_mc_pool_type { + FSL_MC_POOL_DPMCP = 0, + FSL_MC_POOL_DPBP = 1, + FSL_MC_POOL_DPCON = 2, + FSL_MC_POOL_IRQ = 3, + FSL_MC_NUM_POOL_TYPES = 4, }; -struct swmii_regs { - u16 bmsr; - u16 lpa; - u16 lpagb; - u16 estat; +struct fsl_mc_resource_pool; + +struct fsl_mc_resource { + enum fsl_mc_pool_type type; + s32 id; + void *data; + struct fsl_mc_resource_pool *parent_pool; + struct list_head node; }; -enum { - SWMII_SPEED_10 = 0, - SWMII_SPEED_100 = 1, - SWMII_SPEED_1000 = 2, - SWMII_DUPLEX_HALF = 0, - SWMII_DUPLEX_FULL = 1, +struct fsl_mc_device_irq { + struct msi_desc *msi_desc; + struct fsl_mc_device *mc_dev; + u8 dev_irq_index; + struct fsl_mc_resource resource; }; -struct mii_timestamping_ctrl { - struct mii_timestamper * (*probe_channel)(struct device *, unsigned int); - void (*release_channel)(struct device *, struct mii_timestamper *); +struct fsl_mc_io { + struct device *dev; + u16 flags; + u32 portal_size; + phys_addr_t portal_phys_addr; + void *portal_virt_addr; + struct fsl_mc_device *dpmcp_dev; + union { + struct mutex mutex; + raw_spinlock_t spinlock; + }; }; -struct mii_timestamping_desc { +struct group_device { struct list_head list; - struct mii_timestamping_ctrl *ctrl; - struct device *device; + struct device *dev; + char *name; }; -struct sfp; +struct iommu_group_attribute { + struct attribute attr; + ssize_t (*show)(struct iommu_group *, char *); + ssize_t (*store)(struct iommu_group *, const char *, size_t); +}; -struct sfp_socket_ops; +struct group_for_pci_data { + struct pci_dev *pdev; + struct iommu_group *group; +}; -struct sfp_quirk; +struct __group_domain_type { + struct device *dev; + unsigned int type; +}; -struct sfp_bus { - struct kref kref; - struct list_head node; - struct fwnode_handle *fwnode; - const struct sfp_socket_ops *socket_ops; - struct device *sfp_dev; - struct sfp *sfp; - const struct sfp_quirk *sfp_quirk; - const struct sfp_upstream_ops *upstream_ops; - void *upstream; - struct phy_device *phydev; - bool registered; - bool started; +struct trace_event_raw_iommu_group_event { + struct trace_entry ent; + int gid; + u32 __data_loc_device; + char __data[0]; }; -enum { - SFF8024_ID_UNK = 0, - SFF8024_ID_SFF_8472 = 2, - SFF8024_ID_SFP = 3, - SFF8024_ID_DWDM_SFP = 11, - SFF8024_ID_QSFP_8438 = 12, - SFF8024_ID_QSFP_8436_8636 = 13, - SFF8024_ID_QSFP28_8636 = 17, - SFF8024_ENCODING_UNSPEC = 0, - SFF8024_ENCODING_8B10B = 1, - SFF8024_ENCODING_4B5B = 2, - SFF8024_ENCODING_NRZ = 3, - SFF8024_ENCODING_8472_MANCHESTER = 4, - SFF8024_ENCODING_8472_SONET = 5, - SFF8024_ENCODING_8472_64B66B = 6, - SFF8024_ENCODING_8436_MANCHESTER = 6, - SFF8024_ENCODING_8436_SONET = 4, - SFF8024_ENCODING_8436_64B66B = 5, - SFF8024_ENCODING_256B257B = 7, - SFF8024_ENCODING_PAM4 = 8, - SFF8024_CONNECTOR_UNSPEC = 0, - SFF8024_CONNECTOR_SC = 1, - SFF8024_CONNECTOR_FIBERJACK = 6, - SFF8024_CONNECTOR_LC = 7, - SFF8024_CONNECTOR_MT_RJ = 8, - SFF8024_CONNECTOR_MU = 9, - SFF8024_CONNECTOR_SG = 10, - SFF8024_CONNECTOR_OPTICAL_PIGTAIL = 11, - SFF8024_CONNECTOR_MPO_1X12 = 12, - SFF8024_CONNECTOR_MPO_2X16 = 13, - SFF8024_CONNECTOR_HSSDC_II = 32, - SFF8024_CONNECTOR_COPPER_PIGTAIL = 33, - SFF8024_CONNECTOR_RJ45 = 34, - SFF8024_CONNECTOR_NOSEPARATE = 35, - SFF8024_CONNECTOR_MXC_2X16 = 36, - SFF8024_ECC_UNSPEC = 0, - SFF8024_ECC_100G_25GAUI_C2M_AOC = 1, - SFF8024_ECC_100GBASE_SR4_25GBASE_SR = 2, - SFF8024_ECC_100GBASE_LR4_25GBASE_LR = 3, - SFF8024_ECC_100GBASE_ER4_25GBASE_ER = 4, - SFF8024_ECC_100GBASE_SR10 = 5, - SFF8024_ECC_100GBASE_CR4 = 11, - SFF8024_ECC_25GBASE_CR_S = 12, - SFF8024_ECC_25GBASE_CR_N = 13, - SFF8024_ECC_10GBASE_T_SFI = 22, - SFF8024_ECC_10GBASE_T_SR = 28, - SFF8024_ECC_5GBASE_T = 29, - SFF8024_ECC_2_5GBASE_T = 30, +struct trace_event_raw_iommu_device_event { + struct trace_entry ent; + u32 __data_loc_device; + char __data[0]; +}; + +struct trace_event_raw_map { + struct trace_entry ent; + u64 iova; + u64 paddr; + size_t size; + char __data[0]; }; -struct sfp_socket_ops { - void (*attach)(struct sfp *); - void (*detach)(struct sfp *); - void (*start)(struct sfp *); - 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 trace_event_raw_unmap { + struct trace_entry ent; + u64 iova; + size_t size; + size_t unmapped_size; + char __data[0]; }; -struct sfp_quirk { - const char *vendor; - const char *part; - void (*modes)(const struct sfp_eeprom_id *, long unsigned int *); +struct trace_event_raw_iommu_error { + struct trace_entry ent; + u32 __data_loc_device; + u32 __data_loc_driver; + u64 iova; + int flags; + char __data[0]; }; -struct mdio_device_id { - __u32 phy_id; - __u32 phy_id_mask; +struct trace_event_data_offsets_iommu_group_event { + u32 device; }; -struct rtl821x_priv { - u16 phycr1; - u16 phycr2; +struct trace_event_data_offsets_iommu_device_event { + u32 device; }; -enum { - IFLA_UNSPEC = 0, - IFLA_ADDRESS = 1, - IFLA_BROADCAST = 2, - IFLA_IFNAME = 3, - IFLA_MTU = 4, - IFLA_LINK = 5, - IFLA_QDISC = 6, - IFLA_STATS = 7, - IFLA_COST = 8, - IFLA_PRIORITY = 9, - IFLA_MASTER = 10, - IFLA_WIRELESS = 11, - IFLA_PROTINFO = 12, - IFLA_TXQLEN = 13, - IFLA_MAP = 14, - IFLA_WEIGHT = 15, - IFLA_OPERSTATE = 16, - IFLA_LINKMODE = 17, - IFLA_LINKINFO = 18, - IFLA_NET_NS_PID = 19, - IFLA_IFALIAS = 20, - IFLA_NUM_VF = 21, - IFLA_VFINFO_LIST = 22, - IFLA_STATS64 = 23, - IFLA_VF_PORTS = 24, - IFLA_PORT_SELF = 25, - IFLA_AF_SPEC = 26, - IFLA_GROUP = 27, - IFLA_NET_NS_FD = 28, - IFLA_EXT_MASK = 29, - IFLA_PROMISCUITY = 30, - IFLA_NUM_TX_QUEUES = 31, - IFLA_NUM_RX_QUEUES = 32, - IFLA_CARRIER = 33, - IFLA_PHYS_PORT_ID = 34, - IFLA_CARRIER_CHANGES = 35, - IFLA_PHYS_SWITCH_ID = 36, - IFLA_LINK_NETNSID = 37, - IFLA_PHYS_PORT_NAME = 38, - IFLA_PROTO_DOWN = 39, - IFLA_GSO_MAX_SEGS = 40, - IFLA_GSO_MAX_SIZE = 41, - IFLA_PAD = 42, - IFLA_XDP = 43, - IFLA_EVENT = 44, - IFLA_NEW_NETNSID = 45, - IFLA_IF_NETNSID = 46, - IFLA_TARGET_NETNSID = 46, - IFLA_CARRIER_UP_COUNT = 47, - IFLA_CARRIER_DOWN_COUNT = 48, - IFLA_NEW_IFINDEX = 49, - IFLA_MIN_MTU = 50, - IFLA_MAX_MTU = 51, - IFLA_PROP_LIST = 52, - IFLA_ALT_IFNAME = 53, - IFLA_PERM_ADDRESS = 54, - IFLA_PROTO_DOWN_REASON = 55, - IFLA_PARENT_DEV_NAME = 56, - IFLA_PARENT_DEV_BUS_NAME = 57, - IFLA_GRO_MAX_SIZE = 58, - __IFLA_MAX = 59, -}; +struct trace_event_data_offsets_map {}; -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 trace_event_data_offsets_unmap {}; + +struct trace_event_data_offsets_iommu_error { + u32 device; + u32 driver; }; -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, +typedef void (*btf_trace_add_device_to_group)(void *, int, struct device *); + +typedef void (*btf_trace_remove_device_from_group)(void *, int, struct device *); + +typedef void (*btf_trace_attach_device_to_domain)(void *, struct device *); + +typedef void (*btf_trace_detach_device_from_domain)(void *, struct device *); + +typedef void (*btf_trace_map)(void *, long unsigned int, phys_addr_t, size_t); + +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); + +struct s390_domain { + struct iommu_domain domain; + struct list_head devices; + long unsigned int *dma_table; + spinlock_t dma_table_lock; + spinlock_t list_lock; }; -struct wwan_port; +struct s390_domain_device { + struct list_head list; + struct zpci_dev *zdev; +}; -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 cb_id { + __u32 idx; + __u32 val; }; -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 cn_msg { + struct cb_id id; + __u32 seq; + __u32 ack; + __u16 len; + __u16 flags; + __u8 data[0]; }; -struct wwan_netdev_priv { - u32 link_id; - int: 32; - u8 drv_priv[0]; +struct cn_queue_dev { + atomic_t refcnt; + unsigned char name[32]; + struct list_head queue_list; + spinlock_t queue_lock; + struct sock *nls; }; -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 cn_callback_id { + unsigned char name[32]; + struct cb_id id; }; -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; +struct cn_callback_entry { + struct list_head callback_entry; + refcount_t refcnt; + struct cn_queue_dev *pdev; + struct cn_callback_id id; + void (*callback)(struct cn_msg *, struct netlink_skb_parms *); + u32 seq; + u32 group; }; -enum { - IFLA_WWAN_UNSPEC = 0, - IFLA_WWAN_LINK_ID = 1, - __IFLA_WWAN_MAX = 2, +struct cn_dev { + struct cb_id id; + u32 seq; + u32 groups; + struct sock *nls; + struct cn_queue_dev *cbdev; }; -struct wwan_device { - unsigned int id; - struct device dev; - atomic_t port_id; - const struct wwan_ops *ops; - void *ops_ctxt; - struct dentry *debugfs_dir; +enum proc_cn_mcast_op { + PROC_CN_MCAST_LISTEN = 1, + PROC_CN_MCAST_IGNORE = 2, }; -struct cdrom_msf { - __u8 cdmsf_min0; - __u8 cdmsf_sec0; - __u8 cdmsf_frame0; - __u8 cdmsf_min1; - __u8 cdmsf_sec1; - __u8 cdmsf_frame1; +struct fork_proc_event { + __kernel_pid_t parent_pid; + __kernel_pid_t parent_tgid; + __kernel_pid_t child_pid; + __kernel_pid_t child_tgid; }; -struct cdrom_volctrl { - __u8 channel0; - __u8 channel1; - __u8 channel2; - __u8 channel3; +struct exec_proc_event { + __kernel_pid_t process_pid; + __kernel_pid_t process_tgid; }; -struct cdrom_subchnl { - __u8 cdsc_format; - __u8 cdsc_audiostatus; - __u8 cdsc_adr: 4; - __u8 cdsc_ctrl: 4; - __u8 cdsc_trk; - __u8 cdsc_ind; - union cdrom_addr cdsc_absaddr; - union cdrom_addr cdsc_reladdr; +struct id_proc_event { + __kernel_pid_t process_pid; + __kernel_pid_t process_tgid; + union { + __u32 ruid; + __u32 rgid; + } r; + union { + __u32 euid; + __u32 egid; + } e; }; -struct cdrom_read_audio { - union cdrom_addr addr; - __u8 addr_format; - int nframes; - __u8 *buf; +struct sid_proc_event { + __kernel_pid_t process_pid; + __kernel_pid_t process_tgid; }; -struct cdrom_blk { - unsigned int from; - short unsigned int len; +struct ptrace_proc_event { + __kernel_pid_t process_pid; + __kernel_pid_t process_tgid; + __kernel_pid_t tracer_pid; + __kernel_pid_t tracer_tgid; }; -struct cdrom_timed_media_change_info { - __s64 last_media_change; - __u64 media_flags; +struct comm_proc_event { + __kernel_pid_t process_pid; + __kernel_pid_t process_tgid; + char comm[16]; }; -struct dvd_layer { - __u8 book_version: 4; - __u8 book_type: 4; - __u8 min_rate: 4; - __u8 disc_size: 4; - __u8 layer_type: 4; - __u8 track_path: 1; - __u8 nlayers: 2; - char: 1; - __u8 track_density: 4; - __u8 linear_density: 4; - __u8 bca: 1; - __u32 start_sector; - __u32 end_sector; - __u32 end_sector_l0; +struct coredump_proc_event { + __kernel_pid_t process_pid; + __kernel_pid_t process_tgid; + __kernel_pid_t parent_pid; + __kernel_pid_t parent_tgid; }; -struct dvd_physical { - __u8 type; - __u8 layer_num; - struct dvd_layer layer[4]; +struct exit_proc_event { + __kernel_pid_t process_pid; + __kernel_pid_t process_tgid; + __u32 exit_code; + __u32 exit_signal; + __kernel_pid_t parent_pid; + __kernel_pid_t parent_tgid; }; -struct dvd_copyright { - __u8 type; - __u8 layer_num; - __u8 cpst; - __u8 rmi; +struct proc_event { + enum what what; + __u32 cpu; + __u64 timestamp_ns; + union { + struct { + __u32 err; + } ack; + struct fork_proc_event fork; + struct exec_proc_event exec; + struct id_proc_event id; + struct sid_proc_event sid; + struct ptrace_proc_event ptrace; + struct comm_proc_event comm; + struct coredump_proc_event coredump; + struct exit_proc_event exit; + } event_data; }; -struct dvd_disckey { - __u8 type; - unsigned int agid: 2; - __u8 value[2048]; +struct local_event { + local_lock_t lock; + __u32 count; }; -struct dvd_bca { - __u8 type; - int len; - __u8 value[188]; +struct component_ops { + int (*bind)(struct device *, struct device *, void *); + void (*unbind)(struct device *, struct device *, void *); }; -struct dvd_manufact { - __u8 type; - __u8 layer_num; - int len; - __u8 value[2048]; +struct component_master_ops { + int (*bind)(struct device *); + void (*unbind)(struct device *); }; -typedef union { - __u8 type; - struct dvd_physical physical; - struct dvd_copyright copyright; - struct dvd_disckey disckey; - struct dvd_bca bca; - struct dvd_manufact manufact; -} dvd_struct; +struct component; -typedef __u8 dvd_key[5]; +struct component_match_array { + void *data; + int (*compare)(struct device *, void *); + int (*compare_typed)(struct device *, int, void *); + void (*release)(struct device *, void *); + struct component *component; + bool duplicate; +}; -typedef __u8 dvd_challenge[10]; +struct master; -struct dvd_lu_send_agid { - __u8 type; - unsigned int agid: 2; +struct component { + struct list_head node; + struct master *master; + bool bound; + const struct component_ops *ops; + int subcomponent; + struct device *dev; }; -struct dvd_host_send_challenge { - __u8 type; - unsigned int agid: 2; - dvd_challenge chal; +struct component_match { + size_t alloc; + size_t num; + struct component_match_array *compare; }; -struct dvd_send_key { - __u8 type; - unsigned int agid: 2; - dvd_key key; +struct master { + struct list_head node; + bool bound; + const struct component_master_ops *ops; + struct device *parent; + struct component_match *match; }; -struct dvd_lu_send_challenge { - __u8 type; - unsigned int agid: 2; - dvd_challenge chal; +struct fwnode_link { + struct fwnode_handle *supplier; + struct list_head s_hook; + struct fwnode_handle *consumer; + struct list_head c_hook; }; -struct dvd_lu_send_title_key { - __u8 type; - unsigned int agid: 2; - dvd_key title_key; - int lba; - unsigned int cpm: 1; - unsigned int cp_sec: 1; - unsigned int cgms: 2; +enum dpm_order { + DPM_ORDER_NONE = 0, + DPM_ORDER_DEV_AFTER_PARENT = 1, + DPM_ORDER_PARENT_BEFORE_DEV = 2, + DPM_ORDER_DEV_LAST = 3, }; -struct dvd_lu_send_asf { - __u8 type; - unsigned int agid: 2; - unsigned int asf: 1; +struct subsys_private { + struct kset subsys; + struct kset *devices_kset; + struct list_head interfaces; + struct mutex mutex; + struct kset *drivers_kset; + struct klist klist_devices; + struct klist klist_drivers; + struct blocking_notifier_head bus_notifier; + unsigned int drivers_autoprobe: 1; + struct bus_type *bus; + struct kset glue_dirs; + struct class *class; }; -struct dvd_host_send_rpcstate { - __u8 type; - __u8 pdrc; +struct class_interface { + struct list_head node; + struct class *class; + int (*add_dev)(struct device *, struct class_interface *); + void (*remove_dev)(struct device *, struct class_interface *); }; -struct dvd_lu_send_rpcstate { - __u8 type: 2; - __u8 vra: 3; - __u8 ucca: 3; - __u8 region_mask; - __u8 rpc_scheme; +struct driver_private { + struct kobject kobj; + struct klist klist_devices; + struct klist_node knode_bus; + struct module_kobject *mkobj; + struct device_driver *driver; }; -typedef union { - __u8 type; - struct dvd_lu_send_agid lsa; - struct dvd_host_send_challenge hsc; - struct dvd_send_key lsk; - struct dvd_lu_send_challenge lsc; - struct dvd_send_key hsk; - struct dvd_lu_send_title_key lstk; - struct dvd_lu_send_asf lsasf; - struct dvd_host_send_rpcstate hrpcs; - struct dvd_lu_send_rpcstate lrpcs; -} dvd_authinfo; +struct dev_ext_attribute { + struct device_attribute attr; + void *var; +}; -struct mrw_feature_desc { - __be16 feature_code; - __u8 reserved1: 2; - __u8 feature_version: 4; - __u8 persistent: 1; - __u8 curr: 1; - __u8 add_len; - __u8 reserved2: 7; - __u8 write: 1; - __u8 reserved3; - __u8 reserved4; - __u8 reserved5; +struct device_private { + struct klist klist_children; + struct klist_node knode_parent; + struct klist_node knode_driver; + struct klist_node knode_bus; + struct klist_node knode_class; + struct list_head deferred_probe; + struct device_driver *async_driver; + char *deferred_probe_reason; + struct device *device; + u8 dead: 1; }; -struct rwrt_feature_desc { - __be16 feature_code; - __u8 reserved1: 2; - __u8 feature_version: 4; - __u8 persistent: 1; - __u8 curr: 1; - __u8 add_len; - __u32 last_lba; - __u32 block_size; - __u16 blocking; - __u8 reserved2: 7; - __u8 page_present: 1; - __u8 reserved3; +union device_attr_group_devres { + const struct attribute_group *group; + const struct attribute_group **groups; }; -typedef struct { - __be16 disc_information_length; - __u8 reserved1: 3; - __u8 erasable: 1; - __u8 border_status: 2; - __u8 disc_status: 2; - __u8 n_first_track; - __u8 n_sessions_lsb; - __u8 first_track_lsb; - __u8 last_track_lsb; - __u8 did_v: 1; - __u8 dbc_v: 1; - __u8 uru: 1; - __u8 reserved2: 2; - __u8 dbit: 1; - __u8 mrw_status: 2; - __u8 disc_type; - __u8 n_sessions_msb; - __u8 first_track_msb; - __u8 last_track_msb; - __u32 disc_id; - __u32 lead_in; - __u32 lead_out; - __u8 disc_bar_code[8]; - __u8 reserved3; - __u8 n_opc; -} disc_information; +struct class_dir { + struct kobject kobj; + struct class *class; +}; -typedef struct { - __be16 track_information_length; - __u8 track_lsb; - __u8 session_lsb; - __u8 reserved1; - __u8 reserved2: 2; - __u8 damage: 1; - __u8 copy: 1; - __u8 track_mode: 4; - __u8 rt: 1; - __u8 blank: 1; - __u8 packet: 1; - __u8 fp: 1; - __u8 data_mode: 4; - __u8 reserved3: 6; - __u8 lra_v: 1; - __u8 nwa_v: 1; - __be32 track_start; - __be32 next_writable; - __be32 free_blocks; - __be32 fixed_packet_size; - __be32 track_size; - __be32 last_rec_address; -} track_information; +struct root_device { + struct device dev; + struct module *owner; +}; -struct mode_page_header { - __be16 mode_data_length; - __u8 medium_type; - __u8 reserved1; - __u8 reserved2; - __u8 reserved3; - __be16 desc_length; +struct subsys_dev_iter { + struct klist_iter ki; + const struct device_type *type; }; -typedef struct { - int data; - int audio; - int cdi; - int xa; - long int error; -} tracktype; +struct subsys_interface { + const char *name; + struct bus_type *subsys; + struct list_head node; + int (*add_dev)(struct device *, struct subsys_interface *); + void (*remove_dev)(struct device *, struct subsys_interface *); +}; -struct cdrom_mechstat_header { - __u8 fault: 1; - __u8 changer_state: 2; - __u8 curslot: 5; - __u8 mech_state: 3; - __u8 door_open: 1; - __u8 reserved1: 4; - __u8 curlba[3]; - __u8 nslots; - __u16 slot_tablelen; +struct device_attach_data { + struct device *dev; + bool check_async; + bool want_async; + bool have_async; }; -struct cdrom_slot { - __u8 disc_present: 1; - __u8 reserved1: 6; - __u8 change: 1; - __u8 reserved2[3]; +struct class_attribute_string { + struct class_attribute attr; + char *str; }; -struct cdrom_changer_info { - struct cdrom_mechstat_header hdr; - struct cdrom_slot slots[256]; +struct class_compat { + struct kobject *kobj; }; -struct modesel_head { - __u8 reserved1; - __u8 medium; - __u8 reserved2; - __u8 block_desc_length; - __u8 density; - __u8 number_of_blocks_hi; - __u8 number_of_blocks_med; - __u8 number_of_blocks_lo; - __u8 reserved3; - __u8 block_length_hi; - __u8 block_length_med; - __u8 block_length_lo; +struct software_node { + const char *name; + const struct software_node *parent; + const struct property_entry *properties; }; -typedef struct { - __u16 report_key_length; - __u8 reserved1; - __u8 reserved2; - __u8 type_code: 2; - __u8 vra: 3; - __u8 ucca: 3; - __u8 region_mask; - __u8 rpc_scheme; - __u8 reserved3; -} rpc_state_t; +typedef void *acpi_handle; -struct cdrom_sysctl_settings { - char info[1000]; - int autoclose; - int autoeject; - int debug; - int lock; - int check; +struct irq_affinity_devres { + unsigned int count; + unsigned int irq[0]; }; -enum cdrom_print_option { - CTL_NAME = 0, - CTL_SPEED = 1, - CTL_SLOTS = 2, - CTL_CAPABILITY = 3, +struct platform_object { + struct platform_device pdev; + char name[0]; }; -struct compat_cdrom_read_audio { - union cdrom_addr addr; - u8 addr_format; - compat_int_t nframes; - compat_caddr_t buf; +struct cpu_attr { + struct device_attribute attr; + const struct cpumask * const map; }; -struct fixed_mdio_bus { - struct mii_bus *mii_bus; - struct list_head phys; +struct probe { + struct probe *next; + dev_t dev; + long unsigned int range; + struct module *owner; + kobj_probe_t *get; + int (*lock)(dev_t, void *); + void *data; }; -struct fixed_phy { - int addr; - struct phy_device *phydev; - struct fixed_phy_status status; - bool no_carrier; - int (*link_update)(struct net_device *, struct fixed_phy_status *); - struct list_head node; - struct gpio_desc *link_gpiod; +struct kobj_map { + struct probe *probes[255]; + struct mutex *lock; }; -struct socket_state_t { - u_int flags; - u_int csc_mask; - u_char Vcc; - u_char Vpp; - u_char io_irq; +struct devres_node { + struct list_head entry; + dr_release_t release; + const char *name; + size_t size; }; -typedef struct socket_state_t socket_state_t; +struct devres { + struct devres_node node; + u8 data[0]; +}; -struct pccard_io_map { - u_char map; - u_char flags; - u_short speed; - phys_addr_t start; - phys_addr_t stop; +struct devres_group { + struct devres_node node[2]; + void *id; + int color; }; -struct pccard_mem_map { - u_char map; - u_char flags; - u_short speed; - phys_addr_t static_start; - u_int card_start; - struct resource *res; +struct action_devres { + void *data; + void (*action)(void *); }; -typedef struct pccard_mem_map pccard_mem_map; +struct pages_devres { + long unsigned int addr; + unsigned int order; +}; -struct io_window_t { - u_int InUse; - u_int Config; - struct resource *res; +struct attribute_container { + struct list_head node; + struct klist containers; + struct class *class; + const struct attribute_group *grp; + struct device_attribute **attrs; + int (*match)(struct attribute_container *, struct device *); + long unsigned int flags; }; -typedef struct io_window_t io_window_t; +struct internal_container { + struct klist_node node; + struct attribute_container *cont; + struct device classdev; +}; -struct pcmcia_socket; +struct transport_container; -struct pccard_operations { - int (*init)(struct pcmcia_socket *); - int (*suspend)(struct pcmcia_socket *); - int (*get_status)(struct pcmcia_socket *, u_int *); - int (*set_socket)(struct pcmcia_socket *, socket_state_t *); - int (*set_io_map)(struct pcmcia_socket *, struct pccard_io_map *); - int (*set_mem_map)(struct pcmcia_socket *, struct pccard_mem_map *); +struct transport_class { + struct class class; + int (*setup)(struct transport_container *, struct device *, struct device *); + int (*configure)(struct transport_container *, struct device *, struct device *); + int (*remove)(struct transport_container *, struct device *, struct device *); }; -struct pccard_resource_ops; +struct transport_container { + struct attribute_container ac; + const struct attribute_group *statistics; +}; -struct pcmcia_callback; +struct anon_transport_class { + struct transport_class tclass; + struct attribute_container container; +}; -struct pcmcia_socket { - struct module *owner; - socket_state_t socket; - u_int state; - u_int suspended_state; - u_short functions; - u_short lock_count; - pccard_mem_map cis_mem; - void *cis_virt; - io_window_t io[2]; - pccard_mem_map win[4]; - struct list_head cis_cache; - size_t fake_cis_len; - u8 *fake_cis; - struct list_head socket_list; - struct completion socket_released; - unsigned int sock; - u_int features; - u_int irq_mask; - u_int map_size; - u_int io_offset; - u_int pci_irq; - struct pci_dev *cb_dev; - u8 resource_setup_done; - struct pccard_operations *ops; - struct pccard_resource_ops *resource_ops; - void *resource_data; - void (*zoom_video)(struct pcmcia_socket *, int); - int (*power_hook)(struct pcmcia_socket *, int); - void (*tune_bridge)(struct pcmcia_socket *, struct pci_bus *); - struct task_struct *thread; - struct completion thread_done; - unsigned int thread_events; - unsigned int sysfs_events; - struct mutex skt_mutex; - struct mutex ops_mutex; - spinlock_t thread_lock; - struct pcmcia_callback *callback; +struct container_dev { struct device dev; - void *driver_data; - int resume_status; + int (*offline)(struct container_dev *); }; -struct pccard_resource_ops { - int (*validate_mem)(struct pcmcia_socket *); - int (*find_io)(struct pcmcia_socket *, unsigned int, unsigned int *, unsigned int, unsigned int, struct resource **); - struct resource * (*find_mem)(long unsigned int, long unsigned int, long unsigned int, int, struct pcmcia_socket *); - int (*init)(struct pcmcia_socket *); - void (*exit)(struct pcmcia_socket *); +typedef void * (*devcon_match_fn_t)(struct fwnode_handle *, const char *, void *); + +struct reset_control; + +struct mii_bus; + +struct mdio_device { + struct device dev; + struct mii_bus *bus; + char modalias[32]; + int (*bus_match)(struct device *, struct device_driver *); + void (*device_free)(struct mdio_device *); + void (*device_remove)(struct mdio_device *); + int addr; + int flags; + struct gpio_desc *reset_gpio; + struct reset_control *reset_ctrl; + unsigned int reset_assert_delay; + unsigned int reset_deassert_delay; }; -struct pcmcia_callback { - struct module *owner; - int (*add)(struct pcmcia_socket *); - int (*remove)(struct pcmcia_socket *); - void (*requery)(struct pcmcia_socket *); - int (*validate)(struct pcmcia_socket *, unsigned int *); - int (*suspend)(struct pcmcia_socket *); - int (*early_resume)(struct pcmcia_socket *); - int (*resume)(struct pcmcia_socket *); +struct phy_c45_device_ids { + u32 devices_in_package; + u32 mmds_present; + u32 device_ids[32]; }; -enum { - PCMCIA_IOPORT_0 = 0, - PCMCIA_IOPORT_1 = 1, - PCMCIA_IOMEM_0 = 2, - PCMCIA_IOMEM_1 = 3, - PCMCIA_IOMEM_2 = 4, - PCMCIA_IOMEM_3 = 5, - PCMCIA_NUM_RESOURCES = 6, +enum phy_state { + PHY_DOWN = 0, + PHY_READY = 1, + PHY_HALTED = 2, + PHY_UP = 3, + PHY_RUNNING = 4, + PHY_NOLINK = 5, + PHY_CABLETEST = 6, }; -struct input_mt_slot { - int abs[14]; - unsigned int frame; - unsigned int key; +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_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 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; + 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 input_mt { - int trkid; - int num_slots; - int slot; - unsigned int flags; - unsigned int frame; - int *red; - struct input_mt_slot slots[0]; +struct phy_tdr_config { + u32 first; + u32 last; + u32 step; + s8 pair; }; -union input_seq_state { - struct { - short unsigned int pos; - bool mutex_acquired; - }; - void *p; +struct mdio_bus_stats { + u64_stats_t transfers; + u64_stats_t errors; + u64_stats_t writes; + u64_stats_t reads; + struct u64_stats_sync syncp; }; -struct input_devres { - struct input_dev *input; +struct mii_bus { + struct module *owner; + const char *name; + char id[61]; + void *priv; + int (*read)(struct mii_bus *, int, int); + int (*write)(struct mii_bus *, int, int, u16); + int (*reset)(struct mii_bus *); + struct mdio_bus_stats stats[32]; + struct mutex mdio_lock; + struct device *parent; + enum { + MDIOBUS_ALLOCATED = 1, + MDIOBUS_REGISTERED = 2, + MDIOBUS_UNREGISTERED = 3, + MDIOBUS_RELEASED = 4, + } state; + struct device dev; + struct mdio_device *mdio_map[32]; + u32 phy_mask; + u32 phy_ignore_ta_mask; + int irq[32]; + int reset_delay_us; + int reset_post_delay_us; + struct gpio_desc *reset_gpiod; + enum { + MDIOBUS_NO_CAP = 0, + MDIOBUS_C22 = 1, + MDIOBUS_C45 = 2, + MDIOBUS_C22_C45 = 3, + } probe_capabilities; + struct mutex shared_lock; + struct phy_package_shared *shared[32]; }; -struct input_event { - __kernel_ulong_t __sec; - __kernel_ulong_t __usec; - __u16 type; - __u16 code; - __s32 value; +struct mdio_driver_common { + struct device_driver driver; + int flags; }; -struct input_event_compat { - compat_ulong_t sec; - compat_ulong_t usec; - __u16 type; - __u16 code; - __s32 value; +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 ff_periodic_effect_compat { - __u16 waveform; - __u16 period; - __s16 magnitude; - __s16 offset; - __u16 phase; - struct ff_envelope envelope; - __u32 custom_len; - compat_uptr_t custom_data; +struct phy_package_shared { + int addr; + refcount_t refcnt; + long unsigned int flags; + size_t priv_size; + void *priv; }; -struct ff_effect_compat { - __u16 type; - __s16 id; - __u16 direction; - struct ff_trigger trigger; - struct ff_replay replay; - union { - struct ff_constant_effect constant; - struct ff_ramp_effect ramp; - struct ff_periodic_effect_compat periodic; - struct ff_condition_effect condition[2]; - struct ff_rumble_effect rumble; - } u; +struct 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 input_mt_pos { - s16 x; - s16 y; +struct software_node_ref_args { + const struct software_node *node; + unsigned int nargs; + u64 args[8]; }; -struct input_dev_poller { - void (*poll)(struct input_dev *); - unsigned int poll_interval; - unsigned int poll_interval_max; - unsigned int poll_interval_min; - struct input_dev *input; - struct delayed_work work; +struct swnode { + struct kobject kobj; + struct fwnode_handle fwnode; + const struct software_node *node; + int id; + struct ida child_ids; + struct list_head entry; + struct list_head children; + struct swnode *parent; + unsigned int allocated: 1; + unsigned int managed: 1; }; -struct input_mask { - __u32 type; - __u32 codes_size; - __u64 codes_ptr; +struct auxiliary_device_id { + char name[32]; + kernel_ulong_t driver_data; }; -struct evdev_client; - -struct evdev { - int open; - struct input_handle handle; - struct evdev_client *grab; - struct list_head client_list; - spinlock_t client_lock; - struct mutex mutex; +struct auxiliary_device { struct device dev; - struct cdev cdev; - bool exist; + const char *name; + u32 id; }; -struct evdev_client { - unsigned int head; - unsigned int tail; - unsigned int packet_head; - spinlock_t buffer_lock; - wait_queue_head_t wait; - struct fasync_struct *fasync; - struct evdev *evdev; - struct list_head node; - enum input_clock_type clk_type; - bool revoked; - long unsigned int *evmasks[32]; - unsigned int bufsize; - struct input_event buffer[0]; +struct auxiliary_driver { + int (*probe)(struct auxiliary_device *, const struct auxiliary_device_id *); + void (*remove)(struct auxiliary_device *); + void (*shutdown)(struct auxiliary_device *); + int (*suspend)(struct auxiliary_device *, pm_message_t); + int (*resume)(struct auxiliary_device *); + const char *name; + struct device_driver driver; + const struct auxiliary_device_id *id_table; }; -struct touchscreen_properties { - unsigned int max_x; - unsigned int max_y; - bool invert_x; - bool invert_y; - bool swap_x_y; +struct req { + struct req *next; + struct completion done; + int err; + const char *name; + umode_t mode; + kuid_t uid; + kgid_t gid; + struct device *dev; }; -struct i2c_board_info { - char type[20]; - short unsigned int flags; - short unsigned int addr; - const char *dev_name; - void *platform_data; - struct device_node *of_node; - struct fwnode_handle *fwnode; - const struct software_node *swnode; - const struct resource *resources; - unsigned int num_resources; - int irq; +struct firmware_fallback_config { + unsigned int force_sysfs_fallback; + unsigned int ignore_sysfs_fallback; + int old_timeout; + int loading_timeout; }; -struct i2c_devinfo { - struct list_head list; - int busnum; - struct i2c_board_info board_info; +struct firmware { + size_t size; + const u8 *data; + void *priv; }; -struct i2c_msg { - __u16 addr; - __u16 flags; - __u16 len; - __u8 *buf; +struct builtin_fw { + char *name; + void *data; + long unsigned int size; }; -union i2c_smbus_data { - __u8 byte; - __u16 word; - __u8 block[34]; +enum fw_opt { + FW_OPT_UEVENT = 1, + FW_OPT_NOWAIT = 2, + FW_OPT_USERHELPER = 4, + FW_OPT_NO_WARN = 8, + FW_OPT_NOCACHE = 16, + FW_OPT_NOFALLBACK_SYSFS = 32, + FW_OPT_FALLBACK_PLATFORM = 64, + FW_OPT_PARTIAL = 128, }; -struct i2c_adapter; +enum fw_status { + FW_STATUS_UNKNOWN = 0, + FW_STATUS_LOADING = 1, + FW_STATUS_DONE = 2, + FW_STATUS_ABORTED = 3, +}; -struct i2c_client { - short unsigned int flags; - short unsigned int addr; - char name[20]; - struct i2c_adapter *adapter; - struct device dev; - int init_irq; - int irq; - struct list_head detected; - void *devres_group_id; +struct fw_state { + struct completion completion; + enum fw_status status; }; -struct i2c_algorithm; +struct firmware_cache; -struct i2c_lock_operations; +struct fw_priv { + struct kref ref; + struct list_head list; + struct firmware_cache *fwc; + struct fw_state fw_st; + void *data; + size_t size; + size_t allocated_size; + size_t offset; + u32 opt_flags; + bool is_paged_buf; + struct page **pages; + int nr_pages; + int page_array_size; + bool need_uevent; + struct list_head pending_list; + const char *fw_name; +}; -struct i2c_bus_recovery_info; +struct firmware_cache { + spinlock_t lock; + struct list_head head; + int state; +}; -struct i2c_adapter_quirks; +struct firmware_work { + struct work_struct work; + struct module *module; + const char *name; + struct device *device; + void *context; + void (*cont)(const struct firmware *, void *); + u32 opt_flags; +}; -struct i2c_adapter { - struct module *owner; - unsigned int class; - const struct i2c_algorithm *algo; - void *algo_data; - const struct i2c_lock_operations *lock_ops; - struct rt_mutex bus_lock; - struct rt_mutex mux_lock; - int timeout; - int retries; +struct fw_sysfs { + bool nowait; struct device dev; - long unsigned int locked_flags; - int nr; - char name[48]; - struct completion dev_released; - struct mutex userspace_clients_lock; - struct list_head userspace_clients; - struct i2c_bus_recovery_info *bus_recovery_info; - const struct i2c_adapter_quirks *quirks; - struct irq_domain *host_notify_domain; - struct regulator *bus_regulator; -}; - -struct i2c_algorithm { - int (*master_xfer)(struct i2c_adapter *, struct i2c_msg *, int); - int (*master_xfer_atomic)(struct i2c_adapter *, struct i2c_msg *, int); - int (*smbus_xfer)(struct i2c_adapter *, u16, short unsigned int, char, u8, int, union i2c_smbus_data *); - int (*smbus_xfer_atomic)(struct i2c_adapter *, u16, short unsigned int, char, u8, int, union i2c_smbus_data *); - u32 (*functionality)(struct i2c_adapter *); -}; - -struct i2c_lock_operations { - void (*lock_bus)(struct i2c_adapter *, unsigned int); - int (*trylock_bus)(struct i2c_adapter *, unsigned int); - void (*unlock_bus)(struct i2c_adapter *, unsigned int); -}; - -struct pinctrl; - -struct pinctrl_state; - -struct i2c_bus_recovery_info { - int (*recover_bus)(struct i2c_adapter *); - int (*get_scl)(struct i2c_adapter *); - void (*set_scl)(struct i2c_adapter *, int); - int (*get_sda)(struct i2c_adapter *); - void (*set_sda)(struct i2c_adapter *, int); - int (*get_bus_free)(struct i2c_adapter *); - void (*prepare_recovery)(struct i2c_adapter *); - void (*unprepare_recovery)(struct i2c_adapter *); - struct gpio_desc *scl_gpiod; - struct gpio_desc *sda_gpiod; - struct pinctrl *pinctrl; - struct pinctrl_state *pins_default; - struct pinctrl_state *pins_gpio; -}; - -struct i2c_adapter_quirks { - u64 flags; - int max_num_msgs; - u16 max_write_len; - u16 max_read_len; - u16 max_comb_1st_msg_len; - u16 max_comb_2nd_msg_len; + struct fw_priv *fw_priv; + struct firmware *fw; }; -struct i2c_smbus_alert_setup { - int irq; +struct node_access_nodes { + struct device dev; + struct list_head list_node; + unsigned int access; }; -struct trace_event_raw_smbus_write { - struct trace_entry ent; - int adapter_nr; - __u16 addr; - __u16 flags; - __u8 command; - __u8 len; - __u32 protocol; - __u8 buf[34]; - char __data[0]; +struct node_attr { + struct device_attribute attr; + enum node_states state; }; -struct trace_event_raw_smbus_read { - struct trace_entry ent; - int adapter_nr; - __u16 flags; - __u16 addr; - __u8 command; - __u32 protocol; - __u8 buf[34]; - char __data[0]; +struct for_each_memory_block_cb_data { + walk_memory_blocks_func_t func; + void *arg; }; -struct trace_event_raw_smbus_reply { - struct trace_entry ent; - int adapter_nr; - __u16 addr; - __u16 flags; - __u8 command; - __u8 len; - __u32 protocol; - __u8 buf[34]; - char __data[0]; +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_smbus_result { +struct trace_event_raw_devres { struct trace_entry ent; - int adapter_nr; - __u16 addr; - __u16 flags; - __u8 read_write; - __u8 command; - __s16 res; - __u32 protocol; + 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_smbus_write {}; - -struct trace_event_data_offsets_smbus_read {}; - -struct trace_event_data_offsets_smbus_reply {}; - -struct trace_event_data_offsets_smbus_result {}; - -typedef void (*btf_trace_smbus_write)(void *, const struct i2c_adapter *, u16, short unsigned int, char, u8, int, const union i2c_smbus_data *); - -typedef void (*btf_trace_smbus_read)(void *, const struct i2c_adapter *, u16, short unsigned int, char, u8, int); - -typedef void (*btf_trace_smbus_reply)(void *, const struct i2c_adapter *, u16, short unsigned int, char, u8, int, const union i2c_smbus_data *, int); - -typedef void (*btf_trace_smbus_result)(void *, const struct i2c_adapter *, u16, short unsigned int, char, u8, int, int); - -struct lirc_scancode { - __u64 timestamp; - __u16 flags; - __u16 rc_proto; - __u32 keycode; - __u64 scancode; -}; - -enum rc_proto { - RC_PROTO_UNKNOWN = 0, - RC_PROTO_OTHER = 1, - RC_PROTO_RC5 = 2, - RC_PROTO_RC5X_20 = 3, - RC_PROTO_RC5_SZ = 4, - RC_PROTO_JVC = 5, - RC_PROTO_SONY12 = 6, - RC_PROTO_SONY15 = 7, - RC_PROTO_SONY20 = 8, - RC_PROTO_NEC = 9, - RC_PROTO_NECX = 10, - RC_PROTO_NEC32 = 11, - RC_PROTO_SANYO = 12, - RC_PROTO_MCIR2_KBD = 13, - RC_PROTO_MCIR2_MSE = 14, - RC_PROTO_RC6_0 = 15, - RC_PROTO_RC6_6A_20 = 16, - RC_PROTO_RC6_6A_24 = 17, - RC_PROTO_RC6_6A_32 = 18, - RC_PROTO_RC6_MCE = 19, - RC_PROTO_SHARP = 20, - RC_PROTO_XMP = 21, - RC_PROTO_CEC = 22, - RC_PROTO_IMON = 23, - RC_PROTO_RCMM12 = 24, - RC_PROTO_RCMM24 = 25, - RC_PROTO_RCMM32 = 26, - RC_PROTO_XBOX_DVD = 27, - RC_PROTO_MAX = 27, -}; - -struct rc_map_table { - u64 scancode; - u32 keycode; -}; - -struct rc_map { - struct rc_map_table *scan; - unsigned int size; - unsigned int len; - unsigned int alloc; - enum rc_proto rc_proto; - const char *name; - spinlock_t lock; +struct trace_event_data_offsets_devres { + u32 devname; }; -struct rc_map_list { - struct list_head list; - struct rc_map map; -}; +typedef void (*btf_trace_devres_log)(void *, struct device *, const char *, void *, const char *, size_t); -enum rc_driver_type { - RC_DRIVER_SCANCODE = 0, - RC_DRIVER_IR_RAW = 1, - RC_DRIVER_IR_RAW_TX = 2, +typedef short unsigned int __kernel_old_dev_t; + +enum { + LO_FLAGS_READ_ONLY = 1, + LO_FLAGS_AUTOCLEAR = 4, + LO_FLAGS_PARTSCAN = 8, + LO_FLAGS_DIRECT_IO = 16, +}; + +struct loop_info { + int lo_number; + __kernel_old_dev_t lo_device; + long unsigned int lo_inode; + __kernel_old_dev_t lo_rdevice; + int lo_offset; + int lo_encrypt_type; + int lo_encrypt_key_size; + int lo_flags; + char lo_name[64]; + unsigned char lo_encrypt_key[32]; + long unsigned int lo_init[2]; + char reserved[4]; +}; + +struct loop_info64 { + __u64 lo_device; + __u64 lo_inode; + __u64 lo_rdevice; + __u64 lo_offset; + __u64 lo_sizelimit; + __u32 lo_number; + __u32 lo_encrypt_type; + __u32 lo_encrypt_key_size; + __u32 lo_flags; + __u8 lo_file_name[64]; + __u8 lo_crypt_name[64]; + __u8 lo_encrypt_key[32]; + __u64 lo_init[2]; +}; + +struct loop_config { + __u32 fd; + __u32 block_size; + struct loop_info64 info; + __u64 __reserved[8]; +}; + +enum { + Lo_unbound = 0, + Lo_bound = 1, + Lo_rundown = 2, + Lo_deleting = 3, +}; + +struct loop_func_table; + +struct loop_device { + int lo_number; + atomic_t lo_refcnt; + loff_t lo_offset; + loff_t lo_sizelimit; + int lo_flags; + int (*transfer)(struct loop_device *, int, struct page *, unsigned int, struct page *, unsigned int, int, sector_t); + char lo_file_name[64]; + char lo_crypt_name[64]; + char lo_encrypt_key[32]; + int lo_encrypt_key_size; + struct loop_func_table *lo_encryption; + __u32 lo_init[2]; + kuid_t lo_key_owner; + int (*ioctl)(struct loop_device *, int, long unsigned int); + struct file *lo_backing_file; + struct file *lo_backing_virt_file; + struct block_device *lo_device; + void *key_data; + gfp_t old_gfp_mask; + spinlock_t lo_lock; + int lo_state; + spinlock_t lo_work_lock; + struct workqueue_struct *workqueue; + struct work_struct rootcg_work; + struct list_head rootcg_cmd_list; + struct list_head idle_worker_list; + struct rb_root worker_tree; + struct timer_list timer; + bool use_dio; + bool sysfs_inited; + struct request_queue *lo_queue; + struct blk_mq_tag_set tag_set; + struct gendisk *lo_disk; + struct mutex lo_mutex; + bool idr_visible; }; -struct rc_scancode_filter { - u32 data; - u32 mask; +struct loop_func_table { + int number; + int (*transfer)(struct loop_device *, int, struct page *, unsigned int, struct page *, unsigned int, int, sector_t); + int (*init)(struct loop_device *, const struct loop_info64 *); + int (*release)(struct loop_device *); + int (*ioctl)(struct loop_device *, int, long unsigned int); + struct module *owner; }; -enum rc_filter_type { - RC_FILTER_NORMAL = 0, - RC_FILTER_WAKEUP = 1, - RC_FILTER_MAX = 2, +struct loop_cmd { + 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 *blkcg_css; + struct cgroup_subsys_state *memcg_css; }; -struct ir_raw_event_ctrl; - -struct rc_dev { - struct device dev; - bool managed_alloc; - const struct attribute_group *sysfs_groups[5]; - const char *device_name; - const char *input_phys; - struct input_id input_id; - const char *driver_name; - const char *map_name; - struct rc_map rc_map; - struct mutex lock; - unsigned int minor; - struct ir_raw_event_ctrl *raw; - struct input_dev *input_dev; - enum rc_driver_type driver_type; - bool idle; - bool encode_wakeup; - u64 allowed_protocols; - u64 enabled_protocols; - u64 allowed_wakeup_protocols; - enum rc_proto wakeup_protocol; - struct rc_scancode_filter scancode_filter; - struct rc_scancode_filter scancode_wakeup_filter; - u32 scancode_mask; - u32 users; - void *priv; - spinlock_t keylock; - bool keypressed; - long unsigned int keyup_jiffies; - struct timer_list timer_keyup; - struct timer_list timer_repeat; - u32 last_keycode; - enum rc_proto last_protocol; - u64 last_scancode; - u8 last_toggle; - u32 timeout; - u32 min_timeout; - u32 max_timeout; - u32 rx_resolution; - u32 tx_resolution; - struct device lirc_dev; - struct cdev lirc_cdev; - ktime_t gap_start; - spinlock_t lirc_fh_lock; - struct list_head lirc_fh; - bool registered; - int (*change_protocol)(struct rc_dev *, u64 *); - int (*open)(struct rc_dev *); - void (*close)(struct rc_dev *); - int (*s_tx_mask)(struct rc_dev *, u32); - int (*s_tx_carrier)(struct rc_dev *, u32); - int (*s_tx_duty_cycle)(struct rc_dev *, u32); - int (*s_rx_carrier_range)(struct rc_dev *, u32, u32); - int (*tx_ir)(struct rc_dev *, unsigned int *, unsigned int); - void (*s_idle)(struct rc_dev *, bool); - int (*s_wideband_receiver)(struct rc_dev *, int); - int (*s_carrier_report)(struct rc_dev *, int); - int (*s_filter)(struct rc_dev *, struct rc_scancode_filter *); - int (*s_wakeup_filter)(struct rc_dev *, struct rc_scancode_filter *); - int (*s_timeout)(struct rc_dev *, unsigned int); -}; - -struct ir_raw_event { - union { - u32 duration; - u32 carrier; - }; - u8 duty_cycle; - unsigned int pulse: 1; - unsigned int overflow: 1; - unsigned int timeout: 1; - unsigned int carrier_report: 1; +struct 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 nec_dec { - int state; - unsigned int count; - u32 bits; - bool is_nec_x; - bool necx_repeat; +struct compat_loop_info { + compat_int_t lo_number; + compat_dev_t lo_device; + compat_ulong_t lo_inode; + compat_dev_t lo_rdevice; + compat_int_t lo_offset; + compat_int_t lo_encrypt_type; + compat_int_t lo_encrypt_key_size; + compat_int_t lo_flags; + char lo_name[64]; + unsigned char lo_encrypt_key[32]; + compat_ulong_t lo_init[2]; + char reserved[4]; }; -struct rc5_dec { - int state; - u32 bits; - unsigned int count; - bool is_rc5x; +struct dax_operations { + long int (*direct_access)(struct dax_device *, long unsigned int, long int, void **, pfn_t *); + bool (*dax_supported)(struct dax_device *, struct block_device *, int, sector_t, sector_t); + size_t (*copy_from_iter)(struct dax_device *, long unsigned int, void *, size_t, struct iov_iter *); + size_t (*copy_to_iter)(struct dax_device *, long unsigned int, void *, size_t, struct iov_iter *); + int (*zero_page_range)(struct dax_device *, long unsigned int, size_t); }; -struct rc6_dec { - int state; - u8 header; - u32 body; - bool toggle; - unsigned int count; - unsigned int wanted_bits; +struct dax_device { + struct hlist_node list; + struct inode inode; + struct cdev cdev; + const char *host; + void *private; + long unsigned int flags; + const struct dax_operations *ops; }; -struct sony_dec { - int state; - u32 bits; - unsigned int count; +enum dax_device_flags { + DAXDEV_ALIVE = 0, + DAXDEV_WRITE_CACHE = 1, + DAXDEV_SYNC = 2, }; -struct jvc_dec { - int state; - u16 bits; - u16 old_bits; - unsigned int count; - bool first; - bool toggle; +struct dax_region { + int id; + int target_node; + struct kref kref; + struct device *dev; + unsigned int align; + struct ida ida; + struct resource res; + struct device *seed; + struct device *youngest; }; -struct sanyo_dec { - int state; - unsigned int count; - u64 bits; +struct dax_mapping { + struct device dev; + int range_id; + int id; }; -struct sharp_dec { - int state; - unsigned int count; - u32 bits; - unsigned int pulse_len; +struct dev_dax_range { + long unsigned int pgoff; + struct range range; + struct dax_mapping *mapping; }; -struct mce_kbd_dec { - spinlock_t keylock; - struct timer_list rx_timeout; - int state; - u8 header; - u32 body; - unsigned int count; - unsigned int wanted_bits; +struct dev_dax { + struct dax_region *region; + struct dax_device *dax_dev; + unsigned int align; + int target_node; + bool dyn_id; + int id; + struct ida ida; + struct device dev; + struct dev_pagemap *pgmap; + int nr_range; + struct dev_dax_range *ranges; }; -struct xmp_dec { - int state; - unsigned int count; - u32 durations[16]; +enum dev_dax_subsys { + DEV_DAX_BUS = 0, + DEV_DAX_CLASS = 1, }; -struct imon_dec { - int state; - int count; - int last_chk; - unsigned int bits; - bool stick_keyboard; +struct dev_dax_data { + struct dax_region *dax_region; + struct dev_pagemap *pgmap; + enum dev_dax_subsys subsys; + resource_size_t size; + int id; }; -struct rcmm_dec { - int state; - unsigned int count; - u32 bits; +struct dax_device_driver { + struct device_driver drv; + struct list_head ids; + int match_always; + int (*probe)(struct dev_dax *); + void (*remove)(struct dev_dax *); }; -struct ir_raw_event_ctrl { +struct dax_id { struct list_head list; - struct task_struct *thread; - struct { - union { - struct __kfifo kfifo; - struct ir_raw_event *type; - const struct ir_raw_event *const_type; - char (*rectype)[0]; - struct ir_raw_event *ptr; - const struct ir_raw_event *ptr_const; - }; - struct ir_raw_event buf[512]; - } kfifo; - ktime_t last_event; - struct rc_dev *dev; - spinlock_t edge_spinlock; - struct timer_list edge_handle; - struct ir_raw_event prev_ev; - struct ir_raw_event this_ev; - u32 bpf_sample; - struct bpf_prog_array *progs; - struct nec_dec nec; - struct rc5_dec rc5; - struct rc6_dec rc6; - struct sony_dec sony; - struct jvc_dec jvc; - struct sanyo_dec sanyo; - struct sharp_dec sharp; - struct mce_kbd_dec mce_kbd; - struct xmp_dec xmp; - struct imon_dec imon; - struct rcmm_dec rcmm; -}; - -enum led_brightness { - LED_OFF = 0, - LED_ON = 1, - LED_HALF = 127, - LED_FULL = 255, -}; - -struct led_trigger {}; - -struct rc_filter_attribute { - struct device_attribute attr; - enum rc_filter_type type; - bool mask; -}; - -struct i2c_device_id { - char name[20]; - kernel_ulong_t driver_data; + char dev_name[30]; }; -struct i2c_device_identity { - u16 manufacturer_id; - u16 part_id; - u8 die_revision; +enum id_action { + ID_REMOVE = 0, + ID_ADD = 1, }; -enum i2c_alert_protocol { - I2C_PROTOCOL_SMBUS_ALERT = 0, - I2C_PROTOCOL_SMBUS_HOST_NOTIFY = 1, +struct seqcount_ww_mutex { + seqcount_t seqcount; }; -struct i2c_driver { - unsigned int class; - int (*probe)(struct i2c_client *, const struct i2c_device_id *); - int (*remove)(struct i2c_client *); - int (*probe_new)(struct i2c_client *); - void (*shutdown)(struct i2c_client *); - void (*alert)(struct i2c_client *, enum i2c_alert_protocol, unsigned int); - int (*command)(struct i2c_client *, unsigned int, void *); - struct device_driver driver; - const struct i2c_device_id *id_table; - int (*detect)(struct i2c_client *, struct i2c_board_info *); - const short unsigned int *address_list; - struct list_head clients; - u32 flags; -}; +typedef struct seqcount_ww_mutex seqcount_ww_mutex_t; -struct i2c_timings { - u32 bus_freq_hz; - u32 scl_rise_ns; - u32 scl_fall_ns; - u32 scl_int_delay_ns; - u32 sda_fall_ns; - u32 sda_hold_ns; - u32 digital_filter_width_ns; - u32 analog_filter_cutoff_freq_hz; +struct dma_buf_map { + union { + void *vaddr_iomem; + void *vaddr; + }; + bool is_iomem; }; -struct trace_event_raw_i2c_write { - struct trace_entry ent; - int adapter_nr; - __u16 msg_nr; - __u16 addr; - __u16 flags; - __u16 len; - u32 __data_loc_buf; - char __data[0]; -}; +struct dma_fence_ops; -struct trace_event_raw_i2c_read { - struct trace_entry ent; - int adapter_nr; - __u16 msg_nr; - __u16 addr; - __u16 flags; - __u16 len; - char __data[0]; +struct dma_fence { + spinlock_t *lock; + const struct dma_fence_ops *ops; + union { + struct list_head cb_list; + ktime_t timestamp; + struct callback_head rcu; + }; + u64 context; + u64 seqno; + long unsigned int flags; + struct kref refcount; + int error; }; -struct trace_event_raw_i2c_reply { - struct trace_entry ent; - int adapter_nr; - __u16 msg_nr; - __u16 addr; - __u16 flags; - __u16 len; - u32 __data_loc_buf; - char __data[0]; +struct dma_fence_ops { + bool use_64bit_seqno; + const char * (*get_driver_name)(struct dma_fence *); + const char * (*get_timeline_name)(struct dma_fence *); + bool (*enable_signaling)(struct dma_fence *); + bool (*signaled)(struct dma_fence *); + long int (*wait)(struct dma_fence *, bool, long int); + void (*release)(struct dma_fence *); + void (*fence_value_str)(struct dma_fence *, char *, int); + void (*timeline_value_str)(struct dma_fence *, char *, int); }; -struct trace_event_raw_i2c_result { - struct trace_entry ent; - int adapter_nr; - __u16 nr_msgs; - __s16 ret; - char __data[0]; +enum dma_fence_flag_bits { + DMA_FENCE_FLAG_SIGNALED_BIT = 0, + DMA_FENCE_FLAG_TIMESTAMP_BIT = 1, + DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT = 2, + DMA_FENCE_FLAG_USER_BITS = 3, }; -struct trace_event_data_offsets_i2c_write { - u32 buf; -}; +struct dma_fence_cb; -struct trace_event_data_offsets_i2c_read {}; +typedef void (*dma_fence_func_t)(struct dma_fence *, struct dma_fence_cb *); -struct trace_event_data_offsets_i2c_reply { - u32 buf; +struct dma_fence_cb { + struct list_head node; + dma_fence_func_t func; }; -struct trace_event_data_offsets_i2c_result {}; +struct dma_buf; -typedef void (*btf_trace_i2c_write)(void *, const struct i2c_adapter *, const struct i2c_msg *, int); +struct dma_buf_attachment; -typedef void (*btf_trace_i2c_read)(void *, const struct i2c_adapter *, const struct i2c_msg *, int); +struct dma_buf_ops { + bool cache_sgt_mapping; + int (*attach)(struct dma_buf *, struct dma_buf_attachment *); + void (*detach)(struct dma_buf *, struct dma_buf_attachment *); + int (*pin)(struct dma_buf_attachment *); + void (*unpin)(struct dma_buf_attachment *); + struct sg_table * (*map_dma_buf)(struct dma_buf_attachment *, enum dma_data_direction); + void (*unmap_dma_buf)(struct dma_buf_attachment *, struct sg_table *, enum dma_data_direction); + void (*release)(struct dma_buf *); + int (*begin_cpu_access)(struct dma_buf *, enum dma_data_direction); + int (*end_cpu_access)(struct dma_buf *, enum dma_data_direction); + int (*mmap)(struct dma_buf *, struct vm_area_struct *); + int (*vmap)(struct dma_buf *, struct dma_buf_map *); + void (*vunmap)(struct dma_buf *, struct dma_buf_map *); +}; -typedef void (*btf_trace_i2c_reply)(void *, const struct i2c_adapter *, const struct i2c_msg *, int); +struct dma_buf_poll_cb_t { + struct dma_fence_cb cb; + wait_queue_head_t *poll; + __poll_t active; +}; -typedef void (*btf_trace_i2c_result)(void *, const struct i2c_adapter *, int, int); +struct dma_resv; -struct i2c_cmd_arg { - unsigned int cmd; - void *arg; +struct dma_buf { + size_t size; + struct file *file; + struct list_head attachments; + const struct dma_buf_ops *ops; + struct mutex lock; + unsigned int vmapping_counter; + struct dma_buf_map vmap_ptr; + const char *exp_name; + const char *name; + spinlock_t name_lock; + struct module *owner; + struct list_head list_node; + void *priv; + struct dma_resv *resv; + wait_queue_head_t poll; + struct dma_buf_poll_cb_t cb_in; + struct dma_buf_poll_cb_t cb_out; }; -struct ir_raw_handler { - struct list_head list; - u64 protocols; - int (*decode)(struct rc_dev *, struct ir_raw_event); - int (*encode)(enum rc_proto, u32, struct ir_raw_event *, unsigned int); - u32 carrier; - u32 min_timeout; - int (*raw_register)(struct rc_dev *); - int (*raw_unregister)(struct rc_dev *); +struct dma_buf_attach_ops; + +struct dma_buf_attachment { + struct dma_buf *dmabuf; + struct device *dev; + struct list_head node; + struct sg_table *sgt; + enum dma_data_direction dir; + bool peer2peer; + const struct dma_buf_attach_ops *importer_ops; + void *importer_priv; + void *priv; }; -struct ir_raw_timings_manchester { - unsigned int leader_pulse; - unsigned int leader_space; - unsigned int clock; - unsigned int invert: 1; - unsigned int trailer_space; +struct dma_resv_list; + +struct dma_resv { + struct ww_mutex lock; + seqcount_ww_mutex_t seq; + struct dma_fence *fence_excl; + struct dma_resv_list *fence; }; -struct ir_raw_timings_pd { - unsigned int header_pulse; - unsigned int header_space; - unsigned int bit_pulse; - unsigned int bit_space[2]; - unsigned int trailer_pulse; - unsigned int trailer_space; - unsigned int msb_first: 1; +struct dma_buf_attach_ops { + bool allow_peer2peer; + void (*move_notify)(struct dma_buf_attachment *); }; -struct ir_raw_timings_pl { - unsigned int header_pulse; - unsigned int bit_space; - unsigned int bit_pulse[2]; - unsigned int trailer_space; - unsigned int msb_first: 1; +struct dma_buf_export_info { + const char *exp_name; + struct module *owner; + const struct dma_buf_ops *ops; + size_t size; + int flags; + struct dma_resv *resv; + void *priv; }; -typedef u64 (*btf_bpf_rc_repeat)(u32 *); +struct dma_resv_list { + struct callback_head rcu; + u32 shared_count; + u32 shared_max; + struct dma_fence *shared[0]; +}; -typedef u64 (*btf_bpf_rc_keydown)(u32 *, u32, u64, u32); +struct dma_buf_sync { + __u64 flags; +}; -typedef u64 (*btf_bpf_rc_pointer_rel)(u32 *, s32, s32); +struct dma_buf_list { + struct list_head head; + struct mutex lock; +}; -struct lirc_fh { - struct list_head list; - struct rc_dev *rc; - int carrier_low; - struct { - union { - struct __kfifo kfifo; - unsigned int *type; - const unsigned int *const_type; - char (*rectype)[0]; - unsigned int *ptr; - const unsigned int *ptr_const; - }; - unsigned int buf[0]; - } rawir; - struct { - union { - struct __kfifo kfifo; - struct lirc_scancode *type; - const struct lirc_scancode *const_type; - char (*rectype)[0]; - struct lirc_scancode *ptr; - const struct lirc_scancode *ptr_const; - }; - struct lirc_scancode buf[0]; - } scancodes; - wait_queue_head_t wait_poll; - u8 send_mode; - u8 rec_mode; +struct trace_event_raw_dma_fence { + struct trace_entry ent; + u32 __data_loc_driver; + u32 __data_loc_timeline; + unsigned int context; + unsigned int seqno; + char __data[0]; }; -struct pps_ktime { - __s64 sec; - __s32 nsec; - __u32 flags; +struct trace_event_data_offsets_dma_fence { + u32 driver; + u32 timeline; }; -struct pps_ktime_compat { - __s64 sec; - __s32 nsec; - __u32 flags; -}; +typedef void (*btf_trace_dma_fence_emit)(void *, struct dma_fence *); -struct pps_kinfo { - __u32 assert_sequence; - __u32 clear_sequence; - struct pps_ktime assert_tu; - struct pps_ktime clear_tu; - int current_mode; -}; +typedef void (*btf_trace_dma_fence_init)(void *, struct dma_fence *); -struct pps_kinfo_compat { - __u32 assert_sequence; - __u32 clear_sequence; - struct pps_ktime_compat assert_tu; - struct pps_ktime_compat clear_tu; - int current_mode; -} __attribute__((packed)); +typedef void (*btf_trace_dma_fence_destroy)(void *, struct dma_fence *); -struct pps_kparams { - int api_version; - int mode; - struct pps_ktime assert_off_tu; - struct pps_ktime clear_off_tu; -}; +typedef void (*btf_trace_dma_fence_enable_signal)(void *, struct dma_fence *); -struct pps_fdata { - struct pps_kinfo info; - struct pps_ktime timeout; -}; +typedef void (*btf_trace_dma_fence_signaled)(void *, struct dma_fence *); -struct pps_fdata_compat { - struct pps_kinfo_compat info; - struct pps_ktime_compat timeout; -} __attribute__((packed)); +typedef void (*btf_trace_dma_fence_wait_start)(void *, struct dma_fence *); + +typedef void (*btf_trace_dma_fence_wait_end)(void *, struct dma_fence *); -struct pps_bind_args { - int tsformat; - int edge; - int consumer; +struct default_wait_cb { + struct dma_fence_cb base; + struct task_struct *task; }; -struct pps_device; +struct dma_fence_array; -struct pps_source_info { - char name[32]; - char path[32]; - int mode; - void (*echo)(struct pps_device *, int, void *); - struct module *owner; - struct device *dev; +struct dma_fence_array_cb { + struct dma_fence_cb cb; + struct dma_fence_array *array; }; -struct pps_device { - struct pps_source_info info; - struct pps_kparams params; - __u32 assert_sequence; - __u32 clear_sequence; - struct pps_ktime assert_tu; - struct pps_ktime clear_tu; - int current_mode; - unsigned int last_ev; - wait_queue_head_t queue; - unsigned int id; - const void *lookup_cookie; - struct cdev cdev; - struct device *dev; - struct fasync_struct *async_queue; +struct dma_fence_array { + struct dma_fence base; spinlock_t lock; + unsigned int num_fences; + atomic_t num_pending; + struct dma_fence **fences; + struct irq_work work; }; -struct pps_event_time { - struct timespec64 ts_real; +struct dma_fence_chain { + struct dma_fence base; + struct dma_fence *prev; + u64 prev_seqno; + struct dma_fence *fence; + union { + struct dma_fence_cb cb; + struct irq_work work; + }; + spinlock_t lock; }; -struct ptp_clock_time { - __s64 sec; - __u32 nsec; - __u32 reserved; +struct ww_class { + atomic_long_t stamp; + struct lock_class_key acquire_key; + struct lock_class_key mutex_key; + const char *acquire_name; + const char *mutex_name; + unsigned int is_wait_die; }; -struct ptp_extts_request { - unsigned int index; - unsigned int flags; - unsigned int rsv[2]; +enum seqno_fence_condition { + SEQNO_FENCE_WAIT_GEQUAL = 0, + SEQNO_FENCE_WAIT_NONZERO = 1, }; -struct ptp_perout_request { - union { - struct ptp_clock_time start; - struct ptp_clock_time phase; - }; - struct ptp_clock_time period; - unsigned int index; - unsigned int flags; - union { - struct ptp_clock_time on; - unsigned int rsv[4]; - }; +struct seqno_fence { + struct dma_fence base; + const struct dma_fence_ops *ops; + struct dma_buf *sync_buf; + uint32_t seqno_ofs; + enum seqno_fence_condition condition; }; -enum ptp_pin_function { - PTP_PF_NONE = 0, - PTP_PF_EXTTS = 1, - PTP_PF_PEROUT = 2, - PTP_PF_PHYSYNC = 3, -}; +struct dma_heap; -struct ptp_pin_desc { - char name[64]; - unsigned int index; - unsigned int func; - unsigned int chan; - unsigned int rsv[5]; +struct dma_heap_ops { + struct dma_buf * (*allocate)(struct dma_heap *, long unsigned int, long unsigned int, long unsigned int); }; -struct ptp_extts_event { - struct ptp_clock_time t; - unsigned int index; - unsigned int flags; - unsigned int rsv[2]; +struct dma_heap { + const char *name; + const struct dma_heap_ops *ops; + void *priv; + dev_t heap_devt; + struct list_head list; + struct cdev heap_cdev; }; -struct ptp_clock_request { - enum { - PTP_CLK_REQ_EXTTS = 0, - PTP_CLK_REQ_PEROUT = 1, - PTP_CLK_REQ_PPS = 2, - } type; - union { - struct ptp_extts_request extts; - struct ptp_perout_request perout; - }; +struct dma_heap_export_info { + const char *name; + const struct dma_heap_ops *ops; + void *priv; }; -struct ptp_system_timestamp { - struct timespec64 pre_ts; - struct timespec64 post_ts; +struct dma_heap_allocation_data { + __u64 len; + __u32 fd; + __u32 fd_flags; + __u64 heap_flags; }; -struct ptp_clock_info { - struct module *owner; - char name[32]; - s32 max_adj; - int n_alarm; - int n_ext_ts; - int n_per_out; - int n_pins; - int pps; - struct ptp_pin_desc *pin_config; - int (*adjfine)(struct ptp_clock_info *, long int); - int (*adjfreq)(struct ptp_clock_info *, s32); - int (*adjphase)(struct ptp_clock_info *, s32); - int (*adjtime)(struct ptp_clock_info *, s64); - int (*gettime64)(struct ptp_clock_info *, struct timespec64 *); - int (*gettimex64)(struct ptp_clock_info *, struct timespec64 *, struct ptp_system_timestamp *); - int (*getcrosststamp)(struct ptp_clock_info *, struct system_device_crosststamp *); - int (*settime64)(struct ptp_clock_info *, const struct timespec64 *); - int (*enable)(struct ptp_clock_info *, struct ptp_clock_request *, int); - int (*verify)(struct ptp_clock_info *, unsigned int, enum ptp_pin_function, unsigned int); - long int (*do_aux_work)(struct ptp_clock_info *); -}; - -enum ptp_clock_events { - PTP_CLOCK_ALARM = 0, - PTP_CLOCK_EXTTS = 1, - PTP_CLOCK_PPS = 2, - PTP_CLOCK_PPSUSR = 3, -}; - -struct ptp_clock_event { - int type; - int index; - union { - u64 timestamp; - struct pps_event_time pps_times; - }; +struct system_heap_buffer { + struct dma_heap *heap; + struct list_head attachments; + struct mutex lock; + long unsigned int len; + struct sg_table sg_table; + int vmap_cnt; + void *vaddr; }; -struct timestamp_event_queue { - struct ptp_extts_event buf[128]; - int head; - int tail; - spinlock_t lock; +struct dma_heap_attachment { + struct device *dev; + struct sg_table *table; + struct list_head list; + bool mapped; }; -struct ptp_clock { - struct posix_clock clock; - struct device dev; - struct ptp_clock_info *info; - dev_t devid; - int index; - struct pps_device *pps_source; - long int dialed_frequency; - struct timestamp_event_queue tsevq; - struct mutex tsevq_mux; - struct mutex pincfg_mux; - wait_queue_head_t tsev_wq; - int defunct; - struct device_attribute *pin_dev_attr; - struct attribute **pin_attr; - struct attribute_group pin_attr_group; - 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 sync_file { + struct file *file; + char user_name[32]; + struct list_head sync_file_list; + wait_queue_head_t wq; + long unsigned int flags; + struct dma_fence *fence; + struct dma_fence_cb cb; }; -struct ptp_clock_caps { - int max_adj; - int n_alarm; - int n_ext_ts; - int n_per_out; - int pps; - int n_pins; - int cross_timestamping; - int adjust_phase; - int rsv[12]; +struct sync_merge_data { + char name[32]; + __s32 fd2; + __s32 fence; + __u32 flags; + __u32 pad; }; -struct ptp_sys_offset { - unsigned int n_samples; - unsigned int rsv[3]; - struct ptp_clock_time ts[51]; -}; - -struct ptp_sys_offset_extended { - unsigned int n_samples; - unsigned int rsv[3]; - struct ptp_clock_time ts[75]; -}; - -struct ptp_sys_offset_precise { - struct ptp_clock_time device; - struct ptp_clock_time sys_realtime; - struct ptp_clock_time sys_monoraw; - unsigned int rsv[4]; -}; - -enum { - POWER_SUPPLY_STATUS_UNKNOWN = 0, - POWER_SUPPLY_STATUS_CHARGING = 1, - POWER_SUPPLY_STATUS_DISCHARGING = 2, - POWER_SUPPLY_STATUS_NOT_CHARGING = 3, - POWER_SUPPLY_STATUS_FULL = 4, -}; - -enum { - POWER_SUPPLY_CHARGE_TYPE_UNKNOWN = 0, - POWER_SUPPLY_CHARGE_TYPE_NONE = 1, - POWER_SUPPLY_CHARGE_TYPE_TRICKLE = 2, - POWER_SUPPLY_CHARGE_TYPE_FAST = 3, - POWER_SUPPLY_CHARGE_TYPE_STANDARD = 4, - POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE = 5, - POWER_SUPPLY_CHARGE_TYPE_CUSTOM = 6, - POWER_SUPPLY_CHARGE_TYPE_LONGLIFE = 7, - POWER_SUPPLY_CHARGE_TYPE_BYPASS = 8, -}; - -enum { - POWER_SUPPLY_HEALTH_UNKNOWN = 0, - POWER_SUPPLY_HEALTH_GOOD = 1, - POWER_SUPPLY_HEALTH_OVERHEAT = 2, - POWER_SUPPLY_HEALTH_DEAD = 3, - POWER_SUPPLY_HEALTH_OVERVOLTAGE = 4, - POWER_SUPPLY_HEALTH_UNSPEC_FAILURE = 5, - POWER_SUPPLY_HEALTH_COLD = 6, - POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE = 7, - POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE = 8, - POWER_SUPPLY_HEALTH_OVERCURRENT = 9, - POWER_SUPPLY_HEALTH_CALIBRATION_REQUIRED = 10, - POWER_SUPPLY_HEALTH_WARM = 11, - POWER_SUPPLY_HEALTH_COOL = 12, - POWER_SUPPLY_HEALTH_HOT = 13, - POWER_SUPPLY_HEALTH_NO_BATTERY = 14, -}; - -enum { - POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0, - POWER_SUPPLY_TECHNOLOGY_NiMH = 1, - POWER_SUPPLY_TECHNOLOGY_LION = 2, - POWER_SUPPLY_TECHNOLOGY_LIPO = 3, - POWER_SUPPLY_TECHNOLOGY_LiFe = 4, - POWER_SUPPLY_TECHNOLOGY_NiCd = 5, - POWER_SUPPLY_TECHNOLOGY_LiMn = 6, -}; - -enum { - POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN = 0, - POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL = 1, - POWER_SUPPLY_CAPACITY_LEVEL_LOW = 2, - POWER_SUPPLY_CAPACITY_LEVEL_NORMAL = 3, - POWER_SUPPLY_CAPACITY_LEVEL_HIGH = 4, - POWER_SUPPLY_CAPACITY_LEVEL_FULL = 5, -}; - -enum { - POWER_SUPPLY_SCOPE_UNKNOWN = 0, - POWER_SUPPLY_SCOPE_SYSTEM = 1, - POWER_SUPPLY_SCOPE_DEVICE = 2, -}; - -enum power_supply_property { - POWER_SUPPLY_PROP_STATUS = 0, - POWER_SUPPLY_PROP_CHARGE_TYPE = 1, - POWER_SUPPLY_PROP_HEALTH = 2, - POWER_SUPPLY_PROP_PRESENT = 3, - POWER_SUPPLY_PROP_ONLINE = 4, - POWER_SUPPLY_PROP_AUTHENTIC = 5, - POWER_SUPPLY_PROP_TECHNOLOGY = 6, - POWER_SUPPLY_PROP_CYCLE_COUNT = 7, - POWER_SUPPLY_PROP_VOLTAGE_MAX = 8, - POWER_SUPPLY_PROP_VOLTAGE_MIN = 9, - POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN = 10, - POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN = 11, - POWER_SUPPLY_PROP_VOLTAGE_NOW = 12, - POWER_SUPPLY_PROP_VOLTAGE_AVG = 13, - POWER_SUPPLY_PROP_VOLTAGE_OCV = 14, - POWER_SUPPLY_PROP_VOLTAGE_BOOT = 15, - POWER_SUPPLY_PROP_CURRENT_MAX = 16, - POWER_SUPPLY_PROP_CURRENT_NOW = 17, - POWER_SUPPLY_PROP_CURRENT_AVG = 18, - POWER_SUPPLY_PROP_CURRENT_BOOT = 19, - POWER_SUPPLY_PROP_POWER_NOW = 20, - POWER_SUPPLY_PROP_POWER_AVG = 21, - POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN = 22, - POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN = 23, - POWER_SUPPLY_PROP_CHARGE_FULL = 24, - POWER_SUPPLY_PROP_CHARGE_EMPTY = 25, - POWER_SUPPLY_PROP_CHARGE_NOW = 26, - POWER_SUPPLY_PROP_CHARGE_AVG = 27, - POWER_SUPPLY_PROP_CHARGE_COUNTER = 28, - POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT = 29, - POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX = 30, - POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE = 31, - POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX = 32, - POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT = 33, - POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX = 34, - POWER_SUPPLY_PROP_CHARGE_CONTROL_START_THRESHOLD = 35, - POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD = 36, - POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR = 37, - POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT = 38, - POWER_SUPPLY_PROP_INPUT_VOLTAGE_LIMIT = 39, - POWER_SUPPLY_PROP_INPUT_POWER_LIMIT = 40, - POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN = 41, - POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN = 42, - POWER_SUPPLY_PROP_ENERGY_FULL = 43, - POWER_SUPPLY_PROP_ENERGY_EMPTY = 44, - POWER_SUPPLY_PROP_ENERGY_NOW = 45, - POWER_SUPPLY_PROP_ENERGY_AVG = 46, - POWER_SUPPLY_PROP_CAPACITY = 47, - POWER_SUPPLY_PROP_CAPACITY_ALERT_MIN = 48, - POWER_SUPPLY_PROP_CAPACITY_ALERT_MAX = 49, - POWER_SUPPLY_PROP_CAPACITY_ERROR_MARGIN = 50, - POWER_SUPPLY_PROP_CAPACITY_LEVEL = 51, - POWER_SUPPLY_PROP_TEMP = 52, - POWER_SUPPLY_PROP_TEMP_MAX = 53, - POWER_SUPPLY_PROP_TEMP_MIN = 54, - POWER_SUPPLY_PROP_TEMP_ALERT_MIN = 55, - POWER_SUPPLY_PROP_TEMP_ALERT_MAX = 56, - POWER_SUPPLY_PROP_TEMP_AMBIENT = 57, - POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MIN = 58, - POWER_SUPPLY_PROP_TEMP_AMBIENT_ALERT_MAX = 59, - POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW = 60, - POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG = 61, - POWER_SUPPLY_PROP_TIME_TO_FULL_NOW = 62, - POWER_SUPPLY_PROP_TIME_TO_FULL_AVG = 63, - POWER_SUPPLY_PROP_TYPE = 64, - POWER_SUPPLY_PROP_USB_TYPE = 65, - POWER_SUPPLY_PROP_SCOPE = 66, - POWER_SUPPLY_PROP_PRECHARGE_CURRENT = 67, - POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT = 68, - POWER_SUPPLY_PROP_CALIBRATE = 69, - POWER_SUPPLY_PROP_MANUFACTURE_YEAR = 70, - POWER_SUPPLY_PROP_MANUFACTURE_MONTH = 71, - POWER_SUPPLY_PROP_MANUFACTURE_DAY = 72, - POWER_SUPPLY_PROP_MODEL_NAME = 73, - POWER_SUPPLY_PROP_MANUFACTURER = 74, - POWER_SUPPLY_PROP_SERIAL_NUMBER = 75, -}; - -enum power_supply_type { - POWER_SUPPLY_TYPE_UNKNOWN = 0, - POWER_SUPPLY_TYPE_BATTERY = 1, - POWER_SUPPLY_TYPE_UPS = 2, - POWER_SUPPLY_TYPE_MAINS = 3, - POWER_SUPPLY_TYPE_USB = 4, - POWER_SUPPLY_TYPE_USB_DCP = 5, - POWER_SUPPLY_TYPE_USB_CDP = 6, - POWER_SUPPLY_TYPE_USB_ACA = 7, - POWER_SUPPLY_TYPE_USB_TYPE_C = 8, - POWER_SUPPLY_TYPE_USB_PD = 9, - POWER_SUPPLY_TYPE_USB_PD_DRP = 10, - POWER_SUPPLY_TYPE_APPLE_BRICK_ID = 11, - POWER_SUPPLY_TYPE_WIRELESS = 12, -}; - -enum power_supply_usb_type { - POWER_SUPPLY_USB_TYPE_UNKNOWN = 0, - POWER_SUPPLY_USB_TYPE_SDP = 1, - POWER_SUPPLY_USB_TYPE_DCP = 2, - POWER_SUPPLY_USB_TYPE_CDP = 3, - POWER_SUPPLY_USB_TYPE_ACA = 4, - POWER_SUPPLY_USB_TYPE_C = 5, - POWER_SUPPLY_USB_TYPE_PD = 6, - POWER_SUPPLY_USB_TYPE_PD_DRP = 7, - POWER_SUPPLY_USB_TYPE_PD_PPS = 8, - POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID = 9, -}; - -enum power_supply_charge_behaviour { - POWER_SUPPLY_CHARGE_BEHAVIOUR_AUTO = 0, - POWER_SUPPLY_CHARGE_BEHAVIOUR_INHIBIT_CHARGE = 1, - POWER_SUPPLY_CHARGE_BEHAVIOUR_FORCE_DISCHARGE = 2, -}; - -union power_supply_propval { - int intval; - const char *strval; -}; - -struct power_supply; - -struct power_supply_desc { - const char *name; - enum power_supply_type type; - const enum power_supply_usb_type *usb_types; - size_t num_usb_types; - const enum power_supply_property *properties; - size_t num_properties; - int (*get_property)(struct power_supply *, enum power_supply_property, union power_supply_propval *); - int (*set_property)(struct power_supply *, enum power_supply_property, const union power_supply_propval *); - int (*property_is_writeable)(struct power_supply *, enum power_supply_property); - void (*external_power_changed)(struct power_supply *); - void (*set_charged)(struct power_supply *); - bool no_thermal; - int use_for_apm; -}; - -struct power_supply { - const struct power_supply_desc *desc; - char **supplied_to; - size_t num_supplicants; - char **supplied_from; - size_t num_supplies; - struct device_node *of_node; - void *drv_data; - struct device dev; - struct work_struct changed_work; - struct delayed_work deferred_register_work; - spinlock_t changed_lock; - bool changed; - bool initialized; - bool removing; - atomic_t use_cnt; +struct sync_fence_info { + char obj_name[32]; + char driver_name[32]; + __s32 status; + __u32 flags; + __u64 timestamp_ns; }; -struct power_supply_attr { - const char *prop_name; - char attr_name[31]; - struct device_attribute dev_attr; - const char * const *text_values; - int text_values_len; +struct sync_file_info { + char name[32]; + __s32 status; + __u32 flags; + __u32 num_fences; + __u32 pad; + __u64 sync_fence_info; }; -enum power_supply_notifier_events { - PSY_EVENT_PROP_CHANGED = 0, +struct sync_timeline { + struct kref kref; + char name[32]; + u64 context; + int value; + struct rb_root pt_tree; + struct list_head pt_list; + spinlock_t lock; + struct list_head sync_timeline_list; }; -struct power_supply_config { - struct device_node *of_node; - struct fwnode_handle *fwnode; - void *drv_data; - const struct attribute_group **attr_grp; - char **supplied_to; - size_t num_supplicants; +struct sync_pt { + struct dma_fence base; + struct list_head link; + struct rb_node node; }; -struct power_supply_battery_ocv_table { - int ocv; - int capacity; +struct trace_event_raw_sync_timeline { + struct trace_entry ent; + u32 __data_loc_name; + u32 value; + char __data[0]; }; -struct power_supply_resistance_temp_table { - int temp; - int resistance; -}; - -struct power_supply_vbat_ri_table { - int vbat_uv; - int ri_uohm; -}; - -struct power_supply_maintenance_charge_table { - int charge_current_max_ua; - int charge_voltage_max_uv; - int charge_safety_timer_minutes; -}; - -struct power_supply_battery_info { - unsigned int technology; - int energy_full_design_uwh; - int charge_full_design_uah; - int voltage_min_design_uv; - int voltage_max_design_uv; - int tricklecharge_current_ua; - int precharge_current_ua; - int precharge_voltage_max_uv; - int charge_term_current_ua; - int charge_restart_voltage_uv; - int overvoltage_limit_uv; - int constant_charge_current_max_ua; - int constant_charge_voltage_max_uv; - struct power_supply_maintenance_charge_table *maintenance_charge; - int maintenance_charge_size; - int alert_low_temp_charge_current_ua; - int alert_low_temp_charge_voltage_uv; - int alert_high_temp_charge_current_ua; - int alert_high_temp_charge_voltage_uv; - int factory_internal_resistance_uohm; - int factory_internal_resistance_charging_uohm; - int ocv_temp[20]; - int temp_ambient_alert_min; - int temp_ambient_alert_max; - int temp_alert_min; - int temp_alert_max; - int temp_min; - int temp_max; - struct power_supply_battery_ocv_table *ocv_table[20]; - int ocv_table_size[20]; - struct power_supply_resistance_temp_table *resist_table; - int resist_table_size; - struct power_supply_vbat_ri_table *vbat2ri_discharging; - int vbat2ri_discharging_size; - struct power_supply_vbat_ri_table *vbat2ri_charging; - int vbat2ri_charging_size; - int bti_resistance_ohm; - int bti_resistance_tolerance; -}; - -struct psy_am_i_supplied_data { - struct power_supply *psy; - unsigned int count; +struct trace_event_data_offsets_sync_timeline { + u32 name; }; -struct psy_get_supplier_prop_data { - struct power_supply *psy; - enum power_supply_property psp; - union power_supply_propval *val; +typedef void (*btf_trace_sync_timeline)(void *, struct sync_timeline *); + +struct sw_sync_create_fence_data { + __u32 value; + char name[32]; + __s32 fence; }; -struct samsung_sdi_battery { - char *compatible; - char *name; - struct power_supply_battery_info info; +struct udmabuf_create { + __u32 memfd; + __u32 flags; + __u64 offset; + __u64 size; }; -struct watchdog_info { - __u32 options; - __u32 firmware_version; - __u8 identity[32]; +struct udmabuf_create_item { + __u32 memfd; + __u32 __pad; + __u64 offset; + __u64 size; }; -struct watchdog_device; +struct udmabuf_create_list { + __u32 flags; + __u32 count; + struct udmabuf_create_item list[0]; +}; -struct watchdog_ops { - struct module *owner; - int (*start)(struct watchdog_device *); - int (*stop)(struct watchdog_device *); - int (*ping)(struct watchdog_device *); - unsigned int (*status)(struct watchdog_device *); - int (*set_timeout)(struct watchdog_device *, unsigned int); - int (*set_pretimeout)(struct watchdog_device *, unsigned int); - unsigned int (*get_timeleft)(struct watchdog_device *); - int (*restart)(struct watchdog_device *, long unsigned int, void *); - long int (*ioctl)(struct watchdog_device *, unsigned int, long unsigned int); +struct udmabuf { + long unsigned int pagecount; + struct page **pages; + struct sg_table *sg; + struct miscdevice *device; }; -struct watchdog_governor; +enum sam_status { + SAM_STAT_GOOD = 0, + SAM_STAT_CHECK_CONDITION = 2, + SAM_STAT_CONDITION_MET = 4, + SAM_STAT_BUSY = 8, + SAM_STAT_INTERMEDIATE = 16, + SAM_STAT_INTERMEDIATE_CONDITION_MET = 20, + SAM_STAT_RESERVATION_CONFLICT = 24, + SAM_STAT_COMMAND_TERMINATED = 34, + SAM_STAT_TASK_SET_FULL = 40, + SAM_STAT_ACA_ACTIVE = 48, + SAM_STAT_TASK_ABORTED = 64, +}; -struct watchdog_core_data; +struct scsi_sense_hdr { + u8 response_code; + u8 sense_key; + u8 asc; + u8 ascq; + u8 byte4; + u8 byte5; + u8 byte6; + u8 additional_length; +}; -struct watchdog_device { - int id; - struct device *parent; - const struct attribute_group **groups; - const struct watchdog_info *info; - const struct watchdog_ops *ops; - const struct watchdog_governor *gov; - unsigned int bootstatus; - unsigned int timeout; - unsigned int pretimeout; - unsigned int min_timeout; - unsigned int max_timeout; - unsigned int min_hw_heartbeat_ms; - unsigned int max_hw_heartbeat_ms; - struct notifier_block reboot_nb; - struct notifier_block restart_nb; - struct notifier_block pm_nb; - void *driver_data; - struct watchdog_core_data *wd_data; - long unsigned int status; - struct list_head deferred; +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, }; -struct watchdog_governor { - const char name[20]; - void (*pretimeout)(struct watchdog_device *); +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, }; -struct watchdog_core_data { - struct device dev; - struct cdev cdev; - struct watchdog_device *wdd; - struct mutex lock; - ktime_t last_keepalive; - ktime_t last_hw_keepalive; - ktime_t open_deadline; - struct hrtimer timer; - struct kthread_work work; - long unsigned int status; +typedef __u64 blist_flags_t; + +enum scsi_device_state { + SDEV_CREATED = 1, + SDEV_RUNNING = 2, + SDEV_CANCEL = 3, + SDEV_DEL = 4, + SDEV_QUIESCE = 5, + SDEV_OFFLINE = 6, + SDEV_TRANSPORT_OFFLINE = 7, + SDEV_BLOCK = 8, + SDEV_CREATED_BLOCK = 9, }; -struct mdp_device_descriptor_s { - __u32 number; - __u32 major; - __u32 minor; - __u32 raid_disk; - __u32 state; - __u32 reserved[27]; +struct scsi_vpd { + struct callback_head rcu; + int len; + unsigned char data[0]; }; -typedef struct mdp_device_descriptor_s mdp_disk_t; +struct Scsi_Host; -struct mdp_superblock_s { - __u32 md_magic; - __u32 major_version; - __u32 minor_version; - __u32 patch_version; - __u32 gvalid_words; - __u32 set_uuid0; - __u32 ctime; - __u32 level; - __u32 size; - __u32 nr_disks; - __u32 raid_disks; - __u32 md_minor; - __u32 not_persistent; - __u32 set_uuid1; - __u32 set_uuid2; - __u32 set_uuid3; - __u32 gstate_creserved[16]; - __u32 utime; - __u32 state; - __u32 active_disks; - __u32 working_disks; - __u32 failed_disks; - __u32 spare_disks; - __u32 sb_csum; - __u32 events_hi; - __u32 events_lo; - __u32 cp_events_hi; - __u32 cp_events_lo; - __u32 recovery_cp; - __u64 reshape_position; - __u32 new_level; - __u32 delta_disks; - __u32 new_layout; - __u32 new_chunk; - __u32 gstate_sreserved[14]; - __u32 layout; - __u32 chunk_size; - __u32 root_pv; - __u32 root_block; - __u32 pstate_reserved[60]; - mdp_disk_t disks[27]; - __u32 reserved[0]; - mdp_disk_t this_disk; -}; +struct scsi_target; -typedef struct mdp_superblock_s mdp_super_t; +struct scsi_device_handler; -struct mdp_superblock_1 { - __le32 magic; - __le32 major_version; - __le32 feature_map; - __le32 pad0; - __u8 set_uuid[16]; - char set_name[32]; - __le64 ctime; - __le32 level; - __le32 layout; - __le64 size; - __le32 chunksize; - __le32 raid_disks; - union { - __le32 bitmap_offset; - struct { - __le16 offset; - __le16 size; - } ppl; - }; - __le32 new_level; - __le64 reshape_position; - __le32 delta_disks; - __le32 new_layout; - __le32 new_chunk; - __le32 new_offset; - __le64 data_offset; - __le64 data_size; - __le64 super_offset; - union { - __le64 recovery_offset; - __le64 journal_tail; - }; - __le32 dev_number; - __le32 cnt_corrected_read; - __u8 device_uuid[16]; - __u8 devflags; - __u8 bblog_shift; - __le16 bblog_size; - __le32 bblog_offset; - __le64 utime; - __le64 events; - __le64 resync_offset; - __le32 sb_csum; - __le32 max_dev; - __u8 pad3[32]; - __le16 dev_roles[0]; +struct scsi_device { + struct Scsi_Host *host; + struct request_queue *request_queue; + struct list_head siblings; + struct list_head same_target_siblings; + struct sbitmap budget_map; + atomic_t device_blocked; + atomic_t restarts; + spinlock_t list_lock; + struct list_head starved_entry; + short unsigned int queue_depth; + short unsigned int max_queue_depth; + short unsigned int last_queue_full_depth; + short unsigned int last_queue_full_count; + long unsigned int last_queue_full_time; + long unsigned int queue_ramp_up_period; + long unsigned int last_queue_ramp_up; + unsigned int id; + unsigned int channel; + u64 lun; + unsigned int manufacturer; + unsigned int sector_size; + void *hostdata; + unsigned char type; + char scsi_level; + char inq_periph_qual; + struct mutex inquiry_mutex; + unsigned char inquiry_len; + unsigned char *inquiry; + const char *vendor; + const char *model; + const char *rev; + struct scsi_vpd *vpd_pg0; + struct scsi_vpd *vpd_pg83; + struct scsi_vpd *vpd_pg80; + struct scsi_vpd *vpd_pg89; + struct scsi_target *sdev_target; + blist_flags_t sdev_bflags; + unsigned int eh_timeout; + unsigned int removable: 1; + unsigned int changed: 1; + unsigned int busy: 1; + unsigned int lockable: 1; + unsigned int locked: 1; + unsigned int borken: 1; + unsigned int disconnect: 1; + unsigned int soft_reset: 1; + unsigned int sdtr: 1; + unsigned int wdtr: 1; + unsigned int ppr: 1; + unsigned int tagged_supported: 1; + unsigned int simple_tags: 1; + unsigned int was_reset: 1; + unsigned int expecting_cc_ua: 1; + unsigned int use_10_for_rw: 1; + unsigned int use_10_for_ms: 1; + unsigned int set_dbd_for_ms: 1; + unsigned int no_report_opcodes: 1; + unsigned int no_write_same: 1; + unsigned int use_16_for_rw: 1; + unsigned int skip_ms_page_8: 1; + unsigned int skip_ms_page_3f: 1; + unsigned int skip_vpd_pages: 1; + unsigned int try_vpd_pages: 1; + unsigned int use_192_bytes_for_3f: 1; + unsigned int no_start_on_add: 1; + unsigned int allow_restart: 1; + unsigned int manage_start_stop: 1; + unsigned int start_stop_pwr_cond: 1; + unsigned int no_uld_attach: 1; + unsigned int select_no_atn: 1; + unsigned int fix_capacity: 1; + unsigned int guess_capacity: 1; + unsigned int retry_hwerror: 1; + unsigned int last_sector_bug: 1; + unsigned int no_read_disc_info: 1; + unsigned int no_read_capacity_16: 1; + unsigned int try_rc_10_first: 1; + unsigned int security_supported: 1; + unsigned int is_visible: 1; + unsigned int wce_default_on: 1; + unsigned int no_dif: 1; + unsigned int broken_fua: 1; + unsigned int lun_in_cdb: 1; + unsigned int unmap_limit_for_ws: 1; + unsigned int rpm_autosuspend: 1; + unsigned int ignore_media_change: 1; + unsigned int silence_suspend: 1; + bool offline_already; + atomic_t disk_events_disable_depth; + long unsigned int supported_events[1]; + long unsigned int pending_events[1]; + struct list_head event_list; + struct work_struct event_work; + unsigned int max_device_blocked; + atomic_t iorequest_cnt; + atomic_t iodone_cnt; + atomic_t ioerr_cnt; + struct device sdev_gendev; + struct device sdev_dev; + struct execute_work ew; + struct work_struct requeue_work; + struct scsi_device_handler *handler; + void *handler_data; + size_t dma_drain_len; + void *dma_drain_buf; + unsigned int sg_timeout; + unsigned int sg_reserved_size; + struct bsg_device *bsg_dev; + unsigned char access_state; + struct mutex state_mutex; + enum scsi_device_state sdev_state; + struct task_struct *quiesced_by; + long unsigned int sdev_data[0]; }; -struct mdu_version_s { - int major; - int minor; - int patchlevel; +enum scsi_host_state { + SHOST_CREATED = 1, + SHOST_RUNNING = 2, + SHOST_CANCEL = 3, + SHOST_DEL = 4, + SHOST_RECOVERY = 5, + SHOST_CANCEL_RECOVERY = 6, + SHOST_DEL_RECOVERY = 7, }; -typedef struct mdu_version_s mdu_version_t; - -struct mdu_array_info_s { - int major_version; - int minor_version; - int patch_version; - unsigned int ctime; - int level; - int size; - int nr_disks; - int raid_disks; - int md_minor; - int not_persistent; - unsigned int utime; - int state; - int active_disks; - int working_disks; - int failed_disks; - int spare_disks; - int layout; - int chunk_size; -}; +struct scsi_host_template; -typedef struct mdu_array_info_s mdu_array_info_t; +struct scsi_transport_template; -struct mdu_disk_info_s { - int number; - int major; - int minor; - int raid_disk; - int state; +struct Scsi_Host { + struct list_head __devices; + struct list_head __targets; + struct list_head starved_list; + spinlock_t default_lock; + spinlock_t *host_lock; + struct mutex scan_mutex; + struct list_head eh_abort_list; + struct list_head eh_cmd_q; + struct task_struct *ehandler; + struct completion *eh_action; + wait_queue_head_t host_wait; + struct scsi_host_template *hostt; + struct scsi_transport_template *transportt; + struct blk_mq_tag_set tag_set; + atomic_t host_blocked; + unsigned int host_failed; + unsigned int host_eh_scheduled; + unsigned int host_no; + int eh_deadline; + long unsigned int last_reset; + unsigned int max_channel; + unsigned int max_id; + u64 max_lun; + unsigned int unique_id; + short unsigned int max_cmd_len; + int this_id; + int can_queue; + short int cmd_per_lun; + 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; + unsigned int nr_hw_queues; + unsigned int nr_maps; + unsigned int active_mode: 2; + unsigned int host_self_blocked: 1; + unsigned int reverse_ordering: 1; + unsigned int tmf_in_progress: 1; + unsigned int async_scan: 1; + unsigned int eh_noresume: 1; + unsigned int no_write_same: 1; + unsigned int host_tagset: 1; + unsigned int short_inquiry: 1; + unsigned int no_scsi2_lun_in_cdb: 1; + char work_q_name[20]; + struct workqueue_struct *work_q; + struct workqueue_struct *tmf_work_q; + unsigned int max_host_blocked; + unsigned int prot_capabilities; + unsigned char prot_guard_type; + long unsigned int base; + long unsigned int io_port; + unsigned char n_io_port; + unsigned char dma_channel; + unsigned int irq; + enum scsi_host_state shost_state; + struct device shost_gendev; + struct device shost_dev; + void *shost_data; + struct device *dma_dev; + long unsigned int hostdata[0]; }; -typedef struct mdu_disk_info_s mdu_disk_info_t; +enum scsi_target_state { + STARGET_CREATED = 1, + STARGET_RUNNING = 2, + STARGET_REMOVE = 3, + STARGET_CREATED_REMOVE = 4, + STARGET_DEL = 5, +}; -struct mdu_bitmap_file_s { - char pathname[4096]; +struct scsi_target { + struct scsi_device *starget_sdev_user; + struct list_head siblings; + struct list_head devices; + struct device dev; + struct kref reap_ref; + unsigned int channel; + unsigned int id; + unsigned int create: 1; + unsigned int single_lun: 1; + unsigned int pdt_1f_for_no_lun: 1; + unsigned int no_report_luns: 1; + unsigned int expecting_lun_change: 1; + atomic_t target_busy; + atomic_t target_blocked; + unsigned int can_queue; + unsigned int max_target_blocked; + char scsi_level; + enum scsi_target_state state; + void *hostdata; + long unsigned int starget_data[0]; }; -typedef struct mdu_bitmap_file_s mdu_bitmap_file_t; +struct scsi_host_cmd_pool; -struct mddev; +struct scsi_cmnd; -struct md_rdev; +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 md_cluster_operations { - int (*join)(struct mddev *, int); - int (*leave)(struct mddev *); - int (*slot_number)(struct mddev *); - int (*resync_info_update)(struct mddev *, sector_t, sector_t); - void (*resync_info_get)(struct mddev *, sector_t *, sector_t *); - int (*metadata_update_start)(struct mddev *); - int (*metadata_update_finish)(struct mddev *); - void (*metadata_update_cancel)(struct mddev *); - int (*resync_start)(struct mddev *); - int (*resync_finish)(struct mddev *); - int (*area_resyncing)(struct mddev *, int, sector_t, sector_t); - int (*add_new_disk)(struct mddev *, struct md_rdev *); - void (*add_new_disk_cancel)(struct mddev *); - int (*new_disk_ack)(struct mddev *, bool); - int (*remove_disk)(struct mddev *, struct md_rdev *); - void (*load_bitmaps)(struct mddev *, int); - int (*gather_bitmaps)(struct md_rdev *); - int (*resize_bitmaps)(struct mddev *, sector_t, sector_t); - int (*lock_all_bitmaps)(struct mddev *); - void (*unlock_all_bitmaps)(struct mddev *); - void (*update_size)(struct mddev *, sector_t); +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 md_cluster_info; +struct scsi_data_buffer { + struct sg_table table; + unsigned int length; +}; -struct md_personality; +struct scsi_pointer { + char *ptr; + int this_residual; + struct scatterlist *buffer; + int buffers_residual; + dma_addr_t dma_handle; + volatile int Status; + volatile int Message; + volatile int have_data_in; + volatile int sent_command; + volatile int phase; +}; -struct md_thread; +struct scsi_cmnd { + struct scsi_request req; + struct scsi_device *device; + struct list_head eh_entry; + 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; + unsigned char prot_op; + unsigned char prot_type; + unsigned char prot_flags; + short unsigned int cmd_len; + enum dma_data_direction sc_data_direction; + unsigned char *cmnd; + struct scsi_data_buffer sdb; + struct scsi_data_buffer *prot_sdb; + unsigned int underflow; + unsigned int transfersize; + unsigned char *sense_buffer; + void (*scsi_done)(struct scsi_cmnd *); + struct scsi_pointer SCp; + unsigned char *host_scribble; + int result; + int flags; + long unsigned int state; + unsigned int extra_len; +}; -struct bitmap; +enum scsi_prot_operations { + SCSI_PROT_NORMAL = 0, + SCSI_PROT_READ_INSERT = 1, + SCSI_PROT_WRITE_STRIP = 2, + SCSI_PROT_READ_STRIP = 3, + SCSI_PROT_WRITE_INSERT = 4, + SCSI_PROT_READ_PASS = 5, + SCSI_PROT_WRITE_PASS = 6, +}; -struct mddev { - void *private; - struct md_personality *pers; - dev_t unit; - int md_minor; - struct list_head disks; - long unsigned int flags; - long unsigned int sb_flags; - int suspended; - atomic_t active_io; - int ro; - int sysfs_active; - struct gendisk *gendisk; - struct kobject kobj; - int hold_active; - int major_version; - int minor_version; - int patch_version; - int persistent; - int external; - char metadata_type[17]; - int chunk_sectors; - time64_t ctime; - time64_t utime; - int level; - int layout; - char clevel[16]; - int raid_disks; - int max_disks; - sector_t dev_sectors; - sector_t array_sectors; - int external_size; - __u64 events; - int can_decrease_events; - char uuid[16]; - sector_t reshape_position; - int delta_disks; - int new_level; - int new_layout; - int new_chunk_sectors; - int reshape_backwards; - struct md_thread *thread; - struct md_thread *sync_thread; - char *last_sync_action; - sector_t curr_resync; - sector_t curr_resync_completed; - long unsigned int resync_mark; - sector_t resync_mark_cnt; - sector_t curr_mark_cnt; - sector_t resync_max_sectors; - atomic64_t resync_mismatches; - sector_t suspend_lo; - sector_t suspend_hi; - int sync_speed_min; - int sync_speed_max; - int parallel_resync; - int ok_start_degraded; - long unsigned int recovery; - int recovery_disabled; - int in_sync; - struct mutex open_mutex; - struct mutex reconfig_mutex; - atomic_t active; - atomic_t openers; - int changed; - int degraded; - atomic_t recovery_active; - wait_queue_head_t recovery_wait; - sector_t recovery_cp; - sector_t resync_min; - sector_t resync_max; - struct kernfs_node *sysfs_state; - struct kernfs_node *sysfs_action; - struct kernfs_node *sysfs_completed; - struct kernfs_node *sysfs_degraded; - struct kernfs_node *sysfs_level; - struct work_struct del_work; - spinlock_t lock; - wait_queue_head_t sb_wait; - atomic_t pending_writes; - unsigned int safemode; - unsigned int safemode_delay; - struct timer_list safemode_timer; - struct percpu_ref writes_pending; - int sync_checkers; - struct request_queue *queue; - struct bitmap *bitmap; - struct { - struct file *file; - loff_t offset; - long unsigned int space; - loff_t default_offset; - long unsigned int default_space; - struct mutex mutex; - long unsigned int chunksize; - long unsigned int daemon_sleep; - long unsigned int max_write_behind; - int external; - int nodes; - char cluster_name[64]; - } bitmap_info; - atomic_t max_corr_read_errors; - struct list_head all_mddevs; - const struct attribute_group *to_remove; - struct bio_set bio_set; - struct bio_set sync_set; - struct bio_set io_acct_set; - struct bio *flush_bio; - atomic_t flush_pending; - ktime_t start_flush; - ktime_t prev_flush_start; - struct work_struct flush_work; - struct work_struct event_work; - mempool_t *serial_info_pool; - void (*sync_super)(struct mddev *, struct md_rdev *); - struct md_cluster_info *cluster_info; - unsigned int good_device_nr; - unsigned int noio_flag; - bool has_superblocks: 1; - bool fail_last_dev: 1; - bool serialize_policy: 1; +struct scsi_driver { + struct device_driver gendrv; + void (*rescan)(struct device *); + blk_status_t (*init_command)(struct scsi_cmnd *); + void (*uninit_command)(struct scsi_cmnd *); + int (*done)(struct scsi_cmnd *); + int (*eh_action)(struct scsi_cmnd *, int); + void (*eh_reset)(struct scsi_cmnd *); }; -struct serial_in_rdev; +struct trace_event_raw_scsi_dispatch_cmd_start { + struct trace_entry ent; + unsigned int host_no; + unsigned int channel; + unsigned int id; + unsigned int lun; + unsigned int opcode; + unsigned int cmd_len; + unsigned int data_sglen; + unsigned int prot_sglen; + unsigned char prot_op; + u32 __data_loc_cmnd; + char __data[0]; +}; -struct md_rdev { - struct list_head same_set; - sector_t sectors; - struct mddev *mddev; - int last_events; - struct block_device *meta_bdev; - struct block_device *bdev; - struct page *sb_page; - struct page *bb_page; - int sb_loaded; - __u64 sb_events; - sector_t data_offset; - sector_t new_data_offset; - sector_t sb_start; - int sb_size; - int preferred_minor; - struct kobject kobj; - long unsigned int flags; - wait_queue_head_t blocked_wait; - int desc_nr; - int raid_disk; - int new_raid_disk; - int saved_raid_disk; - union { - sector_t recovery_offset; - sector_t journal_tail; - }; - atomic_t nr_pending; - atomic_t read_errors; - time64_t last_read_error; - atomic_t corrected_errors; - struct serial_in_rdev *serial; - struct work_struct del_work; - struct kernfs_node *sysfs_state; - struct kernfs_node *sysfs_unack_badblocks; - struct kernfs_node *sysfs_badblocks; - struct badblocks badblocks; - struct { - short int offset; - unsigned int size; - sector_t sector; - } ppl; +struct trace_event_raw_scsi_dispatch_cmd_error { + struct trace_entry ent; + unsigned int host_no; + unsigned int channel; + unsigned int id; + unsigned int lun; + int rtn; + unsigned int opcode; + unsigned int cmd_len; + unsigned int data_sglen; + unsigned int prot_sglen; + unsigned char prot_op; + u32 __data_loc_cmnd; + char __data[0]; +}; + +struct trace_event_raw_scsi_cmd_done_timeout_template { + struct trace_entry ent; + unsigned int host_no; + unsigned int channel; + unsigned int id; + unsigned int lun; + int result; + unsigned int opcode; + unsigned int cmd_len; + unsigned int data_sglen; + unsigned int prot_sglen; + unsigned char prot_op; + u32 __data_loc_cmnd; + char __data[0]; }; -struct serial_in_rdev { - struct rb_root_cached serial_rb; - spinlock_t serial_lock; - wait_queue_head_t serial_io_wait; +struct trace_event_raw_scsi_eh_wakeup { + struct trace_entry ent; + unsigned int host_no; + char __data[0]; }; -enum flag_bits { - Faulty = 0, - In_sync = 1, - Bitmap_sync = 2, - WriteMostly = 3, - AutoDetected = 4, - Blocked = 5, - WriteErrorSeen = 6, - FaultRecorded = 7, - BlockedBadBlocks = 8, - WantReplacement = 9, - Replacement = 10, - Candidate = 11, - Journal = 12, - ClusterRemove = 13, - RemoveSynchronized = 14, - ExternalBbl = 15, - FailFast = 16, - LastDev = 17, - CollisionCheck = 18, +struct trace_event_data_offsets_scsi_dispatch_cmd_start { + u32 cmnd; }; -enum mddev_flags { - MD_ARRAY_FIRST_USE = 0, - MD_CLOSING = 1, - MD_JOURNAL_CLEAN = 2, - MD_HAS_JOURNAL = 3, - MD_CLUSTER_RESYNC_LOCKED = 4, - MD_FAILFAST_SUPPORTED = 5, - MD_HAS_PPL = 6, - MD_HAS_MULTIPLE_PPLS = 7, - MD_ALLOW_SB_UPDATE = 8, - MD_UPDATING_SB = 9, - MD_NOT_READY = 10, - MD_BROKEN = 11, +struct trace_event_data_offsets_scsi_dispatch_cmd_error { + u32 cmnd; }; -enum mddev_sb_flags { - MD_SB_CHANGE_DEVS = 0, - MD_SB_CHANGE_CLEAN = 1, - MD_SB_CHANGE_PENDING = 2, - MD_SB_NEED_REWRITE = 3, +struct trace_event_data_offsets_scsi_cmd_done_timeout_template { + u32 cmnd; }; -struct md_personality { - char *name; - int level; +struct trace_event_data_offsets_scsi_eh_wakeup {}; + +typedef void (*btf_trace_scsi_dispatch_cmd_start)(void *, struct scsi_cmnd *); + +typedef void (*btf_trace_scsi_dispatch_cmd_error)(void *, struct scsi_cmnd *, int); + +typedef void (*btf_trace_scsi_dispatch_cmd_done)(void *, struct scsi_cmnd *); + +typedef void (*btf_trace_scsi_dispatch_cmd_timeout)(void *, struct scsi_cmnd *); + +typedef void (*btf_trace_scsi_eh_wakeup)(void *, struct Scsi_Host *); + +struct scsi_transport_template { + struct transport_container host_attrs; + struct transport_container target_attrs; + struct transport_container device_attrs; + int (*user_scan)(struct Scsi_Host *, uint, uint, u64); + int device_size; + int device_private_offset; + int target_size; + int target_private_offset; + int host_size; + unsigned int create_work_queue: 1; + void (*eh_strategy_handler)(struct Scsi_Host *); +}; + +struct scsi_host_busy_iter_data { + bool (*fn)(struct scsi_cmnd *, void *, bool); + void *priv; +}; + +struct cdrom_device_ops; + +struct cdrom_device_info { + const struct cdrom_device_ops *ops; struct list_head list; - struct module *owner; - bool (*make_request)(struct mddev *, struct bio *); - int (*run)(struct mddev *); - int (*start)(struct mddev *); - void (*free)(struct mddev *, void *); - void (*status)(struct seq_file *, struct mddev *); - void (*error_handler)(struct mddev *, struct md_rdev *); - int (*hot_add_disk)(struct mddev *, struct md_rdev *); - int (*hot_remove_disk)(struct mddev *, struct md_rdev *); - int (*spare_active)(struct mddev *); - sector_t (*sync_request)(struct mddev *, sector_t, int *); - int (*resize)(struct mddev *, sector_t); - sector_t (*size)(struct mddev *, sector_t, int); - int (*check_reshape)(struct mddev *); - int (*start_reshape)(struct mddev *); - void (*finish_reshape)(struct mddev *); - void (*update_reshape_pos)(struct mddev *); - void (*quiesce)(struct mddev *, int); - void * (*takeover)(struct mddev *); - int (*change_consistency_policy)(struct mddev *, const char *); + 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 md_thread { - void (*run)(struct md_thread *); - struct mddev *mddev; - wait_queue_head_t wqueue; - long unsigned int flags; - struct task_struct *tsk; - long unsigned int timeout; - void *private; +struct cdrom_msf0 { + __u8 minute; + __u8 second; + __u8 frame; }; -struct bitmap_page; +union cdrom_addr { + struct cdrom_msf0 msf; + int lba; +}; -struct bitmap_counts { - spinlock_t lock; - struct bitmap_page *bp; - long unsigned int pages; - long unsigned int missing_pages; - long unsigned int chunkshift; - long unsigned int chunks; +struct cdrom_multisession { + union cdrom_addr addr; + __u8 xa_flag; + __u8 addr_format; }; -struct bitmap_storage { - struct file *file; - struct page *sb_page; - struct page **filemap; - long unsigned int *filemap_attr; - long unsigned int file_pages; - long unsigned int bytes; +struct cdrom_mcn { + __u8 medium_catalog_number[14]; }; -struct bitmap { - struct bitmap_counts counts; - struct mddev *mddev; - __u64 events_cleared; - int need_sync; - struct bitmap_storage storage; - long unsigned int flags; - int allclean; - atomic_t behind_writes; - long unsigned int behind_writes_used; - long unsigned int daemon_lastrun; - long unsigned int last_end_sync; - atomic_t pending_writes; - wait_queue_head_t write_wait; - wait_queue_head_t overflow_wait; - wait_queue_head_t behind_wait; - struct kernfs_node *sysfs_can_clear; - int cluster_slot; +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; + }; }; -enum recovery_flags { - MD_RECOVERY_RUNNING = 0, - MD_RECOVERY_SYNC = 1, - MD_RECOVERY_RECOVER = 2, - MD_RECOVERY_INTR = 3, - MD_RECOVERY_DONE = 4, - MD_RECOVERY_NEEDED = 5, - MD_RECOVERY_REQUESTED = 6, - MD_RECOVERY_CHECK = 7, - MD_RECOVERY_RESHAPE = 8, - MD_RECOVERY_FROZEN = 9, - MD_RECOVERY_ERROR = 10, - MD_RECOVERY_WAIT = 11, - MD_RESYNCING_REMOTE = 12, +struct request_sense { + __u8 valid: 1; + __u8 error_code: 7; + __u8 segment_number; + __u8 reserved1: 2; + __u8 ili: 1; + __u8 reserved2: 1; + __u8 sense_key: 4; + __u8 information[4]; + __u8 add_sense_len; + __u8 command_info[4]; + __u8 asc; + __u8 ascq; + __u8 fruc; + __u8 sks[3]; + __u8 asb[46]; }; -struct md_sysfs_entry { - struct attribute attr; - ssize_t (*show)(struct mddev *, char *); - ssize_t (*store)(struct mddev *, const char *, size_t); +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 md_io_acct { - struct bio *orig_bio; - long unsigned int start_time; - struct bio bio_clone; +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; }; -struct bitmap_page { - char *map; - unsigned int hijacked: 1; - unsigned int pending: 1; - unsigned int count: 30; +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 super_type { - char *name; - struct module *owner; - int (*load_super)(struct md_rdev *, struct md_rdev *, int); - int (*validate_super)(struct mddev *, struct md_rdev *); - void (*sync_super)(struct mddev *, struct md_rdev *); - long long unsigned int (*rdev_size_change)(struct md_rdev *, sector_t); - int (*allow_new_offset)(struct md_rdev *, long long unsigned int); +struct scsi_ioctl_command { + unsigned int inlen; + unsigned int outlen; + unsigned char data[0]; }; -struct rdev_sysfs_entry { - struct attribute attr; - ssize_t (*show)(struct md_rdev *, char *); - ssize_t (*store)(struct md_rdev *, const char *, size_t); +struct scsi_idlun { + __u32 dev_id; + __u32 host_unique_id; }; -enum array_state { - clear = 0, - inactive = 1, - suspended = 2, - readonly = 3, - read_auto = 4, - clean = 5, - active = 6, - write_pending = 7, - active_idle = 8, - broken = 9, - bad_word = 10, +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 detected_devices_node { +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; - dev_t dev; + struct module *module; + const char *name; + enum scsi_disposition (*check_sense)(struct scsi_device *, struct scsi_sense_hdr *); + int (*attach)(struct scsi_device *); + void (*detach)(struct scsi_device *); + int (*activate)(struct scsi_device *, activate_complete, void *); + blk_status_t (*prep_fn)(struct scsi_device *, struct request *); + int (*set_params)(struct scsi_device *, const char *); + void (*rescan)(struct scsi_device *); }; -struct blkcg; +struct scsi_eh_save { + int result; + unsigned int resid_len; + int eh_eflags; + enum dma_data_direction data_direction; + unsigned int underflow; + unsigned char cmd_len; + unsigned char prot_op; + unsigned char *cmnd; + struct scsi_data_buffer sdb; + unsigned char eh_cmnd[16]; + struct scatterlist sense_sgl; +}; -struct md_setup_args { - int minor; - int partitioned; - int level; - int chunk; - char *device_names; +struct scsi_mode_data { + __u32 length; + __u16 block_descriptor_length; + __u8 medium_type; + __u8 device_specific; + __u8 header_length; + __u8 longlba: 1; }; -struct dm_ioctl { - __u32 version[3]; - __u32 data_size; - __u32 data_start; - __u32 target_count; - __s32 open_count; - __u32 flags; - __u32 event_nr; - __u32 padding; - __u64 dev; - char name[128]; - char uuid[129]; - char data[7]; +struct scsi_event { + enum scsi_device_event evt_type; + struct list_head node; }; -struct dm_target_spec { - __u64 sector_start; - __u64 length; - __s32 status; - __u32 next; - char target_type[16]; +enum scsi_host_prot_capabilities { + SHOST_DIF_TYPE1_PROTECTION = 1, + SHOST_DIF_TYPE2_PROTECTION = 2, + SHOST_DIF_TYPE3_PROTECTION = 4, + SHOST_DIX_TYPE0_PROTECTION = 8, + SHOST_DIX_TYPE1_PROTECTION = 16, + SHOST_DIX_TYPE2_PROTECTION = 32, + SHOST_DIX_TYPE3_PROTECTION = 64, }; -struct dm_device { - struct dm_ioctl dmi; - struct dm_target_spec *table[256]; - char *target_args_array[256]; - struct list_head list; +enum { + ACTION_FAIL = 0, + ACTION_REPREP = 1, + ACTION_RETRY = 2, + ACTION_DELAYED_RETRY = 3, }; -typedef __u16 bitmap_counter_t; +struct value_name_pair; -enum bitmap_state { - BITMAP_STALE = 1, - BITMAP_WRITE_ERROR = 2, - BITMAP_HOSTENDIAN = 15, +struct sa_name_list { + int opcode; + const struct value_name_pair *arr; + int arr_sz; }; -struct bitmap_super_s { - __le32 magic; - __le32 version; - __u8 uuid[16]; - __le64 events; - __le64 events_cleared; - __le64 sync_size; - __le32 state; - __le32 chunksize; - __le32 daemon_sleep; - __le32 write_behind; - __le32 sectors_reserved; - __le32 nodes; - __u8 cluster_name[64]; - __u8 pad[120]; +struct value_name_pair { + int value; + const char *name; +}; + +struct error_info { + short unsigned int code12; + short unsigned int size; +}; + +struct error_info2 { + unsigned char code1; + unsigned char code2_min; + unsigned char code2_max; + const char *str; + const char *fmt; }; -typedef struct bitmap_super_s bitmap_super_t; - -enum bitmap_page_attr { - BITMAP_PAGE_DIRTY = 0, - BITMAP_PAGE_PENDING = 1, - BITMAP_PAGE_NEEDWRITE = 2, +struct scsi_lun { + __u8 scsi_lun[8]; }; -typedef enum { - STATUSTYPE_INFO = 0, - STATUSTYPE_TABLE = 1, - STATUSTYPE_IMA = 2, -} status_type_t; - -union map_info___2 { - void *ptr; +enum scsi_timeouts { + SCSI_DEFAULT_EH_TIMEOUT = 1000, }; -struct dm_target; +enum scsi_scan_mode { + SCSI_SCAN_INITIAL = 0, + SCSI_SCAN_RESCAN = 1, + SCSI_SCAN_MANUAL = 2, +}; -typedef int (*dm_ctr_fn)(struct dm_target *, unsigned int, char **); +struct async_scan_data { + struct list_head list; + struct Scsi_Host *shost; + struct completion prev_finished; +}; -struct dm_table; +enum scsi_devinfo_key { + SCSI_DEVINFO_GLOBAL = 0, + SCSI_DEVINFO_SPI = 1, +}; -struct target_type; +struct scsi_dev_info_list { + struct list_head dev_info_list; + char vendor[8]; + char model[16]; + blist_flags_t flags; + unsigned int compatible; +}; -struct dm_target { - struct dm_table *table; - struct target_type *type; - sector_t begin; - sector_t len; - uint32_t max_io_len; - unsigned int num_flush_bios; - unsigned int num_discard_bios; - unsigned int num_secure_erase_bios; - unsigned int num_write_zeroes_bios; - unsigned int per_io_data_size; - void *private; - char *error; - bool flush_supported: 1; - bool discards_supported: 1; - bool limit_swap_bios: 1; - bool emulate_zone_append: 1; - bool accounts_remapped_io: 1; +struct scsi_dev_info_list_table { + struct list_head node; + struct list_head scsi_dev_info_list; + const char *name; + int key; }; -typedef void (*dm_dtr_fn)(struct dm_target *); +struct double_list { + struct list_head *top; + struct list_head *bottom; +}; -typedef int (*dm_map_fn)(struct dm_target *, struct bio *); +struct scsi_nl_hdr { + __u8 version; + __u8 transport; + __u16 magic; + __u16 msgtype; + __u16 msglen; +}; -typedef int (*dm_clone_and_map_request_fn)(struct dm_target *, struct request *, union map_info___2 *, struct request **); +struct scsi_varlen_cdb_hdr { + __u8 opcode; + __u8 control; + __u8 misc[5]; + __u8 additional_cdb_length; + __be16 service_action; +}; -typedef void (*dm_release_clone_request_fn)(struct request *, union map_info___2 *); +enum { + SCSI_DH_OK = 0, + SCSI_DH_DEV_FAILED = 1, + SCSI_DH_DEV_TEMP_BUSY = 2, + SCSI_DH_DEV_UNSUPP = 3, + SCSI_DH_DEVICE_MAX = 4, + SCSI_DH_NOTCONN = 5, + SCSI_DH_CONN_FAILURE = 6, + SCSI_DH_TRANSPORT_MAX = 7, + SCSI_DH_IO = 8, + SCSI_DH_INVALID_IO = 9, + SCSI_DH_RETRY = 10, + SCSI_DH_IMM_RETRY = 11, + SCSI_DH_TIMED_OUT = 12, + SCSI_DH_RES_TEMP_UNAVAIL = 13, + SCSI_DH_DEV_OFFLINED = 14, + SCSI_DH_NOMEM = 15, + SCSI_DH_NOSYS = 16, + SCSI_DH_DRIVER_MAX = 17, +}; -typedef int (*dm_endio_fn)(struct dm_target *, struct bio *, blk_status_t *); +struct scsi_dh_blist { + const char *vendor; + const char *model; + const char *driver; +}; -typedef int (*dm_request_endio_fn)(struct dm_target *, struct request *, blk_status_t, union map_info___2 *); +enum scsi_prot_flags { + SCSI_PROT_TRANSFER_PI = 1, + SCSI_PROT_GUARD_CHECK = 2, + SCSI_PROT_REF_CHECK = 4, + SCSI_PROT_REF_INCREMENT = 8, + SCSI_PROT_IP_CHECKSUM = 16, +}; -typedef void (*dm_presuspend_fn)(struct dm_target *); +enum { + SD_EXT_CDB_SIZE = 32, + SD_MEMPOOL_SIZE = 2, +}; -typedef void (*dm_presuspend_undo_fn)(struct dm_target *); +enum { + SD_DEF_XFER_BLOCKS = 65535, + SD_MAX_XFER_BLOCKS = 4294967295, + SD_MAX_WS10_BLOCKS = 65535, + SD_MAX_WS16_BLOCKS = 8388607, +}; -typedef void (*dm_postsuspend_fn)(struct dm_target *); +enum { + SD_LBP_FULL = 0, + SD_LBP_UNMAP = 1, + SD_LBP_WS16 = 2, + SD_LBP_WS10 = 3, + SD_LBP_ZERO = 4, + SD_LBP_DISABLE = 5, +}; -typedef int (*dm_preresume_fn)(struct dm_target *); +enum { + SD_ZERO_WRITE = 0, + SD_ZERO_WS = 1, + SD_ZERO_WS16_UNMAP = 2, + SD_ZERO_WS10_UNMAP = 3, +}; -typedef void (*dm_resume_fn)(struct dm_target *); +struct scsi_disk { + struct scsi_driver *driver; + struct scsi_device *device; + struct device dev; + struct gendisk *disk; + struct opal_dev *opal_dev; + u32 nr_zones; + u32 rev_nr_zones; + u32 zone_blocks; + u32 rev_zone_blocks; + u32 zones_optimal_open; + u32 zones_optimal_nonseq; + u32 zones_max_open; + u32 *zones_wp_offset; + spinlock_t zones_wp_offset_lock; + u32 *rev_wp_offset; + struct mutex rev_mutex; + struct work_struct zone_wp_offset_work; + char *zone_wp_update_buf; + atomic_t openers; + sector_t capacity; + int max_retries; + u32 max_xfer_blocks; + u32 opt_xfer_blocks; + u32 max_ws_blocks; + u32 max_unmap_blocks; + u32 unmap_granularity; + u32 unmap_alignment; + u32 index; + unsigned int physical_block_size; + unsigned int max_medium_access_timeouts; + unsigned int medium_access_timed_out; + u8 media_present; + u8 write_prot; + u8 protection_type; + u8 provisioning_mode; + u8 zeroing_mode; + unsigned int ATO: 1; + unsigned int cache_override: 1; + unsigned int WCE: 1; + unsigned int RCD: 1; + unsigned int DPOFUA: 1; + unsigned int first_scan: 1; + unsigned int lbpme: 1; + unsigned int lbprz: 1; + unsigned int lbpu: 1; + unsigned int lbpws: 1; + unsigned int lbpws10: 1; + unsigned int lbpvpd: 1; + unsigned int ws10: 1; + unsigned int ws16: 1; + unsigned int rc_basis: 2; + unsigned int zoned: 2; + unsigned int urswrz: 1; + unsigned int security: 1; + unsigned int ignore_medium_access_errors: 1; +}; -typedef void (*dm_status_fn)(struct dm_target *, status_type_t, unsigned int, char *, unsigned int); +enum scsi_host_guard_type { + SHOST_DIX_GUARD_CRC = 1, + SHOST_DIX_GUARD_IP = 2, +}; -typedef int (*dm_message_fn)(struct dm_target *, unsigned int, char **, char *, unsigned int); +enum zbc_zone_type { + ZBC_ZONE_TYPE_CONV = 1, + ZBC_ZONE_TYPE_SEQWRITE_REQ = 2, + ZBC_ZONE_TYPE_SEQWRITE_PREF = 3, +}; -typedef int (*dm_prepare_ioctl_fn)(struct dm_target *, struct block_device **); +enum zbc_zone_cond { + ZBC_ZONE_COND_NO_WP = 0, + ZBC_ZONE_COND_EMPTY = 1, + ZBC_ZONE_COND_IMP_OPEN = 2, + ZBC_ZONE_COND_EXP_OPEN = 3, + ZBC_ZONE_COND_CLOSED = 4, + ZBC_ZONE_COND_READONLY = 13, + ZBC_ZONE_COND_FULL = 14, + ZBC_ZONE_COND_OFFLINE = 15, +}; -struct dm_report_zones_args; +enum { + mechtype_caddy = 0, + mechtype_tray = 1, + mechtype_popup = 2, + mechtype_individual_changer = 4, + mechtype_cartridge_changer = 5, +}; -typedef int (*dm_report_zones_fn)(struct dm_target *, struct dm_report_zones_args *, unsigned int); +struct event_header { + __be16 data_len; + __u8 nea: 1; + __u8 reserved1: 4; + __u8 notification_class: 3; + __u8 supp_event_class; +}; -struct dm_report_zones_args { - struct dm_target *tgt; - sector_t next_sector; - void *orig_data; - report_zones_cb orig_cb; - unsigned int zone_idx; - sector_t start; +struct media_event_desc { + __u8 reserved1: 4; + __u8 media_event_code: 4; + __u8 reserved2: 6; + __u8 media_present: 1; + __u8 door_open: 1; + __u8 start_slot; + __u8 end_slot; }; -struct dm_dev; +struct scsi_cd { + struct scsi_driver *driver; + unsigned int capacity; + struct scsi_device *device; + unsigned int vendor; + long unsigned int ms_offset; + unsigned int writeable: 1; + unsigned int use: 1; + unsigned int xa_flag: 1; + unsigned int readcd_known: 1; + unsigned int readcd_cdda: 1; + unsigned int media_present: 1; + int tur_mismatch; + bool tur_changed: 1; + bool get_event_changed: 1; + bool ignore_get_event: 1; + struct cdrom_device_info cdi; + struct mutex lock; + struct kref kref; + struct gendisk *disk; +}; -typedef int (*iterate_devices_callout_fn)(struct dm_target *, struct dm_dev *, sector_t, sector_t, void *); +typedef struct scsi_cd Scsi_CD; -struct dm_dev { - struct block_device *bdev; - struct dax_device *dax_dev; - fmode_t mode; - char name[16]; +struct cdrom_ti { + __u8 cdti_trk0; + __u8 cdti_ind0; + __u8 cdti_trk1; + __u8 cdti_ind1; }; -typedef int (*dm_iterate_devices_fn)(struct dm_target *, iterate_devices_callout_fn, void *); - -typedef void (*dm_io_hints_fn)(struct dm_target *, struct queue_limits *); +struct cdrom_tochdr { + __u8 cdth_trk0; + __u8 cdth_trk1; +}; -typedef int (*dm_busy_fn)(struct dm_target *); +struct cdrom_tocentry { + __u8 cdte_track; + __u8 cdte_adr: 4; + __u8 cdte_ctrl: 4; + __u8 cdte_format; + union cdrom_addr cdte_addr; + __u8 cdte_datamode; +}; -typedef long int (*dm_dax_direct_access_fn)(struct dm_target *, long unsigned int, long int, void **, pfn_t *); +struct ccs_modesel_head { + __u8 _r1; + __u8 medium; + __u8 _r2; + __u8 block_desc_length; + __u8 density; + __u8 number_blocks_hi; + __u8 number_blocks_med; + __u8 number_blocks_lo; + __u8 _r3; + __u8 block_length_hi; + __u8 block_length_med; + __u8 block_length_lo; +}; -typedef int (*dm_dax_zero_page_range_fn)(struct dm_target *, long unsigned int, size_t); +typedef struct sg_io_hdr sg_io_hdr_t; -struct target_type { - uint64_t features; - const char *name; - struct module *module; - unsigned int version[3]; - dm_ctr_fn ctr; - dm_dtr_fn dtr; - dm_map_fn map; - dm_clone_and_map_request_fn clone_and_map_rq; - dm_release_clone_request_fn release_clone_rq; - dm_endio_fn end_io; - dm_request_endio_fn rq_end_io; - dm_presuspend_fn presuspend; - dm_presuspend_undo_fn presuspend_undo; - dm_postsuspend_fn postsuspend; - dm_preresume_fn preresume; - dm_resume_fn resume; - dm_status_fn status; - dm_message_fn message; - dm_prepare_ioctl_fn prepare_ioctl; - dm_report_zones_fn report_zones; - dm_busy_fn busy; - dm_iterate_devices_fn iterate_devices; - dm_io_hints_fn io_hints; - dm_dax_direct_access_fn direct_access; - dm_dax_zero_page_range_fn dax_zero_page_range; - struct list_head list; +struct sg_scsi_id { + int host_no; + int channel; + int scsi_id; + int lun; + int scsi_type; + short int h_cmd_per_lun; + short int d_queue_depth; + int unused[2]; }; -enum dm_uevent_type { - DM_UEVENT_PATH_FAILED = 0, - DM_UEVENT_PATH_REINSTATED = 1, +typedef struct sg_scsi_id sg_scsi_id_t; + +struct sg_req_info { + char req_state; + char orphan; + char sg_io_owned; + char problem; + int pack_id; + void *usr_ptr; + unsigned int duration; + int unused; }; -struct mapped_device; +typedef struct sg_req_info sg_req_info_t; -struct dm_uevent { - struct mapped_device *md; - enum kobject_action action; - struct kobj_uevent_env ku_env; - struct list_head elist; - char name[128]; - char uuid[129]; +struct sg_header { + int pack_len; + int reply_len; + int pack_id; + int result; + unsigned int twelve_byte: 1; + unsigned int target_status: 5; + unsigned int host_status: 8; + unsigned int driver_status: 8; + unsigned int other_flags: 10; + unsigned char sense_buffer[16]; }; -enum dm_queue_mode { - DM_TYPE_NONE = 0, - DM_TYPE_BIO_BASED = 1, - DM_TYPE_REQUEST_BASED = 2, - DM_TYPE_DAX_BIO_BASED = 3, +struct sg_scatter_hold { + short unsigned int k_use_sg; + unsigned int sglist_len; + unsigned int bufflen; + struct page **pages; + int page_order; + char dio_in_use; + unsigned char cmd_opcode; }; -struct mapped_device; +typedef struct sg_scatter_hold Sg_scatter_hold; -struct dm_md_mempools; +struct sg_fd; -struct dm_table { - struct mapped_device *md; - enum dm_queue_mode type; - unsigned int depth; - unsigned int counts[16]; - sector_t *index[16]; - unsigned int num_targets; - unsigned int num_allocated; - sector_t *highs; - struct dm_target *targets; - struct target_type *immutable_target_type; - bool integrity_supported: 1; - bool singleton: 1; - unsigned int integrity_added: 1; - fmode_t mode; - struct list_head devices; - void (*event_fn)(void *); - void *event_context; - struct dm_md_mempools *mempools; - struct blk_crypto_profile *crypto_profile; +struct sg_request { + struct list_head entry; + struct sg_fd *parentfp; + Sg_scatter_hold data; + sg_io_hdr_t header; + unsigned char sense_b[96]; + char res_used; + char orphan; + char sg_io_owned; + char done; + struct request *rq; + struct bio *bio; + struct execute_work ew; }; -struct dm_stats_last_position; +typedef struct sg_request Sg_request; -struct dm_stats { - struct mutex mutex; - struct list_head list; - struct dm_stats_last_position *last; - bool precise_timestamps; -}; +struct sg_device; -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 sg_fd { + struct list_head sfd_siblings; + struct sg_device *parentdp; + wait_queue_head_t read_wait; + rwlock_t rq_list_lock; + struct mutex f_mutex; + int timeout; + int timeout_user; + Sg_scatter_hold reserve; + struct list_head rq_list; + struct fasync_struct *async_qp; + Sg_request req_arr[16]; + char force_packid; + char cmd_q; + unsigned char next_cmd_len; + char keep_orphan; + char mmap_called; + char res_in_use; + struct kref f_ref; + struct execute_work ew; }; -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 sg_device { + struct scsi_device *device; + wait_queue_head_t open_wait; + struct mutex open_rel_lock; + int sg_tablesize; + u32 index; + struct list_head sfds; + rwlock_t sfd_lock; + atomic_t detaching; + bool exclude; + int open_cnt; + char sgdebug; + char name[32]; + struct cdev *cdev; + struct kref d_ref; }; -struct dm_kobject_holder { - struct kobject kobj; - struct completion completion; +typedef struct sg_fd Sg_fd; + +typedef struct sg_device Sg_device; + +struct compat_sg_req_info { + char req_state; + char orphan; + char sg_io_owned; + char problem; + int pack_id; + compat_uptr_t usr_ptr; + unsigned int duration; + int unused; }; -struct dm_md_mempools { - struct bio_set bs; - struct bio_set io_bs; +struct sg_proc_deviter { + loff_t index; + size_t max; }; -struct mapped_device { - struct mutex suspend_lock; - struct mutex table_devices_lock; - struct list_head table_devices; - void *map; - long unsigned int flags; - struct mutex type_lock; - enum dm_queue_mode type; - int numa_node_id; - struct request_queue *queue; - atomic_t holders; - atomic_t open_count; - struct dm_target *immutable_target; - struct target_type *immutable_target_type; - char name[16]; - struct gendisk *disk; - struct dax_device *dax_dev; - wait_queue_head_t wait; - long unsigned int *pending_io; - struct hd_geometry geometry; - struct workqueue_struct *wq; - struct work_struct work; - spinlock_t deferred_lock; - struct bio_list deferred; - void *interface_ptr; - wait_queue_head_t eventq; - atomic_t event_nr; - atomic_t uevent_seq; - struct list_head uevent_list; - spinlock_t uevent_lock; - bool init_tio_pdu: 1; - struct blk_mq_tag_set *tag_set; - struct dm_stats stats; - unsigned int internal_suspend_count; - int swap_bios; - struct semaphore swap_bios_semaphore; - struct mutex swap_bios_lock; - struct dm_md_mempools *mempools; - struct dm_kobject_holder kobj_holder; - struct srcu_struct io_barrier; - unsigned int nr_zones; - unsigned int *zwp_offset; - struct dm_ima_measurements ima; +enum { + NETIF_F_SG_BIT = 0, + NETIF_F_IP_CSUM_BIT = 1, + __UNUSED_NETIF_F_1 = 2, + NETIF_F_HW_CSUM_BIT = 3, + NETIF_F_IPV6_CSUM_BIT = 4, + NETIF_F_HIGHDMA_BIT = 5, + NETIF_F_FRAGLIST_BIT = 6, + NETIF_F_HW_VLAN_CTAG_TX_BIT = 7, + NETIF_F_HW_VLAN_CTAG_RX_BIT = 8, + NETIF_F_HW_VLAN_CTAG_FILTER_BIT = 9, + NETIF_F_VLAN_CHALLENGED_BIT = 10, + NETIF_F_GSO_BIT = 11, + NETIF_F_LLTX_BIT = 12, + NETIF_F_NETNS_LOCAL_BIT = 13, + NETIF_F_GRO_BIT = 14, + NETIF_F_LRO_BIT = 15, + NETIF_F_GSO_SHIFT = 16, + NETIF_F_TSO_BIT = 16, + NETIF_F_GSO_ROBUST_BIT = 17, + NETIF_F_TSO_ECN_BIT = 18, + NETIF_F_TSO_MANGLEID_BIT = 19, + NETIF_F_TSO6_BIT = 20, + NETIF_F_FSO_BIT = 21, + NETIF_F_GSO_GRE_BIT = 22, + NETIF_F_GSO_GRE_CSUM_BIT = 23, + NETIF_F_GSO_IPXIP4_BIT = 24, + NETIF_F_GSO_IPXIP6_BIT = 25, + NETIF_F_GSO_UDP_TUNNEL_BIT = 26, + NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT = 27, + NETIF_F_GSO_PARTIAL_BIT = 28, + NETIF_F_GSO_TUNNEL_REMCSUM_BIT = 29, + NETIF_F_GSO_SCTP_BIT = 30, + NETIF_F_GSO_ESP_BIT = 31, + NETIF_F_GSO_UDP_BIT = 32, + NETIF_F_GSO_UDP_L4_BIT = 33, + NETIF_F_GSO_FRAGLIST_BIT = 34, + NETIF_F_GSO_LAST = 34, + NETIF_F_FCOE_CRC_BIT = 35, + NETIF_F_SCTP_CRC_BIT = 36, + NETIF_F_FCOE_MTU_BIT = 37, + NETIF_F_NTUPLE_BIT = 38, + NETIF_F_RXHASH_BIT = 39, + NETIF_F_RXCSUM_BIT = 40, + NETIF_F_NOCACHE_COPY_BIT = 41, + NETIF_F_LOOPBACK_BIT = 42, + NETIF_F_RXFCS_BIT = 43, + NETIF_F_RXALL_BIT = 44, + NETIF_F_HW_VLAN_STAG_TX_BIT = 45, + NETIF_F_HW_VLAN_STAG_RX_BIT = 46, + NETIF_F_HW_VLAN_STAG_FILTER_BIT = 47, + NETIF_F_HW_L2FW_DOFFLOAD_BIT = 48, + NETIF_F_HW_TC_BIT = 49, + NETIF_F_HW_ESP_BIT = 50, + NETIF_F_HW_ESP_TX_CSUM_BIT = 51, + NETIF_F_RX_UDP_TUNNEL_PORT_BIT = 52, + NETIF_F_HW_TLS_TX_BIT = 53, + NETIF_F_HW_TLS_RX_BIT = 54, + NETIF_F_GRO_HW_BIT = 55, + NETIF_F_HW_TLS_RECORD_BIT = 56, + NETIF_F_GRO_FRAGLIST_BIT = 57, + NETIF_F_HW_MACSEC_BIT = 58, + NETIF_F_GRO_UDP_FWD_BIT = 59, + NETIF_F_HW_HSR_TAG_INS_BIT = 60, + NETIF_F_HW_HSR_TAG_RM_BIT = 61, + NETIF_F_HW_HSR_FWD_BIT = 62, + NETIF_F_HW_HSR_DUP_BIT = 63, + NETDEV_FEATURE_COUNT = 64, }; -typedef u16 blk_short_t; +typedef struct bio_vec skb_frag_t; -struct dm_stats_aux { - bool merged; - long long unsigned int duration_ns; +struct skb_shared_hwtstamps { + ktime_t hwtstamp; }; -struct dm_io; - -struct dm_target_io { - short unsigned int magic; - blk_short_t flags; - unsigned int target_bio_nr; - struct dm_io *io; - struct dm_target *ti; - unsigned int *len_ptr; - sector_t old_sector; - struct bio clone; +enum { + SKBTX_HW_TSTAMP = 1, + SKBTX_SW_TSTAMP = 2, + SKBTX_IN_PROGRESS = 4, + SKBTX_WIFI_STATUS = 16, + SKBTX_SCHED_TSTAMP = 64, }; -struct dm_io { - short unsigned int magic; - blk_short_t flags; - atomic_t io_count; - struct mapped_device *md; - struct bio *orig_bio; - blk_status_t status; - spinlock_t lock; - long unsigned int start_time; - void *data; - struct hlist_node node; - struct task_struct *map_task; - struct dm_stats_aux stats_aux; - struct dm_target_io tio; +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 orig_bio_details { - unsigned int op; - unsigned int nr_sectors; +struct mdio_board_info { + const char *bus_id; + char modalias[32]; + int mdio_addr; + const void *platform_data; }; -struct dm_arg_set { - unsigned int argc; - char **argv; +struct mdio_board_entry { + struct list_head list; + struct mdio_board_info board_info; }; -struct dm_arg { - unsigned int min; - unsigned int max; - char *error; +struct mii_timestamping_ctrl { + struct mii_timestamper * (*probe_channel)(struct device *, unsigned int); + void (*release_channel)(struct device *, struct mii_timestamper *); }; -struct dm_dev_internal { +struct mii_timestamping_desc { struct list_head list; - refcount_t count; - struct dm_dev *dm_dev; + struct mii_timestamping_ctrl *ctrl; + struct device *device; }; -struct dm_crypto_profile { - struct blk_crypto_profile profile; - struct mapped_device *md; -}; +struct sfp; -struct dm_keyslot_evict_args { - const struct blk_crypto_key *key; - int err; -}; +struct sfp_socket_ops; -enum suspend_mode { - PRESUSPEND = 0, - PRESUSPEND_UNDO = 1, - POSTSUSPEND = 2, -}; +struct sfp_quirk; -struct linear_c { - struct dm_dev *dev; - sector_t start; -}; +struct sfp_upstream_ops; -enum { - DM_TIO_INSIDE_DM_IO = 0, - DM_TIO_IS_DUPLICATE_BIO = 1, +struct sfp_bus { + struct kref kref; + struct list_head node; + struct fwnode_handle *fwnode; + const struct sfp_socket_ops *socket_ops; + struct device *sfp_dev; + struct sfp *sfp; + const struct sfp_quirk *sfp_quirk; + const struct sfp_upstream_ops *upstream_ops; + void *upstream; + struct phy_device *phydev; + bool registered; + bool started; }; -enum { - DM_IO_START_ACCT = 0, - DM_IO_ACCOUNTED = 1, +struct sfp_eeprom_base { + u8 phys_id; + u8 phys_ext_id; + u8 connector; + u8 e10g_base_er: 1; + u8 e10g_base_lrm: 1; + u8 e10g_base_lr: 1; + u8 e10g_base_sr: 1; + u8 if_1x_sx: 1; + u8 if_1x_lx: 1; + u8 if_1x_copper_active: 1; + u8 if_1x_copper_passive: 1; + u8 escon_mmf_1310_led: 1; + u8 escon_smf_1310_laser: 1; + u8 sonet_oc192_short_reach: 1; + u8 sonet_reach_bit1: 1; + u8 sonet_reach_bit2: 1; + u8 sonet_oc48_long_reach: 1; + u8 sonet_oc48_intermediate_reach: 1; + u8 sonet_oc48_short_reach: 1; + u8 unallocated_5_7: 1; + u8 sonet_oc12_smf_long_reach: 1; + u8 sonet_oc12_smf_intermediate_reach: 1; + u8 sonet_oc12_short_reach: 1; + u8 unallocated_5_3: 1; + u8 sonet_oc3_smf_long_reach: 1; + u8 sonet_oc3_smf_intermediate_reach: 1; + u8 sonet_oc3_short_reach: 1; + u8 e_base_px: 1; + u8 e_base_bx10: 1; + u8 e100_base_fx: 1; + u8 e100_base_lx: 1; + u8 e1000_base_t: 1; + u8 e1000_base_cx: 1; + u8 e1000_base_lx: 1; + u8 e1000_base_sx: 1; + u8 fc_ll_v: 1; + u8 fc_ll_s: 1; + u8 fc_ll_i: 1; + u8 fc_ll_l: 1; + u8 fc_ll_m: 1; + u8 fc_tech_sa: 1; + u8 fc_tech_lc: 1; + u8 fc_tech_electrical_inter_enclosure: 1; + u8 fc_tech_electrical_intra_enclosure: 1; + u8 fc_tech_sn: 1; + u8 fc_tech_sl: 1; + u8 fc_tech_ll: 1; + u8 sfp_ct_active: 1; + u8 sfp_ct_passive: 1; + u8 unallocated_8_1: 1; + u8 unallocated_8_0: 1; + u8 fc_media_tw: 1; + u8 fc_media_tp: 1; + u8 fc_media_mi: 1; + u8 fc_media_tv: 1; + u8 fc_media_m6: 1; + u8 fc_media_m5: 1; + u8 unallocated_9_1: 1; + u8 fc_media_sm: 1; + u8 fc_speed_1200: 1; + u8 fc_speed_800: 1; + u8 fc_speed_1600: 1; + u8 fc_speed_400: 1; + u8 fc_speed_3200: 1; + u8 fc_speed_200: 1; + u8 unallocated_10_1: 1; + u8 fc_speed_100: 1; + u8 encoding; + u8 br_nominal; + u8 rate_id; + u8 link_len[6]; + char vendor_name[16]; + u8 extended_cc; + char vendor_oui[3]; + char vendor_pn[16]; + char vendor_rev[4]; + union { + __be16 optical_wavelength; + __be16 cable_compliance; + struct { + u8 reserved60_2: 6; + u8 fc_pi_4_app_h: 1; + u8 sff8431_app_e: 1; + u8 reserved61: 8; + } passive; + struct { + u8 reserved60_4: 4; + u8 fc_pi_4_lim: 1; + u8 sff8431_lim: 1; + u8 fc_pi_4_app_h: 1; + u8 sff8431_app_e: 1; + u8 reserved61: 8; + } active; + }; + u8 reserved62; + u8 cc_base; }; -struct clone_info { - struct dm_table *map; - struct bio *bio; - struct dm_io *io; - sector_t sector; - unsigned int sector_count; - bool submit_as_polled; +struct sfp_eeprom_ext { + __be16 options; + u8 br_max; + u8 br_min; + char vendor_sn[16]; + char datecode[8]; + u8 diagmon; + u8 enhopts; + u8 sff8472_compliance; + u8 cc_ext; }; -struct table_device { - struct list_head list; - refcount_t count; - struct dm_dev dm_dev; +struct sfp_eeprom_id { + struct sfp_eeprom_base base; + struct sfp_eeprom_ext ext; }; -struct dm_pr { - u64 old_key; - u64 new_key; - u32 flags; - bool fail_early; +enum { + SFF8024_ID_UNK = 0, + SFF8024_ID_SFF_8472 = 2, + SFF8024_ID_SFP = 3, + SFF8024_ID_DWDM_SFP = 11, + SFF8024_ID_QSFP_8438 = 12, + SFF8024_ID_QSFP_8436_8636 = 13, + SFF8024_ID_QSFP28_8636 = 17, + SFF8024_ENCODING_UNSPEC = 0, + SFF8024_ENCODING_8B10B = 1, + SFF8024_ENCODING_4B5B = 2, + SFF8024_ENCODING_NRZ = 3, + SFF8024_ENCODING_8472_MANCHESTER = 4, + SFF8024_ENCODING_8472_SONET = 5, + SFF8024_ENCODING_8472_64B66B = 6, + SFF8024_ENCODING_8436_MANCHESTER = 6, + SFF8024_ENCODING_8436_SONET = 4, + SFF8024_ENCODING_8436_64B66B = 5, + SFF8024_ENCODING_256B257B = 7, + SFF8024_ENCODING_PAM4 = 8, + SFF8024_CONNECTOR_UNSPEC = 0, + SFF8024_CONNECTOR_SC = 1, + SFF8024_CONNECTOR_FIBERJACK = 6, + SFF8024_CONNECTOR_LC = 7, + SFF8024_CONNECTOR_MT_RJ = 8, + SFF8024_CONNECTOR_MU = 9, + SFF8024_CONNECTOR_SG = 10, + SFF8024_CONNECTOR_OPTICAL_PIGTAIL = 11, + SFF8024_CONNECTOR_MPO_1X12 = 12, + SFF8024_CONNECTOR_MPO_2X16 = 13, + SFF8024_CONNECTOR_HSSDC_II = 32, + SFF8024_CONNECTOR_COPPER_PIGTAIL = 33, + SFF8024_CONNECTOR_RJ45 = 34, + SFF8024_CONNECTOR_NOSEPARATE = 35, + SFF8024_CONNECTOR_MXC_2X16 = 36, + SFF8024_ECC_UNSPEC = 0, + SFF8024_ECC_100G_25GAUI_C2M_AOC = 1, + SFF8024_ECC_100GBASE_SR4_25GBASE_SR = 2, + SFF8024_ECC_100GBASE_LR4_25GBASE_LR = 3, + SFF8024_ECC_100GBASE_ER4_25GBASE_ER = 4, + SFF8024_ECC_100GBASE_SR10 = 5, + SFF8024_ECC_100GBASE_CR4 = 11, + SFF8024_ECC_25GBASE_CR_S = 12, + SFF8024_ECC_25GBASE_CR_N = 13, + SFF8024_ECC_10GBASE_T_SFI = 22, + SFF8024_ECC_10GBASE_T_SR = 28, + SFF8024_ECC_5GBASE_T = 29, + SFF8024_ECC_2_5GBASE_T = 30, }; -struct stripe { - struct dm_dev *dev; - sector_t physical_start; - atomic_t error_count; +struct sfp_upstream_ops { + void (*attach)(void *, struct sfp_bus *); + void (*detach)(void *, struct sfp_bus *); + int (*module_insert)(void *, const struct sfp_eeprom_id *); + void (*module_remove)(void *); + int (*module_start)(void *); + void (*module_stop)(void *); + void (*link_down)(void *); + void (*link_up)(void *); + int (*connect_phy)(void *, struct phy_device *); + void (*disconnect_phy)(void *); }; -struct stripe_c { - uint32_t stripes; - int stripes_shift; - sector_t stripe_width; - uint32_t chunk_size; - int chunk_size_shift; - struct dm_target *ti; - struct work_struct trigger_event; - struct stripe stripe[0]; +struct sfp_socket_ops { + void (*attach)(struct sfp *); + void (*detach)(struct sfp *); + void (*start)(struct sfp *); + 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 dm_io_region { - struct block_device *bdev; - sector_t sector; - sector_t count; +struct sfp_quirk { + const char *vendor; + const char *part; + void (*modes)(const struct sfp_eeprom_id *, long unsigned int *); }; -struct page_list { - struct page_list *next; - struct page *page; +struct flow_dissector_key_control { + u16 thoff; + u16 addr_type; + u32 flags; }; -typedef void (*io_notify_fn)(long unsigned int, void *); - -enum dm_io_mem_type { - DM_IO_PAGE_LIST = 0, - DM_IO_BIO = 1, - DM_IO_VMA = 2, - DM_IO_KMEM = 3, +struct flow_dissector_key_basic { + __be16 n_proto; + u8 ip_proto; + u8 padding; }; -struct dm_io_memory { - enum dm_io_mem_type type; - unsigned int offset; - union { - struct page_list *pl; - struct bio *bio; - void *vma; - void *addr; - } ptr; +struct flow_dissector { + unsigned int used_keys; + short unsigned int offset[28]; }; -struct dm_io_notify { - io_notify_fn fn; - void *context; +struct flow_keys_basic { + struct flow_dissector_key_control control; + struct flow_dissector_key_basic basic; }; -struct dm_io_client; - -struct dm_io_request { - int bi_op; - int bi_op_flags; - struct dm_io_memory mem; - struct dm_io_notify notify; - struct dm_io_client *client; +struct nf_conntrack { + refcount_t use; }; -struct dm_io_client { - mempool_t pool; - struct bio_set bios; +enum { + SKBFL_ZEROCOPY_ENABLE = 1, + SKBFL_SHARED_FRAG = 2, }; -struct io { - long unsigned int error_bits; - atomic_t count; - struct dm_io_client *client; - io_notify_fn callback; - void *context; - void *vma_invalidate_address; - long unsigned int vma_invalidate_size; - long: 64; +struct mmpin { + struct user_struct *user; + unsigned int num_pg; }; -struct dpages { - void (*get_page)(struct dpages *, struct page **, long unsigned int *, unsigned int *); - void (*next_page)(struct dpages *); +struct ubuf_info { + void (*callback)(struct sk_buff *, struct ubuf_info *, bool); union { - unsigned int context_u; - struct bvec_iter context_bi; + struct { + long unsigned int desc; + void *ctx; + }; + struct { + u32 id; + u16 len; + u16 zerocopy: 1; + u32 bytelen; + }; }; - void *context_ptr; - void *vma_invalidate_address; - long unsigned int vma_invalidate_size; + refcount_t refcnt; + u8 flags; + struct mmpin mmp; }; -struct sync_io { - long unsigned int error_bits; - struct completion wait; +enum { + SKB_GSO_TCPV4 = 1, + SKB_GSO_DODGY = 2, + SKB_GSO_TCP_ECN = 4, + SKB_GSO_TCP_FIXEDID = 8, + SKB_GSO_TCPV6 = 16, + SKB_GSO_FCOE = 32, + SKB_GSO_GRE = 64, + SKB_GSO_GRE_CSUM = 128, + SKB_GSO_IPXIP4 = 256, + SKB_GSO_IPXIP6 = 512, + SKB_GSO_UDP_TUNNEL = 1024, + SKB_GSO_UDP_TUNNEL_CSUM = 2048, + SKB_GSO_PARTIAL = 4096, + SKB_GSO_TUNNEL_REMCSUM = 8192, + SKB_GSO_SCTP = 16384, + SKB_GSO_ESP = 32768, + SKB_GSO_UDP = 65536, + SKB_GSO_UDP_L4 = 131072, + SKB_GSO_FRAGLIST = 262144, }; -struct dm_target_deps { - __u32 count; - __u32 padding; - __u64 dev[0]; +enum { + IFLA_TUN_UNSPEC = 0, + IFLA_TUN_OWNER = 1, + IFLA_TUN_GROUP = 2, + IFLA_TUN_TYPE = 3, + IFLA_TUN_PI = 4, + IFLA_TUN_VNET_HDR = 5, + IFLA_TUN_PERSIST = 6, + IFLA_TUN_MULTI_QUEUE = 7, + IFLA_TUN_NUM_QUEUES = 8, + IFLA_TUN_NUM_DISABLED_QUEUES = 9, + __IFLA_TUN_MAX = 10, }; -struct dm_name_list { - __u64 dev; - __u32 next; - char name[0]; +enum netdev_state_t { + __LINK_STATE_START = 0, + __LINK_STATE_PRESENT = 1, + __LINK_STATE_NOCARRIER = 2, + __LINK_STATE_LINKWATCH_PENDING = 3, + __LINK_STATE_DORMANT = 4, + __LINK_STATE_TESTING = 5, }; -struct dm_target_versions { - __u32 next; - __u32 version[3]; - char name[0]; +struct gro_list { + struct list_head list; + int count; }; -struct dm_target_msg { - __u64 sector; - char message[0]; +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 { - DM_VERSION_CMD = 0, - DM_REMOVE_ALL_CMD = 1, - DM_LIST_DEVICES_CMD = 2, - DM_DEV_CREATE_CMD = 3, - DM_DEV_REMOVE_CMD = 4, - DM_DEV_RENAME_CMD = 5, - DM_DEV_SUSPEND_CMD = 6, - DM_DEV_STATUS_CMD = 7, - DM_DEV_WAIT_CMD = 8, - DM_TABLE_LOAD_CMD = 9, - DM_TABLE_CLEAR_CMD = 10, - DM_TABLE_DEPS_CMD = 11, - DM_TABLE_STATUS_CMD = 12, - DM_LIST_VERSIONS_CMD = 13, - DM_TARGET_MSG_CMD = 14, - DM_DEV_SET_GEOMETRY_CMD = 15, - DM_DEV_ARM_POLL_CMD = 16, - DM_GET_TARGET_VERSION_CMD = 17, +enum gro_result { + GRO_MERGED = 0, + GRO_MERGED_FREE = 1, + GRO_HELD = 2, + GRO_NORMAL = 3, + GRO_CONSUMED = 4, }; -struct dm_file { - volatile unsigned int global_event_nr; -}; +typedef enum gro_result gro_result_t; -struct hash_cell { - struct rb_node name_node; - struct rb_node uuid_node; - bool name_set; - bool uuid_set; - char *name; - char *uuid; - struct mapped_device *md; - struct dm_table *new_map; +enum netdev_queue_state_t { + __QUEUE_STATE_DRV_XOFF = 0, + __QUEUE_STATE_STACK_XOFF = 1, + __QUEUE_STATE_FROZEN = 2, }; -struct vers_iter { - size_t param_size; - struct dm_target_versions *vers; - struct dm_target_versions *old_vers; - char *end; - uint32_t flags; +struct rps_sock_flow_table { + u32 mask; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + u32 ents[0]; }; -typedef int (*ioctl_fn___2)(struct file *, struct dm_ioctl *, size_t); - -struct dm_kcopyd_throttle { - unsigned int throttle; - unsigned int num_io_jobs; - unsigned int io_period; - unsigned int total_period; - unsigned int last_jiffies; +struct ip_tunnel_parm { + char name[16]; + int link; + __be16 i_flags; + __be16 o_flags; + __be32 i_key; + __be32 o_key; + struct iphdr iph; }; -typedef void (*dm_kcopyd_notify_fn)(int, long unsigned int, void *); +struct wpan_phy; -struct dm_kcopyd_client { - struct page_list *pages; - unsigned int nr_reserved_pages; - unsigned int nr_free_pages; - unsigned int sub_job_size; - struct dm_io_client *io_client; - wait_queue_head_t destroyq; - mempool_t job_pool; - struct workqueue_struct *kcopyd_wq; - struct work_struct kcopyd_work; - struct dm_kcopyd_throttle *throttle; - atomic_t nr_jobs; - spinlock_t job_lock; - struct list_head callback_jobs; - struct list_head complete_jobs; - struct list_head io_jobs; - struct list_head pages_jobs; -}; +struct wpan_dev_header_ops; -struct kcopyd_job { - struct dm_kcopyd_client *kc; +struct wpan_dev { + struct wpan_phy *wpan_phy; + int iftype; struct list_head list; - unsigned int flags; - int read_err; - long unsigned int write_err; - int rw; - struct dm_io_region source; - unsigned int num_dests; - struct dm_io_region dests[8]; - struct page_list *pages; - dm_kcopyd_notify_fn fn; - void *context; - struct mutex lock; - atomic_t sub_jobs; - sector_t progress; - sector_t write_offset; - struct kcopyd_job *master_job; + struct net_device *netdev; + const struct wpan_dev_header_ops *header_ops; + struct net_device *lowpan_dev; + u32 identifier; + __le16 pan_id; + __le16 short_addr; + __le64 extended_addr; + atomic_t bsn; + atomic_t dsn; + u8 min_be; + u8 max_be; + u8 csma_retries; + s8 frame_retries; + bool lbt; + bool promiscuous_mode; + bool ackreq; }; -struct dm_sysfs_attr { - struct attribute attr; - ssize_t (*show)(struct mapped_device *, char *); - ssize_t (*store)(struct mapped_device *, const char *, size_t); +struct tun_pi { + __u16 flags; + __be16 proto; }; -struct dm_stats_last_position { - sector_t last_sector; - unsigned int last_rw; +struct tun_filter { + __u16 flags; + __u16 count; + __u8 addr[0]; }; -struct dm_stat_percpu { - long long unsigned int sectors[2]; - long long unsigned int ios[2]; - long long unsigned int merges[2]; - long long unsigned int ticks[2]; - long long unsigned int io_ticks[2]; - long long unsigned int io_ticks_total; - long long unsigned int time_in_queue; - long long unsigned int *histogram; +struct virtio_net_hdr { + __u8 flags; + __u8 gso_type; + __virtio16 hdr_len; + __virtio16 gso_size; + __virtio16 csum_start; + __virtio16 csum_offset; }; -struct dm_stat_shared { - atomic_t in_flight[2]; - long long unsigned int stamp; - struct dm_stat_percpu tmp; +struct tun_msg_ctl { + short unsigned int type; + short unsigned int num; + void *ptr; }; -struct dm_stat { - struct list_head list_entry; - int id; - unsigned int stat_flags; - size_t n_entries; - sector_t start; - sector_t end; - sector_t step; - unsigned int n_histogram_entries; - long long unsigned int *histogram_boundaries; - const char *program_id; - const char *aux_data; - struct callback_head callback_head; - size_t shared_alloc_size; - size_t percpu_alloc_size; - size_t histogram_alloc_size; - struct dm_stat_percpu *stat_percpu[512]; - struct dm_stat_shared stat_shared[0]; +struct tun_xdp_hdr { + int buflen; + struct virtio_net_hdr gso; }; -struct dm_rq_target_io; +struct fib_info; -struct dm_rq_clone_bio_info { - struct bio *orig; - struct dm_rq_target_io *tio; - struct bio clone; +struct fib_nh { + struct fib_nh_common nh_common; + struct hlist_node nh_hash; + struct fib_info *nh_parent; + __u32 nh_tclassid; + __be32 nh_saddr; + int nh_saddr_genid; }; -struct dm_rq_target_io { - struct mapped_device *md; - struct dm_target *ti; - struct request *orig; - struct request *clone; - struct kthread_work work; - blk_status_t error; - union map_info___2 info; - struct dm_stats_aux stats_aux; - long unsigned int duration_jiffies; - unsigned int n_sectors; - unsigned int completed; +struct fib_info { + struct hlist_node fib_hash; + struct hlist_node fib_lhash; + struct list_head nh_list; + struct net *fib_net; + refcount_t fib_treeref; + refcount_t fib_clntref; + unsigned int fib_flags; + unsigned char fib_dead; + unsigned char fib_protocol; + unsigned char fib_scope; + unsigned char fib_type; + __be32 fib_prefsrc; + u32 fib_tb_id; + u32 fib_priority; + struct dst_metrics *fib_metrics; + int fib_nhs; + bool fib_nh_is_v6; + bool nh_updated; + struct nexthop *nh; + struct callback_head rcu; + struct fib_nh fib_nh[0]; }; -typedef sector_t chunk_t; +struct nh_info; -struct dm_exception { - struct hlist_bl_node hash_list; - chunk_t old_chunk; - chunk_t new_chunk; -}; +struct nh_group; -struct dm_exception_store; +struct nexthop { + struct rb_node rb_node; + struct list_head fi_list; + struct list_head f6i_list; + struct list_head fdb_list; + struct list_head grp_list; + struct net *net; + u32 id; + u8 protocol; + u8 nh_flags; + bool is_group; + refcount_t refcnt; + struct callback_head rcu; + union { + struct nh_info *nh_info; + struct nh_group *nh_grp; + }; +}; -struct dm_exception_store_type { - const char *name; - struct module *module; - int (*ctr)(struct dm_exception_store *, char *); - void (*dtr)(struct dm_exception_store *); - int (*read_metadata)(struct dm_exception_store *, int (*)(void *, chunk_t, chunk_t), void *); - int (*prepare_exception)(struct dm_exception_store *, struct dm_exception *); - void (*commit_exception)(struct dm_exception_store *, struct dm_exception *, int, void (*)(void *, int), void *); - int (*prepare_merge)(struct dm_exception_store *, chunk_t *, chunk_t *); - int (*commit_merge)(struct dm_exception_store *, int); - void (*drop_snapshot)(struct dm_exception_store *); - unsigned int (*status)(struct dm_exception_store *, status_type_t, char *, unsigned int); - void (*usage)(struct dm_exception_store *, sector_t *, sector_t *, sector_t *); - struct list_head list; +struct nh_info { + struct hlist_node dev_hash; + struct nexthop *nh_parent; + u8 family; + bool reject_nh; + bool fdb_nh; + union { + struct fib_nh_common fib_nhc; + struct fib_nh fib_nh; + struct fib6_nh fib6_nh; + }; }; -struct dm_snapshot; +struct nh_grp_entry; -struct dm_exception_store { - struct dm_exception_store_type *type; - struct dm_snapshot *snap; - unsigned int chunk_size; - unsigned int chunk_mask; - unsigned int chunk_shift; - void *context; - bool userspace_supports_overflow; +struct 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 dm_exception_table { - uint32_t hash_mask; - unsigned int hash_shift; - struct hlist_bl_head *table; +struct nh_grp_entry { + struct nexthop *nh; + u8 weight; + union { + struct { + atomic_t upper_bound; + } hthr; + struct { + struct list_head uw_nh_entry; + u16 count_buckets; + u16 wants_buckets; + } res; + }; + struct list_head nh_list; + struct nexthop *nh_parent; }; -struct dm_kcopyd_client; +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 dm_snapshot { - struct rw_semaphore lock; - struct dm_dev *origin; - struct dm_dev *cow; - struct dm_target *ti; - struct list_head list; - int valid; - int snapshot_overflowed; - int active; - atomic_t pending_exceptions_count; - spinlock_t pe_allocation_lock; - sector_t exception_start_sequence; - sector_t exception_complete_sequence; - struct rb_root out_of_order_tree; - mempool_t pending_pool; - struct dm_exception_table pending; - struct dm_exception_table complete; - spinlock_t pe_lock; - spinlock_t tracked_chunk_lock; - struct hlist_head tracked_chunk_hash[16]; - struct dm_exception_store *store; - unsigned int in_progress; - struct wait_queue_head in_progress_wait; - struct dm_kcopyd_client *kcopyd_client; - long unsigned int state_bits; - chunk_t first_merging_chunk; - int num_merging_chunks; - bool merge_failed: 1; - bool discard_zeroes_cow: 1; - bool discard_passdown_origin: 1; - struct bio_list bios_queued_during_merge; -}; - -struct dm_snap_pending_exception { - struct dm_exception e; - struct bio_list origin_bios; - struct bio_list snapshot_bios; - struct dm_snapshot *snap; - int started; - int copy_error; - sector_t exception_sequence; - struct rb_node out_of_order_node; - struct bio *full_bio; - bio_end_io_t *full_bio_end_io; -}; - -struct dm_snap_tracked_chunk { - struct hlist_node node; - chunk_t chunk; +struct nh_group { + struct nh_group *spare; + u16 num_nh; + bool is_multipath; + bool hash_threshold; + bool resilient; + bool fdb_nh; + bool has_v4; + struct nh_res_table *res_table; + struct nh_grp_entry nh_entries[0]; }; -struct origin { - struct block_device *bdev; - struct list_head hash_list; - struct list_head snapshots; +enum { + AX25_VALUES_IPDEFMODE = 0, + AX25_VALUES_AXDEFMODE = 1, + AX25_VALUES_BACKOFF = 2, + AX25_VALUES_CONMODE = 3, + AX25_VALUES_WINDOW = 4, + AX25_VALUES_EWINDOW = 5, + AX25_VALUES_T1 = 6, + AX25_VALUES_T2 = 7, + AX25_VALUES_T3 = 8, + AX25_VALUES_IDLE = 9, + AX25_VALUES_N2 = 10, + AX25_VALUES_PACLEN = 11, + AX25_VALUES_PROTOCOL = 12, + AX25_VALUES_DS_TIMEOUT = 13, + AX25_MAX_VALUES = 14, }; -struct dm_origin { - struct dm_dev *dev; - struct dm_target *ti; - unsigned int split_boundary; - struct list_head hash_list; +enum nl802154_cca_modes { + __NL802154_CCA_INVALID = 0, + NL802154_CCA_ENERGY = 1, + NL802154_CCA_CARRIER = 2, + NL802154_CCA_ENERGY_CARRIER = 3, + NL802154_CCA_ALOHA = 4, + NL802154_CCA_UWB_SHR = 5, + NL802154_CCA_UWB_MULTIPLEXED = 6, + __NL802154_CCA_ATTR_AFTER_LAST = 7, + NL802154_CCA_ATTR_MAX = 6, }; -struct dm_exception_table_lock { - struct hlist_bl_head *complete_slot; - struct hlist_bl_head *pending_slot; +enum nl802154_cca_opts { + NL802154_CCA_OPT_ENERGY_CARRIER_AND = 0, + NL802154_CCA_OPT_ENERGY_CARRIER_OR = 1, + __NL802154_CCA_OPT_ATTR_AFTER_LAST = 2, + NL802154_CCA_OPT_ATTR_MAX = 1, }; -struct dm_buffer; +enum nl802154_supported_bool_states { + NL802154_SUPPORTED_BOOL_FALSE = 0, + NL802154_SUPPORTED_BOOL_TRUE = 1, + __NL802154_SUPPORTED_BOOL_INVALD = 2, + NL802154_SUPPORTED_BOOL_BOTH = 3, + __NL802154_SUPPORTED_BOOL_AFTER_LAST = 4, + NL802154_SUPPORTED_BOOL_MAX = 3, +}; -struct dm_bufio_client { - struct mutex lock; - struct list_head lru[2]; - long unsigned int n_buffers[2]; - struct block_device *bdev; - unsigned int block_size; - s8 sectors_per_block_bits; - void (*alloc_callback)(struct dm_buffer *); - void (*write_callback)(struct dm_buffer *); - struct kmem_cache *slab_buffer; - struct kmem_cache *slab_cache; - struct dm_io_client *dm_io; - struct list_head reserved_buffers; - unsigned int need_reserved_buffers; - unsigned int minimum_buffers; - struct rb_root buffer_tree; - wait_queue_head_t free_buffer_wait; - sector_t start; - int async_write_error; - struct list_head client_list; - struct shrinker shrinker; - struct work_struct shrink_work; - atomic_long_t need_shrink; +struct wpan_phy_supported { + u32 channels[32]; + u32 cca_modes; + u32 cca_opts; + u32 iftypes; + enum nl802154_supported_bool_states lbt; + u8 min_minbe; + u8 max_minbe; + u8 min_maxbe; + u8 max_maxbe; + u8 min_csma_backoffs; + u8 max_csma_backoffs; + s8 min_frame_retries; + s8 max_frame_retries; + size_t tx_powers_size; + size_t cca_ed_levels_size; + const s32 *tx_powers; + const s32 *cca_ed_levels; }; -struct dm_buffer { - struct rb_node node; - struct list_head lru_list; - struct list_head global_list; - sector_t block; - void *data; - unsigned char data_mode; - unsigned char list_mode; - blk_status_t read_error; - blk_status_t write_error; - unsigned int accessed; - unsigned int hold_count; - long unsigned int state; - long unsigned int last_accessed; - unsigned int dirty_start; - unsigned int dirty_end; - unsigned int write_start; - unsigned int write_end; - struct dm_bufio_client *c; - struct list_head write_list; - void (*end_io)(struct dm_buffer *, blk_status_t); +struct wpan_phy_cca { + enum nl802154_cca_modes mode; + enum nl802154_cca_opts opt; +}; + +struct wpan_phy { + const void *privid; + u32 flags; + u8 current_channel; + u8 current_page; + struct wpan_phy_supported supported; + s32 transmit_power; + struct wpan_phy_cca cca; + __le64 perm_extended_addr; + s32 cca_ed_level; + u8 symbol_duration; + u16 lifs_period; + u16 sifs_period; + struct device dev; + possible_net_t _net; + long: 64; + long: 64; + char priv[0]; }; -enum data_mode { - DATA_MODE_SLAB = 0, - DATA_MODE_GET_FREE_PAGES = 1, - DATA_MODE_VMALLOC = 2, - DATA_MODE_LIMIT = 3, +struct ieee802154_addr { + u8 mode; + __le16 pan_id; + union { + __le16 short_addr; + __le64 extended_addr; + }; }; -enum new_flag { - NF_FRESH = 0, - NF_READ = 1, - NF_GET = 2, - NF_PREFETCH = 3, +struct wpan_dev_header_ops { + int (*create)(struct sk_buff *, struct net_device *, const struct ieee802154_addr *, const struct ieee802154_addr *, unsigned int); }; -struct disk_header { - __le32 magic; - __le32 valid; - __le32 version; - __le32 chunk_size; +struct tap_filter { + unsigned int count; + u32 mask[2]; + unsigned char addr[48]; }; -struct disk_exception { - __le64 old_chunk; - __le64 new_chunk; -}; +struct tun_struct; -struct core_exception { - uint64_t old_chunk; - uint64_t new_chunk; +struct tun_file { + struct sock sk; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 socket socket; + struct tun_struct *tun; + struct fasync_struct *fasync; + unsigned int flags; + union { + u16 queue_index; + unsigned int ifindex; + }; + struct napi_struct napi; + bool napi_enabled; + bool napi_frags_enabled; + struct mutex napi_mutex; + struct list_head next; + struct tun_struct *detached; + long: 64; + long: 64; + long: 64; + struct ptr_ring tx_ring; + struct xdp_rxq_info xdp_rxq; }; -struct commit_callback { - void (*callback)(void *, int); - void *context; -}; +struct tun_prog; -struct pstore { - struct dm_exception_store *store; - int version; - int valid; - uint32_t exceptions_per_area; - void *area; - void *zero_area; - void *header_area; - chunk_t current_area; - chunk_t next_free; - uint32_t current_committed; - atomic_t pending_count; - uint32_t callback_count; - struct commit_callback *callbacks; - struct dm_io_client *io_client; - struct workqueue_struct *metadata_wq; +struct tun_struct { + struct tun_file *tfiles[256]; + unsigned int numqueues; + unsigned int flags; + kuid_t owner; + kgid_t group; + struct net_device *dev; + netdev_features_t set_features; + int align; + int vnet_hdr_sz; + int sndbuf; + struct tap_filter txflt; + struct sock_fprog fprog; + bool filter_attached; + u32 msg_enable; + spinlock_t lock; + struct hlist_head flows[1024]; + struct timer_list flow_gc_timer; + long unsigned int ageing_time; + unsigned int numdisabled; + struct list_head disabled; + void *security; + u32 flow_count; + u32 rx_batched; + atomic_long_t rx_frame_errors; + struct bpf_prog *xdp_prog; + struct tun_prog *steering_prog; + struct tun_prog *filter_prog; + struct ethtool_link_ksettings link_ksettings; + struct file *file; + struct ifreq *ifr; }; -struct mdata_req { - struct dm_io_region *where; - struct dm_io_request *io_req; - struct work_struct work; - int result; +struct tun_page { + struct page *page; + int count; }; -struct dm_bufio_client; - -struct dm_buffer; - -struct transient_c { - sector_t next_free; +struct tun_flow_entry { + struct hlist_node hash_link; + struct callback_head rcu; + struct tun_struct *tun; + u32 rxhash; + u32 rps_rxhash; + int queue_index; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long unsigned int updated; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; -typedef sector_t region_t; - -struct dm_dirty_log_type; - -struct dm_dirty_log { - struct dm_dirty_log_type *type; - int (*flush_callback_fn)(struct dm_target *); - void *context; +struct tun_prog { + struct callback_head rcu; + struct bpf_prog *prog; }; -struct dm_dirty_log_type { - const char *name; - struct module *module; - struct list_head list; - int (*ctr)(struct dm_dirty_log *, struct dm_target *, unsigned int, char **); - void (*dtr)(struct dm_dirty_log *); - int (*presuspend)(struct dm_dirty_log *); - int (*postsuspend)(struct dm_dirty_log *); - int (*resume)(struct dm_dirty_log *); - uint32_t (*get_region_size)(struct dm_dirty_log *); - int (*is_clean)(struct dm_dirty_log *, region_t); - int (*in_sync)(struct dm_dirty_log *, region_t, int); - int (*flush)(struct dm_dirty_log *); - void (*mark_region)(struct dm_dirty_log *, region_t); - void (*clear_region)(struct dm_dirty_log *, region_t); - int (*get_resync_work)(struct dm_dirty_log *, region_t *); - void (*set_region_sync)(struct dm_dirty_log *, region_t, int); - region_t (*get_sync_count)(struct dm_dirty_log *); - int (*status)(struct dm_dirty_log *, status_type_t, char *, unsigned int); - int (*is_remote_recovering)(struct dm_dirty_log *, region_t); -}; - -struct log_header_disk { - __le32 magic; - __le32 version; - __le64 nr_regions; +struct veth { + __be16 h_vlan_proto; + __be16 h_vlan_TCI; }; -struct log_header_core { - uint32_t magic; - uint32_t version; - uint64_t nr_regions; +struct cdrom_msf { + __u8 cdmsf_min0; + __u8 cdmsf_sec0; + __u8 cdmsf_frame0; + __u8 cdmsf_min1; + __u8 cdmsf_sec1; + __u8 cdmsf_frame1; }; -enum sync { - DEFAULTSYNC = 0, - NOSYNC = 1, - FORCESYNC = 2, +struct cdrom_volctrl { + __u8 channel0; + __u8 channel1; + __u8 channel2; + __u8 channel3; }; -struct log_c { - struct dm_target *ti; - int touched_dirtied; - int touched_cleaned; - int flush_failed; - uint32_t region_size; - unsigned int region_count; - region_t sync_count; - unsigned int bitset_uint32_count; - uint32_t *clean_bits; - uint32_t *sync_bits; - uint32_t *recovering_bits; - int sync_search; - enum sync sync; - struct dm_io_request io_req; - int log_dev_failed; - int log_dev_flush_failed; - struct dm_dev *log_dev; - struct log_header_core header; - struct dm_io_region header_location; - struct log_header_disk *disk_header; -}; - -enum dm_rh_region_states { - DM_RH_CLEAN = 1, - DM_RH_DIRTY = 2, - DM_RH_NOSYNC = 4, - DM_RH_RECOVERING = 8, -}; - -struct dm_region_hash { - uint32_t region_size; - unsigned int region_shift; - struct dm_dirty_log *log; - rwlock_t hash_lock; - unsigned int mask; - unsigned int nr_buckets; - unsigned int prime; - unsigned int shift; - struct list_head *buckets; - int flush_failure; - unsigned int max_recovery; - spinlock_t region_lock; - atomic_t recovery_in_flight; - struct list_head clean_regions; - struct list_head quiesced_regions; - struct list_head recovered_regions; - struct list_head failed_recovered_regions; - struct semaphore recovery_count; - mempool_t region_pool; - void *context; - sector_t target_begin; - void (*dispatch_bios)(void *, struct bio_list *); - void (*wakeup_workers)(void *); - void (*wakeup_all_recovery_waiters)(void *); +struct cdrom_subchnl { + __u8 cdsc_format; + __u8 cdsc_audiostatus; + __u8 cdsc_adr: 4; + __u8 cdsc_ctrl: 4; + __u8 cdsc_trk; + __u8 cdsc_ind; + union cdrom_addr cdsc_absaddr; + union cdrom_addr cdsc_reladdr; }; -struct dm_region { - struct dm_region_hash *rh; - region_t key; - int state; - struct list_head hash_list; - struct list_head list; - atomic_t pending; - struct bio_list delayed_bios; +struct cdrom_read_audio { + union cdrom_addr addr; + __u8 addr_format; + int nframes; + __u8 *buf; }; -struct dm_bio_details { - struct block_device *bi_bdev; - int __bi_remaining; - long unsigned int bi_flags; - struct bvec_iter bi_iter; - bio_end_io_t *bi_end_io; - struct bio_integrity_payload *bi_integrity; +struct cdrom_blk { + unsigned int from; + short unsigned int len; }; -enum dm_raid1_error { - DM_RAID1_WRITE_ERROR = 0, - DM_RAID1_FLUSH_ERROR = 1, - DM_RAID1_SYNC_ERROR = 2, - DM_RAID1_READ_ERROR = 3, +struct dvd_layer { + __u8 book_version: 4; + __u8 book_type: 4; + __u8 min_rate: 4; + __u8 disc_size: 4; + __u8 layer_type: 4; + __u8 track_path: 1; + __u8 nlayers: 2; + char: 1; + __u8 track_density: 4; + __u8 linear_density: 4; + __u8 bca: 1; + __u32 start_sector; + __u32 end_sector; + __u32 end_sector_l0; }; -struct mirror_set; - -struct mirror { - struct mirror_set *ms; - atomic_t error_count; - long unsigned int error_type; - struct dm_dev *dev; - sector_t offset; +struct dvd_physical { + __u8 type; + __u8 layer_num; + struct dvd_layer layer[4]; }; -struct dm_region_hash; +struct dvd_copyright { + __u8 type; + __u8 layer_num; + __u8 cpst; + __u8 rmi; +}; -struct mirror_set { - struct dm_target *ti; - struct list_head list; - uint64_t features; - spinlock_t lock; - struct bio_list reads; - struct bio_list writes; - struct bio_list failures; - struct bio_list holds; - struct dm_region_hash *rh; - struct dm_kcopyd_client *kcopyd_client; - struct dm_io_client *io_client; - region_t nr_regions; - int in_sync; - int log_failure; - int leg_failure; - atomic_t suspend; - atomic_t default_mirror; - struct workqueue_struct *kmirrord_wq; - struct work_struct kmirrord_work; - struct timer_list timer; - long unsigned int timer_pending; - struct work_struct trigger_event; - unsigned int nr_mirrors; - struct mirror mirror[0]; +struct dvd_disckey { + __u8 type; + unsigned int agid: 2; + __u8 value[2048]; }; -struct dm_raid1_bio_record { - struct mirror *m; - struct dm_bio_details details; - region_t write_region; +struct dvd_bca { + __u8 type; + int len; + __u8 value[188]; }; -struct dm_region; +struct dvd_manufact { + __u8 type; + __u8 layer_num; + int len; + __u8 value[2048]; +}; -struct hwspinlock; +typedef union { + __u8 type; + struct dvd_physical physical; + struct dvd_copyright copyright; + struct dvd_disckey disckey; + struct dvd_bca bca; + struct dvd_manufact manufact; +} dvd_struct; -struct hwspinlock_ops { - int (*trylock)(struct hwspinlock *); - void (*unlock)(struct hwspinlock *); - void (*relax)(struct hwspinlock *); -}; +typedef __u8 dvd_key[5]; -struct hwspinlock_device; +typedef __u8 dvd_challenge[10]; -struct hwspinlock { - struct hwspinlock_device *bank; - spinlock_t lock; - void *priv; +struct dvd_lu_send_agid { + __u8 type; + unsigned int agid: 2; }; -struct hwspinlock_device { - struct device *dev; - const struct hwspinlock_ops *ops; - int base_id; - int num_locks; - struct hwspinlock lock[0]; +struct dvd_host_send_challenge { + __u8 type; + unsigned int agid: 2; + dvd_challenge chal; }; -struct resource_table { - u32 ver; - u32 num; - u32 reserved[2]; - u32 offset[0]; +struct dvd_send_key { + __u8 type; + unsigned int agid: 2; + dvd_key key; }; -struct fw_rsc_hdr { - u32 type; - u8 data[0]; +struct dvd_lu_send_challenge { + __u8 type; + unsigned int agid: 2; + dvd_challenge chal; }; -enum fw_resource_type { - RSC_CARVEOUT = 0, - RSC_DEVMEM = 1, - RSC_TRACE = 2, - RSC_VDEV = 3, - RSC_LAST = 4, - RSC_VENDOR_START = 128, - RSC_VENDOR_END = 512, +struct dvd_lu_send_title_key { + __u8 type; + unsigned int agid: 2; + dvd_key title_key; + int lba; + unsigned int cpm: 1; + unsigned int cp_sec: 1; + unsigned int cgms: 2; }; -struct fw_rsc_carveout { - u32 da; - u32 pa; - u32 len; - u32 flags; - u32 reserved; - u8 name[32]; +struct dvd_lu_send_asf { + __u8 type; + unsigned int agid: 2; + unsigned int asf: 1; }; -struct fw_rsc_devmem { - u32 da; - u32 pa; - u32 len; - u32 flags; - u32 reserved; - u8 name[32]; +struct dvd_host_send_rpcstate { + __u8 type; + __u8 pdrc; }; -struct fw_rsc_trace { - u32 da; - u32 len; - u32 reserved; - u8 name[32]; +struct dvd_lu_send_rpcstate { + __u8 type: 2; + __u8 vra: 3; + __u8 ucca: 3; + __u8 region_mask; + __u8 rpc_scheme; }; -struct fw_rsc_vdev_vring { - u32 da; - u32 align; - u32 num; - u32 notifyid; - u32 pa; +typedef union { + __u8 type; + struct dvd_lu_send_agid lsa; + struct dvd_host_send_challenge hsc; + struct dvd_send_key lsk; + struct dvd_lu_send_challenge lsc; + struct dvd_send_key hsk; + struct dvd_lu_send_title_key lstk; + struct dvd_lu_send_asf lsasf; + struct dvd_host_send_rpcstate hrpcs; + struct dvd_lu_send_rpcstate lrpcs; +} dvd_authinfo; + +struct mrw_feature_desc { + __be16 feature_code; + __u8 reserved1: 2; + __u8 feature_version: 4; + __u8 persistent: 1; + __u8 curr: 1; + __u8 add_len; + __u8 reserved2: 7; + __u8 write: 1; + __u8 reserved3; + __u8 reserved4; + __u8 reserved5; }; -struct fw_rsc_vdev { - u32 id; - u32 notifyid; - u32 dfeatures; - u32 gfeatures; - u32 config_len; - u8 status; - u8 num_of_vrings; - u8 reserved[2]; - struct fw_rsc_vdev_vring vring[0]; +struct rwrt_feature_desc { + __be16 feature_code; + __u8 reserved1: 2; + __u8 feature_version: 4; + __u8 persistent: 1; + __u8 curr: 1; + __u8 add_len; + __u32 last_lba; + __u32 block_size; + __u16 blocking; + __u8 reserved2: 7; + __u8 page_present: 1; + __u8 reserved3; }; -struct rproc; +typedef struct { + __be16 disc_information_length; + __u8 reserved1: 3; + __u8 erasable: 1; + __u8 border_status: 2; + __u8 disc_status: 2; + __u8 n_first_track; + __u8 n_sessions_lsb; + __u8 first_track_lsb; + __u8 last_track_lsb; + __u8 did_v: 1; + __u8 dbc_v: 1; + __u8 uru: 1; + __u8 reserved2: 2; + __u8 dbit: 1; + __u8 mrw_status: 2; + __u8 disc_type; + __u8 n_sessions_msb; + __u8 first_track_msb; + __u8 last_track_msb; + __u32 disc_id; + __u32 lead_in; + __u32 lead_out; + __u8 disc_bar_code[8]; + __u8 reserved3; + __u8 n_opc; +} disc_information; -struct rproc_mem_entry { - void *va; - bool is_iomem; - dma_addr_t dma; - size_t len; - u32 da; - void *priv; - char name[32]; - struct list_head node; - u32 rsc_offset; - u32 flags; - u32 of_resm_idx; - int (*alloc)(struct rproc *, struct rproc_mem_entry *); - int (*release)(struct rproc *, struct rproc_mem_entry *); -}; +typedef struct { + __be16 track_information_length; + __u8 track_lsb; + __u8 session_lsb; + __u8 reserved1; + __u8 reserved2: 2; + __u8 damage: 1; + __u8 copy: 1; + __u8 track_mode: 4; + __u8 rt: 1; + __u8 blank: 1; + __u8 packet: 1; + __u8 fp: 1; + __u8 data_mode: 4; + __u8 reserved3: 6; + __u8 lra_v: 1; + __u8 nwa_v: 1; + __be32 track_start; + __be32 next_writable; + __be32 free_blocks; + __be32 fixed_packet_size; + __be32 track_size; + __be32 last_rec_address; +} track_information; -enum rproc_dump_mechanism { - RPROC_COREDUMP_DISABLED = 0, - RPROC_COREDUMP_ENABLED = 1, - RPROC_COREDUMP_INLINE = 2, +struct mode_page_header { + __be16 mode_data_length; + __u8 medium_type; + __u8 reserved1; + __u8 reserved2; + __u8 reserved3; + __be16 desc_length; }; -struct rproc_ops; +typedef struct { + int data; + int audio; + int cdi; + int xa; + long int error; +} tracktype; -struct rproc { - struct list_head node; - struct iommu_domain *domain; - const char *name; - const char *firmware; - void *priv; - struct rproc_ops *ops; - struct device dev; - atomic_t power; - unsigned int state; - enum rproc_dump_mechanism dump_conf; - struct mutex lock; - struct dentry *dbg_dir; - struct list_head traces; - int num_traces; - struct list_head carveouts; - struct list_head mappings; - u64 bootaddr; - struct list_head rvdevs; - struct list_head subdevs; - struct idr notifyids; - int index; - struct work_struct crash_handler; - unsigned int crash_cnt; - bool recovery_disabled; - int max_notifyid; - struct resource_table *table_ptr; - struct resource_table *clean_table; - struct resource_table *cached_table; - size_t table_sz; - bool has_iommu; - bool auto_boot; - bool sysfs_read_only; - struct list_head dump_segments; - int nb_vdev; - u8 elf_class; - u16 elf_machine; - struct cdev cdev; - bool cdev_put_on_release; -}; - -enum rsc_handling_status { - RSC_HANDLED = 0, - RSC_IGNORED = 1, -}; - -struct rproc_ops { - int (*prepare)(struct rproc *); - int (*unprepare)(struct rproc *); - int (*start)(struct rproc *); - int (*stop)(struct rproc *); - int (*attach)(struct rproc *); - int (*detach)(struct rproc *); - void (*kick)(struct rproc *, int); - void * (*da_to_va)(struct rproc *, u64, size_t, bool *); - int (*parse_fw)(struct rproc *, const struct firmware *); - int (*handle_rsc)(struct rproc *, u32, void *, int, int); - struct resource_table * (*find_loaded_rsc_table)(struct rproc *, const struct firmware *); - struct resource_table * (*get_loaded_rsc_table)(struct rproc *, size_t *); - int (*load)(struct rproc *, const struct firmware *); - int (*sanity_check)(struct rproc *, const struct firmware *); - u64 (*get_boot_addr)(struct rproc *, const struct firmware *); - long unsigned int (*panic)(struct rproc *); - void (*coredump)(struct rproc *); -}; - -enum rproc_state { - RPROC_OFFLINE = 0, - RPROC_SUSPENDED = 1, - RPROC_RUNNING = 2, - RPROC_CRASHED = 3, - RPROC_DELETED = 4, - RPROC_ATTACHED = 5, - RPROC_DETACHED = 6, - RPROC_LAST = 7, -}; - -enum rproc_crash_type { - RPROC_MMUFAULT = 0, - RPROC_WATCHDOG = 1, - RPROC_FATAL_ERROR = 2, -}; - -struct rproc_subdev { - struct list_head node; - int (*prepare)(struct rproc_subdev *); - int (*start)(struct rproc_subdev *); - void (*stop)(struct rproc_subdev *, bool); - void (*unprepare)(struct rproc_subdev *); +struct cdrom_mechstat_header { + __u8 fault: 1; + __u8 changer_state: 2; + __u8 curslot: 5; + __u8 mech_state: 3; + __u8 door_open: 1; + __u8 reserved1: 4; + __u8 curlba[3]; + __u8 nslots; + __u16 slot_tablelen; }; -struct rproc_vdev; - -struct rproc_vring { - void *va; - int len; - u32 da; - u32 align; - int notifyid; - struct rproc_vdev *rvdev; - struct virtqueue *vq; +struct cdrom_slot { + __u8 disc_present: 1; + __u8 reserved1: 6; + __u8 change: 1; + __u8 reserved2[3]; }; -struct rproc_vdev { - struct kref refcount; - struct rproc_subdev subdev; - struct device dev; - unsigned int id; - struct list_head node; - struct rproc *rproc; - struct rproc_vring vring[2]; - u32 rsc_offset; - u32 index; +struct cdrom_changer_info { + struct cdrom_mechstat_header hdr; + struct cdrom_slot slots[256]; }; -struct rproc_debug_trace { - struct rproc *rproc; - struct dentry *tfile; - struct list_head node; - struct rproc_mem_entry trace_mem; +struct modesel_head { + __u8 reserved1; + __u8 medium; + __u8 reserved2; + __u8 block_desc_length; + __u8 density; + __u8 number_of_blocks_hi; + __u8 number_of_blocks_med; + __u8 number_of_blocks_lo; + __u8 reserved3; + __u8 block_length_hi; + __u8 block_length_med; + __u8 block_length_lo; }; -typedef int (*rproc_handle_resource_t)(struct rproc *, void *, int, int); +typedef struct { + __u16 report_key_length; + __u8 reserved1; + __u8 reserved2; + __u8 type_code: 2; + __u8 vra: 3; + __u8 ucca: 3; + __u8 region_mask; + __u8 rpc_scheme; + __u8 reserved3; +} rpc_state_t; -struct rproc_dump_segment { - struct list_head node; - dma_addr_t da; - size_t size; - void *priv; - void (*dump)(struct rproc *, struct rproc_dump_segment *, void *, size_t, size_t); - loff_t offset; +struct cdrom_sysctl_settings { + char info[1000]; + int autoclose; + int autoeject; + int debug; + int lock; + int check; }; -struct rproc_coredump_state { - struct rproc *rproc; - void *header; - struct completion dump_done; +enum cdrom_print_option { + CTL_NAME = 0, + CTL_SPEED = 1, + CTL_SLOTS = 2, + CTL_CAPABILITY = 3, }; -union extcon_property_value { - int intval; +struct compat_cdrom_read_audio { + union cdrom_addr addr; + u8 addr_format; + compat_int_t nframes; + compat_caddr_t buf; }; -struct extcon_cable; +struct input_mt_slot { + int abs[14]; + unsigned int frame; + unsigned int key; +}; -struct extcon_dev { - const char *name; - const unsigned int *supported_cable; - const u32 *mutually_exclusive; - struct device dev; - struct raw_notifier_head nh_all; - struct raw_notifier_head *nh; - struct list_head entry; - int max_supported; - spinlock_t lock; - u32 state; - struct device_type extcon_dev_type; - struct extcon_cable *cables; - struct attribute_group attr_g_muex; - struct attribute **attrs_muex; - struct device_attribute *d_attrs_muex; -}; - -struct extcon_cable { - struct extcon_dev *edev; - int cable_index; - struct attribute_group attr_g; - struct device_attribute attr_name; - struct device_attribute attr_state; - struct attribute *attrs[3]; - union extcon_property_value usb_propval[3]; - union extcon_property_value chg_propval[1]; - union extcon_property_value jack_propval[1]; - union extcon_property_value disp_propval[2]; - long unsigned int usb_bits[1]; - long unsigned int chg_bits[1]; - long unsigned int jack_bits[1]; - long unsigned int disp_bits[1]; -}; - -struct __extcon_info { - unsigned int type; - unsigned int id; - const char *name; +struct input_mt { + int trkid; + int num_slots; + int slot; + unsigned int flags; + unsigned int frame; + int *red; + struct input_mt_slot slots[0]; }; -struct powercap_control_type; - -struct powercap_control_type_ops { - int (*set_enable)(struct powercap_control_type *, bool); - int (*get_enable)(struct powercap_control_type *, bool *); - int (*release)(struct powercap_control_type *); +union input_seq_state { + struct { + short unsigned int pos; + bool mutex_acquired; + }; + void *p; }; -struct powercap_control_type { - struct device dev; - struct idr idr; - int nr_zones; - const struct powercap_control_type_ops *ops; - struct mutex lock; - bool allocated; - struct list_head node; +struct input_devres { + struct input_dev *input; }; -struct powercap_zone; - -struct powercap_zone_ops { - int (*get_max_energy_range_uj)(struct powercap_zone *, u64 *); - int (*get_energy_uj)(struct powercap_zone *, u64 *); - int (*reset_energy_uj)(struct powercap_zone *); - int (*get_max_power_range_uw)(struct powercap_zone *, u64 *); - int (*get_power_uw)(struct powercap_zone *, u64 *); - int (*set_enable)(struct powercap_zone *, bool); - int (*get_enable)(struct powercap_zone *, bool *); - int (*release)(struct powercap_zone *); +struct input_event { + __kernel_ulong_t __sec; + __kernel_ulong_t __usec; + __u16 type; + __u16 code; + __s32 value; }; -struct powercap_zone_constraint; - -struct powercap_zone { - int id; - char *name; - void *control_type_inst; - const struct powercap_zone_ops *ops; - struct device dev; - int const_id_cnt; - struct idr idr; - struct idr *parent_idr; - void *private_data; - struct attribute **zone_dev_attrs; - int zone_attr_count; - struct attribute_group dev_zone_attr_group; - const struct attribute_group *dev_attr_groups[2]; - bool allocated; - struct powercap_zone_constraint *constraints; +struct input_event_compat { + compat_ulong_t sec; + compat_ulong_t usec; + __u16 type; + __u16 code; + __s32 value; }; -struct powercap_zone_constraint_ops; - -struct powercap_zone_constraint { - int id; - struct powercap_zone *power_zone; - const struct powercap_zone_constraint_ops *ops; +struct ff_periodic_effect_compat { + __u16 waveform; + __u16 period; + __s16 magnitude; + __s16 offset; + __u16 phase; + struct ff_envelope envelope; + __u32 custom_len; + compat_uptr_t custom_data; }; -struct powercap_zone_constraint_ops { - int (*set_power_limit_uw)(struct powercap_zone *, int, u64); - int (*get_power_limit_uw)(struct powercap_zone *, int, u64 *); - int (*set_time_window_us)(struct powercap_zone *, int, u64); - int (*get_time_window_us)(struct powercap_zone *, int, u64 *); - int (*get_max_power_uw)(struct powercap_zone *, int, u64 *); - int (*get_min_power_uw)(struct powercap_zone *, int, u64 *); - int (*get_max_time_window_us)(struct powercap_zone *, int, u64 *); - int (*get_min_time_window_us)(struct powercap_zone *, int, u64 *); - const char * (*get_name)(struct powercap_zone *, int); +struct ff_effect_compat { + __u16 type; + __s16 id; + __u16 direction; + struct ff_trigger trigger; + struct ff_replay replay; + union { + struct ff_constant_effect constant; + struct ff_ramp_effect ramp; + struct ff_periodic_effect_compat periodic; + struct ff_condition_effect condition[2]; + struct ff_rumble_effect rumble; + } u; }; -struct powercap_constraint_attr { - struct device_attribute power_limit_attr; - struct device_attribute time_window_attr; - struct device_attribute max_power_attr; - struct device_attribute min_power_attr; - struct device_attribute max_time_window_attr; - struct device_attribute min_time_window_attr; - struct device_attribute name_attr; +struct input_mt_pos { + s16 x; + s16 y; }; -struct cper_sec_proc_arm { - u32 validation_bits; - u16 err_info_num; - u16 context_info_num; - u32 section_length; - u8 affinity_level; - u8 reserved[3]; - u64 mpidr; - u64 midr; - u32 running_state; - u32 psci_state; +struct input_dev_poller { + void (*poll)(struct input_dev *); + unsigned int poll_interval; + unsigned int poll_interval_max; + unsigned int poll_interval_min; + struct input_dev *input; + struct delayed_work work; }; -enum hw_event_mc_err_type { - HW_EVENT_ERR_CORRECTED = 0, - HW_EVENT_ERR_UNCORRECTED = 1, - HW_EVENT_ERR_DEFERRED = 2, - HW_EVENT_ERR_FATAL = 3, - HW_EVENT_ERR_INFO = 4, +struct touchscreen_properties { + unsigned int max_x; + unsigned int max_y; + bool invert_x; + bool invert_y; + bool swap_x_y; }; -struct trace_event_raw_mc_event { - struct trace_entry ent; - unsigned int error_type; - u32 __data_loc_msg; - u32 __data_loc_label; - u16 error_count; - u8 mc_index; - s8 top_layer; - s8 middle_layer; - s8 lower_layer; - long int address; - u8 grain_bits; - long int syndrome; - u32 __data_loc_driver_detail; - char __data[0]; +struct input_mask { + __u32 type; + __u32 codes_size; + __u64 codes_ptr; }; -struct trace_event_raw_arm_event { - struct trace_entry ent; - u64 mpidr; - u64 midr; - u32 running_state; - u32 psci_state; - u8 affinity; - char __data[0]; -}; +struct evdev_client; -struct trace_event_raw_non_standard_event { - struct trace_entry ent; - char sec_type[16]; - char fru_id[16]; - u32 __data_loc_fru_text; - u8 sev; - u32 len; - u32 __data_loc_buf; - char __data[0]; +struct evdev { + int open; + struct input_handle handle; + struct evdev_client *grab; + struct list_head client_list; + spinlock_t client_lock; + struct mutex mutex; + struct device dev; + struct cdev cdev; + bool exist; }; -struct trace_event_raw_aer_event { - struct trace_entry ent; - u32 __data_loc_dev_name; - u32 status; - u8 severity; - u8 tlp_header_valid; - u32 tlp_header[4]; - char __data[0]; +struct evdev_client { + unsigned int head; + unsigned int tail; + unsigned int packet_head; + spinlock_t buffer_lock; + wait_queue_head_t wait; + struct fasync_struct *fasync; + struct evdev *evdev; + struct list_head node; + enum input_clock_type clk_type; + bool revoked; + long unsigned int *evmasks[32]; + unsigned int bufsize; + struct input_event buffer[0]; }; -struct trace_event_data_offsets_mc_event { - u32 msg; - u32 label; - u32 driver_detail; +struct i2c_board_info { + char type[20]; + short unsigned int flags; + short unsigned int addr; + const char *dev_name; + void *platform_data; + struct device_node *of_node; + struct fwnode_handle *fwnode; + const struct software_node *swnode; + const struct resource *resources; + unsigned int num_resources; + int irq; }; -struct trace_event_data_offsets_arm_event {}; - -struct trace_event_data_offsets_non_standard_event { - u32 fru_text; - u32 buf; +struct i2c_devinfo { + struct list_head list; + int busnum; + struct i2c_board_info board_info; }; -struct trace_event_data_offsets_aer_event { - u32 dev_name; +struct watchdog_info { + __u32 options; + __u32 firmware_version; + __u8 identity[32]; }; -typedef void (*btf_trace_mc_event)(void *, const unsigned int, const char *, const char *, const int, const u8, const s8, const s8, const s8, long unsigned int, const u8, long unsigned int, const char *); +struct watchdog_device; -typedef void (*btf_trace_arm_event)(void *, const struct cper_sec_proc_arm *); +struct watchdog_ops { + struct module *owner; + int (*start)(struct watchdog_device *); + int (*stop)(struct watchdog_device *); + int (*ping)(struct watchdog_device *); + unsigned int (*status)(struct watchdog_device *); + int (*set_timeout)(struct watchdog_device *, unsigned int); + int (*set_pretimeout)(struct watchdog_device *, unsigned int); + unsigned int (*get_timeleft)(struct watchdog_device *); + int (*restart)(struct watchdog_device *, long unsigned int, void *); + long int (*ioctl)(struct watchdog_device *, unsigned int, long unsigned int); +}; -typedef void (*btf_trace_non_standard_event)(void *, const guid_t *, const guid_t *, const char *, const u8, const u8 *, const u32); +struct watchdog_governor; -typedef void (*btf_trace_aer_event)(void *, const char *, const u32, const u8, const u8, struct aer_header_log_regs *); +struct watchdog_core_data; -struct extcon_dev_notifier_devres { - struct extcon_dev *edev; - unsigned int id; - struct notifier_block *nb; +struct watchdog_device { + int id; + struct device *parent; + const struct attribute_group **groups; + const struct watchdog_info *info; + const struct watchdog_ops *ops; + const struct watchdog_governor *gov; + unsigned int bootstatus; + unsigned int timeout; + unsigned int pretimeout; + unsigned int min_timeout; + unsigned int max_timeout; + unsigned int min_hw_heartbeat_ms; + unsigned int max_hw_heartbeat_ms; + struct notifier_block reboot_nb; + struct notifier_block restart_nb; + struct notifier_block pm_nb; + void *driver_data; + struct watchdog_core_data *wd_data; + long unsigned int status; + struct list_head deferred; }; -enum tb_cfg_pkg_type { - TB_CFG_PKG_READ = 1, - TB_CFG_PKG_WRITE = 2, - TB_CFG_PKG_ERROR = 3, - TB_CFG_PKG_NOTIFY_ACK = 4, - TB_CFG_PKG_EVENT = 5, - TB_CFG_PKG_XDOMAIN_REQ = 6, - TB_CFG_PKG_XDOMAIN_RESP = 7, - TB_CFG_PKG_OVERRIDE = 8, - TB_CFG_PKG_RESET = 9, - TB_CFG_PKG_ICM_EVENT = 10, - TB_CFG_PKG_ICM_CMD = 11, - TB_CFG_PKG_ICM_RESP = 12, - TB_CFG_PKG_PREPARE_TO_SLEEP = 13, +struct watchdog_governor { + const char name[20]; + void (*pretimeout)(struct watchdog_device *); }; -enum tb_security_level { - TB_SECURITY_NONE = 0, - TB_SECURITY_USER = 1, - TB_SECURITY_SECURE = 2, - TB_SECURITY_DPONLY = 3, - TB_SECURITY_USBONLY = 4, - TB_SECURITY_NOPCIE = 5, +struct watchdog_core_data { + struct device dev; + struct cdev cdev; + struct watchdog_device *wdd; + struct mutex lock; + ktime_t last_keepalive; + ktime_t last_hw_keepalive; + ktime_t open_deadline; + struct hrtimer timer; + struct kthread_work work; + long unsigned int status; }; -struct tb_nhi; +struct watchdog_pretimeout { + struct watchdog_device *wdd; + struct list_head entry; +}; -struct tb_ctl; +struct governor_priv { + struct watchdog_governor *gov; + struct list_head entry; +}; -struct tb_switch; +struct md_cluster_info; -struct tb_cm_ops; +struct md_personality; -struct tb { - struct device dev; - struct mutex lock; - struct tb_nhi *nhi; - struct tb_ctl *ctl; - struct workqueue_struct *wq; - struct tb_switch *root_switch; - const struct tb_cm_ops *cm_ops; - int index; - enum tb_security_level security_level; - size_t nboot_acl; - long unsigned int privdata[0]; -}; +struct md_thread; -struct tb_nhi_ops; +struct bitmap; -struct tb_ring; +struct md_rdev; -struct tb_nhi { +struct mddev { + void *private; + struct md_personality *pers; + dev_t unit; + int md_minor; + struct list_head disks; + long unsigned int flags; + long unsigned int sb_flags; + int suspended; + atomic_t active_io; + int ro; + int sysfs_active; + struct gendisk *gendisk; + struct kobject kobj; + int hold_active; + int major_version; + int minor_version; + int patch_version; + int persistent; + int external; + char metadata_type[17]; + int chunk_sectors; + time64_t ctime; + time64_t utime; + int level; + int layout; + char clevel[16]; + int raid_disks; + int max_disks; + sector_t dev_sectors; + sector_t array_sectors; + int external_size; + __u64 events; + int can_decrease_events; + char uuid[16]; + sector_t reshape_position; + int delta_disks; + int new_level; + int new_layout; + int new_chunk_sectors; + int reshape_backwards; + struct md_thread *thread; + struct md_thread *sync_thread; + char *last_sync_action; + sector_t curr_resync; + sector_t curr_resync_completed; + long unsigned int resync_mark; + sector_t resync_mark_cnt; + sector_t curr_mark_cnt; + sector_t resync_max_sectors; + atomic64_t resync_mismatches; + sector_t suspend_lo; + sector_t suspend_hi; + int sync_speed_min; + int sync_speed_max; + int parallel_resync; + int ok_start_degraded; + long unsigned int recovery; + int recovery_disabled; + int in_sync; + struct mutex open_mutex; + struct mutex reconfig_mutex; + atomic_t active; + atomic_t openers; + int changed; + int degraded; + atomic_t recovery_active; + wait_queue_head_t recovery_wait; + sector_t recovery_cp; + sector_t resync_min; + sector_t resync_max; + struct kernfs_node *sysfs_state; + struct kernfs_node *sysfs_action; + struct kernfs_node *sysfs_completed; + struct kernfs_node *sysfs_degraded; + struct kernfs_node *sysfs_level; + struct work_struct del_work; spinlock_t lock; - struct pci_dev *pdev; - const struct tb_nhi_ops *ops; - void *iobase; - struct tb_ring **tx_rings; - struct tb_ring **rx_rings; - struct ida msix_ida; - bool going_away; - struct work_struct interrupt_work; - u32 hop_count; - long unsigned int quirks; + wait_queue_head_t sb_wait; + atomic_t pending_writes; + unsigned int safemode; + unsigned int safemode_delay; + struct timer_list safemode_timer; + struct percpu_ref writes_pending; + int sync_checkers; + struct request_queue *queue; + struct bitmap *bitmap; + struct { + struct file *file; + loff_t offset; + long unsigned int space; + loff_t default_offset; + long unsigned int default_space; + struct mutex mutex; + long unsigned int chunksize; + long unsigned int daemon_sleep; + long unsigned int max_write_behind; + int external; + int nodes; + char cluster_name[64]; + } bitmap_info; + atomic_t max_corr_read_errors; + struct list_head all_mddevs; + const struct attribute_group *to_remove; + struct bio_set bio_set; + struct bio_set sync_set; + struct bio_set io_acct_set; + struct bio *flush_bio; + atomic_t flush_pending; + ktime_t start_flush; + ktime_t prev_flush_start; + struct work_struct flush_work; + struct work_struct event_work; + mempool_t *serial_info_pool; + void (*sync_super)(struct mddev *, struct md_rdev *); + struct md_cluster_info *cluster_info; + unsigned int good_device_nr; + unsigned int noio_flag; + bool has_superblocks: 1; + bool fail_last_dev: 1; + bool serialize_policy: 1; }; -struct tb_regs_switch_header { - u16 vendor_id; - u16 device_id; - u32 first_cap_offset: 8; - u32 upstream_port_number: 6; - u32 max_port_number: 6; - u32 depth: 3; - u32 __unknown1: 1; - u32 revision: 8; - u32 route_lo; - u32 route_hi: 31; - bool enabled: 1; - u32 plug_events_delay: 8; - u32 cmuv: 8; - u32 __unknown4: 8; - u32 thunderbolt_version: 8; -}; +struct serial_in_rdev; -enum tb_switch_tmu_rate { - TB_SWITCH_TMU_RATE_OFF = 0, - TB_SWITCH_TMU_RATE_HIFI = 16, - TB_SWITCH_TMU_RATE_NORMAL = 1000, +struct md_rdev { + struct list_head same_set; + sector_t sectors; + struct mddev *mddev; + int last_events; + struct block_device *meta_bdev; + struct block_device *bdev; + struct page *sb_page; + struct page *bb_page; + int sb_loaded; + __u64 sb_events; + sector_t data_offset; + sector_t new_data_offset; + sector_t sb_start; + int sb_size; + int preferred_minor; + struct kobject kobj; + long unsigned int flags; + wait_queue_head_t blocked_wait; + int desc_nr; + int raid_disk; + int new_raid_disk; + int saved_raid_disk; + union { + sector_t recovery_offset; + sector_t journal_tail; + }; + atomic_t nr_pending; + atomic_t read_errors; + time64_t last_read_error; + atomic_t corrected_errors; + struct serial_in_rdev *serial; + struct work_struct del_work; + struct kernfs_node *sysfs_state; + struct kernfs_node *sysfs_unack_badblocks; + struct kernfs_node *sysfs_badblocks; + struct badblocks badblocks; + struct { + short int offset; + unsigned int size; + sector_t sector; + } ppl; }; -struct tb_switch_tmu { - int cap; - bool has_ucap; - enum tb_switch_tmu_rate rate; - bool unidirectional; - bool unidirectional_request; - enum tb_switch_tmu_rate rate_request; +struct serial_in_rdev { + struct rb_root_cached serial_rb; + spinlock_t serial_lock; + wait_queue_head_t serial_io_wait; }; -enum tb_clx { - TB_CLX_DISABLE = 0, - TB_CL0S = 1, - TB_CL1 = 2, - TB_CL2 = 3, +enum flag_bits { + Faulty = 0, + In_sync = 1, + Bitmap_sync = 2, + WriteMostly = 3, + AutoDetected = 4, + Blocked = 5, + WriteErrorSeen = 6, + FaultRecorded = 7, + BlockedBadBlocks = 8, + WantReplacement = 9, + Replacement = 10, + Candidate = 11, + Journal = 12, + ClusterRemove = 13, + RemoveSynchronized = 14, + ExternalBbl = 15, + FailFast = 16, + LastDev = 17, + CollisionCheck = 18, }; -struct tb_port; - -struct tb_dma_port; - -struct tb_nvm; - -struct tb_switch { - struct device dev; - struct tb_regs_switch_header config; - struct tb_port *ports; - struct tb_dma_port *dma_port; - struct tb_switch_tmu tmu; - struct tb *tb; - u64 uid; - uuid_t *uuid; - u16 vendor; - u16 device; - const char *vendor_name; - const char *device_name; - unsigned int link_speed; - unsigned int link_width; - bool link_usb4; - unsigned int generation; - int cap_plug_events; - int cap_vsec_tmu; - int cap_lc; - int cap_lp; - bool is_unplugged; - u8 *drom; - struct tb_nvm *nvm; - bool no_nvm_upgrade; - bool safe_mode; - bool boot; - bool rpm; - unsigned int authorized; - enum tb_security_level security_level; - struct dentry *debugfs_dir; - u8 *key; - u8 connection_id; - u8 connection_key; - u8 link; - u8 depth; - struct completion rpm_complete; - long unsigned int quirks; - bool credit_allocation; - unsigned int max_usb3_credits; - unsigned int min_dp_aux_credits; - unsigned int min_dp_main_credits; - unsigned int max_pcie_credits; - unsigned int max_dma_credits; - enum tb_clx clx; -}; - -struct tb_xdomain; - -struct tb_cm_ops { - int (*driver_ready)(struct tb *); - int (*start)(struct tb *); - void (*stop)(struct tb *); - int (*suspend_noirq)(struct tb *); - int (*resume_noirq)(struct tb *); - int (*suspend)(struct tb *); - int (*freeze_noirq)(struct tb *); - int (*thaw_noirq)(struct tb *); - void (*complete)(struct tb *); - int (*runtime_suspend)(struct tb *); - int (*runtime_resume)(struct tb *); - int (*runtime_suspend_switch)(struct tb_switch *); - int (*runtime_resume_switch)(struct tb_switch *); - void (*handle_event)(struct tb *, enum tb_cfg_pkg_type, const void *, size_t); - int (*get_boot_acl)(struct tb *, uuid_t *, size_t); - int (*set_boot_acl)(struct tb *, const uuid_t *, size_t); - int (*disapprove_switch)(struct tb *, struct tb_switch *); - int (*approve_switch)(struct tb *, struct tb_switch *); - int (*add_switch_key)(struct tb *, struct tb_switch *); - int (*challenge_switch_key)(struct tb *, struct tb_switch *, const u8 *, u8 *); - int (*disconnect_pcie_paths)(struct tb *); - int (*approve_xdomain_paths)(struct tb *, struct tb_xdomain *, int, int, int, int); - int (*disconnect_xdomain_paths)(struct tb *, struct tb_xdomain *, int, int, int, int); - int (*usb4_switch_op)(struct tb_switch *, u16, u32 *, u8 *, const void *, size_t, void *, size_t); - int (*usb4_switch_nvm_authenticate_status)(struct tb_switch *, u32 *); -}; - -struct tb_property_dir { - const uuid_t *uuid; - struct list_head properties; -}; - -struct tb_xdomain { - struct device dev; - struct tb *tb; - uuid_t *remote_uuid; - const uuid_t *local_uuid; - u64 route; - u16 vendor; - u16 device; - unsigned int local_max_hopid; - unsigned int remote_max_hopid; - struct mutex lock; - const char *vendor_name; - const char *device_name; - unsigned int link_speed; - unsigned int link_width; - bool is_unplugged; - bool needs_uuid; - struct ida service_ids; - struct ida in_hopids; - struct ida out_hopids; - u32 *local_property_block; - u32 local_property_block_gen; - u32 local_property_block_len; - struct tb_property_dir *remote_properties; - u32 remote_property_block_gen; - struct delayed_work get_uuid_work; - int uuid_retries; - struct delayed_work get_properties_work; - int properties_retries; - struct delayed_work properties_changed_work; - int properties_changed_retries; - u8 link; - u8 depth; +enum mddev_sb_flags { + MD_SB_CHANGE_DEVS = 0, + MD_SB_CHANGE_CLEAN = 1, + MD_SB_CHANGE_PENDING = 2, + MD_SB_NEED_REWRITE = 3, }; -struct tb_nhi_ops { - int (*init)(struct tb_nhi *); - int (*suspend_noirq)(struct tb_nhi *, bool); - int (*resume_noirq)(struct tb_nhi *); - int (*runtime_suspend)(struct tb_nhi *); - int (*runtime_resume)(struct tb_nhi *); - void (*shutdown)(struct tb_nhi *); +struct md_personality { + char *name; + int level; + struct list_head list; + struct module *owner; + bool (*make_request)(struct mddev *, struct bio *); + int (*run)(struct mddev *); + int (*start)(struct mddev *); + void (*free)(struct mddev *, void *); + void (*status)(struct seq_file *, struct mddev *); + void (*error_handler)(struct mddev *, struct md_rdev *); + int (*hot_add_disk)(struct mddev *, struct md_rdev *); + int (*hot_remove_disk)(struct mddev *, struct md_rdev *); + int (*spare_active)(struct mddev *); + sector_t (*sync_request)(struct mddev *, sector_t, int *); + int (*resize)(struct mddev *, sector_t); + sector_t (*size)(struct mddev *, sector_t, int); + int (*check_reshape)(struct mddev *); + int (*start_reshape)(struct mddev *); + void (*finish_reshape)(struct mddev *); + void (*update_reshape_pos)(struct mddev *); + void (*quiesce)(struct mddev *, int); + void * (*takeover)(struct mddev *); + int (*change_consistency_policy)(struct mddev *, const char *); }; -struct ring_desc; - -struct tb_ring { - spinlock_t lock; - struct tb_nhi *nhi; - int size; - int hop; - int head; - int tail; - struct ring_desc *descriptors; - dma_addr_t descriptors_dma; - struct list_head queue; - struct list_head in_flight; - struct work_struct work; - bool is_tx: 1; - bool running: 1; - int irq; - u8 vector; - unsigned int flags; - int e2e_tx_hop; - u16 sof_mask; - u16 eof_mask; - void (*start_poll)(void *); - void *poll_data; +struct md_thread { + void (*run)(struct md_thread *); + struct mddev *mddev; + wait_queue_head_t wqueue; + long unsigned int flags; + struct task_struct *tsk; + long unsigned int timeout; + void *private; }; -enum ring_desc_flags { - RING_DESC_ISOCH = 1, - RING_DESC_CRC_ERROR = 1, - RING_DESC_COMPLETED = 2, - RING_DESC_POSTED = 4, - RING_DESC_BUFFER_OVERRUN = 4, - RING_DESC_INTERRUPT = 8, +enum recovery_flags { + MD_RECOVERY_RUNNING = 0, + MD_RECOVERY_SYNC = 1, + MD_RECOVERY_RECOVER = 2, + MD_RECOVERY_INTR = 3, + MD_RECOVERY_DONE = 4, + MD_RECOVERY_NEEDED = 5, + MD_RECOVERY_REQUESTED = 6, + MD_RECOVERY_CHECK = 7, + MD_RECOVERY_RESHAPE = 8, + MD_RECOVERY_FROZEN = 9, + MD_RECOVERY_ERROR = 10, + MD_RECOVERY_WAIT = 11, + MD_RESYNCING_REMOTE = 12, }; -struct ring_desc { - u64 phys; - u32 length: 12; - u32 eof: 4; - u32 sof: 4; - enum ring_desc_flags flags: 12; - u32 time; +struct multipath_info { + struct md_rdev *rdev; }; -struct ring_frame; - -typedef void (*ring_cb)(struct tb_ring *, struct ring_frame *, bool); - -struct ring_frame { - dma_addr_t buffer_phy; - ring_cb callback; - struct list_head list; - u32 size: 12; - u32 flags: 12; - u32 eof: 4; - u32 sof: 4; +struct mpconf { + struct mddev *mddev; + struct multipath_info *multipaths; + int raid_disks; + spinlock_t device_lock; + struct list_head retry_list; + mempool_t pool; }; -enum nhi_fw_mode { - NHI_FW_SAFE_MODE = 0, - NHI_FW_AUTH_MODE = 1, - NHI_FW_EP_MODE = 2, - NHI_FW_CM_MODE = 3, +struct multipath_bh { + struct mddev *mddev; + struct bio *master_bio; + struct bio bio; + int path; + struct list_head retry_list; }; -enum nhi_mailbox_cmd { - NHI_MAILBOX_SAVE_DEVS = 5, - NHI_MAILBOX_DISCONNECT_PCIE_PATHS = 6, - NHI_MAILBOX_DRV_UNLOADS = 7, - NHI_MAILBOX_DISCONNECT_PA = 16, - NHI_MAILBOX_DISCONNECT_PB = 17, - NHI_MAILBOX_ALLOW_ALL_DEVS = 35, +struct mdp_device_descriptor_s { + __u32 number; + __u32 major; + __u32 minor; + __u32 raid_disk; + __u32 state; + __u32 reserved[27]; }; -enum ring_flags { - RING_FLAG_ISOCH_ENABLE = 134217728, - RING_FLAG_E2E_FLOW_CONTROL = 268435456, - RING_FLAG_PCI_NO_SNOOP = 536870912, - RING_FLAG_RAW = 1073741824, - RING_FLAG_ENABLE = 2147483648, -}; +typedef struct mdp_device_descriptor_s mdp_disk_t; -enum tb_port_type { - TB_TYPE_INACTIVE = 0, - TB_TYPE_PORT = 1, - TB_TYPE_NHI = 2, - TB_TYPE_DP_HDMI_IN = 917761, - TB_TYPE_DP_HDMI_OUT = 917762, - TB_TYPE_PCIE_DOWN = 1048833, - TB_TYPE_PCIE_UP = 1048834, - TB_TYPE_USB3_DOWN = 2097409, - TB_TYPE_USB3_UP = 2097410, +struct mdp_superblock_s { + __u32 md_magic; + __u32 major_version; + __u32 minor_version; + __u32 patch_version; + __u32 gvalid_words; + __u32 set_uuid0; + __u32 ctime; + __u32 level; + __u32 size; + __u32 nr_disks; + __u32 raid_disks; + __u32 md_minor; + __u32 not_persistent; + __u32 set_uuid1; + __u32 set_uuid2; + __u32 set_uuid3; + __u32 gstate_creserved[16]; + __u32 utime; + __u32 state; + __u32 active_disks; + __u32 working_disks; + __u32 failed_disks; + __u32 spare_disks; + __u32 sb_csum; + __u32 events_hi; + __u32 events_lo; + __u32 cp_events_hi; + __u32 cp_events_lo; + __u32 recovery_cp; + __u64 reshape_position; + __u32 new_level; + __u32 delta_disks; + __u32 new_layout; + __u32 new_chunk; + __u32 gstate_sreserved[14]; + __u32 layout; + __u32 chunk_size; + __u32 root_pv; + __u32 root_block; + __u32 pstate_reserved[60]; + mdp_disk_t disks[27]; + __u32 reserved[0]; + mdp_disk_t this_disk; }; -struct tb_regs_port_header { - u16 vendor_id; - u16 device_id; - u32 first_cap_offset: 8; - u32 max_counters: 11; - u32 counters_support: 1; - u32 __unknown1: 4; - u32 revision: 8; - enum tb_port_type type: 24; - u32 thunderbolt_version: 8; - u32 __unknown2: 20; - u32 port_number: 6; - u32 __unknown3: 6; - u32 nfc_credits; - u32 max_in_hop_id: 11; - u32 max_out_hop_id: 11; - u32 __unknown4: 10; - u32 __unknown5; - u32 __unknown6; -}; - -struct nvmem_device; - -struct tb_nvm { - struct device *dev; - u8 major; - u8 minor; - int id; - struct nvmem_device *active; - struct nvmem_device *non_active; - void *buf; - size_t buf_data_size; - bool authenticating; - bool flushed; -}; - -struct usb4_port; - -struct tb_port { - struct tb_regs_port_header config; - struct tb_switch *sw; - struct tb_port *remote; - struct tb_xdomain *xdomain; - int cap_phy; - int cap_tmu; - int cap_adap; - int cap_usb4; - struct usb4_port *usb4; - u8 port; - bool disabled; - bool bonded; - struct tb_port *dual_link_port; - u8 link_nr: 1; - struct ida in_hopids; - struct ida out_hopids; - struct list_head list; - unsigned int total_credits; - unsigned int ctl_credits; - unsigned int dma_credits; +typedef struct mdp_superblock_s mdp_super_t; + +struct mdp_superblock_1 { + __le32 magic; + __le32 major_version; + __le32 feature_map; + __le32 pad0; + __u8 set_uuid[16]; + char set_name[32]; + __le64 ctime; + __le32 level; + __le32 layout; + __le64 size; + __le32 chunksize; + __le32 raid_disks; + union { + __le32 bitmap_offset; + struct { + __le16 offset; + __le16 size; + } ppl; + }; + __le32 new_level; + __le64 reshape_position; + __le32 delta_disks; + __le32 new_layout; + __le32 new_chunk; + __le32 new_offset; + __le64 data_offset; + __le64 data_size; + __le64 super_offset; + union { + __le64 recovery_offset; + __le64 journal_tail; + }; + __le32 dev_number; + __le32 cnt_corrected_read; + __u8 device_uuid[16]; + __u8 devflags; + __u8 bblog_shift; + __le16 bblog_size; + __le32 bblog_offset; + __le64 utime; + __le64 events; + __le64 resync_offset; + __le32 sb_csum; + __le32 max_dev; + __u8 pad3[32]; + __le16 dev_roles[0]; }; -struct usb4_port { - struct device dev; - struct tb_port *port; - bool can_offline; - bool offline; +struct mdu_version_s { + int major; + int minor; + int patchlevel; }; -struct dma_pool; +typedef struct mdu_version_s mdu_version_t; -typedef bool (*event_cb)(void *, enum tb_cfg_pkg_type, const void *, size_t); +struct mdu_array_info_s { + int major_version; + int minor_version; + int patch_version; + unsigned int ctime; + int level; + int size; + int nr_disks; + int raid_disks; + int md_minor; + int not_persistent; + unsigned int utime; + int state; + int active_disks; + int working_disks; + int failed_disks; + int spare_disks; + int layout; + int chunk_size; +}; -struct ctl_pkg; +typedef struct mdu_array_info_s mdu_array_info_t; -struct tb_ctl { - struct tb_nhi *nhi; - struct tb_ring *tx; - struct tb_ring *rx; - struct dma_pool *frame_pool; - struct ctl_pkg *rx_packets[10]; - struct mutex request_queue_lock; - struct list_head request_queue; - bool running; - int timeout_msec; - event_cb callback; - void *callback_data; +struct mdu_disk_info_s { + int number; + int major; + int minor; + int raid_disk; + int state; }; -enum tb_cfg_space { - TB_CFG_HOPS = 0, - TB_CFG_PORT = 1, - TB_CFG_SWITCH = 2, - TB_CFG_COUNTERS = 3, -}; +typedef struct mdu_disk_info_s mdu_disk_info_t; -enum tb_cfg_error { - TB_CFG_ERROR_PORT_NOT_CONNECTED = 0, - TB_CFG_ERROR_LINK_ERROR = 1, - TB_CFG_ERROR_INVALID_CONFIG_SPACE = 2, - TB_CFG_ERROR_NO_SUCH_PORT = 4, - TB_CFG_ERROR_ACK_PLUG_EVENT = 7, - TB_CFG_ERROR_LOOP = 8, - TB_CFG_ERROR_HEC_ERROR_DETECTED = 12, - TB_CFG_ERROR_FLOW_CONTROL_ERROR = 13, - TB_CFG_ERROR_LOCK = 15, +struct mdu_bitmap_file_s { + char pathname[4096]; }; -struct tb_cfg_header { - u32 route_hi: 22; - u32 unknown: 10; - u32 route_lo; -}; +typedef struct mdu_bitmap_file_s mdu_bitmap_file_t; -struct tb_cfg_address { - u32 offset: 13; - u32 length: 6; - u32 port: 6; - enum tb_cfg_space space: 2; - u32 seq: 2; - u32 zero: 3; +struct md_cluster_operations { + int (*join)(struct mddev *, int); + int (*leave)(struct mddev *); + int (*slot_number)(struct mddev *); + int (*resync_info_update)(struct mddev *, sector_t, sector_t); + void (*resync_info_get)(struct mddev *, sector_t *, sector_t *); + int (*metadata_update_start)(struct mddev *); + int (*metadata_update_finish)(struct mddev *); + void (*metadata_update_cancel)(struct mddev *); + int (*resync_start)(struct mddev *); + int (*resync_finish)(struct mddev *); + int (*area_resyncing)(struct mddev *, int, sector_t, sector_t); + int (*add_new_disk)(struct mddev *, struct md_rdev *); + void (*add_new_disk_cancel)(struct mddev *); + int (*new_disk_ack)(struct mddev *, bool); + int (*remove_disk)(struct mddev *, struct md_rdev *); + void (*load_bitmaps)(struct mddev *, int); + int (*gather_bitmaps)(struct md_rdev *); + int (*resize_bitmaps)(struct mddev *, sector_t, sector_t); + int (*lock_all_bitmaps)(struct mddev *); + void (*unlock_all_bitmaps)(struct mddev *); + void (*update_size)(struct mddev *, sector_t); }; -struct cfg_read_pkg { - struct tb_cfg_header header; - struct tb_cfg_address addr; +enum mddev_flags { + MD_ARRAY_FIRST_USE = 0, + MD_CLOSING = 1, + MD_JOURNAL_CLEAN = 2, + MD_HAS_JOURNAL = 3, + MD_CLUSTER_RESYNC_LOCKED = 4, + MD_FAILFAST_SUPPORTED = 5, + MD_HAS_PPL = 6, + MD_HAS_MULTIPLE_PPLS = 7, + MD_ALLOW_SB_UPDATE = 8, + MD_UPDATING_SB = 9, + MD_NOT_READY = 10, + MD_BROKEN = 11, }; -struct cfg_write_pkg { - struct tb_cfg_header header; - struct tb_cfg_address addr; - u32 data[64]; +struct bitmap_page; + +struct bitmap_counts { + spinlock_t lock; + struct bitmap_page *bp; + long unsigned int pages; + long unsigned int missing_pages; + long unsigned int chunkshift; + long unsigned int chunks; }; -struct cfg_error_pkg { - struct tb_cfg_header header; - enum tb_cfg_error error: 4; - u32 zero1: 4; - u32 port: 6; - u32 zero2: 2; - u32 zero3: 14; - u32 pg: 2; +struct bitmap_storage { + struct file *file; + struct page *sb_page; + struct page **filemap; + long unsigned int *filemap_attr; + long unsigned int file_pages; + long unsigned int bytes; }; -struct cfg_reset_pkg { - struct tb_cfg_header header; +struct bitmap { + struct bitmap_counts counts; + struct mddev *mddev; + __u64 events_cleared; + int need_sync; + struct bitmap_storage storage; + long unsigned int flags; + int allclean; + atomic_t behind_writes; + long unsigned int behind_writes_used; + long unsigned int daemon_lastrun; + long unsigned int last_end_sync; + atomic_t pending_writes; + wait_queue_head_t write_wait; + wait_queue_head_t overflow_wait; + wait_queue_head_t behind_wait; + struct kernfs_node *sysfs_can_clear; + int cluster_slot; }; -struct tb_cfg_result { - u64 response_route; - u32 response_port; - int err; - enum tb_cfg_error tb_error; +struct md_sysfs_entry { + struct attribute attr; + ssize_t (*show)(struct mddev *, char *); + ssize_t (*store)(struct mddev *, const char *, size_t); }; -struct ctl_pkg { - struct tb_ctl *ctl; - void *buffer; - struct ring_frame frame; +struct md_io_acct { + struct bio *orig_bio; + long unsigned int start_time; + struct bio bio_clone; }; -struct tb_cfg_request { - struct kref kref; - struct tb_ctl *ctl; - const void *request; - size_t request_size; - enum tb_cfg_pkg_type request_type; - void *response; - size_t response_size; - enum tb_cfg_pkg_type response_type; - size_t npackets; - bool (*match)(const struct tb_cfg_request *, const struct ctl_pkg *); - bool (*copy)(struct tb_cfg_request *, const struct ctl_pkg *); - void (*callback)(void *); - void *callback_data; - long unsigned int flags; - struct work_struct work; - struct tb_cfg_result result; - struct list_head list; +struct bitmap_page { + char *map; + unsigned int hijacked: 1; + unsigned int pending: 1; + unsigned int count: 30; }; -struct cfg_event_pkg { - struct tb_cfg_header header; - u32 port: 6; - u32 zero: 25; - bool unplug: 1; +struct super_type { + char *name; + struct module *owner; + int (*load_super)(struct md_rdev *, struct md_rdev *, int); + int (*validate_super)(struct mddev *, struct md_rdev *); + void (*sync_super)(struct mddev *, struct md_rdev *); + long long unsigned int (*rdev_size_change)(struct md_rdev *, sector_t); + int (*allow_new_offset)(struct md_rdev *, long long unsigned int); }; -struct tb_path_hop { - struct tb_port *in_port; - struct tb_port *out_port; - int in_hop_index; - int in_counter_index; - int next_hop_index; - unsigned int initial_credits; - unsigned int nfc_credits; +struct rdev_sysfs_entry { + struct attribute attr; + ssize_t (*show)(struct md_rdev *, char *); + ssize_t (*store)(struct md_rdev *, const char *, size_t); }; -enum tb_path_port { - TB_PATH_NONE = 0, - TB_PATH_SOURCE = 1, - TB_PATH_INTERNAL = 2, - TB_PATH_DESTINATION = 4, - TB_PATH_ALL = 7, +enum array_state { + clear = 0, + inactive = 1, + suspended = 2, + readonly = 3, + read_auto = 4, + clean = 5, + active = 6, + write_pending = 7, + active_idle = 8, + broken = 9, + bad_word = 10, }; -struct tb_path { - struct tb *tb; - const char *name; - enum tb_path_port ingress_shared_buffer; - enum tb_path_port egress_shared_buffer; - enum tb_path_port ingress_fc_enable; - enum tb_path_port egress_fc_enable; - unsigned int priority: 3; - int weight: 4; - bool drop_packages; - bool activated; - bool clear_fc; - struct tb_path_hop *hops; - int path_length; - bool alloc_hopid; -}; - -enum tb_tunnel_type { - TB_TUNNEL_PCI = 0, - TB_TUNNEL_DP = 1, - TB_TUNNEL_DMA = 2, - TB_TUNNEL_USB3 = 3, -}; - -struct tb_tunnel { - struct tb *tb; - struct tb_port *src_port; - struct tb_port *dst_port; - struct tb_path **paths; - size_t npaths; - int (*init)(struct tb_tunnel *); - void (*deinit)(struct tb_tunnel *); - int (*activate)(struct tb_tunnel *, bool); - int (*consumed_bandwidth)(struct tb_tunnel *, int *, int *); - int (*release_unused_bandwidth)(struct tb_tunnel *); - void (*reclaim_available_bandwidth)(struct tb_tunnel *, int *, int *); +struct detected_devices_node { struct list_head list; - enum tb_tunnel_type type; - int max_up; - int max_down; - int allocated_up; - int allocated_down; + dev_t dev; }; -struct tb_cm { - struct list_head tunnel_list; - struct list_head dp_resources; - bool hotplug_active; - struct delayed_work remove_work; -}; +typedef __u16 bitmap_counter_t; -struct tb_hotplug_event { - struct work_struct work; - struct tb *tb; - u64 route; - u8 port; - bool unplug; +enum bitmap_state { + BITMAP_STALE = 1, + BITMAP_WRITE_ERROR = 2, + BITMAP_HOSTENDIAN = 15, }; -typedef int (*nvmem_reg_read_t)(void *, unsigned int, void *, size_t); +struct bitmap_super_s { + __le32 magic; + __le32 version; + __u8 uuid[16]; + __le64 events; + __le64 events_cleared; + __le64 sync_size; + __le32 state; + __le32 chunksize; + __le32 daemon_sleep; + __le32 write_behind; + __le32 sectors_reserved; + __le32 nodes; + __u8 cluster_name[64]; + __u8 pad[120]; +}; -typedef int (*nvmem_reg_write_t)(void *, unsigned int, void *, size_t); +typedef struct bitmap_super_s bitmap_super_t; -enum tb_switch_vse_cap { - TB_VSE_CAP_PLUG_EVENTS = 1, - TB_VSE_CAP_TIME2 = 3, - TB_VSE_CAP_CP_LP = 4, - TB_VSE_CAP_LINK_CONTROLLER = 6, +enum bitmap_page_attr { + BITMAP_PAGE_DIRTY = 0, + BITMAP_PAGE_PENDING = 1, + BITMAP_PAGE_NEEDWRITE = 2, }; -enum tb_port_cap { - TB_PORT_CAP_PHY = 1, - TB_PORT_CAP_POWER = 2, - TB_PORT_CAP_TIME1 = 3, - TB_PORT_CAP_ADAP = 4, - TB_PORT_CAP_VSE = 5, - TB_PORT_CAP_USB4 = 6, +struct md_setup_args { + int minor; + int partitioned; + int level; + int chunk; + char *device_names; }; -enum tb_port_state { - TB_PORT_DISABLED = 0, - TB_PORT_CONNECTING = 1, - TB_PORT_UP = 2, - TB_PORT_UNPLUGGED = 7, +struct dm_ioctl { + __u32 version[3]; + __u32 data_size; + __u32 data_start; + __u32 target_count; + __s32 open_count; + __u32 flags; + __u32 event_nr; + __u32 padding; + __u64 dev; + char name[128]; + char uuid[129]; + char data[7]; }; -struct tb_cap_basic { - u8 next; - u8 cap; +struct dm_target_spec { + __u64 sector_start; + __u64 length; + __s32 status; + __u32 next; + char target_type[16]; }; -struct tb_cap_phy { - struct tb_cap_basic cap_header; - u32 unknown1: 16; - u32 unknown2: 14; - bool disable: 1; - u32 unknown3: 11; - enum tb_port_state state: 4; - u32 unknown4: 2; -}; - -struct tb_regs_hop { - u32 next_hop: 11; - u32 out_port: 6; - u32 initial_credits: 8; - u32 unknown1: 6; - bool enable: 1; - u32 weight: 4; - u32 unknown2: 4; - u32 priority: 3; - bool drop_packages: 1; - u32 counter: 11; - bool counter_enable: 1; - bool ingress_fc: 1; - bool egress_fc: 1; - bool ingress_shared_buffer: 1; - bool egress_shared_buffer: 1; - bool pending: 1; - u32 unknown3: 3; -}; - -enum tb_nvm_write_ops { - WRITE_AND_AUTHENTICATE = 1, - WRITE_ONLY = 2, - AUTHENTICATE_ONLY = 3, -}; - -struct nvm_auth_status { +struct dm_device { + struct dm_ioctl dmi; + struct dm_target_spec *table[256]; + char *target_args_array[256]; struct list_head list; - uuid_t uuid; - u32 status; }; -struct tb_sw_lookup { - struct tb *tb; - u8 link; - u8 depth; - const uuid_t *uuid; - u64 route; -}; +typedef enum { + STATUSTYPE_INFO = 0, + STATUSTYPE_TABLE = 1, + STATUSTYPE_IMA = 2, +} status_type_t; -enum tb_switch_cap { - TB_SWITCH_CAP_TMU = 3, - TB_SWITCH_CAP_VSE = 5, +union map_info___2 { + void *ptr; }; -struct tb_cap_extended_short { - u8 next; - u8 cap; - u8 vsec_id; - u8 length; -}; +struct dm_target; -struct tb_cap_extended_long { - u8 zero1; - u8 cap; - u8 vsec_id; - u8 zero2; - u16 next; - u16 length; -}; +typedef int (*dm_ctr_fn)(struct dm_target *, unsigned int, char **); -struct tb_cap_any { - union { - struct tb_cap_basic basic; - struct tb_cap_extended_short extended_short; - struct tb_cap_extended_long extended_long; - }; -}; +struct dm_table; -enum icl_lc_mailbox_cmd { - ICL_LC_GO2SX = 2, - ICL_LC_GO2SX_NO_WAKE = 3, - ICL_LC_PREPARE_FOR_RESET = 33, -}; - -struct tb_eeprom_ctl { - bool fl_sk: 1; - bool fl_cs: 1; - bool fl_di: 1; - bool fl_do: 1; - bool bit_banging_enable: 1; - bool not_present: 1; - bool unknown1: 1; - bool present: 1; - u32 unknown2: 24; -}; - -struct tb_cap_plug_events { - struct tb_cap_extended_short cap_header; - u32 __unknown1: 2; - u32 plug_events: 5; - u32 __unknown2: 25; - u32 vsc_cs_2; - u32 vsc_cs_3; - struct tb_eeprom_ctl eeprom_ctl; - u32 __unknown5[7]; - u32 drom_offset; -}; - -enum tb_eeprom_transfer { - TB_EEPROM_IN = 0, - TB_EEPROM_OUT = 1, -}; - -struct tb_drom_header { - u8 uid_crc8; - u64 uid; - u32 data_crc32; - u8 device_rom_revision; - u16 data_len: 12; - u8 reserved: 4; - u16 vendor_id; - u16 model_id; - u8 model_rev; - u8 eeprom_rev; -} __attribute__((packed)); +struct target_type; -enum tb_drom_entry_type { - TB_DROM_ENTRY_GENERIC = 0, - TB_DROM_ENTRY_PORT = 1, +struct dm_target { + struct dm_table *table; + struct target_type *type; + sector_t begin; + sector_t len; + uint32_t max_io_len; + unsigned int num_flush_bios; + unsigned int num_discard_bios; + unsigned int num_secure_erase_bios; + unsigned int num_write_same_bios; + unsigned int num_write_zeroes_bios; + unsigned int per_io_data_size; + void *private; + char *error; + bool flush_supported: 1; + bool discards_supported: 1; + bool limit_swap_bios: 1; + bool emulate_zone_append: 1; }; -struct tb_drom_entry_header { - u8 len; - u8 index: 6; - bool port_disabled: 1; - enum tb_drom_entry_type type: 1; -} __attribute__((packed)); +typedef void (*dm_dtr_fn)(struct dm_target *); -struct tb_drom_entry_generic { - struct tb_drom_entry_header header; - u8 data[0]; -} __attribute__((packed)); +typedef int (*dm_map_fn)(struct dm_target *, struct bio *); -struct tb_drom_entry_port { - struct tb_drom_entry_header header; - u8 dual_link_port_rid: 4; - u8 link_nr: 1; - u8 unknown1: 2; - bool has_dual_link_port: 1; - u8 dual_link_port_nr: 6; - u8 unknown2: 2; - u8 micro2: 4; - u8 micro1: 4; - u8 micro3; - u8 peer_port_rid: 4; - u8 unknown3: 3; - bool has_peer_port: 1; - u8 peer_port_nr: 6; - u8 unknown4: 2; -}; - -struct tb_drom_entry_desc { - struct tb_drom_entry_header header; - u16 bcdUSBSpec; - u16 idVendor; - u16 idProduct; - u16 bcdProductFWRevision; - u32 TID; - u8 productHWRevision; -}; - -struct tb_service_id { - __u32 match_flags; - char protocol_key[9]; - __u32 protocol_id; - __u32 protocol_version; - __u32 protocol_revision; - kernel_ulong_t driver_data; -}; +typedef int (*dm_clone_and_map_request_fn)(struct dm_target *, struct request *, union map_info___2 *, struct request **); -struct tb_service { - struct device dev; - int id; - const char *key; - u32 prtcid; - u32 prtcvers; - u32 prtcrevs; - u32 prtcstns; - struct dentry *debugfs_dir; -}; +typedef void (*dm_release_clone_request_fn)(struct request *, union map_info___2 *); -struct tb_service_driver { - struct device_driver driver; - int (*probe)(struct tb_service *, const struct tb_service_id *); - void (*remove)(struct tb_service *); - void (*shutdown)(struct tb_service *); - const struct tb_service_id *id_table; -}; +typedef int (*dm_endio_fn)(struct dm_target *, struct bio *, blk_status_t *); -struct tb_dma_port { - struct tb_switch *sw; - u8 port; - u32 base; - u8 *buf; -}; +typedef int (*dm_request_endio_fn)(struct dm_target *, struct request *, blk_status_t, union map_info___2 *); -typedef int (*read_block_fn)(void *, unsigned int, void *, size_t); +typedef void (*dm_presuspend_fn)(struct dm_target *); -typedef int (*write_block_fn)(void *, unsigned int, const void *, size_t); +typedef void (*dm_presuspend_undo_fn)(struct dm_target *); -enum tb_property_type { - TB_PROPERTY_TYPE_UNKNOWN = 0, - TB_PROPERTY_TYPE_DIRECTORY = 68, - TB_PROPERTY_TYPE_DATA = 100, - TB_PROPERTY_TYPE_TEXT = 116, - TB_PROPERTY_TYPE_VALUE = 118, -}; +typedef void (*dm_postsuspend_fn)(struct dm_target *); -struct tb_property { - struct list_head list; - char key[9]; - enum tb_property_type type; - size_t length; - union { - struct tb_property_dir *dir; - u8 *data; - char *text; - u32 immediate; - } value; -}; +typedef int (*dm_preresume_fn)(struct dm_target *); -struct tb_property_entry { - u32 key_hi; - u32 key_lo; - u16 length; - u8 reserved; - u8 type; - u32 value; -}; +typedef void (*dm_resume_fn)(struct dm_target *); -struct tb_property_rootdir_entry { - u32 magic; - u32 length; - struct tb_property_entry entries[0]; -}; +typedef void (*dm_status_fn)(struct dm_target *, status_type_t, unsigned int, char *, unsigned int); -struct tb_property_dir_entry { - u32 uuid[4]; - struct tb_property_entry entries[0]; -}; +typedef int (*dm_message_fn)(struct dm_target *, unsigned int, char **, char *, unsigned int); -struct tb_protocol_handler { - const uuid_t *uuid; - int (*callback)(const void *, size_t, void *); - void *data; - struct list_head list; -}; +typedef int (*dm_prepare_ioctl_fn)(struct dm_target *, struct block_device **); -struct tb_xdomain_header { - u32 route_hi; - u32 route_lo; - u32 length_sn; -}; +struct dm_report_zones_args; -enum tb_xdp_type { - UUID_REQUEST_OLD = 1, - UUID_RESPONSE = 2, - PROPERTIES_REQUEST = 3, - PROPERTIES_RESPONSE = 4, - PROPERTIES_CHANGED_REQUEST = 5, - PROPERTIES_CHANGED_RESPONSE = 6, - ERROR_RESPONSE = 7, - UUID_REQUEST = 12, -}; +typedef int (*dm_report_zones_fn)(struct dm_target *, struct dm_report_zones_args *, unsigned int); -struct tb_xdp_header { - struct tb_xdomain_header xd_hdr; - uuid_t uuid; - u32 type; +struct dm_report_zones_args { + struct dm_target *tgt; + sector_t next_sector; + void *orig_data; + report_zones_cb orig_cb; + unsigned int zone_idx; + sector_t start; }; -struct tb_xdp_error_response { - struct tb_xdp_header hdr; - u32 error; -}; +struct dm_dev; -struct tb_xdp_uuid { - struct tb_xdp_header hdr; -}; +typedef int (*iterate_devices_callout_fn)(struct dm_target *, struct dm_dev *, sector_t, sector_t, void *); -struct tb_xdp_uuid_response { - union { - struct tb_xdp_error_response err; - struct { - struct tb_xdp_header hdr; - uuid_t src_uuid; - u32 src_route_hi; - u32 src_route_lo; - }; - }; +struct dm_dev { + struct block_device *bdev; + struct dax_device *dax_dev; + fmode_t mode; + char name[16]; }; -struct tb_xdp_properties { - struct tb_xdp_header hdr; - uuid_t src_uuid; - uuid_t dst_uuid; - u16 offset; - u16 reserved; -}; +typedef int (*dm_iterate_devices_fn)(struct dm_target *, iterate_devices_callout_fn, void *); -struct tb_xdp_properties_response { - union { - struct tb_xdp_error_response err; - struct { - struct tb_xdp_header hdr; - uuid_t src_uuid; - uuid_t dst_uuid; - u16 offset; - u16 data_length; - u32 generation; - u32 data[0]; - }; - }; -}; +typedef void (*dm_io_hints_fn)(struct dm_target *, struct queue_limits *); + +typedef int (*dm_busy_fn)(struct dm_target *); + +typedef long int (*dm_dax_direct_access_fn)(struct dm_target *, long unsigned int, long int, void **, pfn_t *); + +typedef size_t (*dm_dax_copy_iter_fn)(struct dm_target *, long unsigned int, void *, size_t, struct iov_iter *); + +typedef int (*dm_dax_zero_page_range_fn)(struct dm_target *, long unsigned int, size_t); -struct tb_xdp_properties_changed { - struct tb_xdp_header hdr; - uuid_t src_uuid; +struct target_type { + uint64_t features; + const char *name; + struct module *module; + unsigned int version[3]; + dm_ctr_fn ctr; + dm_dtr_fn dtr; + dm_map_fn map; + dm_clone_and_map_request_fn clone_and_map_rq; + dm_release_clone_request_fn release_clone_rq; + dm_endio_fn end_io; + dm_request_endio_fn rq_end_io; + dm_presuspend_fn presuspend; + dm_presuspend_undo_fn presuspend_undo; + dm_postsuspend_fn postsuspend; + dm_preresume_fn preresume; + dm_resume_fn resume; + dm_status_fn status; + dm_message_fn message; + dm_prepare_ioctl_fn prepare_ioctl; + dm_report_zones_fn report_zones; + dm_busy_fn busy; + dm_iterate_devices_fn iterate_devices; + dm_io_hints_fn io_hints; + dm_dax_direct_access_fn direct_access; + dm_dax_copy_iter_fn dax_copy_from_iter; + dm_dax_copy_iter_fn dax_copy_to_iter; + dm_dax_zero_page_range_fn dax_zero_page_range; + struct list_head list; }; -struct tb_xdp_properties_changed_response { - union { - struct tb_xdp_error_response err; - struct tb_xdp_header hdr; - }; +enum dm_uevent_type { + DM_UEVENT_PATH_FAILED = 0, + DM_UEVENT_PATH_REINSTATED = 1, }; -enum tb_xdp_error { - ERROR_SUCCESS = 0, - ERROR_UNKNOWN_PACKET = 1, - ERROR_UNKNOWN_DOMAIN = 2, - ERROR_NOT_SUPPORTED = 3, - ERROR_NOT_READY = 4, -}; +struct mapped_device; -struct xdomain_request_work { - struct work_struct work; - struct tb_xdp_header *pkg; - struct tb *tb; +struct dm_uevent { + struct mapped_device *md; + enum kobject_action action; + struct kobj_uevent_env ku_env; + struct list_head elist; + char name[128]; + char uuid[129]; }; -struct tb_xdomain_lookup { - const uuid_t *uuid; - u8 link; - u8 depth; - u64 route; +enum dm_queue_mode { + DM_TYPE_NONE = 0, + DM_TYPE_BIO_BASED = 1, + DM_TYPE_REQUEST_BASED = 2, + DM_TYPE_DAX_BIO_BASED = 3, }; -enum icm_pkg_code { - ICM_GET_TOPOLOGY = 1, - ICM_DRIVER_READY = 3, - ICM_APPROVE_DEVICE = 4, - ICM_CHALLENGE_DEVICE = 5, - ICM_ADD_DEVICE_KEY = 6, - ICM_GET_ROUTE = 10, - ICM_APPROVE_XDOMAIN = 16, - ICM_DISCONNECT_XDOMAIN = 17, - ICM_PREBOOT_ACL = 24, - ICM_USB4_SWITCH_OP = 32, -}; +struct dm_md_mempools; -enum icm_event_code { - ICM_EVENT_DEVICE_CONNECTED = 3, - ICM_EVENT_DEVICE_DISCONNECTED = 4, - ICM_EVENT_XDOMAIN_CONNECTED = 6, - ICM_EVENT_XDOMAIN_DISCONNECTED = 7, - ICM_EVENT_RTD3_VETO = 10, +struct dm_table { + struct mapped_device *md; + enum dm_queue_mode type; + unsigned int depth; + unsigned int counts[16]; + sector_t *index[16]; + unsigned int num_targets; + unsigned int num_allocated; + sector_t *highs; + struct dm_target *targets; + struct target_type *immutable_target_type; + bool integrity_supported: 1; + bool singleton: 1; + unsigned int integrity_added: 1; + fmode_t mode; + struct list_head devices; + void (*event_fn)(void *); + void *event_context; + struct dm_md_mempools *mempools; + struct blk_keyslot_manager *ksm; }; -struct icm_pkg_header { - u8 code; - u8 flags; - u8 packet_id; - u8 total_packets; -}; +struct dm_stats_last_position; -struct icm_pkg_driver_ready { - struct icm_pkg_header hdr; +struct dm_stats { + struct mutex mutex; + struct list_head list; + struct dm_stats_last_position *last; + bool precise_timestamps; }; -struct icm_fr_pkg_driver_ready_response { - struct icm_pkg_header hdr; - u8 romver; - u8 ramver; - u16 security_level; +struct dm_stats_aux { + bool merged; + long long unsigned int duration_ns; }; -struct icm_fr_pkg_get_topology { - struct icm_pkg_header hdr; +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 icm_fr_pkg_get_topology_response { - struct icm_pkg_header hdr; - u32 route_lo; - u32 route_hi; - u8 first_data; - u8 second_data; - u8 drom_i2c_address_index; - u8 switch_index; - u32 reserved[2]; - u32 ports[16]; - u32 port_hop_info[16]; +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 icm_fr_event_device_connected { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u8 connection_key; - u8 connection_id; - u16 link_info; - u32 ep_name[55]; +struct dm_kobject_holder { + struct kobject kobj; + struct completion completion; }; -struct icm_fr_pkg_approve_device { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u8 connection_key; - u8 connection_id; - u16 reserved; +struct mapped_device { + struct mutex suspend_lock; + struct mutex table_devices_lock; + struct list_head table_devices; + void *map; + long unsigned int flags; + struct mutex type_lock; + enum dm_queue_mode type; + int numa_node_id; + struct request_queue *queue; + atomic_t holders; + atomic_t open_count; + struct dm_target *immutable_target; + struct target_type *immutable_target_type; + char name[16]; + struct gendisk *disk; + struct dax_device *dax_dev; + long unsigned int *pending_io; + struct work_struct work; + wait_queue_head_t wait; + spinlock_t deferred_lock; + struct bio_list deferred; + void *interface_ptr; + wait_queue_head_t eventq; + atomic_t event_nr; + atomic_t uevent_seq; + struct list_head uevent_list; + spinlock_t uevent_lock; + unsigned int internal_suspend_count; + struct bio_set io_bs; + struct bio_set bs; + struct workqueue_struct *wq; + struct hd_geometry geometry; + struct dm_kobject_holder kobj_holder; + int swap_bios; + struct semaphore swap_bios_semaphore; + struct mutex swap_bios_lock; + struct dm_stats stats; + struct blk_mq_tag_set *tag_set; + bool init_tio_pdu: 1; + struct srcu_struct io_barrier; + unsigned int nr_zones; + unsigned int *zwp_offset; + struct dm_ima_measurements ima; }; -struct icm_fr_event_device_disconnected { - struct icm_pkg_header hdr; - u16 reserved; - u16 link_info; -}; +struct dm_io; -struct icm_fr_event_xdomain_connected { - struct icm_pkg_header hdr; - u16 reserved; - u16 link_info; - uuid_t remote_uuid; - uuid_t local_uuid; - u32 local_route_hi; - u32 local_route_lo; - u32 remote_route_hi; - u32 remote_route_lo; +struct dm_target_io { + unsigned int magic; + struct dm_io *io; + struct dm_target *ti; + unsigned int target_bio_nr; + unsigned int *len_ptr; + bool inside_dm_io; + struct bio clone; }; -struct icm_fr_event_xdomain_disconnected { - struct icm_pkg_header hdr; - u16 reserved; - u16 link_info; - uuid_t remote_uuid; +struct dm_io { + unsigned int magic; + struct mapped_device *md; + blk_status_t status; + atomic_t io_count; + struct bio *orig_bio; + long unsigned int start_time; + spinlock_t endio_lock; + struct dm_stats_aux stats_aux; + struct dm_target_io tio; }; -struct icm_fr_pkg_add_device_key { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u8 connection_key; - u8 connection_id; - u16 reserved; - u32 key[8]; +struct dm_md_mempools { + struct bio_set bs; + struct bio_set io_bs; }; -struct icm_fr_pkg_add_device_key_response { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u8 connection_key; - u8 connection_id; - u16 reserved; +struct clone_info { + struct dm_table *map; + struct bio *bio; + struct dm_io *io; + sector_t sector; + unsigned int sector_count; }; -struct icm_fr_pkg_challenge_device { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u8 connection_key; - u8 connection_id; - u16 reserved; - u32 challenge[8]; +struct table_device { + struct list_head list; + refcount_t count; + struct dm_dev dm_dev; }; -struct icm_fr_pkg_challenge_device_response { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u8 connection_key; - u8 connection_id; - u16 reserved; - u32 challenge[8]; - u32 response[8]; +struct dm_pr { + u64 old_key; + u64 new_key; + u32 flags; + bool fail_early; }; -struct icm_fr_pkg_approve_xdomain { - struct icm_pkg_header hdr; - u16 reserved; - u16 link_info; - uuid_t remote_uuid; - u16 transmit_path; - u16 transmit_ring; - u16 receive_path; - u16 receive_ring; +struct dm_arg_set { + unsigned int argc; + char **argv; }; -struct icm_fr_pkg_approve_xdomain_response { - struct icm_pkg_header hdr; - u16 reserved; - u16 link_info; - uuid_t remote_uuid; - u16 transmit_path; - u16 transmit_ring; - u16 receive_path; - u16 receive_ring; +struct dm_arg { + unsigned int min; + unsigned int max; + char *error; }; -struct icm_ar_pkg_driver_ready_response { - struct icm_pkg_header hdr; - u8 romver; - u8 ramver; - u16 info; +struct dm_dev_internal { + struct list_head list; + refcount_t count; + struct dm_dev *dm_dev; }; -struct icm_ar_pkg_get_route { - struct icm_pkg_header hdr; - u16 reserved; - u16 link_info; +struct dm_keyslot_manager { + struct blk_keyslot_manager ksm; + struct mapped_device *md; }; -struct icm_ar_pkg_get_route_response { - struct icm_pkg_header hdr; - u16 reserved; - u16 link_info; - u32 route_hi; - u32 route_lo; +enum suspend_mode { + PRESUSPEND = 0, + PRESUSPEND_UNDO = 1, + POSTSUSPEND = 2, }; -struct icm_ar_boot_acl_entry { - u32 uuid_lo; - u32 uuid_hi; +struct linear_c { + struct dm_dev *dev; + sector_t start; }; -struct icm_ar_pkg_preboot_acl { - struct icm_pkg_header hdr; - struct icm_ar_boot_acl_entry acl[16]; +struct stripe { + struct dm_dev *dev; + sector_t physical_start; + atomic_t error_count; }; -struct icm_ar_pkg_preboot_acl_response { - struct icm_pkg_header hdr; - struct icm_ar_boot_acl_entry acl[16]; +struct stripe_c { + uint32_t stripes; + int stripes_shift; + sector_t stripe_width; + uint32_t chunk_size; + int chunk_size_shift; + struct dm_target *ti; + struct work_struct trigger_event; + struct stripe stripe[0]; }; -struct icm_tr_pkg_driver_ready_response { - struct icm_pkg_header hdr; - u16 reserved1; - u16 info; - u32 nvm_version; - u16 device_id; - u16 reserved2; +struct dm_target_deps { + __u32 count; + __u32 padding; + __u64 dev[0]; }; -struct icm_tr_event_device_connected { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u32 route_hi; - u32 route_lo; - u8 connection_id; - u8 reserved; - u16 link_info; - u32 ep_name[55]; +struct dm_name_list { + __u64 dev; + __u32 next; + char name[0]; }; -struct icm_tr_event_device_disconnected { - struct icm_pkg_header hdr; - u32 route_hi; - u32 route_lo; +struct dm_target_versions { + __u32 next; + __u32 version[3]; + char name[0]; }; -struct icm_tr_event_xdomain_connected { - struct icm_pkg_header hdr; - u16 reserved; - u16 link_info; - uuid_t remote_uuid; - uuid_t local_uuid; - u32 local_route_hi; - u32 local_route_lo; - u32 remote_route_hi; - u32 remote_route_lo; -}; - -struct icm_tr_event_xdomain_disconnected { - struct icm_pkg_header hdr; - u32 route_hi; - u32 route_lo; - uuid_t remote_uuid; -}; - -struct icm_tr_pkg_approve_device { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u32 route_hi; - u32 route_lo; - u8 connection_id; - u8 reserved1[3]; -}; - -struct icm_tr_pkg_add_device_key { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u32 route_hi; - u32 route_lo; - u8 connection_id; - u8 reserved[3]; - u32 key[8]; +struct dm_target_msg { + __u64 sector; + char message[0]; }; -struct icm_tr_pkg_challenge_device { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u32 route_hi; - u32 route_lo; - u8 connection_id; - u8 reserved[3]; - u32 challenge[8]; +enum { + DM_VERSION_CMD = 0, + DM_REMOVE_ALL_CMD = 1, + DM_LIST_DEVICES_CMD = 2, + DM_DEV_CREATE_CMD = 3, + DM_DEV_REMOVE_CMD = 4, + DM_DEV_RENAME_CMD = 5, + DM_DEV_SUSPEND_CMD = 6, + DM_DEV_STATUS_CMD = 7, + DM_DEV_WAIT_CMD = 8, + DM_TABLE_LOAD_CMD = 9, + DM_TABLE_CLEAR_CMD = 10, + DM_TABLE_DEPS_CMD = 11, + DM_TABLE_STATUS_CMD = 12, + DM_LIST_VERSIONS_CMD = 13, + DM_TARGET_MSG_CMD = 14, + DM_DEV_SET_GEOMETRY_CMD = 15, + DM_DEV_ARM_POLL_CMD = 16, + DM_GET_TARGET_VERSION_CMD = 17, }; -struct icm_tr_pkg_approve_xdomain { - struct icm_pkg_header hdr; - u32 route_hi; - u32 route_lo; - uuid_t remote_uuid; - u16 transmit_path; - u16 transmit_ring; - u16 receive_path; - u16 receive_ring; +struct dm_file { + volatile unsigned int global_event_nr; }; -struct icm_tr_pkg_disconnect_xdomain { - struct icm_pkg_header hdr; - u8 stage; - u8 reserved[3]; - u32 route_hi; - u32 route_lo; - uuid_t remote_uuid; +struct hash_cell { + struct rb_node name_node; + struct rb_node uuid_node; + bool name_set; + bool uuid_set; + char *name; + char *uuid; + struct mapped_device *md; + struct dm_table *new_map; }; -struct icm_tr_pkg_challenge_device_response { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u32 route_hi; - u32 route_lo; - u8 connection_id; - u8 reserved[3]; - u32 challenge[8]; - u32 response[8]; +struct vers_iter { + size_t param_size; + struct dm_target_versions *vers; + struct dm_target_versions *old_vers; + char *end; + uint32_t flags; }; -struct icm_tr_pkg_add_device_key_response { - struct icm_pkg_header hdr; - uuid_t ep_uuid; - u32 route_hi; - u32 route_lo; - u8 connection_id; - u8 reserved[3]; -}; +typedef int (*ioctl_fn___3)(struct file *, struct dm_ioctl *, size_t); -struct icm_tr_pkg_approve_xdomain_response { - struct icm_pkg_header hdr; - u32 route_hi; - u32 route_lo; - uuid_t remote_uuid; - u16 transmit_path; - u16 transmit_ring; - u16 receive_path; - u16 receive_ring; +struct dm_io_region { + struct block_device *bdev; + sector_t sector; + sector_t count; }; -struct icm_tr_pkg_disconnect_xdomain_response { - struct icm_pkg_header hdr; - u8 stage; - u8 reserved[3]; - u32 route_hi; - u32 route_lo; - uuid_t remote_uuid; +struct page_list { + struct page_list *next; + struct page *page; }; -struct icm_icl_event_rtd3_veto { - struct icm_pkg_header hdr; - u32 veto_reason; -}; +typedef void (*io_notify_fn)(long unsigned int, void *); -struct icm_usb4_switch_op { - struct icm_pkg_header hdr; - u32 route_hi; - u32 route_lo; - u32 metadata; - u16 opcode; - u16 data_len_valid; - u32 data[16]; +enum dm_io_mem_type { + DM_IO_PAGE_LIST = 0, + DM_IO_BIO = 1, + DM_IO_VMA = 2, + DM_IO_KMEM = 3, }; -struct icm_usb4_switch_op_response { - struct icm_pkg_header hdr; - u32 route_hi; - u32 route_lo; - u32 metadata; - u16 opcode; - u16 status; - u32 data[16]; -}; - -enum usb4_switch_op { - USB4_SWITCH_OP_QUERY_DP_RESOURCE = 16, - USB4_SWITCH_OP_ALLOC_DP_RESOURCE = 17, - USB4_SWITCH_OP_DEALLOC_DP_RESOURCE = 18, - USB4_SWITCH_OP_NVM_WRITE = 32, - USB4_SWITCH_OP_NVM_AUTH = 33, - USB4_SWITCH_OP_NVM_READ = 34, - USB4_SWITCH_OP_NVM_SET_OFFSET = 35, - USB4_SWITCH_OP_DROM_READ = 36, - USB4_SWITCH_OP_NVM_SECTOR_SIZE = 37, - USB4_SWITCH_OP_BUFFER_ALLOC = 51, -}; - -struct icm; - -struct usb4_switch_nvm_auth { - struct icm_usb4_switch_op_response reply; - struct icm_usb4_switch_op request; - struct icm *icm; -}; - -struct icm { - struct mutex request_lock; - struct delayed_work rescan_work; - struct pci_dev *upstream_port; - int vnd_cap; - bool safe_mode; - size_t max_boot_acl; - bool rpm; - bool can_upgrade_nvm; - u8 proto_version; - struct usb4_switch_nvm_auth *last_nvm_auth; - bool veto; - bool (*is_supported)(struct tb *); - int (*cio_reset)(struct tb *); - int (*get_mode)(struct tb *); - int (*get_route)(struct tb *, u8, u8, u64 *); - void (*save_devices)(struct tb *); - int (*driver_ready)(struct tb *, enum tb_security_level *, u8 *, size_t *, bool *); - void (*set_uuid)(struct tb *); - void (*device_connected)(struct tb *, const struct icm_pkg_header *); - void (*device_disconnected)(struct tb *, const struct icm_pkg_header *); - void (*xdomain_connected)(struct tb *, const struct icm_pkg_header *); - void (*xdomain_disconnected)(struct tb *, const struct icm_pkg_header *); - void (*rtd3_veto)(struct tb *, const struct icm_pkg_header *); -}; - -struct icm_notification { - struct work_struct work; - struct icm_pkg_header *pkg; - struct tb *tb; +struct dm_io_memory { + enum dm_io_mem_type type; + unsigned int offset; + union { + struct page_list *pl; + struct bio *bio; + void *vma; + void *addr; + } ptr; }; -struct ep_name_entry { - u8 len; - u8 type; - u8 data[0]; +struct dm_io_notify { + io_notify_fn fn; + void *context; }; -struct intel_vss { - u16 vendor; - u16 model; - u8 mc; - u8 flags; - u16 pci_devid; - u32 nvm_version; -}; +struct dm_io_client; -enum usb4_sb_opcode { - USB4_SB_OPCODE_ERR = 542265925, - USB4_SB_OPCODE_ONS = 1145914145, - USB4_SB_OPCODE_ROUTER_OFFLINE = 1313166156, - USB4_SB_OPCODE_ENUMERATE_RETIMERS = 1297436229, - USB4_SB_OPCODE_SET_INBOUND_SBTX = 1347769164, - USB4_SB_OPCODE_QUERY_LAST_RETIMER = 1414742348, - USB4_SB_OPCODE_GET_NVM_SECTOR_SIZE = 1397968455, - USB4_SB_OPCODE_NVM_SET_OFFSET = 1397772098, - USB4_SB_OPCODE_NVM_BLOCK_WRITE = 1464552514, - USB4_SB_OPCODE_NVM_AUTH_WRITE = 1213486401, - USB4_SB_OPCODE_NVM_READ = 1381123649, +struct dm_io_request { + int bi_op; + int bi_op_flags; + struct dm_io_memory mem; + struct dm_io_notify notify; + struct dm_io_client *client; }; -enum usb4_sb_target { - USB4_SB_TARGET_ROUTER = 0, - USB4_SB_TARGET_PARTNER = 1, - USB4_SB_TARGET_RETIMER = 2, +struct dm_io_client { + mempool_t pool; + struct bio_set bios; }; -enum usb4_ba_index { - USB4_BA_MAX_USB3 = 1, - USB4_BA_MIN_DP_AUX = 2, - USB4_BA_MIN_DP_MAIN = 3, - USB4_BA_MAX_PCIE = 4, - USB4_BA_MAX_HI = 5, +struct io { + long unsigned int error_bits; + atomic_t count; + struct dm_io_client *client; + io_notify_fn callback; + void *context; + void *vma_invalidate_address; + long unsigned int vma_invalidate_size; + long: 64; }; -struct retimer_info { - struct tb_port *port; - u8 index; +struct dpages { + void (*get_page)(struct dpages *, struct page **, long unsigned int *, unsigned int *); + void (*next_page)(struct dpages *); + union { + unsigned int context_u; + struct bvec_iter context_bi; + }; + void *context_ptr; + void *vma_invalidate_address; + long unsigned int vma_invalidate_size; }; -typedef int (*nvmem_cell_post_process_t)(void *, const char *, 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 sync_io { + long unsigned int error_bits; + struct completion wait; }; -struct nvmem_keepout { - unsigned int start; - unsigned int end; - unsigned char value; +struct dm_kcopyd_throttle { + unsigned int throttle; + unsigned int num_io_jobs; + unsigned int io_period; + unsigned int total_period; + unsigned int last_jiffies; }; -struct nvmem_cell_info; +typedef void (*dm_kcopyd_notify_fn)(int, long unsigned int, void *); -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 ignore_wp; - struct device_node *of_node; - bool no_of_node; - nvmem_reg_read_t reg_read; - nvmem_reg_write_t reg_write; - nvmem_cell_post_process_t cell_post_process; - int size; - int word_size; - int stride; - void *priv; - bool compat; - struct device *base_dev; +struct dm_kcopyd_client { + struct page_list *pages; + unsigned int nr_reserved_pages; + unsigned int nr_free_pages; + unsigned int sub_job_size; + struct dm_io_client *io_client; + wait_queue_head_t destroyq; + mempool_t job_pool; + struct workqueue_struct *kcopyd_wq; + struct work_struct kcopyd_work; + struct dm_kcopyd_throttle *throttle; + atomic_t nr_jobs; + spinlock_t job_lock; + struct list_head callback_jobs; + struct list_head complete_jobs; + struct list_head io_jobs; + struct list_head pages_jobs; }; -struct nvmem_cell_info { - const char *name; - unsigned int offset; - unsigned int bytes; - unsigned int bit_offset; - unsigned int nbits; +struct kcopyd_job { + struct dm_kcopyd_client *kc; + struct list_head list; + unsigned int flags; + int read_err; + long unsigned int write_err; + int rw; + struct dm_io_region source; + unsigned int num_dests; + struct dm_io_region dests[8]; + struct page_list *pages; + dm_kcopyd_notify_fn fn; + void *context; + struct mutex lock; + atomic_t sub_jobs; + sector_t progress; + sector_t write_offset; + struct kcopyd_job *master_job; }; -struct tb_retimer { - struct device dev; - struct tb *tb; - u8 index; - u32 vendor; - u32 device; - struct tb_port *port; - struct tb_nvm *nvm; - u32 auth_status; +struct dm_sysfs_attr { + struct attribute attr; + ssize_t (*show)(struct mapped_device *, char *); + ssize_t (*store)(struct mapped_device *, const char *, size_t); }; -struct tb_retimer_lookup { - const struct tb_port *port; - u8 index; +struct dm_stats_last_position { + sector_t last_sector; + unsigned int last_rw; }; -struct tb_quirk { - u16 hw_vendor_id; - u16 hw_device_id; - u16 vendor; - u16 device; - void (*hook)(struct tb_switch *); +struct dm_stat_percpu { + long long unsigned int sectors[2]; + long long unsigned int ios[2]; + long long unsigned int merges[2]; + long long unsigned int ticks[2]; + long long unsigned int io_ticks[2]; + long long unsigned int io_ticks_total; + long long unsigned int time_in_queue; + long long unsigned int *histogram; }; -struct nvmem_cell_lookup { - const char *nvmem_name; - const char *cell_name; - const char *dev_id; - const char *con_id; - struct list_head node; +struct dm_stat_shared { + atomic_t in_flight[2]; + long long unsigned int stamp; + struct dm_stat_percpu tmp; }; -enum { - NVMEM_ADD = 1, - NVMEM_REMOVE = 2, - NVMEM_CELL_ADD = 3, - NVMEM_CELL_REMOVE = 4, +struct dm_stat { + struct list_head list_entry; + int id; + unsigned int stat_flags; + size_t n_entries; + sector_t start; + sector_t end; + sector_t step; + unsigned int n_histogram_entries; + long long unsigned int *histogram_boundaries; + const char *program_id; + const char *aux_data; + struct callback_head callback_head; + size_t shared_alloc_size; + size_t percpu_alloc_size; + size_t histogram_alloc_size; + struct dm_stat_percpu *stat_percpu[512]; + struct dm_stat_shared stat_shared[0]; }; -struct nvmem_cell_table { - const char *nvmem_name; - const struct nvmem_cell_info *cells; - size_t ncells; - struct list_head node; -}; +struct dm_rq_target_io; -struct nvmem_device { - struct module *owner; - struct device dev; - int stride; - int word_size; - int id; - struct kref refcnt; - size_t size; - bool read_only; - bool root_only; - int flags; - enum nvmem_type type; - struct bin_attribute eeprom; - struct device *base_dev; - struct list_head cells; - const struct nvmem_keepout *keepout; - unsigned int nkeepout; - nvmem_reg_read_t reg_read; - nvmem_reg_write_t reg_write; - nvmem_cell_post_process_t cell_post_process; - struct gpio_desc *wp_gpio; - void *priv; +struct dm_rq_clone_bio_info { + struct bio *orig; + struct dm_rq_target_io *tio; + struct bio clone; }; -struct nvmem_cell_entry { - const char *name; - int offset; - int bytes; - int bit_offset; - int nbits; - struct device_node *np; - struct nvmem_device *nvmem; - struct list_head node; +struct dm_rq_target_io { + struct mapped_device *md; + struct dm_target *ti; + struct request *orig; + struct request *clone; + struct kthread_work work; + blk_status_t error; + union map_info___2 info; + struct dm_stats_aux stats_aux; + long unsigned int duration_jiffies; + unsigned int n_sectors; + unsigned int completed; }; -struct nvmem_cell { - struct nvmem_cell_entry *entry; - const char *id; +struct cper_sec_proc_arm { + u32 validation_bits; + u16 err_info_num; + u16 context_info_num; + u32 section_length; + u8 affinity_level; + u8 reserved[3]; + u64 mpidr; + u64 midr; + u32 running_state; + u32 psci_state; }; -struct icc_path; - -struct icc_bulk_data { - struct icc_path *path; - const char *name; - u32 avg_bw; - u32 peak_bw; +enum hw_event_mc_err_type { + HW_EVENT_ERR_CORRECTED = 0, + HW_EVENT_ERR_UNCORRECTED = 1, + HW_EVENT_ERR_DEFERRED = 2, + HW_EVENT_ERR_FATAL = 3, + HW_EVENT_ERR_INFO = 4, }; -struct net_device_devres { - struct net_device *ndev; +struct trace_event_raw_mc_event { + struct trace_entry ent; + unsigned int error_type; + u32 __data_loc_msg; + u32 __data_loc_label; + u16 error_count; + u8 mc_index; + s8 top_layer; + s8 middle_layer; + s8 lower_layer; + long int address; + u8 grain_bits; + long int syndrome; + u32 __data_loc_driver_detail; + char __data[0]; }; -struct icc_node; +struct trace_event_raw_arm_event { + struct trace_entry ent; + u64 mpidr; + u64 midr; + u32 running_state; + u32 psci_state; + u8 affinity; + char __data[0]; +}; -struct icc_req { - struct hlist_node req_node; - struct icc_node *node; - struct device *dev; - bool enabled; - u32 tag; - u32 avg_bw; - u32 peak_bw; +struct trace_event_raw_non_standard_event { + struct trace_entry ent; + char sec_type[16]; + char fru_id[16]; + u32 __data_loc_fru_text; + u8 sev; + u32 len; + u32 __data_loc_buf; + char __data[0]; }; -struct icc_path { - const char *name; - size_t num_nodes; - struct icc_req reqs[0]; +struct trace_event_raw_aer_event { + struct trace_entry ent; + u32 __data_loc_dev_name; + u32 status; + u8 severity; + u8 tlp_header_valid; + u32 tlp_header[4]; + char __data[0]; }; -struct icc_node_data { - struct icc_node *node; - u32 tag; +struct trace_event_data_offsets_mc_event { + u32 msg; + u32 label; + u32 driver_detail; }; -struct icc_provider; +struct trace_event_data_offsets_arm_event {}; -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 trace_event_data_offsets_non_standard_event { + u32 fru_text; + u32 buf; }; -struct icc_onecell_data { - unsigned int num_nodes; - struct icc_node *nodes[0]; +struct trace_event_data_offsets_aer_event { + u32 dev_name; }; -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; -}; +typedef void (*btf_trace_mc_event)(void *, const unsigned int, const char *, const char *, const int, const u8, const s8, const s8, const s8, long unsigned int, const u8, long unsigned int, const char *); -struct trace_event_raw_icc_set_bw { - struct trace_entry ent; - u32 __data_loc_path_name; - u32 __data_loc_dev; - u32 __data_loc_node_name; - u32 avg_bw; - u32 peak_bw; - u32 node_avg_bw; - u32 node_peak_bw; - char __data[0]; -}; +typedef void (*btf_trace_arm_event)(void *, const struct cper_sec_proc_arm *); -struct trace_event_raw_icc_set_bw_end { - struct trace_entry ent; - u32 __data_loc_path_name; - u32 __data_loc_dev; - int ret; - char __data[0]; -}; +typedef void (*btf_trace_non_standard_event)(void *, const guid_t *, const guid_t *, const char *, const u8, const u8 *, const u32); -struct trace_event_data_offsets_icc_set_bw { - u32 path_name; - u32 dev; - u32 node_name; -}; +typedef void (*btf_trace_aer_event)(void *, const char *, const u32, const u8, const u8, struct aer_header_log_regs *); -struct trace_event_data_offsets_icc_set_bw_end { - u32 path_name; - u32 dev; +struct net_device_devres { + struct net_device *ndev; }; -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 *, int); - struct __kernel_old_timespec { __kernel_old_time_t tv_sec; long int tv_nsec; @@ -87505,6 +78693,24 @@ enum sock_shutdown_cmd { SHUT_RDWR = 2, }; +struct net_proto_family { + int family; + int (*create)(struct net *, struct socket *, int, int); + struct module *owner; +}; + +enum { + SOCK_WAKE_IO = 0, + SOCK_WAKE_WAITD = 1, + SOCK_WAKE_SPACE = 2, + SOCK_WAKE_URG = 3, +}; + +struct compat_mmsghdr { + struct compat_msghdr msg_hdr; + compat_uint_t msg_len; +}; + enum { SOF_TIMESTAMPING_TX_HARDWARE = 1, SOF_TIMESTAMPING_TX_SOFTWARE = 2, @@ -87536,11 +78742,6 @@ struct sock_skb_cb { u32 dropcount; }; -struct compat_mmsghdr { - struct compat_msghdr msg_hdr; - compat_uint_t msg_len; -}; - struct sock_ee_data_rfc4884 { __u16 len; __u8 flags; @@ -87572,13 +78773,146 @@ struct sock_exterr_skb { u8 unused: 7; }; -struct net_bridge; - struct used_address { struct __kernel_sockaddr_storage name; unsigned int name_len; }; +struct linger { + int l_onoff; + int l_linger; +}; + +struct cmsghdr { + __kernel_size_t cmsg_len; + int cmsg_level; + int cmsg_type; +}; + +struct ucred { + __u32 pid; + __u32 uid; + __u32 gid; +}; + +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: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + unsigned int input_queue_head; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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, + SOF_TXTIME_FLAGS_LAST = 2, + SOF_TXTIME_FLAGS_MASK = 3, +}; + +struct sock_txtime { + __kernel_clockid_t clockid; + __u32 flags; +}; + +enum sk_pacing { + SK_PACING_NONE = 0, + SK_PACING_NEEDED = 1, + SK_PACING_FQ = 2, +}; + +struct sockcm_cookie { + u64 transmit_time; + u32 mark; + u16 tsflags; +}; + struct fastopen_queue { struct request_sock *rskq_rst_head; struct request_sock *rskq_rst_tail; @@ -87599,27 +78933,6 @@ struct request_sock_queue { struct fastopen_queue fastopenq; }; -struct inet_request_sock { - struct request_sock req; - u16 snd_wscale: 4; - u16 rcv_wscale: 4; - u16 tstamp_ok: 1; - u16 sack_ok: 1; - u16 wscale_ok: 1; - u16 ecn_ok: 1; - u16 acked: 1; - u16 no_srccheck: 1; - u16 smc_ok: 1; - u32 ir_mark; - union { - struct ip_options_rcu *ireq_opt; - struct { - struct ipv6_txoptions *ipv6_opt; - struct sk_buff *pktopts; - }; - }; -}; - struct inet_connection_sock_af_ops { int (*queue_xmit)(struct sock *, struct sk_buff *, struct flowi *); void (*send_check)(struct sock *, struct sk_buff *); @@ -87691,6 +79004,21 @@ struct inet_connection_sock { u64 icsk_ca_priv[13]; }; +struct inet_bind_bucket { + possible_net_t ib_net; + int l3mdev; + short unsigned int port; + signed char fastreuse; + signed char fastreuseport; + kuid_t fastuid; + struct in6_addr fast_v6_rcv_saddr; + __be32 fast_rcv_saddr; + short unsigned int fast_sk_family; + bool fast_ipv6_only; + struct hlist_node node; + struct hlist_head owners; +}; + struct tcp_ulp_ops { struct list_head list; int (*init)(struct sock *); @@ -87703,6 +79031,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; @@ -87728,45 +79062,6 @@ struct tcp_options_received { u16 mss_clamp; }; -struct tcp_request_sock_ops; - -struct tcp_request_sock { - struct inet_request_sock req; - const struct tcp_request_sock_ops *af_specific; - u64 snt_synack; - bool tfo_listener; - bool is_mptcp; - bool drop_req; - u32 txhash; - u32 rcv_isn; - u32 snt_isn; - u32 ts_off; - u32 last_oow_ack_time; - u32 rcv_nxt; - u8 syn_tos; -}; - -enum tcp_synack_type { - TCP_SYNACK_NORMAL = 0, - TCP_SYNACK_FASTOPEN = 1, - TCP_SYNACK_COOKIE = 2, -}; - -struct tcp_md5sig_key; - -struct tcp_fastopen_cookie; - -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 tcp_rack { u64 mstamp; u32 rtt_us; @@ -87857,7 +79152,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; @@ -87930,7 +79225,6 @@ struct tcp_sock { } mtu_probe; u32 mtu_info; bool is_mptcp; - bool (*smc_hs_congested)(const struct sock *); bool syn_smc; const struct tcp_sock_af_ops *af_specific; struct tcp_md5sig_info *md5sig_info; @@ -87939,231 +79233,14 @@ 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 *); int (*md5_parse)(struct sock *, int, sockptr_t, int); }; -struct linger { - int l_onoff; - int l_linger; -}; - -struct ucred { - __u32 pid; - __u32 uid; - __u32 gid; -}; - -struct mmpin { - struct user_struct *user; - unsigned int num_pg; -}; - -struct ubuf_info { - void (*callback)(struct sk_buff *, struct ubuf_info *, bool); - union { - struct { - long unsigned int desc; - void *ctx; - }; - struct { - u32 id; - u16 len; - u16 zerocopy: 1; - u32 bytelen; - }; - }; - refcount_t refcnt; - u8 flags; - struct mmpin mmp; -}; - -enum { - SKB_GSO_TCPV4 = 1, - SKB_GSO_DODGY = 2, - SKB_GSO_TCP_ECN = 4, - SKB_GSO_TCP_FIXEDID = 8, - SKB_GSO_TCPV6 = 16, - SKB_GSO_FCOE = 32, - SKB_GSO_GRE = 64, - SKB_GSO_GRE_CSUM = 128, - SKB_GSO_IPXIP4 = 256, - SKB_GSO_IPXIP6 = 512, - SKB_GSO_UDP_TUNNEL = 1024, - SKB_GSO_UDP_TUNNEL_CSUM = 2048, - SKB_GSO_PARTIAL = 4096, - SKB_GSO_TUNNEL_REMCSUM = 8192, - SKB_GSO_SCTP = 16384, - SKB_GSO_ESP = 32768, - SKB_GSO_UDP = 65536, - SKB_GSO_UDP_L4 = 131072, - SKB_GSO_FRAGLIST = 262144, -}; - -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; -}; - -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: 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; - long: 64; - unsigned int input_queue_head; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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, - SOF_TXTIME_FLAGS_LAST = 2, - SOF_TXTIME_FLAGS_MASK = 3, -}; - -struct sock_txtime { - __kernel_clockid_t clockid; - __u32 flags; -}; - -enum sk_pacing { - SK_PACING_NONE = 0, - SK_PACING_NEEDED = 1, - SK_PACING_FQ = 2, -}; - -struct sockcm_cookie { - u64 transmit_time; - u32 mark; - u16 tsflags; -}; - -struct inet_bind_bucket { - possible_net_t ib_net; - int l3mdev; - short unsigned int port; - signed char fastreuse; - signed char fastreuseport; - kuid_t fastuid; - struct in6_addr fast_v6_rcv_saddr; - __be32 fast_rcv_saddr; - short unsigned int fast_sk_family; - bool fast_ipv6_only; - struct hlist_node node; - struct hlist_head owners; -}; - -struct tcp_fastopen_cookie { - __le64 val[2]; - s8 len; - bool exp; -}; - struct tcp_md5sig_info { struct hlist_head head; struct callback_head rcu; @@ -88195,8 +79272,6 @@ struct tcp_md5sig_key { }; 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; @@ -88230,16 +79305,60 @@ enum sknetlink_groups { __SKNLGRP_MAX = 5, }; -enum { - SKBFL_ZEROCOPY_ENABLE = 1, - SKBFL_SHARED_FRAG = 2, - SKBFL_PURE_ZEROCOPY = 4, +struct inet_request_sock { + struct request_sock req; + u16 snd_wscale: 4; + u16 rcv_wscale: 4; + u16 tstamp_ok: 1; + u16 sack_ok: 1; + u16 wscale_ok: 1; + u16 ecn_ok: 1; + u16 acked: 1; + u16 no_srccheck: 1; + u16 smc_ok: 1; + u32 ir_mark; + union { + struct ip_options_rcu *ireq_opt; + struct { + struct ipv6_txoptions *ipv6_opt; + struct sk_buff *pktopts; + }; + }; }; -struct ahash_request; +struct tcp_request_sock_ops; -struct nf_conntrack { - refcount_t use; +struct tcp_request_sock { + struct inet_request_sock req; + const struct tcp_request_sock_ops *af_specific; + u64 snt_synack; + bool tfo_listener; + bool is_mptcp; + bool drop_req; + u32 txhash; + u32 rcv_isn; + u32 snt_isn; + u32 ts_off; + u32 last_oow_ack_time; + u32 rcv_nxt; + u8 syn_tos; +}; + +enum tcp_synack_type { + TCP_SYNACK_NORMAL = 0, + TCP_SYNACK_FASTOPEN = 1, + TCP_SYNACK_COOKIE = 2, +}; + +struct tcp_request_sock_ops { + u16 mss_clamp; + struct 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 { @@ -88280,27 +79399,63 @@ struct skb_gso_cb { __u16 csum_start; }; +struct napi_gro_cb { + void *frag0; + unsigned int frag0_len; + int data_offset; + u16 flush; + u16 flush_id; + u16 count; + u16 gro_remcsum_start; + long unsigned int age; + u16 proto; + u8 same_flow: 1; + u8 encap_mark: 1; + u8 csum_valid: 1; + u8 csum_cnt: 3; + u8 free: 2; + u8 is_ipv6: 1; + u8 is_fou: 1; + u8 is_atomic: 1; + u8 recursion_counter: 4; + u8 is_flist: 1; + __wsum csum; + struct sk_buff *last; +}; + enum skb_free_reason { SKB_REASON_CONSUMED = 0, SKB_REASON_DROPPED = 1, }; +enum { + TCA_UNSPEC = 0, + TCA_KIND = 1, + TCA_OPTIONS = 2, + TCA_STATS = 3, + TCA_XSTATS = 4, + TCA_RATE = 5, + TCA_FCNT = 6, + TCA_STATS2 = 7, + TCA_STAB = 8, + TCA_PAD = 9, + TCA_DUMP_INVISIBLE = 10, + TCA_CHAIN = 11, + TCA_HW_OFFLOAD = 12, + TCA_INGRESS_BLOCK = 13, + TCA_EGRESS_BLOCK = 14, + TCA_DUMP_FLAGS = 15, + __TCA_MAX = 16, +}; + struct vlan_hdr { __be16 h_vlan_TCI; __be16 h_vlan_encapsulated_proto; }; struct vlan_ethhdr { - union { - struct { - unsigned char h_dest[6]; - unsigned char h_source[6]; - }; - struct { - unsigned char h_dest[6]; - unsigned char h_source[6]; - } addrs; - }; + unsigned char h_dest[6]; + unsigned char h_source[6]; __be16 h_vlan_proto; __be16 h_vlan_TCI; __be16 h_vlan_encapsulated_proto; @@ -88353,7 +79508,7 @@ struct scm_cookie { struct pid *pid; struct scm_fp_list *fp; struct scm_creds creds; - u32 secid; + struct lsmblob lsmblob; }; struct scm_timestamping { @@ -88364,6 +79519,29 @@ struct scm_timestamping64 { struct __kernel_timespec ts[3]; }; +enum { + TCA_STATS_UNSPEC = 0, + TCA_STATS_BASIC = 1, + TCA_STATS_RATE_EST = 2, + TCA_STATS_QUEUE = 3, + TCA_STATS_APP = 4, + TCA_STATS_RATE_EST64 = 5, + TCA_STATS_PAD = 6, + TCA_STATS_BASIC_HW = 7, + TCA_STATS_PKT64 = 8, + __TCA_STATS_MAX = 9, +}; + +struct gnet_stats_basic { + __u64 bytes; + __u32 packets; +}; + +struct gnet_stats_rate_est { + __u32 bps; + __u32 pps; +}; + struct gnet_stats_rate_est64 { __u64 bps; __u64 pps; @@ -88375,10 +79553,10 @@ struct gnet_estimator { }; struct net_rate_estimator { - struct gnet_stats_basic_sync *bstats; + struct gnet_stats_basic_packed *bstats; spinlock_t *stats_lock; - bool running; - struct gnet_stats_basic_sync *cpu_bstats; + seqcount_t *running; + struct gnet_stats_basic_cpu *cpu_bstats; u8 ewma_log; u8 intvl_log; seqcount_t seq; @@ -88391,29 +79569,6 @@ struct net_rate_estimator { struct callback_head rcu; }; -enum { - TCA_STATS_UNSPEC = 0, - TCA_STATS_BASIC = 1, - TCA_STATS_RATE_EST = 2, - TCA_STATS_QUEUE = 3, - TCA_STATS_APP = 4, - TCA_STATS_RATE_EST64 = 5, - TCA_STATS_PAD = 6, - TCA_STATS_BASIC_HW = 7, - TCA_STATS_PKT64 = 8, - __TCA_STATS_MAX = 9, -}; - -struct gnet_stats_basic { - __u64 bytes; - __u32 packets; -}; - -struct gnet_stats_rate_est { - __u32 bps; - __u32 pps; -}; - struct rtgenmsg { unsigned char rtgen_family; }; @@ -88453,10 +79608,7 @@ enum rtnetlink_groups { RTNLGRP_IPV6_MROUTE_R = 31, RTNLGRP_NEXTHOP = 32, RTNLGRP_BRVLAN = 33, - RTNLGRP_MCTP_IFADDR = 34, - RTNLGRP_TUNNEL = 35, - RTNLGRP_STATS = 36, - __RTNLGRP_MAX = 37, + __RTNLGRP_MAX = 34, }; enum { @@ -88574,12 +79726,6 @@ typedef u32 u_int32_t; typedef u64 u_int64_t; -struct flow_dissector_key_control { - u16 thoff; - u16 addr_type; - u32 flags; -}; - enum flow_dissect_ret { FLOW_DISSECT_RET_OUT_GOOD = 0, FLOW_DISSECT_RET_OUT_BAD = 1, @@ -88588,12 +79734,6 @@ enum flow_dissect_ret { FLOW_DISSECT_RET_CONTINUE = 4, }; -struct flow_dissector_key_basic { - __be16 n_proto; - u8 ip_proto; - u8 padding; -}; - struct flow_dissector_key_tags { u32 flow_label; }; @@ -88717,16 +79857,6 @@ struct flow_dissector_key { size_t offset; }; -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 flow_keys { struct flow_dissector_key_control control; struct flow_dissector_key_basic basic; @@ -88737,7 +79867,7 @@ 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 { @@ -88832,219 +79962,6 @@ struct nf_ct_event_notifier { int (*exp_event)(unsigned int, const struct nf_exp_event *); }; -enum { - TCA_FLOWER_KEY_CT_FLAGS_NEW = 1, - TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED = 2, - TCA_FLOWER_KEY_CT_FLAGS_RELATED = 4, - TCA_FLOWER_KEY_CT_FLAGS_TRACKED = 8, - TCA_FLOWER_KEY_CT_FLAGS_INVALID = 16, - TCA_FLOWER_KEY_CT_FLAGS_REPLY = 32, - __TCA_FLOWER_KEY_CT_FLAGS_MAX = 33, -}; - -enum devlink_port_type { - DEVLINK_PORT_TYPE_NOTSET = 0, - DEVLINK_PORT_TYPE_AUTO = 1, - DEVLINK_PORT_TYPE_ETH = 2, - DEVLINK_PORT_TYPE_IB = 3, -}; - -enum devlink_port_flavour { - DEVLINK_PORT_FLAVOUR_PHYSICAL = 0, - DEVLINK_PORT_FLAVOUR_CPU = 1, - DEVLINK_PORT_FLAVOUR_DSA = 2, - DEVLINK_PORT_FLAVOUR_PCI_PF = 3, - DEVLINK_PORT_FLAVOUR_PCI_VF = 4, - DEVLINK_PORT_FLAVOUR_VIRTUAL = 5, - DEVLINK_PORT_FLAVOUR_UNUSED = 6, - DEVLINK_PORT_FLAVOUR_PCI_SF = 7, -}; - -struct devlink_port_phys_attrs { - u32 port_number; - u32 split_subport_number; -}; - -struct devlink_port_pci_pf_attrs { - u32 controller; - u16 pf; - u8 external: 1; -}; - -struct devlink_port_pci_vf_attrs { - u32 controller; - u16 pf; - u16 vf; - u8 external: 1; -}; - -struct devlink_port_pci_sf_attrs { - u32 controller; - u32 sf; - u16 pf; - u8 external: 1; -}; - -struct devlink_port_attrs { - u8 split: 1; - u8 splittable: 1; - u32 lanes; - enum devlink_port_flavour flavour; - struct netdev_phys_item_id switch_id; - union { - struct devlink_port_phys_attrs phys; - struct devlink_port_pci_pf_attrs pci_pf; - struct devlink_port_pci_vf_attrs pci_vf; - struct devlink_port_pci_sf_attrs pci_sf; - }; -}; - -struct devlink; - -struct devlink_rate; - -struct devlink_port { - struct list_head list; - struct list_head param_list; - struct list_head region_list; - struct devlink *devlink; - unsigned int index; - spinlock_t type_lock; - enum devlink_port_type type; - enum devlink_port_type desired_type; - void *type_dev; - struct devlink_port_attrs attrs; - u8 attrs_set: 1; - u8 switch_port: 1; - struct delayed_work type_warn_dw; - struct list_head reporter_list; - struct mutex reporters_lock; - struct devlink_rate *devlink_rate; -}; - -struct ip_tunnel_parm { - char name[16]; - int link; - __be16 i_flags; - __be16 o_flags; - __be32 i_key; - __be32 o_key; - struct iphdr iph; -}; - -enum phylink_op_type { - PHYLINK_NETDEV = 0, - PHYLINK_DEV = 1, -}; - -struct phylink_link_state; - -struct phylink_config { - struct device *dev; - enum phylink_op_type type; - bool legacy_pre_march2020; - bool poll_fixed_state; - bool ovr_an_inband; - void (*get_fixed_state)(struct phylink_config *, struct phylink_link_state *); - long unsigned int supported_interfaces[1]; - long unsigned int mac_capabilities; -}; - -struct dsa_device_ops; - -struct dsa_switch_tree; - -struct dsa_switch; - -struct dsa_bridge; - -struct dsa_lag; - -struct dsa_netdevice_ops; - -struct dsa_port { - union { - struct net_device *master; - struct net_device *slave; - }; - const struct dsa_device_ops *tag_ops; - struct dsa_switch_tree *dst; - struct sk_buff * (*rcv)(struct sk_buff *, struct net_device *); - struct dsa_switch *ds; - unsigned int index; - enum { - DSA_PORT_TYPE_UNUSED = 0, - DSA_PORT_TYPE_CPU = 1, - DSA_PORT_TYPE_DSA = 2, - DSA_PORT_TYPE_USER = 3, - } type; - const char *name; - struct dsa_port *cpu_dp; - u8 mac[6]; - u8 stp_state; - u8 vlan_filtering: 1; - u8 learning: 1; - u8 lag_tx_enabled: 1; - u8 devlink_port_setup: 1; - u8 master_admin_up: 1; - u8 master_oper_up: 1; - u8 setup: 1; - struct device_node *dn; - unsigned int ageing_time; - struct dsa_bridge *bridge; - struct devlink_port devlink_port; - struct phylink *pl; - struct phylink_config pl_config; - struct dsa_lag *lag; - struct net_device *hsr_dev; - struct list_head list; - const struct ethtool_ops *orig_ethtool_ops; - const struct dsa_netdevice_ops *netdev_ops; - struct mutex addr_lists_lock; - struct list_head fdbs; - struct list_head mdbs; - struct mutex vlans_lock; - struct list_head vlans; -}; - -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 { - struct netdev_notifier_info info; - struct net_device *upper_dev; - bool master; - bool linking; - void *upper_info; -}; - -union tcp_word_hdr { - struct tcphdr hdr; - __be32 words[5]; -}; - enum bpf_ret_code { BPF_OK = 0, BPF_DROP = 2, @@ -89058,301 +79975,133 @@ enum { BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP = 4, }; -struct flow_match { - struct flow_dissector *dissector; - void *mask; - void *key; -}; - -enum flow_action_id { - FLOW_ACTION_ACCEPT = 0, - FLOW_ACTION_DROP = 1, - FLOW_ACTION_TRAP = 2, - FLOW_ACTION_GOTO = 3, - FLOW_ACTION_REDIRECT = 4, - FLOW_ACTION_MIRRED = 5, - FLOW_ACTION_REDIRECT_INGRESS = 6, - FLOW_ACTION_MIRRED_INGRESS = 7, - FLOW_ACTION_VLAN_PUSH = 8, - FLOW_ACTION_VLAN_POP = 9, - FLOW_ACTION_VLAN_MANGLE = 10, - FLOW_ACTION_TUNNEL_ENCAP = 11, - FLOW_ACTION_TUNNEL_DECAP = 12, - FLOW_ACTION_MANGLE = 13, - FLOW_ACTION_ADD = 14, - FLOW_ACTION_CSUM = 15, - FLOW_ACTION_MARK = 16, - FLOW_ACTION_PTYPE = 17, - FLOW_ACTION_PRIORITY = 18, - FLOW_ACTION_WAKE = 19, - FLOW_ACTION_QUEUE = 20, - FLOW_ACTION_SAMPLE = 21, - FLOW_ACTION_POLICE = 22, - FLOW_ACTION_CT = 23, - FLOW_ACTION_CT_METADATA = 24, - FLOW_ACTION_MPLS_PUSH = 25, - FLOW_ACTION_MPLS_POP = 26, - FLOW_ACTION_MPLS_MANGLE = 27, - FLOW_ACTION_GATE = 28, - FLOW_ACTION_PPPOE_PUSH = 29, - FLOW_ACTION_JUMP = 30, - FLOW_ACTION_PIPE = 31, - FLOW_ACTION_VLAN_PUSH_ETH = 32, - FLOW_ACTION_VLAN_POP_ETH = 33, - FLOW_ACTION_CONTINUE = 34, - NUM_FLOW_ACTIONS = 35, -}; - -enum flow_action_mangle_base { - FLOW_ACT_MANGLE_UNSPEC = 0, - FLOW_ACT_MANGLE_HDR_TYPE_ETH = 1, - FLOW_ACT_MANGLE_HDR_TYPE_IP4 = 2, - FLOW_ACT_MANGLE_HDR_TYPE_IP6 = 3, - FLOW_ACT_MANGLE_HDR_TYPE_TCP = 4, - FLOW_ACT_MANGLE_HDR_TYPE_UDP = 5, -}; - -enum flow_action_hw_stats { - FLOW_ACTION_HW_STATS_IMMEDIATE = 1, - FLOW_ACTION_HW_STATS_DELAYED = 2, - FLOW_ACTION_HW_STATS_ANY = 3, - FLOW_ACTION_HW_STATS_DISABLED = 4, - FLOW_ACTION_HW_STATS_DONT_CARE = 7, -}; - -typedef void (*action_destr)(void *); - -struct flow_action_cookie { - u32 cookie_len; - u8 cookie[0]; -}; - -struct nf_flowtable; - -struct ip_tunnel_key { - __be64 tun_id; - union { - struct { - __be32 src; - __be32 dst; - } ipv4; - struct { - struct in6_addr src; - struct in6_addr dst; - } ipv6; - } u; - __be16 tun_flags; - u8 tos; - u8 ttl; - __be32 label; - __be16 tp_src; - __be16 tp_dst; -}; - -struct dst_cache_pcpu; - -struct dst_cache { - struct dst_cache_pcpu *cache; - long unsigned int reset_ts; -}; - -struct ip_tunnel_info { - struct ip_tunnel_key key; - struct dst_cache dst_cache; - u8 options_len; - u8 mode; -}; - -struct psample_group; - -struct action_gate_entry; - -struct flow_action_entry { - enum flow_action_id id; - u32 hw_index; - enum flow_action_hw_stats hw_stats; - action_destr destructor; - void *destructor_priv; - union { - u32 chain_index; - struct net_device *dev; - struct { - u16 vid; - __be16 proto; - u8 prio; - } vlan; - struct { - unsigned char dst[6]; - unsigned char src[6]; - } vlan_push_eth; - struct { - enum flow_action_mangle_base htype; - u32 offset; - u32 mask; - u32 val; - } mangle; - struct ip_tunnel_info *tunnel; - u32 csum_flags; - u32 mark; - u16 ptype; - u32 priority; - struct { - u32 ctx; - u32 index; - u8 vf; - } queue; - struct { - struct psample_group *psample_group; - u32 rate; - u32 trunc_size; - bool truncate; - } sample; - struct { - u32 burst; - u64 rate_bytes_ps; - u64 peakrate_bytes_ps; - u32 avrate; - u16 overhead; - u64 burst_pkt; - u64 rate_pkt_ps; - u32 mtu; - struct { - enum flow_action_id act_id; - u32 extval; - } exceed; - struct { - enum flow_action_id act_id; - u32 extval; - } notexceed; - } police; - struct { - int action; - u16 zone; - struct nf_flowtable *flow_table; - } ct; - struct { - long unsigned int cookie; - u32 mark; - u32 labels[4]; - bool orig_dir; - } ct_metadata; - struct { - u32 label; - __be16 proto; - u8 tc; - u8 bos; - u8 ttl; - } mpls_push; - struct { - __be16 proto; - } mpls_pop; - struct { - u32 label; - u8 tc; - u8 bos; - u8 ttl; - } mpls_mangle; - struct { - s32 prio; - u64 basetime; - u64 cycletime; - u64 cycletimeext; - u32 num_entries; - struct action_gate_entry *entries; - } gate; - struct { - u16 sid; - } pppoe; - }; - struct flow_action_cookie *cookie; +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 flow_action { - unsigned int num_entries; - struct flow_action_entry entries[0]; +enum devlink_port_type { + DEVLINK_PORT_TYPE_NOTSET = 0, + DEVLINK_PORT_TYPE_AUTO = 1, + DEVLINK_PORT_TYPE_ETH = 2, + DEVLINK_PORT_TYPE_IB = 3, }; -struct flow_rule { - struct flow_match match; - struct flow_action action; +enum devlink_port_flavour { + DEVLINK_PORT_FLAVOUR_PHYSICAL = 0, + DEVLINK_PORT_FLAVOUR_CPU = 1, + DEVLINK_PORT_FLAVOUR_DSA = 2, + DEVLINK_PORT_FLAVOUR_PCI_PF = 3, + DEVLINK_PORT_FLAVOUR_PCI_VF = 4, + DEVLINK_PORT_FLAVOUR_VIRTUAL = 5, + DEVLINK_PORT_FLAVOUR_UNUSED = 6, + DEVLINK_PORT_FLAVOUR_PCI_SF = 7, }; -struct flow_stats { - u64 pkts; - u64 bytes; - u64 drops; - u64 lastused; - enum flow_action_hw_stats used_hw_stats; - bool used_hw_stats_valid; +struct devlink_port_phys_attrs { + u32 port_number; + u32 split_subport_number; }; -enum flow_cls_command { - FLOW_CLS_REPLACE = 0, - FLOW_CLS_DESTROY = 1, - FLOW_CLS_STATS = 2, - FLOW_CLS_TMPLT_CREATE = 3, - FLOW_CLS_TMPLT_DESTROY = 4, +struct devlink_port_pci_pf_attrs { + u32 controller; + u16 pf; + u8 external: 1; }; -struct flow_cls_common_offload { - u32 chain_index; - __be16 protocol; - u32 prio; - struct netlink_ext_ack *extack; +struct devlink_port_pci_vf_attrs { + u32 controller; + u16 pf; + u16 vf; + u8 external: 1; }; -struct flow_cls_offload { - struct flow_cls_common_offload common; - enum flow_cls_command command; - long unsigned int cookie; - struct flow_rule *rule; - struct flow_stats stats; - u32 classid; +struct devlink_port_pci_sf_attrs { + u32 controller; + u32 sf; + u16 pf; + u8 external: 1; }; -struct dsa_chip_data { - struct device *host_dev; - int sw_addr; - struct device *netdev[12]; - int eeprom_len; - struct device_node *of_node; - char *port_names[12]; - struct device_node *port_dn[12]; - s8 rtable[4]; +struct devlink_port_attrs { + u8 split: 1; + u8 splittable: 1; + u32 lanes; + enum devlink_port_flavour flavour; + struct netdev_phys_item_id switch_id; + union { + struct devlink_port_phys_attrs phys; + struct devlink_port_pci_pf_attrs pci_pf; + struct devlink_port_pci_vf_attrs pci_vf; + struct devlink_port_pci_sf_attrs pci_sf; + }; }; -struct dsa_platform_data { - struct device *netdev; - struct net_device *of_netdev; - int nr_chips; - struct dsa_chip_data *chip; +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; + spinlock_t type_lock; + enum devlink_port_type type; + enum devlink_port_type desired_type; + void *type_dev; + struct devlink_port_attrs attrs; + u8 attrs_set: 1; + u8 switch_port: 1; + struct delayed_work type_warn_dw; + struct list_head reporter_list; + struct mutex reporters_lock; + struct devlink_rate *devlink_rate; }; -struct phylink_link_state { - long unsigned int advertising[2]; - long unsigned int lp_advertising[2]; - phy_interface_t interface; - int speed; - int duplex; - int pause; - unsigned int link: 1; - unsigned int an_enabled: 1; - unsigned int an_complete: 1; +struct ip_tunnel_key { + __be64 tun_id; + union { + struct { + __be32 src; + __be32 dst; + } ipv4; + struct { + struct in6_addr src; + struct in6_addr dst; + } ipv6; + } u; + __be16 tun_flags; + u8 tos; + u8 ttl; + __be32 label; + __be16 tp_src; + __be16 tp_dst; }; -struct phylink_pcs_ops; +struct dst_cache_pcpu; + +struct dst_cache { + struct dst_cache_pcpu *cache; + long unsigned int reset_ts; +}; -struct phylink_pcs { - const struct phylink_pcs_ops *ops; - bool poll; +struct ip_tunnel_info { + struct ip_tunnel_key key; + struct dst_cache dst_cache; + u8 options_len; + u8 mode; }; -struct phylink_pcs_ops { - int (*pcs_validate)(struct phylink_pcs *, long unsigned int *, const struct phylink_link_state *); - void (*pcs_get_state)(struct phylink_pcs *, struct phylink_link_state *); - int (*pcs_config)(struct phylink_pcs *, unsigned int, phy_interface_t, const long unsigned int *, bool); - void (*pcs_an_restart)(struct phylink_pcs *); - void (*pcs_link_up)(struct phylink_pcs *, unsigned int, phy_interface_t, int, int); +union tcp_word_hdr { + struct tcphdr hdr; + __be32 words[5]; }; enum devlink_sb_pool_type { @@ -89365,439 +80114,259 @@ enum devlink_sb_threshold_type { DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC = 1, }; +enum devlink_eswitch_encap_mode { + DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0, + 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, - DEVLINK_PARAM_CMODE_PERMANENT = 2, - __DEVLINK_PARAM_CMODE_MAX = 3, - DEVLINK_PARAM_CMODE_MAX = 2, +enum devlink_trap_action { + DEVLINK_TRAP_ACTION_DROP = 0, + DEVLINK_TRAP_ACTION_TRAP = 1, + DEVLINK_TRAP_ACTION_MIRROR = 2, }; -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; - }; - }; +enum devlink_trap_type { + DEVLINK_TRAP_TYPE_DROP = 0, + DEVLINK_TRAP_TYPE_EXCEPTION = 1, + DEVLINK_TRAP_TYPE_CONTROL = 2, }; -struct devlink_sb_pool_info { - enum devlink_sb_pool_type pool_type; - u32 size; - enum devlink_sb_threshold_type threshold_type; - u32 cell_size; +enum devlink_reload_action { + DEVLINK_RELOAD_ACTION_UNSPEC = 0, + DEVLINK_RELOAD_ACTION_DRIVER_REINIT = 1, + DEVLINK_RELOAD_ACTION_FW_ACTIVATE = 2, + __DEVLINK_RELOAD_ACTION_MAX = 3, + DEVLINK_RELOAD_ACTION_MAX = 2, }; -union devlink_param_value { - u8 vu8; - u16 vu16; - u32 vu32; - char vstr[32]; - bool vbool; +enum devlink_reload_limit { + DEVLINK_RELOAD_LIMIT_UNSPEC = 0, + DEVLINK_RELOAD_LIMIT_NO_RESET = 1, + __DEVLINK_RELOAD_LIMIT_MAX = 2, + DEVLINK_RELOAD_LIMIT_MAX = 1, }; -struct devlink_param_gset_ctx { - union devlink_param_value val; - enum devlink_param_cmode cmode; +enum devlink_dpipe_field_mapping_type { + DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0, + DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 1, }; -struct devlink_info_req; - -struct fib_info; +enum devlink_port_fn_state { + DEVLINK_PORT_FN_STATE_INACTIVE = 0, + DEVLINK_PORT_FN_STATE_ACTIVE = 1, +}; -struct fib_nh { - struct fib_nh_common nh_common; - struct hlist_node nh_hash; - struct fib_info *nh_parent; - __u32 nh_tclassid; - __be32 nh_saddr; - int nh_saddr_genid; +enum devlink_port_fn_opstate { + DEVLINK_PORT_FN_OPSTATE_DETACHED = 0, + DEVLINK_PORT_FN_OPSTATE_ATTACHED = 1, }; -struct fib_info { - struct hlist_node fib_hash; - struct hlist_node fib_lhash; - struct list_head nh_list; - struct net *fib_net; - refcount_t fib_treeref; - refcount_t fib_clntref; - unsigned int fib_flags; - unsigned char fib_dead; - unsigned char fib_protocol; - unsigned char fib_scope; - unsigned char fib_type; - __be32 fib_prefsrc; - u32 fib_tb_id; - u32 fib_priority; - struct dst_metrics *fib_metrics; - int fib_nhs; - bool fib_nh_is_v6; - bool nh_updated; - struct nexthop *nh; - struct callback_head rcu; - struct fib_nh fib_nh[0]; +struct devlink_dev_stats { + u32 reload_stats[6]; + u32 remote_reload_stats[6]; }; -struct nh_info; +struct devlink_dpipe_headers; -struct nh_group; +struct devlink_ops; -struct nexthop { - struct rb_node rb_node; - struct list_head fi_list; - struct list_head f6i_list; - struct list_head fdb_list; - struct list_head grp_list; - struct net *net; - u32 id; - u8 protocol; - u8 nh_flags; - bool is_group; - refcount_t refcnt; - struct callback_head rcu; - union { - struct nh_info *nh_info; - struct nh_group *nh_grp; - }; +struct devlink { + 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; + struct list_head param_list; + struct list_head region_list; + struct list_head reporter_list; + struct mutex reporters_lock; + struct devlink_dpipe_headers *dpipe_headers; + struct list_head trap_list; + struct list_head trap_group_list; + struct list_head trap_policer_list; + const struct devlink_ops *ops; + struct xarray snapshot_ids; + struct devlink_dev_stats stats; + struct device *dev; + possible_net_t _net; + struct mutex lock; + u8 reload_failed: 1; + u8 reload_enabled: 1; + refcount_t refcount; + struct completion comp; + char priv[0]; }; -struct switchdev_mst_state { - u16 msti; - u8 state; -}; +struct devlink_dpipe_header; -struct switchdev_brport_flags { - long unsigned int val; - long unsigned int mask; +struct devlink_dpipe_headers { + struct devlink_dpipe_header **headers; + unsigned int headers_count; }; -struct switchdev_vlan_msti { - u16 vid; - u16 msti; -}; +struct devlink_sb_pool_info; -enum switchdev_obj_id { - SWITCHDEV_OBJ_ID_UNDEFINED = 0, - SWITCHDEV_OBJ_ID_PORT_VLAN = 1, - SWITCHDEV_OBJ_ID_PORT_MDB = 2, - SWITCHDEV_OBJ_ID_HOST_MDB = 3, - SWITCHDEV_OBJ_ID_MRP = 4, - SWITCHDEV_OBJ_ID_RING_TEST_MRP = 5, - SWITCHDEV_OBJ_ID_RING_ROLE_MRP = 6, - SWITCHDEV_OBJ_ID_RING_STATE_MRP = 7, - SWITCHDEV_OBJ_ID_IN_TEST_MRP = 8, - SWITCHDEV_OBJ_ID_IN_ROLE_MRP = 9, - SWITCHDEV_OBJ_ID_IN_STATE_MRP = 10, -}; +struct devlink_info_req; -struct switchdev_obj { - struct list_head list; - struct net_device *orig_dev; - enum switchdev_obj_id id; - u32 flags; - void *complete_priv; - void (*complete)(struct net_device *, int, void *); -}; +struct devlink_flash_update_params; -struct switchdev_obj_port_vlan { - struct switchdev_obj obj; - u16 flags; - u16 vid; - bool changed; -}; +struct devlink_trap; -struct switchdev_obj_port_mdb { - struct switchdev_obj obj; - unsigned char addr[6]; - u16 vid; -}; +struct devlink_trap_group; -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, - DSA_TAG_PROTO_GSWIP = 5, - DSA_TAG_PROTO_KSZ9477 = 6, - DSA_TAG_PROTO_KSZ9893 = 7, - DSA_TAG_PROTO_LAN9303 = 8, - DSA_TAG_PROTO_MTK = 9, - DSA_TAG_PROTO_QCA = 10, - DSA_TAG_PROTO_TRAILER = 11, - DSA_TAG_PROTO_8021Q = 12, - DSA_TAG_PROTO_SJA1105 = 13, - DSA_TAG_PROTO_KSZ8795 = 14, - DSA_TAG_PROTO_OCELOT = 15, - 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, - DSA_TAG_PROTO_RTL8_4 = 24, - DSA_TAG_PROTO_RTL8_4T = 25, -}; - -struct dsa_device_ops { - struct sk_buff * (*xmit)(struct sk_buff *, struct net_device *); - struct sk_buff * (*rcv)(struct sk_buff *, struct net_device *); - void (*flow_dissect)(const struct sk_buff *, __be16 *, int *); - int (*connect)(struct dsa_switch *); - void (*disconnect)(struct dsa_switch *); - unsigned int needed_headroom; - unsigned int needed_tailroom; - const char *name; - enum dsa_tag_protocol proto; - bool promisc_on_master; -}; +struct devlink_trap_policer; -struct dsa_8021q_context; +struct devlink_port_new_attrs; -struct dsa_switch_ops; +struct devlink_ops { + u32 supported_flash_update_params; + long unsigned int reload_actions; + long unsigned int reload_limits; + int (*reload_down)(struct devlink *, bool, enum devlink_reload_action, enum devlink_reload_limit, struct netlink_ext_ack *); + int (*reload_up)(struct devlink *, enum devlink_reload_action, enum devlink_reload_limit, u32 *, struct netlink_ext_ack *); + int (*port_type_set)(struct devlink_port *, enum devlink_port_type); + int (*port_split)(struct devlink *, unsigned int, unsigned int, struct netlink_ext_ack *); + int (*port_unsplit)(struct devlink *, unsigned int, struct netlink_ext_ack *); + int (*sb_pool_get)(struct devlink *, unsigned int, u16, struct devlink_sb_pool_info *); + int (*sb_pool_set)(struct devlink *, unsigned int, u16, u32, enum devlink_sb_threshold_type, struct netlink_ext_ack *); + int (*sb_port_pool_get)(struct devlink_port *, unsigned int, u16, u32 *); + int (*sb_port_pool_set)(struct devlink_port *, unsigned int, u16, u32, struct netlink_ext_ack *); + int (*sb_tc_pool_bind_get)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u16 *, u32 *); + int (*sb_tc_pool_bind_set)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u16, u32, struct netlink_ext_ack *); + int (*sb_occ_snapshot)(struct devlink *, unsigned int); + int (*sb_occ_max_clear)(struct devlink *, unsigned int); + int (*sb_occ_port_pool_get)(struct devlink_port *, unsigned int, u16, u32 *, u32 *); + int (*sb_occ_tc_port_bind_get)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u32 *, u32 *); + int (*eswitch_mode_get)(struct devlink *, u16 *); + int (*eswitch_mode_set)(struct devlink *, u16, struct netlink_ext_ack *); + int (*eswitch_inline_mode_get)(struct devlink *, u8 *); + int (*eswitch_inline_mode_set)(struct devlink *, u8, struct netlink_ext_ack *); + int (*eswitch_encap_mode_get)(struct devlink *, enum devlink_eswitch_encap_mode *); + int (*eswitch_encap_mode_set)(struct devlink *, enum devlink_eswitch_encap_mode, struct netlink_ext_ack *); + int (*info_get)(struct devlink *, struct devlink_info_req *, struct netlink_ext_ack *); + int (*flash_update)(struct devlink *, struct devlink_flash_update_params *, struct netlink_ext_ack *); + int (*trap_init)(struct devlink *, const struct devlink_trap *, void *); + void (*trap_fini)(struct devlink *, const struct devlink_trap *, void *); + int (*trap_action_set)(struct devlink *, const struct devlink_trap *, enum devlink_trap_action, struct netlink_ext_ack *); + int (*trap_group_init)(struct devlink *, const struct devlink_trap_group *); + int (*trap_group_set)(struct devlink *, const struct devlink_trap_group *, const struct devlink_trap_policer *, struct netlink_ext_ack *); + int (*trap_group_action_set)(struct devlink *, const struct devlink_trap_group *, enum devlink_trap_action, struct netlink_ext_ack *); + int (*trap_drop_counter_get)(struct devlink *, const struct devlink_trap *, u64 *); + int (*trap_policer_init)(struct devlink *, const struct devlink_trap_policer *); + void (*trap_policer_fini)(struct devlink *, const struct devlink_trap_policer *); + int (*trap_policer_set)(struct devlink *, const struct devlink_trap_policer *, u64, u64, struct netlink_ext_ack *); + int (*trap_policer_counter_get)(struct devlink *, const struct devlink_trap_policer *, u64 *); + int (*port_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 dsa_switch { - struct device *dev; - struct dsa_switch_tree *dst; - unsigned int index; - u32 setup: 1; - u32 vlan_filtering_is_global: 1; - u32 needs_standalone_vlan_filtering: 1; - u32 configure_vlan_while_not_filtering: 1; - u32 untag_bridge_pvid: 1; - u32 assisted_learning_on_cpu_port: 1; - u32 vlan_filtering: 1; - u32 mtu_enforcement_ingress: 1; - u32 fdb_isolation: 1; - struct notifier_block nb; - void *priv; - void *tagger_data; - struct dsa_chip_data *cd; - const struct dsa_switch_ops *ops; - u32 phys_mii_mask; - 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_rate { + struct list_head list; + enum devlink_rate_type type; struct devlink *devlink; - unsigned int num_tx_queues; - unsigned int num_lag_ids; - unsigned int max_num_bridges; - unsigned int num_ports; + 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 dsa_netdevice_ops { - int (*ndo_eth_ioctl)(struct net_device *, struct ifreq *, int); +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 dsa_lag { - struct net_device *dev; +struct devlink_sb_pool_info { + enum devlink_sb_pool_type pool_type; + u32 size; + enum devlink_sb_threshold_type threshold_type; + u32 cell_size; +}; + +struct devlink_dpipe_field { + const char *name; unsigned int id; - struct mutex fdb_lock; - struct list_head fdbs; - refcount_t refcount; + unsigned int bitwidth; + enum devlink_dpipe_field_mapping_type mapping_type; }; -struct dsa_switch_tree { - struct list_head list; - struct list_head ports; - struct raw_notifier_head nh; - unsigned int index; - struct kref refcount; - struct dsa_lag **lags; - const struct dsa_device_ops *tag_ops; - enum dsa_tag_protocol default_proto; - bool setup; - struct dsa_platform_data *pd; - struct list_head rtable; - unsigned int lags_len; - unsigned int last_switch; -}; - -struct dsa_mall_mirror_tc_entry { - u8 to_local_port; - bool ingress; +struct devlink_dpipe_header { + const char *name; + unsigned int id; + struct devlink_dpipe_field *fields; + unsigned int fields_count; + bool global; }; -struct dsa_mall_policer_tc_entry { - u32 burst; - u64 rate_bytes_per_sec; +struct devlink_flash_update_params { + const struct firmware *fw; + const char *component; + u32 overwrite_mask; }; -struct dsa_bridge { - struct net_device *dev; - unsigned int num; - bool tx_fwd_offload; - refcount_t refcount; +struct devlink_trap_policer { + u32 id; + u64 init_rate; + u64 init_burst; + u64 max_rate; + u64 min_rate; + u64 max_burst; + u64 min_burst; }; -enum dsa_db_type { - DSA_DB_PORT = 0, - DSA_DB_LAG = 1, - DSA_DB_BRIDGE = 2, +struct devlink_trap_group { + const char *name; + u16 id; + bool generic; + u32 init_policer_id; }; -struct dsa_db { - enum dsa_db_type type; - union { - const struct dsa_port *dp; - struct dsa_lag lag; - struct dsa_bridge bridge; - }; +struct devlink_trap { + enum devlink_trap_type type; + enum devlink_trap_action init_action; + bool generic; + u16 id; + const char *name; + u16 init_group_id; + u32 metadata_cap; }; -struct fixed_phy_status; - -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 (*connect_tag_protocol)(struct dsa_switch *, enum dsa_tag_protocol); - int (*setup)(struct dsa_switch *); - void (*teardown)(struct dsa_switch *); - int (*port_setup)(struct dsa_switch *, int); - void (*port_teardown)(struct dsa_switch *, int); - u32 (*get_phy_flags)(struct dsa_switch *, int); - int (*phy_read)(struct dsa_switch *, int, int); - int (*phy_write)(struct dsa_switch *, int, int, u16); - void (*adjust_link)(struct dsa_switch *, int, struct phy_device *); - void (*fixed_link_update)(struct dsa_switch *, int, struct fixed_phy_status *); - void (*phylink_get_caps)(struct dsa_switch *, int, struct phylink_config *); - void (*phylink_validate)(struct dsa_switch *, int, long unsigned int *, struct phylink_link_state *); - struct phylink_pcs * (*phylink_mac_select_pcs)(struct dsa_switch *, int, phy_interface_t); - int (*phylink_mac_link_state)(struct dsa_switch *, int, struct phylink_link_state *); - void (*phylink_mac_config)(struct dsa_switch *, int, unsigned int, const struct phylink_link_state *); - void (*phylink_mac_an_restart)(struct dsa_switch *, int); - void (*phylink_mac_link_down)(struct dsa_switch *, int, unsigned int, phy_interface_t); - void (*phylink_mac_link_up)(struct dsa_switch *, int, unsigned int, phy_interface_t, struct phy_device *, int, int, bool, bool); - void (*phylink_fixed_state)(struct dsa_switch *, int, struct phylink_link_state *); - void (*get_strings)(struct dsa_switch *, int, u32, uint8_t *); - 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_eth_phy_stats)(struct dsa_switch *, int, struct ethtool_eth_phy_stats *); - void (*get_eth_mac_stats)(struct dsa_switch *, int, struct ethtool_eth_mac_stats *); - void (*get_eth_ctrl_stats)(struct dsa_switch *, int, struct ethtool_eth_ctrl_stats *); - 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 *); - int (*port_get_default_prio)(struct dsa_switch *, int); - int (*port_set_default_prio)(struct dsa_switch *, int, u8); - int (*port_get_dscp_prio)(struct dsa_switch *, int, u8); - int (*port_add_dscp_prio)(struct dsa_switch *, int, u8, u8); - int (*port_del_dscp_prio)(struct dsa_switch *, int, u8, u8); - int (*suspend)(struct dsa_switch *); - int (*resume)(struct dsa_switch *); - int (*port_enable)(struct dsa_switch *, int, struct phy_device *); - void (*port_disable)(struct dsa_switch *, int); - int (*set_mac_eee)(struct dsa_switch *, int, struct ethtool_eee *); - int (*get_mac_eee)(struct dsa_switch *, int, struct ethtool_eee *); - int (*get_eeprom_len)(struct dsa_switch *); - int (*get_eeprom)(struct dsa_switch *, struct ethtool_eeprom *, u8 *); - int (*set_eeprom)(struct dsa_switch *, struct ethtool_eeprom *, u8 *); - int (*get_regs_len)(struct dsa_switch *, int); - void (*get_regs)(struct dsa_switch *, int, struct ethtool_regs *, void *); - int (*port_prechangeupper)(struct dsa_switch *, int, struct netdev_notifier_changeupper_info *); - int (*set_ageing_time)(struct dsa_switch *, unsigned int); - int (*port_bridge_join)(struct dsa_switch *, int, struct dsa_bridge, bool *, struct netlink_ext_ack *); - void (*port_bridge_leave)(struct dsa_switch *, int, struct dsa_bridge); - void (*port_stp_state_set)(struct dsa_switch *, int, u8); - int (*port_mst_state_set)(struct dsa_switch *, int, const struct switchdev_mst_state *); - void (*port_fast_age)(struct dsa_switch *, int); - int (*port_vlan_fast_age)(struct dsa_switch *, int, u16); - 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 (*vlan_msti_set)(struct dsa_switch *, struct dsa_bridge, const struct switchdev_vlan_msti *); - int (*port_fdb_add)(struct dsa_switch *, int, const unsigned char *, u16, struct dsa_db); - int (*port_fdb_del)(struct dsa_switch *, int, const unsigned char *, u16, struct dsa_db); - int (*port_fdb_dump)(struct dsa_switch *, int, dsa_fdb_dump_cb_t *, void *); - int (*lag_fdb_add)(struct dsa_switch *, struct dsa_lag, const unsigned char *, u16, struct dsa_db); - int (*lag_fdb_del)(struct dsa_switch *, struct dsa_lag, const unsigned char *, u16, struct dsa_db); - int (*port_mdb_add)(struct dsa_switch *, int, const struct switchdev_obj_port_mdb *, struct dsa_db); - int (*port_mdb_del)(struct dsa_switch *, int, const struct switchdev_obj_port_mdb *, struct dsa_db); - int (*get_rxnfc)(struct dsa_switch *, int, struct ethtool_rxnfc *, u32 *); - int (*set_rxnfc)(struct dsa_switch *, int, struct ethtool_rxnfc *); - int (*cls_flower_add)(struct dsa_switch *, int, struct flow_cls_offload *, bool); - int (*cls_flower_del)(struct dsa_switch *, int, struct flow_cls_offload *, bool); - int (*cls_flower_stats)(struct dsa_switch *, int, struct flow_cls_offload *, bool); - int (*port_mirror_add)(struct dsa_switch *, int, struct dsa_mall_mirror_tc_entry *, bool, struct netlink_ext_ack *); - void (*port_mirror_del)(struct dsa_switch *, int, struct dsa_mall_mirror_tc_entry *); - int (*port_policer_add)(struct dsa_switch *, int, struct dsa_mall_policer_tc_entry *); - void (*port_policer_del)(struct dsa_switch *, int); - int (*port_setup_tc)(struct dsa_switch *, int, enum tc_setup_type, void *); - int (*crosschip_bridge_join)(struct dsa_switch *, int, int, int, struct dsa_bridge, struct netlink_ext_ack *); - void (*crosschip_bridge_leave)(struct dsa_switch *, int, int, int, struct dsa_bridge); - int (*crosschip_lag_change)(struct dsa_switch *, int, int); - int (*crosschip_lag_join)(struct dsa_switch *, int, int, struct dsa_lag, struct netdev_lag_upper_info *); - int (*crosschip_lag_leave)(struct dsa_switch *, int, int, struct dsa_lag); - int (*port_hwtstamp_get)(struct dsa_switch *, int, struct ifreq *); - int (*port_hwtstamp_set)(struct dsa_switch *, int, struct ifreq *); - 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 dsa_lag, struct netdev_lag_upper_info *); - int (*port_lag_leave)(struct dsa_switch *, int, struct dsa_lag); - 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); - void (*master_state_change)(struct dsa_switch *, const struct net_device *, bool); +struct arphdr { + __be16 ar_hrd; + __be16 ar_pro; + unsigned char ar_hln; + unsigned char ar_pln; + __be16 ar_op; }; enum lwtunnel_encap_types { @@ -89814,78 +80383,6 @@ enum lwtunnel_encap_types { __LWTUNNEL_ENCAP_MAX = 10, }; -struct arphdr { - __be16 ar_hrd; - __be16 ar_pro; - unsigned char ar_hln; - unsigned char ar_pln; - __be16 ar_op; -}; - -struct nh_info { - struct hlist_node dev_hash; - struct nexthop *nh_parent; - u8 family; - bool reject_nh; - bool fdb_nh; - union { - struct fib_nh_common fib_nhc; - struct fib_nh fib_nh; - struct fib6_nh fib6_nh; - }; -}; - -struct 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; - 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 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]; -}; - enum metadata_type { METADATA_IP_TUNNEL = 0, METADATA_HW_PORT_MUX = 1, @@ -89970,12 +80467,6 @@ struct pppoe_hdr { struct pppoe_tag tag[0]; }; -struct hsr_tag { - __be16 path_and_LSDU_size; - __be16 sequence_nr; - __be16 encap_proto; -}; - struct mpls_label { __be32 entry; }; @@ -90103,7 +80594,7 @@ struct nf_conn { u16 cpu; possible_net_t ct_net; struct hlist_node nat_bysource; - struct { } __nfct_init_offset; + struct {} __nfct_init_offset; struct nf_conn *master; u_int32_t mark; u_int32_t secmark; @@ -90121,7 +80612,6 @@ struct nf_conntrack_tuple_mask { struct nf_ct_ext { u8 offset[9]; u8 len; - long: 48; char data[0]; }; @@ -90152,9 +80642,9 @@ enum nf_ct_ext_id { NF_CT_EXT_ACCT = 3, NF_CT_EXT_ECACHE = 4, NF_CT_EXT_TSTAMP = 5, - NF_CT_EXT_LABELS = 6, - NF_CT_EXT_SYNPROXY = 7, - NF_CT_EXT_ACT_CT = 8, + NF_CT_EXT_TIMEOUT = 6, + NF_CT_EXT_LABELS = 7, + NF_CT_EXT_SYNPROXY = 8, NF_CT_EXT_NUM = 9, }; @@ -90183,41 +80673,24 @@ struct _flow_keys_digest_data { __be32 dst; }; -struct rps_sock_flow_table { - u32 mask; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - u32 ents[0]; +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 { + void *sysctl; + int data[32]; + long unsigned int state[1]; +}; + +enum nf_dev_hooks { + NF_NETDEV_INGRESS = 0, + NF_NETDEV_NUMHOOKS = 1, }; enum { @@ -90230,18 +80703,6 @@ enum { IF_OPER_UP = 6, }; -struct ipv4_devconf { - void *sysctl; - int data[33]; - long unsigned int state[1]; -}; - -enum nf_dev_hooks { - NF_NETDEV_INGRESS = 0, - NF_NETDEV_EGRESS = 1, - NF_NETDEV_NUMHOOKS = 2, -}; - struct ifbond { __s32 bond_mode; __s32 num_slaves; @@ -90273,12 +80734,6 @@ enum { NAPIF_STATE_SCHED_THREADED = 512, }; -enum netdev_queue_state_t { - __QUEUE_STATE_DRV_XOFF = 0, - __QUEUE_STATE_STACK_XOFF = 1, - __QUEUE_STATE_FROZEN = 2, -}; - struct net_device_path_stack { int num_paths; struct net_device_path path[5]; @@ -90312,7 +80767,6 @@ struct ip_mc_list; struct in_device { struct net_device *dev; - netdevice_tracker dev_tracker; refcount_t refcnt; int dead; struct in_ifaddr *ifa_list; @@ -90340,7 +80794,6 @@ struct packet_type { __be16 type; bool ignore_outgoing; struct net_device *dev; - netdevice_tracker dev_tracker; int (*func)(struct sk_buff *, struct net_device *, struct packet_type *, struct net_device *); void (*list_func)(struct list_head *, struct packet_type *, struct net_device *); bool (*id_match)(struct packet_type *, struct sock *); @@ -90349,6 +80802,19 @@ struct packet_type { 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; + struct offload_callbacks callbacks; + struct list_head list; +}; + struct netdev_notifier_info_ext { struct netdev_notifier_info info; union { @@ -90361,6 +80827,14 @@ struct netdev_notifier_change_info { unsigned int flags_changed; }; +struct netdev_notifier_changeupper_info { + struct netdev_notifier_info info; + struct net_device *upper_dev; + bool master; + bool linking; + void *upper_info; +}; + struct netdev_notifier_changelowerstate_info { struct netdev_notifier_info info; void *lower_state_info; @@ -90371,28 +80845,6 @@ struct netdev_notifier_pre_changeaddr_info { const unsigned char *dev_addr; }; -enum netdev_offload_xstats_type { - NETDEV_OFFLOAD_XSTATS_TYPE_L3 = 1, -}; - -struct netdev_notifier_offload_xstats_rd { - struct rtnl_hw_stats64 stats; - bool used; -}; - -struct netdev_notifier_offload_xstats_ru { - bool used; -}; - -struct netdev_notifier_offload_xstats_info { - struct netdev_notifier_info info; - enum netdev_offload_xstats_type type; - union { - struct netdev_notifier_offload_xstats_rd *report_delta; - struct netdev_notifier_offload_xstats_ru *report_used; - }; -}; - typedef int (*bpf_op_t)(struct net_device *, struct netdev_bpf *); enum { @@ -90425,7 +80877,6 @@ union inet_addr { struct netpoll { struct net_device *dev; - netdevice_tracker dev_tracker; char dev_name[16]; const char *name; union inet_addr local_ip; @@ -90443,10 +80894,6 @@ enum qdisc_state_t { __QDISC_STATE_DRAINING = 3, }; -enum qdisc_state2_t { - __QDISC_STATE2_RUNNING = 0, -}; - struct tcf_walker { int stop; int skip; @@ -90489,8 +80936,7 @@ enum { IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30, IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31, IPV4_DEVCONF_BC_FORWARDING = 32, - IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33, - __IPV4_DEVCONF_MAX = 34, + __IPV4_DEVCONF_MAX = 33, }; struct tc_skb_cb { @@ -90502,6 +80948,31 @@ struct tc_skb_cb { u16 zone; }; +enum dma_transaction_type { + DMA_MEMCPY = 0, + DMA_XOR = 1, + DMA_PQ = 2, + DMA_XOR_VAL = 3, + DMA_PQ_VAL = 4, + DMA_MEMSET = 5, + DMA_MEMSET_SG = 6, + DMA_INTERRUPT = 7, + DMA_PRIVATE = 8, + DMA_ASYNC_TX = 9, + DMA_SLAVE = 10, + DMA_CYCLIC = 11, + DMA_INTERLEAVE = 12, + DMA_COMPLETION_NO_ORDER = 13, + DMA_REPEAT = 14, + DMA_LOAD_EOT = 15, + DMA_TX_TYPE_END = 16, +}; + +enum sum_check_bits { + SUM_CHECK_P = 0, + SUM_CHECK_Q = 1, +}; + struct in_ifaddr { struct hlist_node hash; struct in_ifaddr *ifa_next; @@ -90514,7 +80985,6 @@ struct in_ifaddr { __be32 ifa_broadcast; unsigned char ifa_scope; unsigned char ifa_prefixlen; - unsigned char ifa_proto; __u32 ifa_flags; char ifa_label[16]; __u32 ifa_valid_lft; @@ -90541,7 +81011,6 @@ struct dev_kfree_skb_cb { struct netdev_adjacent { struct net_device *dev; - netdevice_tracker dev_tracker; bool master; bool ignore; u16 ref_nr; @@ -90578,8 +81047,7 @@ enum { NDA_PROTOCOL = 12, NDA_NH_ID = 13, NDA_FDB_EXT_ATTRS = 14, - NDA_FLAGS_EXT = 15, - __NDA_MAX = 16, + __NDA_MAX = 15, }; struct nda_cacheinfo { @@ -90760,6 +81228,69 @@ struct rtnl_link_ifmap { __u8 port; }; +enum { + IFLA_UNSPEC = 0, + IFLA_ADDRESS = 1, + IFLA_BROADCAST = 2, + IFLA_IFNAME = 3, + IFLA_MTU = 4, + IFLA_LINK = 5, + IFLA_QDISC = 6, + IFLA_STATS = 7, + IFLA_COST = 8, + IFLA_PRIORITY = 9, + IFLA_MASTER = 10, + IFLA_WIRELESS = 11, + IFLA_PROTINFO = 12, + IFLA_TXQLEN = 13, + IFLA_MAP = 14, + IFLA_WEIGHT = 15, + IFLA_OPERSTATE = 16, + IFLA_LINKMODE = 17, + IFLA_LINKINFO = 18, + IFLA_NET_NS_PID = 19, + IFLA_IFALIAS = 20, + IFLA_NUM_VF = 21, + IFLA_VFINFO_LIST = 22, + IFLA_STATS64 = 23, + IFLA_VF_PORTS = 24, + IFLA_PORT_SELF = 25, + IFLA_AF_SPEC = 26, + IFLA_GROUP = 27, + IFLA_NET_NS_FD = 28, + IFLA_EXT_MASK = 29, + IFLA_PROMISCUITY = 30, + IFLA_NUM_TX_QUEUES = 31, + IFLA_NUM_RX_QUEUES = 32, + IFLA_CARRIER = 33, + IFLA_PHYS_PORT_ID = 34, + IFLA_CARRIER_CHANGES = 35, + IFLA_PHYS_SWITCH_ID = 36, + IFLA_LINK_NETNSID = 37, + IFLA_PHYS_PORT_NAME = 38, + IFLA_PROTO_DOWN = 39, + IFLA_GSO_MAX_SEGS = 40, + IFLA_GSO_MAX_SIZE = 41, + IFLA_PAD = 42, + IFLA_XDP = 43, + IFLA_EVENT = 44, + IFLA_NEW_NETNSID = 45, + IFLA_IF_NETNSID = 46, + IFLA_TARGET_NETNSID = 46, + IFLA_CARRIER_UP_COUNT = 47, + IFLA_CARRIER_DOWN_COUNT = 48, + IFLA_NEW_IFINDEX = 49, + IFLA_MIN_MTU = 50, + IFLA_MAX_MTU = 51, + IFLA_PROP_LIST = 52, + IFLA_ALT_IFNAME = 53, + IFLA_PERM_ADDRESS = 54, + IFLA_PROTO_DOWN_REASON = 55, + IFLA_PARENT_DEV_NAME = 56, + IFLA_PARENT_DEV_BUS_NAME = 57, + __IFLA_MAX = 58, +}; + enum { IFLA_PROTO_DOWN_REASON_UNSPEC = 0, IFLA_PROTO_DOWN_REASON_MASK = 1, @@ -90808,8 +81339,17 @@ enum { IFLA_BRPORT_MRP_IN_OPEN = 36, IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37, IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38, - IFLA_BRPORT_LOCKED = 39, - __IFLA_BRPORT_MAX = 40, + __IFLA_BRPORT_MAX = 39, +}; + +enum { + IFLA_INFO_UNSPEC = 0, + IFLA_INFO_KIND = 1, + IFLA_INFO_DATA = 2, + IFLA_INFO_XSTATS = 3, + IFLA_INFO_SLAVE_KIND = 4, + IFLA_INFO_SLAVE_DATA = 5, + __IFLA_INFO_MAX = 6, }; enum { @@ -90913,460 +81453,178 @@ enum { IFLA_VF_PORT = 1, __IFLA_VF_PORT_MAX = 2, }; - -enum { - IFLA_PORT_UNSPEC = 0, - IFLA_PORT_VF = 1, - IFLA_PORT_PROFILE = 2, - IFLA_PORT_VSI_TYPE = 3, - IFLA_PORT_INSTANCE_UUID = 4, - IFLA_PORT_HOST_UUID = 5, - IFLA_PORT_REQUEST = 6, - IFLA_PORT_RESPONSE = 7, - __IFLA_PORT_MAX = 8, -}; - -struct if_stats_msg { - __u8 family; - __u8 pad1; - __u16 pad2; - __u32 ifindex; - __u32 filter_mask; -}; - -enum { - IFLA_STATS_UNSPEC = 0, - IFLA_STATS_LINK_64 = 1, - IFLA_STATS_LINK_XSTATS = 2, - IFLA_STATS_LINK_XSTATS_SLAVE = 3, - IFLA_STATS_LINK_OFFLOAD_XSTATS = 4, - IFLA_STATS_AF_SPEC = 5, - __IFLA_STATS_MAX = 6, -}; - -enum { - IFLA_STATS_GETSET_UNSPEC = 0, - IFLA_STATS_GET_FILTERS = 1, - IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2, - __IFLA_STATS_GETSET_MAX = 3, -}; - -enum { - IFLA_OFFLOAD_XSTATS_UNSPEC = 0, - IFLA_OFFLOAD_XSTATS_CPU_HIT = 1, - IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2, - IFLA_OFFLOAD_XSTATS_L3_STATS = 3, - __IFLA_OFFLOAD_XSTATS_MAX = 4, -}; - -enum { - IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0, - IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1, - IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2, - __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3, -}; - -enum { - XDP_ATTACHED_NONE = 0, - XDP_ATTACHED_DRV = 1, - XDP_ATTACHED_SKB = 2, - XDP_ATTACHED_HW = 3, - XDP_ATTACHED_MULTI = 4, -}; - -enum { - IFLA_XDP_UNSPEC = 0, - IFLA_XDP_FD = 1, - IFLA_XDP_ATTACHED = 2, - IFLA_XDP_FLAGS = 3, - IFLA_XDP_PROG_ID = 4, - IFLA_XDP_DRV_PROG_ID = 5, - IFLA_XDP_SKB_PROG_ID = 6, - IFLA_XDP_HW_PROG_ID = 7, - IFLA_XDP_EXPECTED_FD = 8, - __IFLA_XDP_MAX = 9, -}; - -enum { - IFLA_EVENT_NONE = 0, - IFLA_EVENT_REBOOT = 1, - IFLA_EVENT_FEATURES = 2, - IFLA_EVENT_BONDING_FAILOVER = 3, - IFLA_EVENT_NOTIFY_PEERS = 4, - IFLA_EVENT_IGMP_RESEND = 5, - IFLA_EVENT_BONDING_OPTIONS = 6, -}; - -enum { - IFLA_BRIDGE_FLAGS = 0, - IFLA_BRIDGE_MODE = 1, - IFLA_BRIDGE_VLAN_INFO = 2, - IFLA_BRIDGE_VLAN_TUNNEL_INFO = 3, - IFLA_BRIDGE_MRP = 4, - IFLA_BRIDGE_CFM = 5, - IFLA_BRIDGE_MST = 6, - __IFLA_BRIDGE_MAX = 7, -}; - -enum { - BR_MCAST_DIR_RX = 0, - BR_MCAST_DIR_TX = 1, - BR_MCAST_DIR_SIZE = 2, -}; - -enum rtattr_type_t { - RTA_UNSPEC = 0, - RTA_DST = 1, - RTA_SRC = 2, - RTA_IIF = 3, - RTA_OIF = 4, - RTA_GATEWAY = 5, - RTA_PRIORITY = 6, - RTA_PREFSRC = 7, - RTA_METRICS = 8, - RTA_MULTIPATH = 9, - RTA_PROTOINFO = 10, - RTA_FLOW = 11, - RTA_CACHEINFO = 12, - RTA_SESSION = 13, - RTA_MP_ALGO = 14, - RTA_TABLE = 15, - RTA_MARK = 16, - RTA_MFC_STATS = 17, - RTA_VIA = 18, - RTA_NEWDST = 19, - RTA_PREF = 20, - RTA_ENCAP_TYPE = 21, - RTA_ENCAP = 22, - RTA_EXPIRES = 23, - RTA_PAD = 24, - RTA_UID = 25, - RTA_TTL_PROPAGATE = 26, - RTA_IP_PROTO = 27, - RTA_SPORT = 28, - RTA_DPORT = 29, - RTA_NH_ID = 30, - __RTA_MAX = 31, -}; - -struct rta_cacheinfo { - __u32 rta_clntref; - __u32 rta_lastuse; - __s32 rta_expires; - __u32 rta_error; - __u32 rta_used; - __u32 rta_id; - __u32 rta_ts; - __u32 rta_tsage; -}; - -struct rtnl_af_ops { - struct list_head list; - int family; - int (*fill_link_af)(struct sk_buff *, const struct net_device *, u32); - size_t (*get_link_af_size)(const struct net_device *, u32); - int (*validate_link_af)(const struct net_device *, const struct nlattr *, struct netlink_ext_ack *); - int (*set_link_af)(struct net_device *, const struct nlattr *, struct netlink_ext_ack *); - int (*fill_stats_af)(struct sk_buff *, const struct net_device *); - size_t (*get_stats_af_size)(const struct net_device *); -}; - -struct rtnl_link { - rtnl_doit_func doit; - rtnl_dumpit_func dumpit; - struct module *owner; - unsigned int flags; - struct callback_head rcu; -}; - -struct rtnl_offload_xstats_request_used { - bool request; - bool used; -}; - -struct rtnl_stats_dump_filters { - u32 mask[6]; -}; - -enum { - IF_LINK_MODE_DEFAULT = 0, - IF_LINK_MODE_DORMANT = 1, - IF_LINK_MODE_TESTING = 2, -}; - -enum lw_bits { - LW_URGENT = 0, -}; - -struct sock_diag_req { - __u8 sdiag_family; - __u8 sdiag_protocol; -}; - -struct sock_diag_handler { - __u8 family; - int (*dump)(struct sk_buff *, struct nlmsghdr *); - int (*get_info)(struct sk_buff *, struct sock *); - int (*destroy)(struct sk_buff *, struct nlmsghdr *); -}; - -struct broadcast_sk { - struct sock *sk; - struct work_struct work; -}; - -struct seg6_pernet_data { - struct mutex lock; - struct in6_addr *tun_src; - struct rhashtable hmac_infos; -}; - -enum xdp_buff_flags { - XDP_FLAGS_HAS_FRAGS = 1, - XDP_FLAGS_FRAGS_PF_MEMALLOC = 2, -}; - -enum rt_scope_t { - RT_SCOPE_UNIVERSE = 0, - RT_SCOPE_SITE = 200, - RT_SCOPE_LINK = 253, - RT_SCOPE_HOST = 254, - RT_SCOPE_NOWHERE = 255, -}; - -enum rt_class_t { - RT_TABLE_UNSPEC = 0, - RT_TABLE_COMPAT = 252, - RT_TABLE_DEFAULT = 253, - RT_TABLE_MAIN = 254, - RT_TABLE_LOCAL = 255, - RT_TABLE_MAX = 4294967295, -}; - -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; - __u32 tw_mark; - volatile unsigned char tw_substate; - unsigned char tw_rcv_wscale; - __be16 tw_sport; - unsigned int tw_transparent: 1; - unsigned int tw_flowlabel: 20; - unsigned int tw_pad: 3; - unsigned int tw_tos: 8; - u32 tw_txhash; - u32 tw_priority; - struct timer_list tw_timer; - struct inet_bind_bucket *tw_tb; -}; - -struct tcp_timewait_sock { - struct inet_timewait_sock tw_sk; - u32 tw_rcv_wnd; - u32 tw_ts_offset; - u32 tw_ts_recent; - u32 tw_last_oow_ack_time; - int tw_ts_recent_stamp; - u32 tw_tx_delay; - struct tcp_md5sig_key *tw_md5_key; -}; - -struct udp_sock { - struct inet_sock inet; - int pending; - unsigned int corkflag; - __u8 encap_type; - unsigned char no_check6_tx: 1; - unsigned char no_check6_rx: 1; - unsigned char encap_enabled: 1; - unsigned char gro_enabled: 1; - unsigned char accept_udp_l4: 1; - unsigned char accept_udp_fraglist: 1; - __u16 len; - __u16 gso_size; - __u16 pcslen; - __u16 pcrlen; - __u8 pcflag; - __u8 unused[3]; - int (*encap_rcv)(struct sock *, struct sk_buff *); - int (*encap_err_lookup)(struct sock *, struct sk_buff *); - void (*encap_destroy)(struct sock *); - struct sk_buff * (*gro_receive)(struct sock *, struct list_head *, struct sk_buff *); - int (*gro_complete)(struct sock *, struct sk_buff *, int); - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 sk_buff_head reader_queue; - int forward_deficit; - 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; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; + +enum { + IFLA_PORT_UNSPEC = 0, + IFLA_PORT_VF = 1, + IFLA_PORT_PROFILE = 2, + IFLA_PORT_VSI_TYPE = 3, + IFLA_PORT_INSTANCE_UUID = 4, + IFLA_PORT_HOST_UUID = 5, + IFLA_PORT_REQUEST = 6, + IFLA_PORT_RESPONSE = 7, + __IFLA_PORT_MAX = 8, }; -struct udp6_sock { - struct udp_sock udp; - struct ipv6_pinfo inet6; - 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 if_stats_msg { + __u8 family; + __u8 pad1; + __u16 pad2; + __u32 ifindex; + __u32 filter_mask; }; -struct tcp6_sock { - struct tcp_sock tcp; - struct ipv6_pinfo inet6; +enum { + IFLA_STATS_UNSPEC = 0, + IFLA_STATS_LINK_64 = 1, + IFLA_STATS_LINK_XSTATS = 2, + IFLA_STATS_LINK_XSTATS_SLAVE = 3, + IFLA_STATS_LINK_OFFLOAD_XSTATS = 4, + IFLA_STATS_AF_SPEC = 5, + __IFLA_STATS_MAX = 6, }; -struct fib_result { - __be32 prefix; - unsigned char prefixlen; - unsigned char nh_sel; - unsigned char type; - unsigned char scope; - u32 tclassid; - struct fib_nh_common *nhc; - struct fib_info *fi; - struct fib_table *table; - struct hlist_head *fa_head; +enum { + IFLA_OFFLOAD_XSTATS_UNSPEC = 0, + IFLA_OFFLOAD_XSTATS_CPU_HIT = 1, + __IFLA_OFFLOAD_XSTATS_MAX = 2, }; -struct fib6_result; +enum { + XDP_ATTACHED_NONE = 0, + XDP_ATTACHED_DRV = 1, + XDP_ATTACHED_SKB = 2, + XDP_ATTACHED_HW = 3, + XDP_ATTACHED_MULTI = 4, +}; -struct fib6_config; +enum { + IFLA_XDP_UNSPEC = 0, + IFLA_XDP_FD = 1, + IFLA_XDP_ATTACHED = 2, + IFLA_XDP_FLAGS = 3, + IFLA_XDP_PROG_ID = 4, + IFLA_XDP_DRV_PROG_ID = 5, + IFLA_XDP_SKB_PROG_ID = 6, + IFLA_XDP_HW_PROG_ID = 7, + IFLA_XDP_EXPECTED_FD = 8, + __IFLA_XDP_MAX = 9, +}; -struct ipv6_stub { - int (*ipv6_sock_mc_join)(struct sock *, int, const struct in6_addr *); - int (*ipv6_sock_mc_drop)(struct sock *, int, const struct in6_addr *); - struct dst_entry * (*ipv6_dst_lookup_flow)(struct net *, const struct sock *, struct flowi6 *, const struct in6_addr *); - int (*ipv6_route_input)(struct sk_buff *); - struct fib6_table * (*fib6_get_table)(struct net *, u32); - int (*fib6_lookup)(struct net *, int, struct flowi6 *, struct fib6_result *, int); - int (*fib6_table_lookup)(struct net *, struct fib6_table *, int, struct flowi6 *, struct fib6_result *, int); - void (*fib6_select_path)(const struct net *, struct fib6_result *, struct flowi6 *, int, bool, const struct sk_buff *, int); - u32 (*ip6_mtu_from_fib6)(const struct fib6_result *, const struct in6_addr *, const struct in6_addr *); - int (*fib6_nh_init)(struct net *, struct fib6_nh *, struct fib6_config *, gfp_t, struct netlink_ext_ack *); - void (*fib6_nh_release)(struct fib6_nh *); - void (*fib6_nh_release_dsts)(struct fib6_nh *); - void (*fib6_update_sernum)(struct net *, struct fib6_info *); - int (*ip6_del_rt)(struct net *, struct fib6_info *, bool); - void (*fib6_rt_update)(struct net *, struct fib6_info *, struct nl_info *); - void (*udpv6_encap_enable)(); - void (*ndisc_send_na)(struct net_device *, const struct in6_addr *, const struct in6_addr *, bool, bool, bool, bool); - void (*xfrm6_local_rxpmtu)(struct sk_buff *, u32); - int (*xfrm6_udp_encap_rcv)(struct sock *, struct sk_buff *); - int (*xfrm6_rcv_encap)(struct sk_buff *, int, __be32, int); - struct neigh_table *nd_tbl; - int (*ipv6_fragment)(struct net *, struct sock *, struct sk_buff *, int (*)(struct net *, struct sock *, struct sk_buff *)); - struct net_device * (*ipv6_dev_find)(struct net *, const struct in6_addr *, struct net_device *); +enum { + IFLA_EVENT_NONE = 0, + IFLA_EVENT_REBOOT = 1, + IFLA_EVENT_FEATURES = 2, + IFLA_EVENT_BONDING_FAILOVER = 3, + IFLA_EVENT_NOTIFY_PEERS = 4, + IFLA_EVENT_IGMP_RESEND = 5, + IFLA_EVENT_BONDING_OPTIONS = 6, }; -struct fib6_result { - struct fib6_nh *nh; - struct fib6_info *f6i; - u32 fib6_flags; - u8 fib6_type; - struct rt6_info *rt6; +enum { + IFLA_BRIDGE_FLAGS = 0, + IFLA_BRIDGE_MODE = 1, + IFLA_BRIDGE_VLAN_INFO = 2, + IFLA_BRIDGE_VLAN_TUNNEL_INFO = 3, + IFLA_BRIDGE_MRP = 4, + IFLA_BRIDGE_CFM = 5, + __IFLA_BRIDGE_MAX = 6, }; -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; +enum { + BR_MCAST_DIR_RX = 0, + BR_MCAST_DIR_TX = 1, + BR_MCAST_DIR_SIZE = 2, }; -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 rtattr_type_t { + RTA_UNSPEC = 0, + RTA_DST = 1, + RTA_SRC = 2, + RTA_IIF = 3, + RTA_OIF = 4, + RTA_GATEWAY = 5, + RTA_PRIORITY = 6, + RTA_PREFSRC = 7, + RTA_METRICS = 8, + RTA_MULTIPATH = 9, + RTA_PROTOINFO = 10, + RTA_FLOW = 11, + RTA_CACHEINFO = 12, + RTA_SESSION = 13, + RTA_MP_ALGO = 14, + RTA_TABLE = 15, + RTA_MARK = 16, + RTA_MFC_STATS = 17, + RTA_VIA = 18, + RTA_NEWDST = 19, + RTA_PREF = 20, + RTA_ENCAP_TYPE = 21, + RTA_ENCAP = 22, + RTA_EXPIRES = 23, + RTA_PAD = 24, + RTA_UID = 25, + RTA_TTL_PROPAGATE = 26, + RTA_IP_PROTO = 27, + RTA_SPORT = 28, + RTA_DPORT = 29, + RTA_NH_ID = 30, + __RTA_MAX = 31, +}; + +struct rta_cacheinfo { + __u32 rta_clntref; + __u32 rta_lastuse; + __s32 rta_expires; + __u32 rta_error; + __u32 rta_used; + __u32 rta_id; + __u32 rta_ts; + __u32 rta_tsage; +}; + +struct 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; +}; + +struct rtnl_af_ops { + struct list_head list; + int family; + int (*fill_link_af)(struct sk_buff *, const struct net_device *, u32); + size_t (*get_link_af_size)(const struct net_device *, u32); + int (*validate_link_af)(const struct net_device *, const struct nlattr *, struct netlink_ext_ack *); + int (*set_link_af)(struct net_device *, const struct nlattr *, struct netlink_ext_ack *); + int (*fill_stats_af)(struct sk_buff *, const struct net_device *); + size_t (*get_stats_af_size)(const struct net_device *); +}; + +struct rtnl_link { + rtnl_doit_func doit; + rtnl_dumpit_func dumpit; + struct module *owner; + unsigned int flags; + struct callback_head rcu; +}; + +enum { + IF_LINK_MODE_DEFAULT = 0, + IF_LINK_MODE_DORMANT = 1, + IF_LINK_MODE_TESTING = 2, +}; + +enum lw_bits { + LW_URGENT = 0, +}; + +struct seg6_pernet_data { + struct mutex lock; + struct in6_addr *tun_src; + struct rhashtable hmac_infos; }; enum { @@ -91441,11 +81699,6 @@ enum bpf_lwt_encap_mode { BPF_LWT_ENCAP_IP = 2, }; -enum { - BPF_SKB_TSTAMP_UNSPEC = 0, - BPF_SKB_TSTAMP_DELIVERY_MONO = 1, -}; - struct bpf_tunnel_key { __u32 tunnel_id; union { @@ -91627,6 +81880,246 @@ enum bpf_check_mtu_ret { BPF_MTU_CHK_RET_SEGS_TOOBIG = 2, }; +enum rt_scope_t { + RT_SCOPE_UNIVERSE = 0, + RT_SCOPE_SITE = 200, + RT_SCOPE_LINK = 253, + RT_SCOPE_HOST = 254, + RT_SCOPE_NOWHERE = 255, +}; + +enum rt_class_t { + RT_TABLE_UNSPEC = 0, + RT_TABLE_COMPAT = 252, + RT_TABLE_DEFAULT = 253, + RT_TABLE_MAIN = 254, + RT_TABLE_LOCAL = 255, + RT_TABLE_MAX = 4294967295, +}; + +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; + __u32 tw_mark; + volatile unsigned char tw_substate; + unsigned char tw_rcv_wscale; + __be16 tw_sport; + unsigned int tw_kill: 1; + unsigned int tw_transparent: 1; + unsigned int tw_flowlabel: 20; + unsigned int tw_pad: 2; + unsigned int tw_tos: 8; + u32 tw_txhash; + u32 tw_priority; + struct timer_list tw_timer; + struct inet_bind_bucket *tw_tb; +}; + +struct tcp_timewait_sock { + struct inet_timewait_sock tw_sk; + u32 tw_rcv_wnd; + u32 tw_ts_offset; + u32 tw_ts_recent; + u32 tw_last_oow_ack_time; + int tw_ts_recent_stamp; + u32 tw_tx_delay; + struct tcp_md5sig_key *tw_md5_key; +}; + +struct udp_sock { + struct inet_sock inet; + int pending; + unsigned int corkflag; + __u8 encap_type; + unsigned char no_check6_tx: 1; + unsigned char no_check6_rx: 1; + unsigned char encap_enabled: 1; + unsigned char gro_enabled: 1; + unsigned char accept_udp_l4: 1; + unsigned char accept_udp_fraglist: 1; + __u16 len; + __u16 gso_size; + __u16 pcslen; + __u16 pcrlen; + __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 *); + int (*gro_complete)(struct sock *, struct sk_buff *, int); + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 sk_buff_head reader_queue; + int forward_deficit; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 udp6_sock { + struct udp_sock udp; + struct ipv6_pinfo inet6; + 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 tcp6_sock { + struct tcp_sock tcp; + 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; + unsigned char nh_sel; + unsigned char type; + unsigned char scope; + u32 tclassid; + struct fib_nh_common *nhc; + struct fib_info *fi; + struct fib_table *table; + struct hlist_head *fa_head; +}; + enum { INET_ECN_NOT_ECT = 0, INET_ECN_ECT_1 = 1, @@ -91655,9 +82148,9 @@ struct tcp_skb_cb { __u32 ack_seq; union { struct { + __u32 in_flight: 30; __u32 is_app_limited: 1; - __u32 delivered_ce: 20; - __u32 unused: 11; + __u32 unused: 1; __u32 delivered; u64 first_tx_mstamp; u64 delivered_mstamp; @@ -91706,6 +82199,34 @@ struct xsk_queue; struct xdp_sock { struct sock sk; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 xsk_queue *rx; struct net_device *dev; struct xdp_umem *umem; @@ -91839,22 +82360,6 @@ struct tls12_crypto_info_chacha20_poly1305 { unsigned char rec_seq[8]; }; -struct tls12_crypto_info_sm4_gcm { - struct tls_crypto_info info; - unsigned char iv[8]; - unsigned char key[16]; - unsigned char salt[4]; - unsigned char rec_seq[8]; -}; - -struct tls12_crypto_info_sm4_ccm { - struct tls_crypto_info info; - unsigned char iv[8]; - unsigned char key[16]; - unsigned char salt[4]; - unsigned char rec_seq[8]; -}; - struct tls_sw_context_rx { struct crypto_aead *aead_recv; struct crypto_wait async_wait; @@ -91881,8 +82386,6 @@ union tls_crypto_context { struct tls12_crypto_info_aes_gcm_128 aes_gcm_128; struct tls12_crypto_info_aes_gcm_256 aes_gcm_256; struct tls12_crypto_info_chacha20_poly1305 chacha20_poly1305; - struct tls12_crypto_info_sm4_gcm sm4_gcm; - struct tls12_crypto_info_sm4_ccm sm4_ccm; }; }; @@ -92033,14 +82536,8 @@ typedef u64 (*btf_bpf_skb_change_head)(struct sk_buff *, u32, u64); typedef u64 (*btf_sk_skb_change_head)(struct sk_buff *, u32, u64); -typedef u64 (*btf_bpf_xdp_get_buff_len)(struct xdp_buff *); - typedef u64 (*btf_bpf_xdp_adjust_head)(struct xdp_buff *, int); -typedef u64 (*btf_bpf_xdp_load_bytes)(struct xdp_buff *, u32, void *, u32); - -typedef u64 (*btf_bpf_xdp_store_bytes)(struct xdp_buff *, u32, void *, u32); - typedef u64 (*btf_bpf_xdp_adjust_tail)(struct xdp_buff *, int); typedef u64 (*btf_bpf_xdp_adjust_meta)(struct xdp_buff *, int); @@ -92133,6 +82630,12 @@ typedef u64 (*btf_bpf_sk_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, typedef u64 (*btf_bpf_sk_lookup_udp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64); +typedef u64 (*btf_bpf_tc_skc_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64); + +typedef u64 (*btf_bpf_tc_sk_lookup_tcp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64); + +typedef u64 (*btf_bpf_tc_sk_lookup_udp)(struct sk_buff *, struct bpf_sock_tuple *, u32, u64, u64); + typedef u64 (*btf_bpf_sk_release)(struct sock *); typedef u64 (*btf_bpf_xdp_sk_lookup_udp)(struct xdp_buff *, struct bpf_sock_tuple *, u32, u32, u64); @@ -92165,8 +82668,6 @@ typedef u64 (*btf_bpf_sock_ops_store_hdr_opt)(struct bpf_sock_ops_kern *, const typedef u64 (*btf_bpf_sock_ops_reserve_hdr_opt)(struct bpf_sock_ops_kern *, u32, u64); -typedef u64 (*btf_bpf_skb_set_tstamp)(struct sk_buff *, u64, u32); - typedef u64 (*btf_sk_select_reuseport)(struct sk_reuseport_kern *, struct bpf_map *, void *, u32); typedef u64 (*btf_sk_reuseport_load_bytes)(const struct sk_reuseport_kern *, u32, void *, u32); @@ -92185,15 +82686,32 @@ typedef u64 (*btf_bpf_skc_to_tcp_request_sock)(struct sock *); typedef u64 (*btf_bpf_skc_to_udp6_sock)(struct sock *); -typedef u64 (*btf_bpf_skc_to_unix_sock)(struct sock *); - typedef u64 (*btf_bpf_sock_from_file)(struct file *); -struct bpf_cpu_map_entry; +enum { + INET_DIAG_REQ_NONE = 0, + INET_DIAG_REQ_BYTECODE = 1, + INET_DIAG_REQ_SK_BPF_STORAGES = 2, + INET_DIAG_REQ_PROTOCOL = 3, + __INET_DIAG_REQ_MAX = 4, +}; -struct bpf_dtab_netdev; +struct sock_diag_req { + __u8 sdiag_family; + __u8 sdiag_protocol; +}; -struct unix_sock; +struct sock_diag_handler { + __u8 family; + int (*dump)(struct sk_buff *, struct nlmsghdr *); + int (*get_info)(struct sk_buff *, struct sock *); + int (*destroy)(struct sk_buff *, struct nlmsghdr *); +}; + +struct broadcast_sk { + struct sock *sk; + struct work_struct work; +}; struct compat_ifconf { compat_int_t ifc_len; @@ -92206,12 +82724,6 @@ struct hwtstamp_config { int rx_filter; }; -enum hwtstamp_flags { - HWTSTAMP_FLAG_BONDED_PHC_INDEX = 1, - HWTSTAMP_FLAG_LAST = 1, - HWTSTAMP_FLAG_MASK = 1, -}; - enum hwtstamp_tx_types { HWTSTAMP_TX_OFF = 0, HWTSTAMP_TX_ON = 1, @@ -92273,6 +82785,114 @@ struct fib_notifier_net { struct atomic_notifier_head fib_chain; }; +struct xdp_frame_bulk { + int count; + void *xa; + void *q[16]; +}; + +struct xdp_attachment_info { + struct bpf_prog *prog; + u32 flags; +}; + +struct xdp_buff_xsk; + +struct xdp_desc; + +struct xsk_buff_pool { + struct device *dev; + struct net_device *netdev; + struct list_head xsk_tx_list; + spinlock_t xsk_tx_list_lock; + refcount_t users; + struct xdp_umem *umem; + struct work_struct work; + struct list_head free_list; + u32 heads_cnt; + u16 queue_id; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 xsk_queue *fq; + struct xsk_queue *cq; + dma_addr_t *dma_pages; + struct xdp_buff_xsk *heads; + struct xdp_desc *tx_descs; + u64 chunk_mask; + u64 addrs_cnt; + u32 free_list_cnt; + u32 dma_pages_cnt; + u32 free_heads_cnt; + u32 headroom; + u32 chunk_size; + u32 frame_len; + u8 cached_need_wakeup; + bool uses_need_wakeup; + bool dma_need_sync; + bool unaligned; + void *addrs; + spinlock_t cq_lock; + struct xdp_buff_xsk *free_heads[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 xdp_desc { + __u64 addr; + __u32 len; + __u32 options; +}; + +struct xdp_buff_xsk { + struct xdp_buff xdp; + dma_addr_t dma; + dma_addr_t frame_dma; + struct xsk_buff_pool *pool; + bool unaligned; + u64 orig_addr; + struct list_head free_list_node; +}; + +struct flow_match { + struct flow_dissector *dissector; + void *mask; + void *key; +}; + struct flow_match_meta { struct flow_dissector_key_meta *key; struct flow_dissector_key_meta *mask; @@ -92348,6 +82968,166 @@ struct flow_match_ct { struct flow_dissector_key_ct *mask; }; +enum flow_action_id { + FLOW_ACTION_ACCEPT = 0, + FLOW_ACTION_DROP = 1, + FLOW_ACTION_TRAP = 2, + FLOW_ACTION_GOTO = 3, + FLOW_ACTION_REDIRECT = 4, + FLOW_ACTION_MIRRED = 5, + FLOW_ACTION_REDIRECT_INGRESS = 6, + FLOW_ACTION_MIRRED_INGRESS = 7, + FLOW_ACTION_VLAN_PUSH = 8, + FLOW_ACTION_VLAN_POP = 9, + FLOW_ACTION_VLAN_MANGLE = 10, + FLOW_ACTION_TUNNEL_ENCAP = 11, + FLOW_ACTION_TUNNEL_DECAP = 12, + FLOW_ACTION_MANGLE = 13, + FLOW_ACTION_ADD = 14, + FLOW_ACTION_CSUM = 15, + FLOW_ACTION_MARK = 16, + FLOW_ACTION_PTYPE = 17, + FLOW_ACTION_PRIORITY = 18, + FLOW_ACTION_WAKE = 19, + FLOW_ACTION_QUEUE = 20, + FLOW_ACTION_SAMPLE = 21, + FLOW_ACTION_POLICE = 22, + FLOW_ACTION_CT = 23, + FLOW_ACTION_CT_METADATA = 24, + FLOW_ACTION_MPLS_PUSH = 25, + FLOW_ACTION_MPLS_POP = 26, + FLOW_ACTION_MPLS_MANGLE = 27, + FLOW_ACTION_GATE = 28, + FLOW_ACTION_PPPOE_PUSH = 29, + NUM_FLOW_ACTIONS = 30, +}; + +enum flow_action_mangle_base { + FLOW_ACT_MANGLE_UNSPEC = 0, + FLOW_ACT_MANGLE_HDR_TYPE_ETH = 1, + FLOW_ACT_MANGLE_HDR_TYPE_IP4 = 2, + FLOW_ACT_MANGLE_HDR_TYPE_IP6 = 3, + FLOW_ACT_MANGLE_HDR_TYPE_TCP = 4, + FLOW_ACT_MANGLE_HDR_TYPE_UDP = 5, +}; + +enum flow_action_hw_stats { + FLOW_ACTION_HW_STATS_IMMEDIATE = 1, + FLOW_ACTION_HW_STATS_DELAYED = 2, + FLOW_ACTION_HW_STATS_ANY = 3, + FLOW_ACTION_HW_STATS_DISABLED = 4, + FLOW_ACTION_HW_STATS_DONT_CARE = 7, +}; + +typedef void (*action_destr)(void *); + +struct flow_action_cookie { + u32 cookie_len; + u8 cookie[0]; +}; + +struct nf_flowtable; + +struct psample_group; + +struct action_gate_entry; + +struct flow_action_entry { + enum flow_action_id id; + enum flow_action_hw_stats hw_stats; + action_destr destructor; + void *destructor_priv; + union { + u32 chain_index; + struct net_device *dev; + struct { + u16 vid; + __be16 proto; + u8 prio; + } vlan; + struct { + enum flow_action_mangle_base htype; + u32 offset; + u32 mask; + u32 val; + } mangle; + struct ip_tunnel_info *tunnel; + u32 csum_flags; + u32 mark; + u16 ptype; + u32 priority; + struct { + u32 ctx; + u32 index; + u8 vf; + } queue; + struct { + struct psample_group *psample_group; + u32 rate; + u32 trunc_size; + bool truncate; + } sample; + struct { + u32 index; + u32 burst; + u64 rate_bytes_ps; + u64 burst_pkt; + u64 rate_pkt_ps; + u32 mtu; + } police; + struct { + int action; + u16 zone; + struct nf_flowtable *flow_table; + } ct; + struct { + long unsigned int cookie; + u32 mark; + u32 labels[4]; + bool orig_dir; + } ct_metadata; + struct { + u32 label; + __be16 proto; + u8 tc; + u8 bos; + u8 ttl; + } mpls_push; + struct { + __be16 proto; + } mpls_pop; + struct { + u32 label; + u8 tc; + u8 bos; + u8 ttl; + } mpls_mangle; + struct { + u32 index; + s32 prio; + u64 basetime; + u64 cycletime; + u64 cycletimeext; + u32 num_entries; + struct action_gate_entry *entries; + } gate; + struct { + u16 sid; + } pppoe; + }; + struct flow_action_cookie *cookie; +}; + +struct flow_action { + unsigned int num_entries; + struct flow_action_entry entries[0]; +}; + +struct flow_rule { + struct flow_match match; + struct flow_action action; +}; + enum flow_block_command { FLOW_BLOCK_BIND = 0, FLOW_BLOCK_UNBIND = 1, @@ -92398,21 +83178,6 @@ struct flow_block_cb { unsigned int refcnt; }; -enum offload_act_command { - FLOW_ACT_REPLACE = 0, - FLOW_ACT_DESTROY = 1, - FLOW_ACT_STATS = 2, -}; - -struct flow_offload_action { - struct netlink_ext_ack *extack; - enum offload_act_command command; - enum flow_action_id id; - u32 index; - struct flow_stats stats; - struct flow_action action; -}; - typedef int flow_indr_block_bind_cb_t(struct net_device *, struct Qdisc *, void *, enum tc_setup_type, void *, void *, void (*)(struct flow_block_cb *)); struct flow_indr_dev { @@ -92434,182 +83199,6 @@ struct flow_indir_dev_info { struct list_head *cb_list; }; -struct xdp_frame_bulk { - int count; - void *xa; - void *q[16]; -}; - -struct xdp_attachment_info { - struct bpf_prog *prog; - u32 flags; -}; - -struct xdp_buff_xsk; - -struct xdp_desc; - -struct xsk_buff_pool { - struct device *dev; - struct net_device *netdev; - struct list_head xsk_tx_list; - spinlock_t xsk_tx_list_lock; - refcount_t users; - struct xdp_umem *umem; - struct work_struct work; - struct list_head free_list; - u32 heads_cnt; - u16 queue_id; - long: 16; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - struct xsk_queue *fq; - struct xsk_queue *cq; - dma_addr_t *dma_pages; - struct xdp_buff_xsk *heads; - struct xdp_desc *tx_descs; - u64 chunk_mask; - u64 addrs_cnt; - u32 free_list_cnt; - u32 dma_pages_cnt; - u32 free_heads_cnt; - u32 headroom; - u32 chunk_size; - u32 chunk_shift; - u32 frame_len; - u8 cached_need_wakeup; - bool uses_need_wakeup; - bool dma_need_sync; - bool unaligned; - void *addrs; - spinlock_t cq_lock; - struct xdp_buff_xsk *free_heads[0]; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 xdp_desc { - __u64 addr; - __u32 len; - __u32 options; -}; - -struct xdp_buff_xsk { - struct xdp_buff xdp; - dma_addr_t dma; - dma_addr_t frame_dma; - struct xsk_buff_pool *pool; - u64 orig_addr; - struct list_head free_list_node; -}; - -struct tc_skb_ext { - __u32 chain; - __u16 mru; - __u16 zone; - u8 post_ct: 1; - u8 post_ct_snat: 1; - u8 post_ct_dnat: 1; -}; - -enum gro_result { - GRO_MERGED = 0, - GRO_MERGED_FREE = 1, - GRO_HELD = 2, - GRO_NORMAL = 3, - GRO_CONSUMED = 4, -}; - -typedef enum gro_result gro_result_t; - -struct offload_callbacks { - struct sk_buff * (*gso_segment)(struct sk_buff *, netdev_features_t); - struct sk_buff * (*gro_receive)(struct list_head *, struct sk_buff *); - int (*gro_complete)(struct sk_buff *, int); -}; - -struct packet_offload { - __be16 type; - u16 priority; - struct offload_callbacks callbacks; - struct list_head list; -}; - -struct napi_gro_cb { - void *frag0; - unsigned int frag0_len; - int data_offset; - u16 flush; - u16 flush_id; - u16 count; - u16 proto; - long unsigned int age; - union { - struct { - u16 gro_remcsum_start; - u8 same_flow: 1; - u8 encap_mark: 1; - u8 csum_valid: 1; - u8 csum_cnt: 3; - u8 free: 2; - u8 is_ipv6: 1; - u8 is_fou: 1; - u8 is_atomic: 1; - u8 recursion_counter: 4; - u8 is_flist: 1; - }; - struct { - u16 gro_remcsum_start; - u8 same_flow: 1; - u8 encap_mark: 1; - u8 csum_valid: 1; - u8 csum_cnt: 3; - u8 free: 2; - u8 is_ipv6: 1; - u8 is_fou: 1; - u8 is_atomic: 1; - u8 recursion_counter: 4; - u8 is_flist: 1; - } zeroed; - }; - __wsum csum; - struct sk_buff *last; -}; - struct rx_queue_attribute { struct attribute attr; ssize_t (*show)(struct netdev_rx_queue *, char *); @@ -92648,7 +83237,6 @@ struct inet6_ifaddr { struct inet6_ifaddr *ifpub; int regen_count; bool tokenized; - u8 ifa_proto; struct callback_head rcu; struct in6_addr peer_addr; }; @@ -92705,186 +83293,6 @@ struct fib_rule_notifier_info { struct fib_rule *rule; }; -struct dm_hw_stat_delta { - long unsigned int last_rx; - long unsigned int last_drop_val; - struct callback_head rcu; -}; - -struct net_dm_drop_point { - __u8 pc[8]; - __u32 count; -}; - -struct net_dm_alert_msg { - __u32 entries; - struct net_dm_drop_point points[0]; -}; - -enum { - NET_DM_CMD_UNSPEC = 0, - NET_DM_CMD_ALERT = 1, - NET_DM_CMD_CONFIG = 2, - NET_DM_CMD_START = 3, - NET_DM_CMD_STOP = 4, - NET_DM_CMD_PACKET_ALERT = 5, - NET_DM_CMD_CONFIG_GET = 6, - NET_DM_CMD_CONFIG_NEW = 7, - NET_DM_CMD_STATS_GET = 8, - NET_DM_CMD_STATS_NEW = 9, - _NET_DM_CMD_MAX = 10, -}; - -enum net_dm_attr { - NET_DM_ATTR_UNSPEC = 0, - NET_DM_ATTR_ALERT_MODE = 1, - NET_DM_ATTR_PC = 2, - NET_DM_ATTR_SYMBOL = 3, - NET_DM_ATTR_IN_PORT = 4, - NET_DM_ATTR_TIMESTAMP = 5, - NET_DM_ATTR_PROTO = 6, - NET_DM_ATTR_PAYLOAD = 7, - NET_DM_ATTR_PAD = 8, - NET_DM_ATTR_TRUNC_LEN = 9, - NET_DM_ATTR_ORIG_LEN = 10, - NET_DM_ATTR_QUEUE_LEN = 11, - NET_DM_ATTR_STATS = 12, - NET_DM_ATTR_HW_STATS = 13, - NET_DM_ATTR_ORIGIN = 14, - NET_DM_ATTR_HW_TRAP_GROUP_NAME = 15, - NET_DM_ATTR_HW_TRAP_NAME = 16, - NET_DM_ATTR_HW_ENTRIES = 17, - NET_DM_ATTR_HW_ENTRY = 18, - NET_DM_ATTR_HW_TRAP_COUNT = 19, - NET_DM_ATTR_SW_DROPS = 20, - NET_DM_ATTR_HW_DROPS = 21, - NET_DM_ATTR_FLOW_ACTION_COOKIE = 22, - NET_DM_ATTR_REASON = 23, - __NET_DM_ATTR_MAX = 24, - NET_DM_ATTR_MAX = 23, -}; - -enum net_dm_alert_mode { - NET_DM_ALERT_MODE_SUMMARY = 0, - NET_DM_ALERT_MODE_PACKET = 1, -}; - -enum { - NET_DM_ATTR_PORT_NETDEV_IFINDEX = 0, - NET_DM_ATTR_PORT_NETDEV_NAME = 1, - __NET_DM_ATTR_PORT_MAX = 2, - NET_DM_ATTR_PORT_MAX = 1, -}; - -enum { - NET_DM_ATTR_STATS_DROPPED = 0, - __NET_DM_ATTR_STATS_MAX = 1, - NET_DM_ATTR_STATS_MAX = 0, -}; - -enum net_dm_origin { - NET_DM_ORIGIN_SW = 0, - NET_DM_ORIGIN_HW = 1, -}; - -enum devlink_trap_type { - DEVLINK_TRAP_TYPE_DROP = 0, - DEVLINK_TRAP_TYPE_EXCEPTION = 1, - DEVLINK_TRAP_TYPE_CONTROL = 2, -}; - -struct devlink_dev_stats { - u32 reload_stats[6]; - u32 remote_reload_stats[6]; -}; - -struct devlink_dpipe_headers; - -struct devlink_ops; - -struct devlink { - u32 index; - struct 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; - struct list_head param_list; - struct list_head region_list; - struct list_head reporter_list; - struct mutex reporters_lock; - struct devlink_dpipe_headers *dpipe_headers; - struct list_head trap_list; - struct list_head trap_group_list; - struct list_head trap_policer_list; - const struct devlink_ops *ops; - u64 features; - struct xarray snapshot_ids; - struct devlink_dev_stats stats; - struct device *dev; - possible_net_t _net; - struct mutex lock; - u8 reload_failed: 1; - refcount_t refcount; - struct completion comp; - long: 64; - long: 64; - long: 64; - char priv[0]; -}; - -struct devlink_trap_metadata { - const char *trap_name; - const char *trap_group_name; - struct net_device *input_dev; - netdevice_tracker dev_tracker; - const struct flow_action_cookie *fa_cookie; - enum devlink_trap_type trap_type; -}; - -struct net_dm_stats { - u64 dropped; - struct u64_stats_sync syncp; -}; - -struct net_dm_hw_entry { - char trap_name[40]; - u32 count; -}; - -struct net_dm_hw_entries { - u32 num_entries; - struct net_dm_hw_entry entries[0]; -}; - -struct per_cpu_dm_data { - spinlock_t lock; - union { - struct sk_buff *skb; - struct net_dm_hw_entries *hw_entries; - }; - struct sk_buff_head drop_queue; - struct work_struct dm_alert_work; - struct timer_list send_timer; - struct net_dm_stats stats; -}; - -struct net_dm_alert_ops { - 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 *); - void (*hw_trap_probe)(void *, const struct devlink *, struct sk_buff *, const struct devlink_trap_metadata *); -}; - -struct net_dm_skb_cb { - union { - struct devlink_trap_metadata *hw_metadata; - void *pc; - }; - enum skb_drop_reason reason; -}; - struct trace_event_raw_kfree_skb { struct trace_entry ent; void *skbaddr; @@ -93041,6 +83449,8 @@ typedef void (*btf_trace_netif_receive_skb_list_entry)(void *, const struct sk_b typedef void (*btf_trace_netif_rx_entry)(void *, const struct sk_buff *); +typedef void (*btf_trace_netif_rx_ni_entry)(void *, const struct sk_buff *); + typedef void (*btf_trace_napi_gro_frags_exit)(void *, int); typedef void (*btf_trace_napi_gro_receive_exit)(void *, int); @@ -93049,6 +83459,8 @@ typedef void (*btf_trace_netif_receive_skb_exit)(void *, int); typedef void (*btf_trace_netif_rx_exit)(void *, int); +typedef void (*btf_trace_netif_rx_ni_exit)(void *, int); + typedef void (*btf_trace_netif_receive_skb_list_exit)(void *, int); struct trace_event_raw_napi_poll { @@ -93085,7 +83497,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; @@ -93456,7 +83868,6 @@ struct net_bridge_vlan_group; struct net_bridge_port { struct net_bridge *br; struct net_device *dev; - netdevice_tracker dev_tracker; struct list_head list; long unsigned int flags; struct net_bridge_vlan_group *vlgrp; @@ -93493,8 +83904,6 @@ struct net_bridge_port { struct bridge_stp_xstats stp_xstats; }; -struct metadata_dst; - struct br_tunnel_info { __be64 tunnel_id; struct metadata_dst *tunnel_dst; @@ -93548,7 +83957,6 @@ struct net_bridge_vlan { struct net_bridge_mcast br_mcast_ctx; struct net_bridge_mcast_port port_mcast_ctx; }; - u16 msti; struct list_head vlist; struct callback_head rcu; }; @@ -93889,46 +84297,137 @@ typedef void (*btf_trace_neigh_event_send_dead)(void *, struct neighbour *, int) typedef void (*btf_trace_neigh_cleanup_and_release)(void *, struct neighbour *, int); -enum 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 net_dm_drop_point { + __u8 pc[8]; + __u32 count; }; -struct net_packet_attrs { - const unsigned char *src; - const unsigned char *dst; - u32 ip_src; - u32 ip_dst; - bool tcp; - u16 sport; - u16 dport; - int timeout; - int size; - int max_size; - u8 id; - u16 queue_mapping; +struct net_dm_alert_msg { + __u32 entries; + struct net_dm_drop_point points[0]; }; -struct net_test_priv { - struct net_packet_attrs *packet; - struct packet_type pt; - struct completion comp; - int double_vlan; - int vlan_id; - int ok; +enum { + NET_DM_CMD_UNSPEC = 0, + NET_DM_CMD_ALERT = 1, + NET_DM_CMD_CONFIG = 2, + NET_DM_CMD_START = 3, + NET_DM_CMD_STOP = 4, + NET_DM_CMD_PACKET_ALERT = 5, + NET_DM_CMD_CONFIG_GET = 6, + NET_DM_CMD_CONFIG_NEW = 7, + NET_DM_CMD_STATS_GET = 8, + NET_DM_CMD_STATS_NEW = 9, + _NET_DM_CMD_MAX = 10, }; -struct netsfhdr { - __be32 version; - __be64 magic; - u8 id; -} __attribute__((packed)); +enum net_dm_attr { + NET_DM_ATTR_UNSPEC = 0, + NET_DM_ATTR_ALERT_MODE = 1, + NET_DM_ATTR_PC = 2, + NET_DM_ATTR_SYMBOL = 3, + NET_DM_ATTR_IN_PORT = 4, + NET_DM_ATTR_TIMESTAMP = 5, + NET_DM_ATTR_PROTO = 6, + NET_DM_ATTR_PAYLOAD = 7, + NET_DM_ATTR_PAD = 8, + NET_DM_ATTR_TRUNC_LEN = 9, + NET_DM_ATTR_ORIG_LEN = 10, + NET_DM_ATTR_QUEUE_LEN = 11, + NET_DM_ATTR_STATS = 12, + NET_DM_ATTR_HW_STATS = 13, + NET_DM_ATTR_ORIGIN = 14, + NET_DM_ATTR_HW_TRAP_GROUP_NAME = 15, + NET_DM_ATTR_HW_TRAP_NAME = 16, + NET_DM_ATTR_HW_ENTRIES = 17, + NET_DM_ATTR_HW_ENTRY = 18, + NET_DM_ATTR_HW_TRAP_COUNT = 19, + NET_DM_ATTR_SW_DROPS = 20, + NET_DM_ATTR_HW_DROPS = 21, + NET_DM_ATTR_FLOW_ACTION_COOKIE = 22, + __NET_DM_ATTR_MAX = 23, + NET_DM_ATTR_MAX = 22, +}; -struct net_test { - char name[32]; - int (*fn)(struct net_device *); +enum net_dm_alert_mode { + NET_DM_ALERT_MODE_SUMMARY = 0, + NET_DM_ALERT_MODE_PACKET = 1, +}; + +enum { + NET_DM_ATTR_PORT_NETDEV_IFINDEX = 0, + NET_DM_ATTR_PORT_NETDEV_NAME = 1, + __NET_DM_ATTR_PORT_MAX = 2, + NET_DM_ATTR_PORT_MAX = 1, +}; + +enum { + NET_DM_ATTR_STATS_DROPPED = 0, + __NET_DM_ATTR_STATS_MAX = 1, + NET_DM_ATTR_STATS_MAX = 0, +}; + +enum net_dm_origin { + NET_DM_ORIGIN_SW = 0, + NET_DM_ORIGIN_HW = 1, +}; + +struct devlink_trap_metadata { + const char *trap_name; + const char *trap_group_name; + struct net_device *input_dev; + const struct flow_action_cookie *fa_cookie; + enum devlink_trap_type trap_type; +}; + +struct net_dm_stats { + u64 dropped; + struct u64_stats_sync syncp; +}; + +struct net_dm_hw_entry { + char trap_name[40]; + u32 count; +}; + +struct net_dm_hw_entries { + u32 num_entries; + struct net_dm_hw_entry entries[0]; +}; + +struct per_cpu_dm_data { + spinlock_t lock; + union { + struct sk_buff *skb; + struct net_dm_hw_entries *hw_entries; + }; + struct sk_buff_head drop_queue; + struct work_struct dm_alert_work; + struct timer_list send_timer; + struct net_dm_stats stats; +}; + +struct dm_hw_stat_delta { + struct net_device *dev; + long unsigned int last_rx; + struct list_head list; + struct callback_head rcu; + long unsigned int last_drop_val; +}; + +struct net_dm_alert_ops { + 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 *); + void (*hw_trap_probe)(void *, const struct devlink *, struct sk_buff *, const struct devlink_trap_metadata *); +}; + +struct net_dm_skb_cb { + union { + struct devlink_trap_metadata *hw_metadata; + void *pc; + }; }; struct update_classid_context { @@ -93998,22 +84497,6 @@ struct dst_cache_pcpu { }; }; -struct gro_cell; - -struct gro_cells { - struct gro_cell *cells; -}; - -struct gro_cell { - struct sk_buff_head napi_skbs; - struct napi_struct napi; -}; - -struct percpu_free_defer { - struct callback_head rcu; - void *ptr; -}; - struct genl_dumpit_info { const struct genl_family *family; struct genl_ops op; @@ -94108,9 +84591,12 @@ enum devlink_eswitch_mode { DEVLINK_ESWITCH_MODE_SWITCHDEV = 1, }; -enum devlink_eswitch_encap_mode { - DEVLINK_ESWITCH_ENCAP_MODE_NONE = 0, - DEVLINK_ESWITCH_ENCAP_MODE_BASIC = 1, +enum devlink_param_cmode { + DEVLINK_PARAM_CMODE_RUNTIME = 0, + DEVLINK_PARAM_CMODE_DRIVERINIT = 1, + DEVLINK_PARAM_CMODE_PERMANENT = 2, + __DEVLINK_PARAM_CMODE_MAX = 3, + DEVLINK_PARAM_CMODE_MAX = 2, }; enum { @@ -94128,32 +84614,11 @@ enum { DEVLINK_FLASH_OVERWRITE_MAX_BIT = 1, }; -enum devlink_trap_action { - DEVLINK_TRAP_ACTION_DROP = 0, - DEVLINK_TRAP_ACTION_TRAP = 1, - DEVLINK_TRAP_ACTION_MIRROR = 2, -}; - enum { DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT = 0, DEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE = 1, }; -enum devlink_reload_action { - DEVLINK_RELOAD_ACTION_UNSPEC = 0, - DEVLINK_RELOAD_ACTION_DRIVER_REINIT = 1, - DEVLINK_RELOAD_ACTION_FW_ACTIVATE = 2, - __DEVLINK_RELOAD_ACTION_MAX = 3, - DEVLINK_RELOAD_ACTION_MAX = 2, -}; - -enum devlink_reload_limit { - DEVLINK_RELOAD_LIMIT_UNSPEC = 0, - DEVLINK_RELOAD_LIMIT_NO_RESET = 1, - __DEVLINK_RELOAD_LIMIT_MAX = 2, - DEVLINK_RELOAD_LIMIT_MAX = 1, -}; - enum devlink_attr { DEVLINK_ATTR_UNSPEC = 0, DEVLINK_ATTR_BUS_NAME = 1, @@ -94325,14 +84790,8 @@ enum devlink_attr { DEVLINK_ATTR_RATE_TX_MAX = 167, DEVLINK_ATTR_RATE_NODE_NAME = 168, DEVLINK_ATTR_RATE_PARENT_NODE_NAME = 169, - DEVLINK_ATTR_REGION_MAX_SNAPSHOTS = 170, - __DEVLINK_ATTR_MAX = 171, - DEVLINK_ATTR_MAX = 170, -}; - -enum devlink_dpipe_field_mapping_type { - DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0, - DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 1, + __DEVLINK_ATTR_MAX = 170, + DEVLINK_ATTR_MAX = 169, }; enum devlink_dpipe_match_type { @@ -94374,42 +84833,6 @@ enum devlink_port_function_attr { DEVLINK_PORT_FUNCTION_ATTR_MAX = 3, }; -enum devlink_port_fn_state { - DEVLINK_PORT_FN_STATE_INACTIVE = 0, - DEVLINK_PORT_FN_STATE_ACTIVE = 1, -}; - -enum devlink_port_fn_opstate { - DEVLINK_PORT_FN_OPSTATE_DETACHED = 0, - DEVLINK_PORT_FN_OPSTATE_ATTACHED = 1, -}; - -struct devlink_port_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_dpipe_field { - const char *name; - unsigned int id; - unsigned int bitwidth; - enum devlink_dpipe_field_mapping_type mapping_type; -}; - -struct devlink_dpipe_header { - const char *name; - unsigned int id; - struct devlink_dpipe_field *fields; - unsigned int fields_count; - bool global; -}; - struct devlink_dpipe_match { enum devlink_dpipe_match_type type; unsigned int header_index; @@ -94477,11 +84900,6 @@ struct devlink_dpipe_table_ops { u64 (*size_get)(void *); }; -struct devlink_dpipe_headers { - struct devlink_dpipe_header **headers; - unsigned int headers_count; -}; - struct devlink_resource_size_params { u64 size_min; u64 size_max; @@ -94491,6 +84909,20 @@ struct devlink_resource_size_params { typedef u64 devlink_resource_occ_get_t(void *); +struct devlink_resource { + const char *name; + u64 id; + u64 size; + u64 size_new; + bool size_valid; + struct devlink_resource *parent; + struct devlink_resource_size_params size_params; + struct list_head list; + struct list_head resource_list; + devlink_resource_occ_get_t *occ_get; + void *occ_get_priv; +}; + enum devlink_param_type { DEVLINK_PARAM_TYPE_U8 = 0, DEVLINK_PARAM_TYPE_U16 = 1, @@ -94499,6 +84931,19 @@ enum devlink_param_type { DEVLINK_PARAM_TYPE_BOOL = 4, }; +union devlink_param_value { + u8 vu8; + u16 vu16; + u32 vu32; + char vstr[32]; + bool vbool; +}; + +struct devlink_param_gset_ctx { + union devlink_param_value val; + enum devlink_param_cmode cmode; +}; + struct devlink_flash_notify { const char *status_msg; const char *component; @@ -94523,6 +84968,7 @@ struct devlink_param_item { const struct devlink_param *param; union devlink_param_value driverinit_value; bool driverinit_value_valid; + bool published; }; enum devlink_param_generic_id { @@ -94540,17 +84986,8 @@ enum devlink_param_generic_id { DEVLINK_PARAM_GENERIC_ID_ENABLE_ETH = 11, DEVLINK_PARAM_GENERIC_ID_ENABLE_RDMA = 12, DEVLINK_PARAM_GENERIC_ID_ENABLE_VNET = 13, - DEVLINK_PARAM_GENERIC_ID_ENABLE_IWARP = 14, - DEVLINK_PARAM_GENERIC_ID_IO_EQ_SIZE = 15, - DEVLINK_PARAM_GENERIC_ID_EVENT_EQ_SIZE = 16, - __DEVLINK_PARAM_GENERIC_ID_MAX = 17, - DEVLINK_PARAM_GENERIC_ID_MAX = 16, -}; - -struct devlink_flash_update_params { - const struct firmware *fw; - const char *component; - u32 overwrite_mask; + __DEVLINK_PARAM_GENERIC_ID_MAX = 14, + DEVLINK_PARAM_GENERIC_ID_MAX = 13, }; struct devlink_region_ops { @@ -94609,33 +85046,6 @@ struct devlink_fmsg { bool putting_binary; }; -struct devlink_trap_policer { - u32 id; - u64 init_rate; - u64 init_burst; - u64 max_rate; - u64 min_rate; - u64 max_burst; - u64 min_burst; -}; - -struct devlink_trap_group { - const char *name; - u16 id; - bool generic; - u32 init_policer_id; -}; - -struct devlink_trap { - enum devlink_trap_type type; - enum devlink_trap_action init_action; - bool generic; - u16 id; - const char *name; - u16 init_group_id; - u32 metadata_cap; -}; - enum devlink_trap_generic_id { DEVLINK_TRAP_GENERIC_ID_SMAC_MC = 0, DEVLINK_TRAP_GENERIC_ID_VLAN_TAG_MISMATCH = 1, @@ -94764,66 +85174,6 @@ enum devlink_trap_group_generic_id { DEVLINK_TRAP_GROUP_GENERIC_ID_MAX = 25, }; -enum { - DEVLINK_F_RELOAD = 1, -}; - -struct devlink_info_req; - -struct devlink_ops { - u32 supported_flash_update_params; - long unsigned int reload_actions; - long unsigned int reload_limits; - int (*reload_down)(struct devlink *, bool, enum devlink_reload_action, enum devlink_reload_limit, struct netlink_ext_ack *); - int (*reload_up)(struct devlink *, enum devlink_reload_action, enum devlink_reload_limit, u32 *, struct netlink_ext_ack *); - int (*port_type_set)(struct devlink_port *, enum devlink_port_type); - int (*port_split)(struct devlink *, struct devlink_port *, unsigned int, struct netlink_ext_ack *); - int (*port_unsplit)(struct devlink *, struct devlink_port *, struct netlink_ext_ack *); - int (*sb_pool_get)(struct devlink *, unsigned int, u16, struct devlink_sb_pool_info *); - int (*sb_pool_set)(struct devlink *, unsigned int, u16, u32, enum devlink_sb_threshold_type, struct netlink_ext_ack *); - int (*sb_port_pool_get)(struct devlink_port *, unsigned int, u16, u32 *); - int (*sb_port_pool_set)(struct devlink_port *, unsigned int, u16, u32, struct netlink_ext_ack *); - int (*sb_tc_pool_bind_get)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u16 *, u32 *); - int (*sb_tc_pool_bind_set)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u16, u32, struct netlink_ext_ack *); - int (*sb_occ_snapshot)(struct devlink *, unsigned int); - int (*sb_occ_max_clear)(struct devlink *, unsigned int); - int (*sb_occ_port_pool_get)(struct devlink_port *, unsigned int, u16, u32 *, u32 *); - int (*sb_occ_tc_port_bind_get)(struct devlink_port *, unsigned int, u16, enum devlink_sb_pool_type, u32 *, u32 *); - int (*eswitch_mode_get)(struct devlink *, u16 *); - int (*eswitch_mode_set)(struct devlink *, u16, struct netlink_ext_ack *); - int (*eswitch_inline_mode_get)(struct devlink *, u8 *); - int (*eswitch_inline_mode_set)(struct devlink *, u8, struct netlink_ext_ack *); - int (*eswitch_encap_mode_get)(struct devlink *, enum devlink_eswitch_encap_mode *); - int (*eswitch_encap_mode_set)(struct devlink *, enum devlink_eswitch_encap_mode, struct netlink_ext_ack *); - int (*info_get)(struct devlink *, struct devlink_info_req *, struct netlink_ext_ack *); - int (*flash_update)(struct devlink *, struct devlink_flash_update_params *, struct netlink_ext_ack *); - int (*trap_init)(struct devlink *, const struct devlink_trap *, void *); - void (*trap_fini)(struct devlink *, const struct devlink_trap *, void *); - int (*trap_action_set)(struct devlink *, const struct devlink_trap *, enum devlink_trap_action, struct netlink_ext_ack *); - int (*trap_group_init)(struct devlink *, const struct devlink_trap_group *); - int (*trap_group_set)(struct devlink *, const struct devlink_trap_group *, const struct devlink_trap_policer *, struct netlink_ext_ack *); - int (*trap_group_action_set)(struct devlink *, const struct devlink_trap_group *, enum devlink_trap_action, struct netlink_ext_ack *); - int (*trap_drop_counter_get)(struct devlink *, const struct devlink_trap *, u64 *); - int (*trap_policer_init)(struct devlink *, const struct devlink_trap_policer *); - void (*trap_policer_fini)(struct devlink *, const struct devlink_trap_policer *); - int (*trap_policer_set)(struct devlink *, const struct devlink_trap_policer *, u64, u64, struct netlink_ext_ack *); - int (*trap_policer_counter_get)(struct devlink *, const struct devlink_trap_policer *, u64 *); - int (*port_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_info_req { struct sk_buff *msg; }; @@ -94949,20 +85299,6 @@ typedef void (*btf_trace_devlink_health_reporter_state_update)(void *, const str typedef void (*btf_trace_devlink_trap_report)(void *, const struct devlink *, struct sk_buff *, const struct devlink_trap_metadata *); -struct devlink_resource { - const char *name; - u64 id; - u64 size; - u64 size_new; - bool size_valid; - struct devlink_resource *parent; - struct devlink_resource_size_params size_params; - struct list_head list; - struct list_head resource_list; - devlink_resource_occ_get_t *occ_get; - void *occ_get_priv; -}; - struct devlink_sb { struct list_head list; unsigned int index; @@ -95040,6 +85376,17 @@ struct devlink_trap_item { void *priv; }; +struct gro_cell; + +struct gro_cells { + struct gro_cell *cells; +}; + +struct gro_cell { + struct sk_buff_head napi_skbs; + struct napi_struct napi; +}; + enum __sk_action { __SK_DROP = 0, __SK_PASS = 1, @@ -95062,7 +85409,6 @@ struct bpf_stab { struct sock **sks; struct sk_psock_progs progs; raw_spinlock_t lock; - long: 32; long: 64; long: 64; long: 64; @@ -95138,7 +85484,6 @@ struct bpf_shtab { u32 elem_size; struct sk_psock_progs progs; atomic_t count; - long: 32; long: 64; long: 64; long: 64; @@ -95198,11 +85543,11 @@ enum { __SK_DIAG_BPF_STORAGE_MAX = 4, }; -typedef u64 (*btf_bpf_sk_storage_get)(struct bpf_map *, struct sock *, void *, u64, gfp_t); +typedef u64 (*btf_bpf_sk_storage_get)(struct bpf_map *, struct sock *, void *, u64); typedef u64 (*btf_bpf_sk_storage_delete)(struct bpf_map *, struct sock *); -typedef u64 (*btf_bpf_sk_storage_get_tracing)(struct bpf_map *, struct sock *, void *, u64, gfp_t); +typedef u64 (*btf_bpf_sk_storage_get_tracing)(struct bpf_map *, struct sock *, void *, u64); typedef u64 (*btf_bpf_sk_storage_delete_tracing)(struct bpf_map *, struct sock *); @@ -95253,36 +85598,6 @@ struct fcllc { __be16 ethertype; }; -struct tc_qopt_offload_stats { - struct gnet_stats_basic_sync *bstats; - struct gnet_stats_queue *qstats; -}; - -enum tc_mq_command { - TC_MQ_CREATE = 0, - TC_MQ_DESTROY = 1, - TC_MQ_STATS = 2, - TC_MQ_GRAFT = 3, -}; - -struct tc_mq_opt_offload_graft_params { - long unsigned int queue; - u32 child_handle; -}; - -struct tc_mq_qopt_offload { - enum tc_mq_command command; - u32 handle; - union { - struct tc_qopt_offload_stats stats; - struct tc_mq_opt_offload_graft_params graft_params; - }; -}; - -struct mq_sched { - struct Qdisc **qdiscs; -}; - enum macvlan_mode { MACVLAN_MODE_PRIVATE = 1, MACVLAN_MODE_VEPA = 2, @@ -95305,26 +85620,6 @@ struct tc_prio_qopt { __u8 priomap[16]; }; -enum { - TCA_UNSPEC = 0, - TCA_KIND = 1, - TCA_OPTIONS = 2, - TCA_STATS = 3, - TCA_XSTATS = 4, - TCA_RATE = 5, - TCA_FCNT = 6, - TCA_STATS2 = 7, - TCA_STAB = 8, - TCA_PAD = 9, - TCA_DUMP_INVISIBLE = 10, - TCA_CHAIN = 11, - TCA_HW_OFFLOAD = 12, - TCA_INGRESS_BLOCK = 13, - TCA_EGRESS_BLOCK = 14, - TCA_DUMP_FLAGS = 15, - __TCA_MAX = 16, -}; - struct vlan_pcpu_stats { u64 rx_packets; u64 rx_bytes; @@ -95336,8 +85631,6 @@ struct vlan_pcpu_stats { u32 tx_dropped; }; -struct netpoll; - struct skb_array { struct ptr_ring ring; }; @@ -95350,7 +85643,6 @@ struct macvlan_dev { struct hlist_node hlist; struct macvlan_port *port; struct net_device *lowerdev; - netdevice_tracker dev_tracker; void *accel_priv; struct vlan_pcpu_stats *pcpu_stats; long unsigned int mc_filter[4]; @@ -95387,6 +85679,36 @@ struct pfifo_fast_priv { struct skb_array q[3]; }; +struct tc_qopt_offload_stats { + struct gnet_stats_basic_packed *bstats; + struct gnet_stats_queue *qstats; +}; + +enum tc_mq_command { + TC_MQ_CREATE = 0, + TC_MQ_DESTROY = 1, + TC_MQ_STATS = 2, + TC_MQ_GRAFT = 3, +}; + +struct tc_mq_opt_offload_graft_params { + long unsigned int queue; + u32 child_handle; +}; + +struct tc_mq_qopt_offload { + enum tc_mq_command command; + u32 handle; + union { + struct tc_qopt_offload_stats stats; + struct tc_mq_opt_offload_graft_params graft_params; + }; +}; + +struct mq_sched { + struct Qdisc **qdiscs; +}; + struct sch_frag_data { long unsigned int dst; struct qdisc_skb_cb cb; @@ -95398,6 +85720,80 @@ struct sch_frag_data { int (*xmit)(struct sk_buff *); }; +enum tc_link_layer { + TC_LINKLAYER_UNAWARE = 0, + TC_LINKLAYER_ETHERNET = 1, + TC_LINKLAYER_ATM = 2, +}; + +enum { + TCA_STAB_UNSPEC = 0, + TCA_STAB_BASE = 1, + TCA_STAB_DATA = 2, + __TCA_STAB_MAX = 3, +}; + +struct qdisc_rate_table { + struct tc_ratespec rate; + u32 data[256]; + struct qdisc_rate_table *next; + int refcnt; +}; + +struct Qdisc_class_common { + u32 classid; + struct hlist_node hnode; +}; + +struct Qdisc_class_hash { + struct hlist_head *hash; + unsigned int hashsize; + unsigned int hashmask; + unsigned int hashelems; +}; + +struct qdisc_watchdog { + u64 last_expires; + struct hrtimer timer; + struct Qdisc *qdisc; +}; + +enum tc_root_command { + TC_ROOT_GRAFT = 0, +}; + +struct tc_root_qopt_offload { + enum tc_root_command command; + u32 handle; + bool ingress; +}; + +struct check_loop_arg { + struct qdisc_walker w; + struct Qdisc *p; + int depth; +}; + +struct tcf_bind_args { + struct tcf_walker w; + long unsigned int base; + long unsigned int cl; + u32 classid; +}; + +struct tc_bind_class_args { + struct qdisc_walker w; + long unsigned int new_cl; + u32 portid; + u32 clid; +}; + +struct qdisc_dump_args { + struct qdisc_walker w; + struct sk_buff *skb; + struct netlink_callback *cb; +}; + enum net_xmit_qdisc_t { __NET_XMIT_STOLEN = 65536, __NET_XMIT_BYPASS = 131072, @@ -95414,8 +85810,7 @@ enum { TCA_ACT_FLAGS = 7, TCA_ACT_HW_STATS = 8, TCA_ACT_USED_HW_STATS = 9, - TCA_ACT_IN_HW_COUNT = 10, - __TCA_ACT_MAX = 11, + __TCA_ACT_MAX = 10, }; enum tca_id { @@ -95496,14 +85891,13 @@ struct tc_action { atomic_t tcfa_bindcnt; int tcfa_action; struct tcf_t tcfa_tm; - long: 64; - struct gnet_stats_basic_sync tcfa_bstats; - struct gnet_stats_basic_sync tcfa_bstats_hw; + struct gnet_stats_basic_packed tcfa_bstats; + struct gnet_stats_basic_packed tcfa_bstats_hw; struct gnet_stats_queue tcfa_qstats; struct net_rate_estimator *tcfa_rate_est; spinlock_t tcfa_lock; - struct gnet_stats_basic_sync *cpu_bstats; - struct gnet_stats_basic_sync *cpu_bstats_hw; + struct gnet_stats_basic_cpu *cpu_bstats; + struct gnet_stats_basic_cpu *cpu_bstats_hw; struct gnet_stats_queue *cpu_qstats; struct tc_cookie *act_cookie; struct tcf_chain *goto_chain; @@ -95511,7 +85905,6 @@ struct tc_action { u8 hw_stats; u8 used_hw_stats; bool used_hw_stats_valid; - u32 in_hw_count; }; typedef void (*tc_action_priv_destructor)(void *); @@ -95532,7 +85925,6 @@ struct tc_action_ops { size_t (*get_fill_size)(const struct tc_action *); struct net_device * (*get_dev)(const struct tc_action *, tc_action_priv_destructor *); struct psample_group * (*get_psample_group)(const struct tc_action *, tc_action_priv_destructor *); - int (*offload_act_setup)(struct tc_action *, void *, u32 *, bool, struct netlink_ext_ack *); }; struct tc_cookie { @@ -95559,7 +85951,6 @@ struct tcf_exts { int nr_actions; struct tc_action **actions; struct net *net; - netns_tracker ns_tracker; int action; int police; }; @@ -95594,120 +85985,266 @@ struct tcf_pedit_key_ex { enum pedit_cmd cmd; }; -struct tcf_pedit { - struct tc_action common; - unsigned char tcfp_nkeys; - unsigned char tcfp_flags; - u32 tcfp_off_max_hint; +struct tcf_pedit_parms { struct tc_pedit_key *tcfp_keys; struct tcf_pedit_key_ex *tcfp_keys_ex; - long: 64; + u32 tcfp_off_max_hint; + unsigned char tcfp_nkeys; + unsigned char tcfp_flags; + struct callback_head rcu; }; -struct tcf_filter_chain_list_item { - struct list_head list; - tcf_chain_head_change_t *chain_head_change; - void *chain_head_change_priv; +struct tcf_pedit { + struct tc_action common; + struct tcf_pedit_parms *parms; }; -struct tcf_net { - spinlock_t idr_lock; - struct idr idr; +struct tcf_mirred { + struct tc_action common; + int tcfm_eaction; + bool tcfm_mac_header_xmit; + struct net_device *tcfm_dev; + struct list_head tcfm_list; +}; + +struct tcf_vlan_params { + int tcfv_action; + unsigned char tcfv_push_dst[6]; + unsigned char tcfv_push_src[6]; + u16 tcfv_push_vid; + __be16 tcfv_push_proto; + u8 tcfv_push_prio; + bool tcfv_push_prio_exists; + struct callback_head rcu; }; -struct tcf_block_owner_item { - struct list_head list; - struct Qdisc *q; - enum flow_block_binder_type binder_type; +struct tcf_vlan { + struct tc_action common; + struct tcf_vlan_params *vlan_p; }; -struct tcf_chain_info { - struct tcf_proto **pprev; - struct tcf_proto *next; +struct tcf_tunnel_key_params { + struct callback_head rcu; + int tcft_action; + struct metadata_dst *tcft_enc_metadata; }; -struct tcf_dump_args { - struct tcf_walker w; - struct sk_buff *skb; - struct netlink_callback *cb; - struct tcf_block *block; - struct Qdisc *q; - u32 parent; - bool terse_dump; +struct tcf_tunnel_key { + struct tc_action common; + struct tcf_tunnel_key_params *params; }; -enum tc_link_layer { - TC_LINKLAYER_UNAWARE = 0, - TC_LINKLAYER_ETHERNET = 1, - TC_LINKLAYER_ATM = 2, +struct tcf_csum_params { + u32 update_flags; + struct callback_head rcu; }; -enum { - TCA_STAB_UNSPEC = 0, - TCA_STAB_BASE = 1, - TCA_STAB_DATA = 2, - __TCA_STAB_MAX = 3, +struct tcf_csum { + struct tc_action common; + struct tcf_csum_params *params; }; -struct qdisc_rate_table { - struct tc_ratespec rate; - u32 data[256]; - struct qdisc_rate_table *next; - int refcnt; +struct tcf_gact { + struct tc_action common; + u16 tcfg_ptype; + u16 tcfg_pval; + int tcfg_paction; + atomic_t packets; +}; + +struct tcf_police_params { + int tcfp_result; + u32 tcfp_ewma_rate; + s64 tcfp_burst; + u32 tcfp_mtu; + s64 tcfp_mtu_ptoks; + s64 tcfp_pkt_burst; + struct psched_ratecfg rate; + bool rate_present; + struct psched_ratecfg peak; + bool peak_present; + struct psched_pktrate ppsrate; + bool pps_present; + struct callback_head rcu; }; -struct Qdisc_class_common { - u32 classid; - struct hlist_node hnode; +struct tcf_police { + struct tc_action common; + struct tcf_police_params *params; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + spinlock_t tcfp_lock; + s64 tcfp_toks; + s64 tcfp_ptoks; + s64 tcfp_pkttoks; + s64 tcfp_t_c; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + 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 Qdisc_class_hash { - struct hlist_head *hash; - unsigned int hashsize; - unsigned int hashmask; - unsigned int hashelems; +struct tcf_sample { + struct tc_action common; + u32 rate; + bool truncate; + u32 trunc_size; + struct psample_group *psample_group; + u32 psample_group_num; + struct list_head tcfm_list; }; -struct qdisc_watchdog { - u64 last_expires; - struct hrtimer timer; - struct Qdisc *qdisc; +struct tcf_skbedit_params { + u32 flags; + u32 priority; + u32 mark; + u32 mask; + u16 queue_mapping; + u16 ptype; + struct callback_head rcu; }; -enum tc_root_command { - TC_ROOT_GRAFT = 0, +struct tcf_skbedit { + struct tc_action common; + struct tcf_skbedit_params *params; }; -struct tc_root_qopt_offload { - enum tc_root_command command; - u32 handle; - bool ingress; +struct nf_nat_range2 { + unsigned int flags; + union nf_inet_addr min_addr; + union nf_inet_addr max_addr; + union nf_conntrack_man_proto min_proto; + union nf_conntrack_man_proto max_proto; + union nf_conntrack_man_proto base_proto; }; -struct check_loop_arg { - struct qdisc_walker w; - struct Qdisc *p; - int depth; +struct tcf_ct_flow_table; + +struct tcf_ct_params { + struct nf_conn *tmpl; + u16 zone; + u32 mark; + u32 mark_mask; + u32 labels[4]; + u32 labels_mask[4]; + struct nf_nat_range2 range; + bool ipv4_range; + u16 ct_action; + struct callback_head rcu; + struct tcf_ct_flow_table *ct_ft; + struct nf_flowtable *nf_ft; }; -struct tcf_bind_args { - struct tcf_walker w; - long unsigned int base; - long unsigned int cl; - u32 classid; +struct tcf_ct { + struct tc_action common; + struct tcf_ct_params *params; }; -struct tc_bind_class_args { - struct qdisc_walker w; - long unsigned int new_cl; - u32 portid; - u32 clid; +struct tcf_mpls_params { + int tcfm_action; + u32 tcfm_label; + u8 tcfm_tc; + u8 tcfm_ttl; + u8 tcfm_bos; + __be16 tcfm_proto; + struct callback_head rcu; }; -struct qdisc_dump_args { - struct qdisc_walker w; +struct tcf_mpls { + struct tc_action common; + struct tcf_mpls_params *mpls_p; +}; + +struct tcfg_gate_entry { + int index; + u8 gate_state; + u32 interval; + s32 ipv; + s32 maxoctets; + struct list_head list; +}; + +struct tcf_gate_params { + s32 tcfg_priority; + u64 tcfg_basetime; + u64 tcfg_cycletime; + u64 tcfg_cycletime_ext; + u32 tcfg_flags; + s32 tcfg_clockid; + size_t num_entries; + struct list_head entries; +}; + +struct tcf_gate { + struct tc_action common; + struct tcf_gate_params param; + u8 current_gate_status; + ktime_t current_close_time; + u32 current_entry_octets; + s32 current_max_octets; + struct tcfg_gate_entry *next_entry; + struct hrtimer hitimer; + enum tk_offsets tk_offset; +}; + +struct tcf_filter_chain_list_item { + struct list_head list; + tcf_chain_head_change_t *chain_head_change; + void *chain_head_change_priv; +}; + +struct tcf_net { + spinlock_t idr_lock; + struct idr idr; +}; + +struct tcf_block_owner_item { + struct list_head list; + struct Qdisc *q; + enum flow_block_binder_type binder_type; +}; + +struct tcf_chain_info { + struct tcf_proto **pprev; + struct tcf_proto *next; +}; + +struct tcf_dump_args { + struct tcf_walker w; struct sk_buff *skb; struct netlink_callback *cb; + struct tcf_block *block; + struct Qdisc *q; + u32 parent; + bool terse_dump; }; struct tcamsg { @@ -95730,11 +86267,6 @@ struct tc_action_net { const struct tc_action_ops *ops; }; -struct tc_act_pernet_id { - struct list_head list; - unsigned int id; -}; - struct tc_fifo_qopt { __u32 limit; }; @@ -95754,19 +86286,25 @@ struct tc_fifo_qopt_offload { }; }; -enum { - TCA_CGROUP_UNSPEC = 0, - TCA_CGROUP_ACT = 1, - TCA_CGROUP_POLICE = 2, - TCA_CGROUP_EMATCHES = 3, - __TCA_CGROUP_MAX = 4, -}; - struct tcf_ematch_tree_hdr { __u16 nmatches; __u16 progid; }; +enum { + TCA_EMATCH_TREE_UNSPEC = 0, + TCA_EMATCH_TREE_HDR = 1, + TCA_EMATCH_TREE_LIST = 2, + __TCA_EMATCH_TREE_MAX = 3, +}; + +struct tcf_ematch_hdr { + __u16 matchid; + __u16 kind; + __u16 flags; + __u16 pad; +}; + struct tcf_pkt_info { unsigned char *ptr; int nexthdr; @@ -95799,150 +86337,6 @@ struct tcf_ematch_tree { struct tcf_ematch *matches; }; -struct cls_cgroup_head { - u32 handle; - struct tcf_exts exts; - struct tcf_ematch_tree ematches; - struct tcf_proto *tp; - struct rcu_work rwork; -}; - -enum { - TCA_FQ_CODEL_UNSPEC = 0, - TCA_FQ_CODEL_TARGET = 1, - TCA_FQ_CODEL_LIMIT = 2, - TCA_FQ_CODEL_INTERVAL = 3, - TCA_FQ_CODEL_ECN = 4, - TCA_FQ_CODEL_FLOWS = 5, - TCA_FQ_CODEL_QUANTUM = 6, - TCA_FQ_CODEL_CE_THRESHOLD = 7, - TCA_FQ_CODEL_DROP_BATCH_SIZE = 8, - TCA_FQ_CODEL_MEMORY_LIMIT = 9, - TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR = 10, - TCA_FQ_CODEL_CE_THRESHOLD_MASK = 11, - __TCA_FQ_CODEL_MAX = 12, -}; - -enum { - TCA_FQ_CODEL_XSTATS_QDISC = 0, - TCA_FQ_CODEL_XSTATS_CLASS = 1, -}; - -struct tc_fq_codel_qd_stats { - __u32 maxpacket; - __u32 drop_overlimit; - __u32 ecn_mark; - __u32 new_flow_count; - __u32 new_flows_len; - __u32 old_flows_len; - __u32 ce_mark; - __u32 memory_usage; - __u32 drop_overmemory; -}; - -struct tc_fq_codel_cl_stats { - __s32 deficit; - __u32 ldelay; - __u32 count; - __u32 lastcount; - __u32 dropping; - __s32 drop_next; -}; - -struct tc_fq_codel_xstats { - __u32 type; - union { - struct tc_fq_codel_qd_stats qdisc_stats; - struct tc_fq_codel_cl_stats class_stats; - }; -}; - -typedef u32 codel_time_t; - -typedef s32 codel_tdiff_t; - -struct codel_params { - codel_time_t target; - codel_time_t ce_threshold; - codel_time_t interval; - u32 mtu; - bool ecn; - u8 ce_threshold_selector; - u8 ce_threshold_mask; -}; - -struct codel_vars { - u32 count; - u32 lastcount; - bool dropping; - u16 rec_inv_sqrt; - codel_time_t first_above_time; - codel_time_t drop_next; - codel_time_t ldelay; -}; - -struct codel_stats { - u32 maxpacket; - u32 drop_count; - u32 drop_len; - u32 ecn_mark; - u32 ce_mark; -}; - -typedef u32 (*codel_skb_len_t)(const struct sk_buff *); - -typedef codel_time_t (*codel_skb_time_t)(const struct sk_buff *); - -typedef void (*codel_skb_drop_t)(struct sk_buff *, void *); - -typedef struct sk_buff * (*codel_skb_dequeue_t)(struct codel_vars *, void *); - -struct codel_skb_cb { - codel_time_t enqueue_time; - unsigned int mem_usage; -}; - -struct fq_codel_flow { - struct sk_buff *head; - struct sk_buff *tail; - struct list_head flowchain; - int deficit; - struct codel_vars cvars; -}; - -struct fq_codel_sched_data { - struct tcf_proto *filter_list; - struct tcf_block *block; - struct fq_codel_flow *flows; - u32 *backlogs; - u32 flows_cnt; - u32 quantum; - u32 drop_batch_size; - u32 memory_limit; - struct codel_params cparams; - struct codel_stats cstats; - u32 memory_usage; - u32 drop_overmemory; - u32 drop_overlimit; - u32 new_flow_count; - struct list_head new_flows; - struct list_head old_flows; -}; - -enum { - TCA_EMATCH_TREE_UNSPEC = 0, - TCA_EMATCH_TREE_HDR = 1, - TCA_EMATCH_TREE_LIST = 2, - __TCA_EMATCH_TREE_MAX = 3, -}; - -struct tcf_ematch_hdr { - __u16 matchid; - __u16 kind; - __u16 flags; - __u16 pad; -}; - struct sockaddr_nl { __kernel_sa_family_t nl_family; short unsigned int nl_pad; @@ -96072,6 +86466,8 @@ struct netlink_broadcast_data { gfp_t allocation; struct sk_buff *skb; struct sk_buff *skb2; + int (*tx_filter)(struct sock *, struct sk_buff *, void *); + void *tx_data; }; struct netlink_set_err_data { @@ -96096,53 +86492,6 @@ struct bpf_iter__netlink { }; }; -enum netlink_attribute_type { - NL_ATTR_TYPE_INVALID = 0, - NL_ATTR_TYPE_FLAG = 1, - NL_ATTR_TYPE_U8 = 2, - NL_ATTR_TYPE_U16 = 3, - NL_ATTR_TYPE_U32 = 4, - NL_ATTR_TYPE_U64 = 5, - NL_ATTR_TYPE_S8 = 6, - NL_ATTR_TYPE_S16 = 7, - NL_ATTR_TYPE_S32 = 8, - NL_ATTR_TYPE_S64 = 9, - NL_ATTR_TYPE_BINARY = 10, - NL_ATTR_TYPE_STRING = 11, - NL_ATTR_TYPE_NUL_STRING = 12, - NL_ATTR_TYPE_NESTED = 13, - NL_ATTR_TYPE_NESTED_ARRAY = 14, - NL_ATTR_TYPE_BITFIELD32 = 15, -}; - -enum netlink_policy_type_attr { - NL_POLICY_TYPE_ATTR_UNSPEC = 0, - NL_POLICY_TYPE_ATTR_TYPE = 1, - NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, - NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, - NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, - NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, - NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, - NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, - NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, - NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, - NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, - NL_POLICY_TYPE_ATTR_PAD = 11, - NL_POLICY_TYPE_ATTR_MASK = 12, - __NL_POLICY_TYPE_ATTR_MAX = 13, - NL_POLICY_TYPE_ATTR_MAX = 12, -}; - -struct netlink_policy_dump_state { - unsigned int policy_idx; - unsigned int attr_idx; - unsigned int n_alloc; - struct { - const struct nla_policy *policy; - unsigned int maxtype; - } policies[0]; -}; - enum { CTRL_CMD_UNSPEC = 0, CTRL_CMD_NEWFAMILY = 1, @@ -96215,41 +86564,51 @@ struct ctrl_dump_policy_ctx { u8 single_op: 1; }; -struct netlink_diag_req { - __u8 sdiag_family; - __u8 sdiag_protocol; - __u16 pad; - __u32 ndiag_ino; - __u32 ndiag_show; - __u32 ndiag_cookie[2]; -}; - -struct netlink_diag_msg { - __u8 ndiag_family; - __u8 ndiag_type; - __u8 ndiag_protocol; - __u8 ndiag_state; - __u32 ndiag_portid; - __u32 ndiag_dst_portid; - __u32 ndiag_dst_group; - __u32 ndiag_ino; - __u32 ndiag_cookie[2]; +enum netlink_attribute_type { + NL_ATTR_TYPE_INVALID = 0, + NL_ATTR_TYPE_FLAG = 1, + NL_ATTR_TYPE_U8 = 2, + NL_ATTR_TYPE_U16 = 3, + NL_ATTR_TYPE_U32 = 4, + NL_ATTR_TYPE_U64 = 5, + NL_ATTR_TYPE_S8 = 6, + NL_ATTR_TYPE_S16 = 7, + NL_ATTR_TYPE_S32 = 8, + NL_ATTR_TYPE_S64 = 9, + NL_ATTR_TYPE_BINARY = 10, + NL_ATTR_TYPE_STRING = 11, + NL_ATTR_TYPE_NUL_STRING = 12, + NL_ATTR_TYPE_NESTED = 13, + NL_ATTR_TYPE_NESTED_ARRAY = 14, + NL_ATTR_TYPE_BITFIELD32 = 15, }; -enum { - NETLINK_DIAG_MEMINFO = 0, - NETLINK_DIAG_GROUPS = 1, - NETLINK_DIAG_RX_RING = 2, - NETLINK_DIAG_TX_RING = 3, - NETLINK_DIAG_FLAGS = 4, - __NETLINK_DIAG_MAX = 5, +enum netlink_policy_type_attr { + NL_POLICY_TYPE_ATTR_UNSPEC = 0, + NL_POLICY_TYPE_ATTR_TYPE = 1, + NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2, + NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3, + NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4, + NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5, + NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6, + NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7, + NL_POLICY_TYPE_ATTR_POLICY_IDX = 8, + NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9, + NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10, + NL_POLICY_TYPE_ATTR_PAD = 11, + NL_POLICY_TYPE_ATTR_MASK = 12, + __NL_POLICY_TYPE_ATTR_MAX = 13, + NL_POLICY_TYPE_ATTR_MAX = 12, }; -typedef int (*dummy_ops_test_ret_fn)(struct bpf_dummy_ops_state *, ...); - -struct bpf_dummy_ops_test_args { - u64 args[12]; - struct bpf_dummy_ops_state state; +struct netlink_policy_dump_state { + unsigned int policy_idx; + unsigned int attr_idx; + unsigned int n_alloc; + struct { + const struct nla_policy *policy; + unsigned int maxtype; + } policies[0]; }; struct trace_event_raw_bpf_test_finish { @@ -96272,135 +86631,10 @@ struct bpf_test_timer { u64 time_spent; }; -struct xdp_page_head { - struct xdp_buff orig_ctx; - struct xdp_buff ctx; - struct xdp_frame frm; - u8 data[0]; -}; - -struct xdp_test_data { - struct xdp_buff *orig_ctx; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 xdp_rxq_info rxq; - struct net_device *dev; - struct page_pool *pp; - struct xdp_frame **frames; - struct sk_buff **skbs; - struct xdp_mem_info mem; - u32 batch_size; - u32 frame_cnt; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - 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 bpf_fentry_test_t { struct bpf_fentry_test_t *a; }; -struct prog_test_member { - u64 c; -}; - -struct prog_test_ref_kfunc { - int a; - int b; - struct prog_test_member memb; - struct prog_test_ref_kfunc *next; -}; - -struct prog_test_pass1 { - int x0; - struct { - int x1; - struct { - int x2; - struct { - int x3; - }; - }; - }; -}; - -struct prog_test_pass2 { - int len; - short int arr1[4]; - struct { - char arr2[4]; - long unsigned int arr3[8]; - } x; -}; - -struct prog_test_fail1 { - void *p; - int x; -}; - -struct prog_test_fail2 { - int x8; - struct prog_test_pass1 x; -}; - -struct prog_test_fail3 { - int len; - char arr1[2]; - char arr2[0]; -}; - struct bpf_raw_tp_test_run_info { struct bpf_prog *prog; void *ctx; @@ -96437,8 +86671,7 @@ enum tunable_id { ETHTOOL_RX_COPYBREAK = 1, ETHTOOL_TX_COPYBREAK = 2, ETHTOOL_PFC_PREVENTION_TOUT = 3, - ETHTOOL_TX_COPYBREAK_BUF_SIZE = 4, - __ETHTOOL_TUNABLE_COUNT = 5, + __ETHTOOL_TUNABLE_COUNT = 4, }; enum tunable_type_id { @@ -96589,12 +86822,52 @@ struct ethtool_rx_flow_spec_input { u32 rss_ctx; }; -struct ethtool_devlink_compat { - struct devlink *devlink; - union { - struct ethtool_flash efl; - struct ethtool_drvinfo info; - }; +struct ethtool_phy_ops { + int (*get_sset_count)(struct phy_device *); + int (*get_strings)(struct phy_device *, u8 *); + int (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *); + int (*start_cable_test)(struct phy_device *, struct netlink_ext_ack *); + int (*start_cable_test_tdr)(struct phy_device *, struct netlink_ext_ack *, const struct phy_tdr_config *); +}; + +enum { + ETHTOOL_MSG_KERNEL_NONE = 0, + ETHTOOL_MSG_STRSET_GET_REPLY = 1, + ETHTOOL_MSG_LINKINFO_GET_REPLY = 2, + ETHTOOL_MSG_LINKINFO_NTF = 3, + ETHTOOL_MSG_LINKMODES_GET_REPLY = 4, + ETHTOOL_MSG_LINKMODES_NTF = 5, + ETHTOOL_MSG_LINKSTATE_GET_REPLY = 6, + ETHTOOL_MSG_DEBUG_GET_REPLY = 7, + ETHTOOL_MSG_DEBUG_NTF = 8, + ETHTOOL_MSG_WOL_GET_REPLY = 9, + ETHTOOL_MSG_WOL_NTF = 10, + ETHTOOL_MSG_FEATURES_GET_REPLY = 11, + ETHTOOL_MSG_FEATURES_SET_REPLY = 12, + ETHTOOL_MSG_FEATURES_NTF = 13, + ETHTOOL_MSG_PRIVFLAGS_GET_REPLY = 14, + ETHTOOL_MSG_PRIVFLAGS_NTF = 15, + ETHTOOL_MSG_RINGS_GET_REPLY = 16, + ETHTOOL_MSG_RINGS_NTF = 17, + ETHTOOL_MSG_CHANNELS_GET_REPLY = 18, + ETHTOOL_MSG_CHANNELS_NTF = 19, + ETHTOOL_MSG_COALESCE_GET_REPLY = 20, + ETHTOOL_MSG_COALESCE_NTF = 21, + ETHTOOL_MSG_PAUSE_GET_REPLY = 22, + ETHTOOL_MSG_PAUSE_NTF = 23, + ETHTOOL_MSG_EEE_GET_REPLY = 24, + ETHTOOL_MSG_EEE_NTF = 25, + ETHTOOL_MSG_TSINFO_GET_REPLY = 26, + ETHTOOL_MSG_CABLE_TEST_NTF = 27, + ETHTOOL_MSG_CABLE_TEST_TDR_NTF = 28, + ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY = 29, + ETHTOOL_MSG_FEC_GET_REPLY = 30, + ETHTOOL_MSG_FEC_NTF = 31, + ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY = 32, + ETHTOOL_MSG_STATS_GET_REPLY = 33, + ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY = 34, + __ETHTOOL_MSG_KERNEL_CNT = 35, + ETHTOOL_MSG_KERNEL_MAX = 34, }; struct ethtool_link_usettings { @@ -96620,7 +86893,7 @@ struct ethtool_rx_flow_key { 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; }; @@ -96673,10 +86946,8 @@ enum { ETHTOOL_MSG_MODULE_EEPROM_GET = 31, ETHTOOL_MSG_STATS_GET = 32, ETHTOOL_MSG_PHC_VCLOCKS_GET = 33, - ETHTOOL_MSG_MODULE_GET = 34, - ETHTOOL_MSG_MODULE_SET = 35, - __ETHTOOL_MSG_USER_CNT = 36, - ETHTOOL_MSG_USER_MAX = 35, + __ETHTOOL_MSG_USER_CNT = 34, + ETHTOOL_MSG_USER_MAX = 33, }; enum { @@ -96783,11 +87054,8 @@ enum { ETHTOOL_A_RINGS_RX_MINI = 7, ETHTOOL_A_RINGS_RX_JUMBO = 8, ETHTOOL_A_RINGS_TX = 9, - ETHTOOL_A_RINGS_RX_BUF_LEN = 10, - ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 11, - ETHTOOL_A_RINGS_CQE_SIZE = 12, - __ETHTOOL_A_RINGS_CNT = 13, - ETHTOOL_A_RINGS_MAX = 12, + __ETHTOOL_A_RINGS_CNT = 10, + ETHTOOL_A_RINGS_MAX = 9, }; enum { @@ -96927,6 +87195,16 @@ enum { ETHTOOL_A_MODULE_EEPROM_MAX = 7, }; +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, +}; + enum { ETHTOOL_STATS_ETH_PHY = 0, ETHTOOL_STATS_ETH_MAC = 1, @@ -96985,22 +87263,12 @@ enum { ETHTOOL_A_STATS_RMON_MAX = 3, }; -enum { - ETHTOOL_A_MODULE_UNSPEC = 0, - ETHTOOL_A_MODULE_HEADER = 1, - ETHTOOL_A_MODULE_POWER_MODE_POLICY = 2, - ETHTOOL_A_MODULE_POWER_MODE = 3, - __ETHTOOL_A_MODULE_CNT = 4, - ETHTOOL_A_MODULE_MAX = 3, -}; - enum ethtool_multicast_groups { ETHNL_MCGRP_MONITOR = 0, }; struct ethnl_req_info { struct net_device *dev; - netdevice_tracker dev_tracker; u32 flags; }; @@ -97032,6 +87300,35 @@ struct ethnl_dump_ctx { typedef void (*ethnl_notify_handler_t)(struct net_device *, unsigned int, const void *); +enum { + ETHTOOL_A_BITSET_BIT_UNSPEC = 0, + ETHTOOL_A_BITSET_BIT_INDEX = 1, + ETHTOOL_A_BITSET_BIT_NAME = 2, + ETHTOOL_A_BITSET_BIT_VALUE = 3, + __ETHTOOL_A_BITSET_BIT_CNT = 4, + ETHTOOL_A_BITSET_BIT_MAX = 3, +}; + +enum { + ETHTOOL_A_BITSET_BITS_UNSPEC = 0, + ETHTOOL_A_BITSET_BITS_BIT = 1, + __ETHTOOL_A_BITSET_BITS_CNT = 2, + ETHTOOL_A_BITSET_BITS_MAX = 1, +}; + +enum { + ETHTOOL_A_BITSET_UNSPEC = 0, + ETHTOOL_A_BITSET_NOMASK = 1, + ETHTOOL_A_BITSET_SIZE = 2, + ETHTOOL_A_BITSET_BITS = 3, + ETHTOOL_A_BITSET_VALUE = 4, + ETHTOOL_A_BITSET_MASK = 5, + __ETHTOOL_A_BITSET_CNT = 6, + ETHTOOL_A_BITSET_MAX = 5, +}; + +typedef const char (* const ethnl_string_array_t)[32]; + enum { ETHTOOL_A_STRING_UNSPEC = 0, ETHTOOL_A_STRING_INDEX = 1, @@ -97081,39 +87378,17 @@ struct strset_reply_data { struct strset_info sets[21]; }; -enum { - ETHTOOL_A_BITSET_BIT_UNSPEC = 0, - ETHTOOL_A_BITSET_BIT_INDEX = 1, - ETHTOOL_A_BITSET_BIT_NAME = 2, - ETHTOOL_A_BITSET_BIT_VALUE = 3, - __ETHTOOL_A_BITSET_BIT_CNT = 4, - ETHTOOL_A_BITSET_BIT_MAX = 3, -}; - -enum { - ETHTOOL_A_BITSET_BITS_UNSPEC = 0, - ETHTOOL_A_BITSET_BITS_BIT = 1, - __ETHTOOL_A_BITSET_BITS_CNT = 2, - ETHTOOL_A_BITSET_BITS_MAX = 1, -}; - -enum { - ETHTOOL_A_BITSET_UNSPEC = 0, - ETHTOOL_A_BITSET_NOMASK = 1, - ETHTOOL_A_BITSET_SIZE = 2, - ETHTOOL_A_BITSET_BITS = 3, - ETHTOOL_A_BITSET_VALUE = 4, - ETHTOOL_A_BITSET_MASK = 5, - __ETHTOOL_A_BITSET_CNT = 6, - ETHTOOL_A_BITSET_MAX = 5, +struct linkinfo_reply_data { + struct ethnl_reply_data base; + struct ethtool_link_ksettings ksettings; + struct ethtool_link_settings *lsettings; }; -typedef const char (* const ethnl_string_array_t)[32]; - -struct linkinfo_reply_data { +struct linkmodes_reply_data { struct ethnl_reply_data base; struct ethtool_link_ksettings ksettings; struct ethtool_link_settings *lsettings; + bool peer_empty; }; struct linkstate_reply_data { @@ -97125,13 +87400,6 @@ struct linkstate_reply_data { struct ethtool_link_ext_state_info ethtool_link_ext_state_info; }; -struct linkmodes_reply_data { - struct ethnl_reply_data base; - struct ethtool_link_ksettings ksettings; - struct ethtool_link_settings *lsettings; - bool peer_empty; -}; - struct debug_reply_data { struct ethnl_reply_data base; u32 msg_mask; @@ -97152,21 +87420,16 @@ struct features_reply_data { u32 all[2]; }; -enum ethtool_supported_ring_param { - ETHTOOL_RING_USE_RX_BUF_LEN = 1, - ETHTOOL_RING_USE_CQE_SIZE = 2, -}; - -enum { - ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0, - ETHTOOL_TCP_DATA_SPLIT_DISABLED = 1, - ETHTOOL_TCP_DATA_SPLIT_ENABLED = 2, +struct privflags_reply_data { + struct ethnl_reply_data base; + const char (*priv_flag_names)[32]; + unsigned int n_priv_flags; + u32 priv_flags; }; struct rings_reply_data { struct ethnl_reply_data base; struct ethtool_ringparam ringparam; - struct kernel_ethtool_ringparam kernel_ringparam; }; struct channels_reply_data { @@ -97174,13 +87437,6 @@ struct channels_reply_data { struct ethtool_channels channels; }; -struct privflags_reply_data { - struct ethnl_reply_data base; - const char (*priv_flag_names)[32]; - unsigned int n_priv_flags; - u32 priv_flags; -}; - struct coalesce_reply_data { struct ethnl_reply_data base; struct ethtool_coalesce coalesce; @@ -97188,11 +87444,6 @@ struct coalesce_reply_data { u32 supported_params; }; -struct eee_reply_data { - struct ethnl_reply_data base; - struct ethtool_eee eee; -}; - enum { ETHTOOL_A_PAUSE_STAT_UNSPEC = 0, ETHTOOL_A_PAUSE_STAT_PAD = 1, @@ -97208,6 +87459,16 @@ struct pause_reply_data { struct ethtool_pause_stats pausestat; }; +struct eee_reply_data { + struct ethnl_reply_data base; + struct ethtool_eee eee; +}; + +struct tsinfo_reply_data { + struct ethnl_reply_data base; + struct ethtool_ts_info ts_info; +}; + enum { ETHTOOL_A_CABLE_PAIR_A = 0, ETHTOOL_A_CABLE_PAIR_B = 1, @@ -97297,9 +87558,57 @@ enum { ETHTOOL_A_CABLE_TDR_NEST_MAX = 3, }; -struct tsinfo_reply_data { - struct ethnl_reply_data base; - struct ethtool_ts_info ts_info; +enum { + ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC = 0, + ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT = 1, + ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE = 2, + __ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT = 3, + ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = 2, +}; + +enum { + ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC = 0, + ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE = 1, + ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES = 2, + ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY = 3, + __ETHTOOL_A_TUNNEL_UDP_TABLE_CNT = 4, + ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = 3, +}; + +enum { + ETHTOOL_A_TUNNEL_UDP_UNSPEC = 0, + ETHTOOL_A_TUNNEL_UDP_TABLE = 1, + __ETHTOOL_A_TUNNEL_UDP_CNT = 2, + ETHTOOL_A_TUNNEL_UDP_MAX = 1, +}; + +enum udp_parsable_tunnel_type { + UDP_TUNNEL_TYPE_VXLAN = 1, + UDP_TUNNEL_TYPE_GENEVE = 2, + UDP_TUNNEL_TYPE_VXLAN_GPE = 4, +}; + +enum udp_tunnel_nic_info_flags { + UDP_TUNNEL_NIC_INFO_MAY_SLEEP = 1, + UDP_TUNNEL_NIC_INFO_OPEN_ONLY = 2, + UDP_TUNNEL_NIC_INFO_IPV4_ONLY = 4, + UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN = 8, +}; + +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 { @@ -97354,7 +87663,7 @@ enum { 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, + ETHTOOL_A_STATS_GRP_MAX = 9, }; struct stats_req_info { @@ -97364,76 +87673,13 @@ struct stats_req_info { struct stats_reply_data { struct ethnl_reply_data base; - union { - struct { - struct ethtool_eth_phy_stats phy_stats; - struct ethtool_eth_mac_stats mac_stats; - struct ethtool_eth_ctrl_stats ctrl_stats; - struct ethtool_rmon_stats rmon_stats; - }; - struct { - struct ethtool_eth_phy_stats phy_stats; - struct ethtool_eth_mac_stats mac_stats; - struct ethtool_eth_ctrl_stats ctrl_stats; - struct ethtool_rmon_stats rmon_stats; - } stats; - }; + 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; }; -enum { - ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC = 0, - ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT = 1, - ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE = 2, - __ETHTOOL_A_TUNNEL_UDP_ENTRY_CNT = 3, - ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX = 2, -}; - -enum { - ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC = 0, - ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE = 1, - ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES = 2, - ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY = 3, - __ETHTOOL_A_TUNNEL_UDP_TABLE_CNT = 4, - ETHTOOL_A_TUNNEL_UDP_TABLE_MAX = 3, -}; - -enum { - ETHTOOL_A_TUNNEL_UDP_UNSPEC = 0, - ETHTOOL_A_TUNNEL_UDP_TABLE = 1, - __ETHTOOL_A_TUNNEL_UDP_CNT = 2, - ETHTOOL_A_TUNNEL_UDP_MAX = 1, -}; - -enum udp_parsable_tunnel_type { - UDP_TUNNEL_TYPE_VXLAN = 1, - UDP_TUNNEL_TYPE_GENEVE = 2, - UDP_TUNNEL_TYPE_VXLAN_GPE = 4, -}; - -enum udp_tunnel_nic_info_flags { - UDP_TUNNEL_NIC_INFO_MAY_SLEEP = 1, - UDP_TUNNEL_NIC_INFO_OPEN_ONLY = 2, - UDP_TUNNEL_NIC_INFO_IPV4_ONLY = 4, - UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN = 8, -}; - -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; -}; - struct phc_vclocks_reply_data { struct ethnl_reply_data base; int num; @@ -97445,24 +87691,18 @@ struct nf_hook_entries_rcu_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); - void (*remove_nat_bysrc)(struct nf_conn *); }; -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 *); - void (*attach)(struct sk_buff *, const struct sk_buff *); }; struct nfnl_ct_hook { @@ -97492,11 +87732,6 @@ struct nf_queue_entry { u16 size; }; -struct module_reply_data { - struct ethnl_reply_data base; - struct ethtool_module_power_mode_params power; -}; - struct nf_loginfo { u_int8_t type; union { @@ -97527,6 +87762,7 @@ struct nf_bridge_info { u8 pkt_otherhost: 1; u8 in_prerouting: 1; u8 bridged_dnat: 1; + u8 sabotage_in_done: 1; __u16 frag_max_size; struct net_device *physindev; struct net_device *physoutdev; @@ -97567,358 +87803,6 @@ struct nf_sockopt_ops { struct module *owner; }; -struct xt_action_param; - -struct xt_mtchk_param; - -struct xt_mtdtor_param; - -struct xt_match { - struct list_head list; - const char name[29]; - u_int8_t revision; - bool (*match)(const struct sk_buff *, struct xt_action_param *); - int (*checkentry)(const struct xt_mtchk_param *); - void (*destroy)(const struct xt_mtdtor_param *); - void (*compat_from_user)(void *, const void *); - int (*compat_to_user)(void *, const void *); - struct module *me; - const char *table; - unsigned int matchsize; - unsigned int usersize; - unsigned int compatsize; - unsigned int hooks; - short unsigned int proto; - short unsigned int family; -}; - -struct xt_entry_match { - union { - struct { - __u16 match_size; - char name[29]; - __u8 revision; - } user; - struct { - __u16 match_size; - struct xt_match *match; - } kernel; - __u16 match_size; - } u; - unsigned char data[0]; -}; - -struct xt_tgchk_param; - -struct xt_tgdtor_param; - -struct xt_target { - struct list_head list; - const char name[29]; - u_int8_t revision; - unsigned int (*target)(struct sk_buff *, const struct xt_action_param *); - int (*checkentry)(const struct xt_tgchk_param *); - void (*destroy)(const struct xt_tgdtor_param *); - void (*compat_from_user)(void *, const void *); - int (*compat_to_user)(void *, const void *); - struct module *me; - const char *table; - unsigned int targetsize; - unsigned int usersize; - unsigned int compatsize; - unsigned int hooks; - short unsigned int proto; - short unsigned int family; -}; - -struct xt_entry_target { - union { - struct { - __u16 target_size; - char name[29]; - __u8 revision; - } user; - struct { - __u16 target_size; - struct xt_target *target; - } kernel; - __u16 target_size; - } u; - unsigned char data[0]; -}; - -struct xt_standard_target { - struct xt_entry_target target; - int verdict; -}; - -struct xt_error_target { - struct xt_entry_target target; - char errorname[30]; -}; - -struct xt_counters { - __u64 pcnt; - __u64 bcnt; -}; - -struct xt_counters_info { - char name[32]; - unsigned int num_counters; - struct xt_counters counters[0]; -}; - -struct xt_action_param { - union { - const struct xt_match *match; - const struct xt_target *target; - }; - union { - const void *matchinfo; - const void *targinfo; - }; - const struct nf_hook_state *state; - unsigned int thoff; - u16 fragoff; - bool hotdrop; -}; - -struct xt_mtchk_param { - struct net *net; - const char *table; - const void *entryinfo; - const struct xt_match *match; - void *matchinfo; - unsigned int hook_mask; - u_int8_t family; - bool nft_compat; -}; - -struct xt_mtdtor_param { - struct net *net; - const struct xt_match *match; - void *matchinfo; - u_int8_t family; -}; - -struct xt_tgchk_param { - struct net *net; - const char *table; - const void *entryinfo; - const struct xt_target *target; - void *targinfo; - unsigned int hook_mask; - u_int8_t family; - bool nft_compat; -}; - -struct xt_tgdtor_param { - struct net *net; - const struct xt_target *target; - void *targinfo; - u_int8_t family; -}; - -struct xt_table_info; - -struct xt_table { - struct list_head list; - unsigned int valid_hooks; - struct xt_table_info *private; - struct nf_hook_ops *ops; - struct module *me; - u_int8_t af; - int priority; - const char name[32]; -}; - -struct xt_table_info { - unsigned int size; - unsigned int number; - unsigned int initial_entries; - unsigned int hook_entry[5]; - unsigned int underflow[5]; - unsigned int stacksize; - void ***jumpstack; - unsigned char entries[0]; -}; - -struct xt_percpu_counter_alloc_state { - unsigned int off; - const char *mem; -}; - -struct compat_xt_entry_match { - union { - struct { - u_int16_t match_size; - char name[29]; - u_int8_t revision; - } user; - struct { - u_int16_t match_size; - compat_uptr_t match; - } kernel; - u_int16_t match_size; - } u; - unsigned char data[0]; -}; - -struct compat_xt_entry_target { - union { - struct { - u_int16_t target_size; - char name[29]; - u_int8_t revision; - } user; - struct { - u_int16_t target_size; - compat_uptr_t target; - } kernel; - u_int16_t target_size; - } u; - unsigned char data[0]; -}; - -struct compat_xt_counters { - compat_u64 pcnt; - compat_u64 bcnt; -}; - -struct compat_xt_counters_info { - char name[32]; - compat_uint_t num_counters; - struct compat_xt_counters counters[0]; -}; - -struct xt_template { - struct list_head list; - int (*table_init)(struct net *); - struct module *me; - char name[32]; -}; - -struct xt_pernet { - struct list_head tables[13]; -}; - -struct compat_delta { - unsigned int offset; - int delta; -}; - -struct xt_af { - struct mutex mutex; - struct list_head match; - struct list_head target; - struct mutex compat_mutex; - struct compat_delta *compat_tab; - unsigned int number; - unsigned int cur; -}; - -struct compat_xt_standard_target { - struct compat_xt_entry_target t; - compat_uint_t verdict; -}; - -struct compat_xt_error_target { - struct compat_xt_entry_target t; - char errorname[30]; -}; - -struct nf_mttg_trav { - struct list_head *head; - struct list_head *curr; - uint8_t class; -}; - -enum { - MTTG_TRAV_INIT = 0, - MTTG_TRAV_NFP_UNSPEC = 1, - MTTG_TRAV_NFP_SPEC = 2, - MTTG_TRAV_DONE = 3, -}; - -struct xt_tcp { - __u16 spts[2]; - __u16 dpts[2]; - __u8 option; - __u8 flg_mask; - __u8 flg_cmp; - __u8 invflags; -}; - -struct xt_udp { - __u16 spts[2]; - __u16 dpts[2]; - __u8 invflags; -}; - -struct ipv4_addr_key { - __be32 addr; - int vif; -}; - -struct inetpeer_addr { - union { - struct ipv4_addr_key a4; - struct in6_addr a6; - u32 key[4]; - }; - __u16 family; -}; - -struct inet_peer { - struct rb_node rb_node; - struct inetpeer_addr daddr; - u32 metrics[17]; - u32 rate_tokens; - u32 n_redirects; - long unsigned int rate_last; - union { - struct { - atomic_t rid; - }; - struct callback_head rcu; - }; - __u32 dtime; - refcount_t refcnt; -}; - -struct net_offload { - struct offload_callbacks callbacks; - unsigned int flags; -}; - -struct raw_hashinfo { - rwlock_t lock; - struct hlist_head ht[256]; -}; - -struct ip_rt_acct { - __u32 o_bytes; - __u32 o_packets; - __u32 i_bytes; - __u32 i_packets; -}; - -enum ip_defrag_users { - IP_DEFRAG_LOCAL_DELIVER = 0, - IP_DEFRAG_CALL_RA_CHAIN = 1, - IP_DEFRAG_CONNTRACK_IN = 2, - __IP_DEFRAG_CONNTRACK_IN_END = 65537, - IP_DEFRAG_CONNTRACK_OUT = 65538, - __IP_DEFRAG_CONNTRACK_OUT_END = 131073, - IP_DEFRAG_CONNTRACK_BRIDGE_IN = 131074, - __IP_DEFRAG_CONNTRACK_BRIDGE_IN = 196609, - IP_DEFRAG_VS_IN = 196610, - IP_DEFRAG_VS_OUT = 196611, - IP_DEFRAG_VS_FWD = 196612, - IP_DEFRAG_AF_PACKET = 196613, - IP_DEFRAG_MACVLAN = 196614, -}; - struct ip_mreqn { struct in_addr imr_multiaddr; struct in_addr imr_address; @@ -97993,7 +87877,36 @@ struct ip_sf_list { unsigned char sf_crcount; }; -typedef u8 dscp_t; +struct ipv4_addr_key { + __be32 addr; + int vif; +}; + +struct inetpeer_addr { + union { + struct ipv4_addr_key a4; + struct in6_addr a6; + u32 key[4]; + }; + __u16 family; +}; + +struct inet_peer { + struct rb_node rb_node; + struct inetpeer_addr daddr; + u32 metrics[17]; + u32 rate_tokens; + u32 n_redirects; + long unsigned int rate_last; + union { + struct { + atomic_t rid; + }; + struct callback_head rcu; + }; + __u32 dtime; + refcount_t refcnt; +}; struct fib_rt_info { struct fib_info *fi; @@ -98011,7 +87924,13 @@ struct fib_rt_info { struct uncached_list { spinlock_t lock; struct list_head head; - struct list_head quarantine; +}; + +struct ip_rt_acct { + __u32 o_bytes; + __u32 o_packets; + __u32 i_bytes; + __u32 i_packets; }; struct rt_cache_stat { @@ -98028,7 +87947,7 @@ struct rt_cache_stat { struct fib_alias { struct hlist_node fa_list; struct fib_info *fa_info; - dscp_t fa_dscp; + u8 fa_tos; u8 fa_type; u8 fa_state; u8 fa_slen; @@ -98045,6 +87964,32 @@ 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]; +}; + +enum ip_defrag_users { + IP_DEFRAG_LOCAL_DELIVER = 0, + IP_DEFRAG_CALL_RA_CHAIN = 1, + IP_DEFRAG_CONNTRACK_IN = 2, + __IP_DEFRAG_CONNTRACK_IN_END = 65537, + IP_DEFRAG_CONNTRACK_OUT = 65538, + __IP_DEFRAG_CONNTRACK_OUT_END = 131073, + IP_DEFRAG_CONNTRACK_BRIDGE_IN = 131074, + __IP_DEFRAG_CONNTRACK_BRIDGE_IN = 196609, + IP_DEFRAG_VS_IN = 196610, + IP_DEFRAG_VS_OUT = 196611, + IP_DEFRAG_VS_FWD = 196612, + IP_DEFRAG_AF_PACKET = 196613, + IP_DEFRAG_MACVLAN = 196614, +}; + enum { INET_FRAG_FIRST_IN = 1, INET_FRAG_LAST_IN = 2, @@ -98071,6 +88016,7 @@ struct ipcm_cookie { __be32 addr; int oif; struct ip_options_rcu *opt; + __u8 protocol; __u8 ttl; __s16 tos; char priority; @@ -98194,7 +88140,21 @@ struct compat_group_filter { struct __kernel_sockaddr_storage gf_slist_flex[0]; } __attribute__((packed)); }; -} __attribute__((packed)); +}; + +enum { + BPFILTER_IPT_SO_SET_REPLACE = 64, + BPFILTER_IPT_SO_SET_ADD_COUNTERS = 65, + BPFILTER_IPT_SET_MAX = 66, +}; + +enum { + BPFILTER_IPT_SO_GET_INFO = 64, + BPFILTER_IPT_SO_GET_ENTRIES = 65, + BPFILTER_IPT_SO_GET_REVISION_MATCH = 66, + BPFILTER_IPT_SO_GET_REVISION_TARGET = 67, + BPFILTER_IPT_GET_MAX = 68, +}; struct tcpvegas_info { __u32 tcpv_enabled; @@ -98225,6 +88185,22 @@ union tcp_cc_info { struct tcp_bbr_info bbr; }; +enum { + BPF_TCP_ESTABLISHED = 1, + BPF_TCP_SYN_SENT = 2, + BPF_TCP_SYN_RECV = 3, + BPF_TCP_FIN_WAIT1 = 4, + BPF_TCP_FIN_WAIT2 = 5, + BPF_TCP_TIME_WAIT = 6, + BPF_TCP_CLOSE = 7, + BPF_TCP_CLOSE_WAIT = 8, + BPF_TCP_LAST_ACK = 9, + BPF_TCP_LISTEN = 10, + BPF_TCP_CLOSING = 11, + BPF_TCP_NEW_SYN_RECV = 12, + BPF_TCP_MAX_STATES = 13, +}; + enum inet_csk_ack_state_t { ICSK_ACK_SCHED = 1, ICSK_ACK_TIMER = 2, @@ -98370,22 +88346,6 @@ struct tcp_zerocopy_receive { __u32 reserved; }; -enum { - BPF_TCP_ESTABLISHED = 1, - BPF_TCP_SYN_SENT = 2, - BPF_TCP_SYN_RECV = 3, - BPF_TCP_FIN_WAIT1 = 4, - BPF_TCP_FIN_WAIT2 = 5, - BPF_TCP_TIME_WAIT = 6, - BPF_TCP_CLOSE = 7, - BPF_TCP_CLOSE_WAIT = 8, - BPF_TCP_LAST_ACK = 9, - BPF_TCP_LISTEN = 10, - BPF_TCP_CLOSING = 11, - BPF_TCP_NEW_SYN_RECV = 12, - BPF_TCP_MAX_STATES = 13, -}; - struct tcp_md5sig_pool { struct ahash_request *md5_req; void *scratch; @@ -98410,25 +88370,22 @@ struct tcp_splice_state { unsigned int flags; }; -enum pkt_hash_types { - PKT_HASH_TYPE_NONE = 0, - PKT_HASH_TYPE_L2 = 1, - PKT_HASH_TYPE_L3 = 2, - PKT_HASH_TYPE_L4 = 3, +enum tcp_fastopen_client_fail { + TFO_STATUS_UNSPEC = 0, + TFO_COOKIE_UNAVAILABLE = 1, + TFO_DATA_NOT_ACKED = 2, + TFO_SYN_RETRANSMITTED = 3, }; -enum tsq_flags { - TSQF_THROTTLED = 1, - TSQF_QUEUED = 2, - TCPF_TSQ_DEFERRED = 4, - TCPF_WRITE_TIMER_DEFERRED = 8, - TCPF_DELACK_TIMER_DEFERRED = 16, - TCPF_MTU_REDUCED_DEFERRED = 32, +struct tcp_sack_block_wire { + __be32 start_seq; + __be32 end_seq; }; -enum { - BPF_WRITE_HDR_TCP_CURRENT_MSS = 1, - BPF_WRITE_HDR_TCP_SYNACK_COOKIE = 2, +struct static_key_false_deferred { + struct static_key_false key; + long unsigned int timeout; + struct delayed_work work; }; struct mptcp_ext { @@ -98452,6 +88409,48 @@ struct mptcp_ext { u8 csum_reqd: 1; }; +enum tcp_queue { + TCP_FRAG_IN_WRITE_QUEUE = 0, + TCP_FRAG_IN_RTX_QUEUE = 1, +}; + +enum tcp_ca_ack_event_flags { + CA_ACK_SLOWPATH = 1, + CA_ACK_WIN_UPDATE = 2, + CA_ACK_ECE = 4, +}; + +struct tcp_sacktag_state { + u64 first_sackt; + u64 last_sackt; + u32 reord; + u32 sack_delivered; + int flag; + unsigned int mss_now; + struct rate_sample *rate; +}; + +enum pkt_hash_types { + PKT_HASH_TYPE_NONE = 0, + PKT_HASH_TYPE_L2 = 1, + PKT_HASH_TYPE_L3 = 2, + PKT_HASH_TYPE_L4 = 3, +}; + +enum { + BPF_WRITE_HDR_TCP_CURRENT_MSS = 1, + BPF_WRITE_HDR_TCP_SYNACK_COOKIE = 2, +}; + +enum tsq_flags { + TSQF_THROTTLED = 1, + TSQF_QUEUED = 2, + TCPF_TSQ_DEFERRED = 4, + TCPF_WRITE_TIMER_DEFERRED = 8, + TCPF_DELACK_TIMER_DEFERRED = 16, + TCPF_MTU_REDUCED_DEFERRED = 32, +}; + struct mptcp_rm_list { u8 ids[8]; u8 nr; @@ -98502,11 +88501,6 @@ struct mptcp_out_options { }; }; -enum tcp_queue { - TCP_FRAG_IN_WRITE_QUEUE = 0, - TCP_FRAG_IN_RTX_QUEUE = 1, -}; - struct tcp_out_options { u16 options; u16 mss; @@ -98526,40 +88520,6 @@ struct tsq_tasklet { struct list_head head; }; -enum tcp_fastopen_client_fail { - TFO_STATUS_UNSPEC = 0, - TFO_COOKIE_UNAVAILABLE = 1, - TFO_DATA_NOT_ACKED = 2, - TFO_SYN_RETRANSMITTED = 3, -}; - -struct tcp_sack_block_wire { - __be32 start_seq; - __be32 end_seq; -}; - -struct static_key_false_deferred { - struct static_key_false key; - long unsigned int timeout; - struct delayed_work work; -}; - -enum tcp_ca_ack_event_flags { - CA_ACK_SLOWPATH = 1, - CA_ACK_WIN_UPDATE = 2, - CA_ACK_ECE = 4, -}; - -struct tcp_sacktag_state { - u64 first_sackt; - u64 last_sackt; - u32 reord; - u32 sack_delivered; - int flag; - unsigned int mss_now; - struct rate_sample *rate; -}; - struct tcp_md5sig { struct __kernel_sockaddr_storage tcpm_addr; __u8 tcpm_flags; @@ -98760,7 +88720,7 @@ struct bpf_iter__udp { struct udp_sock *udp_sk; }; uid_t uid; - int: 32; + long: 0; int bucket; }; @@ -98773,12 +88733,12 @@ struct inet_protosw { unsigned char flags; }; -typedef struct sock * (*udp_lookup_t)(const struct sk_buff *, __be16, __be16); - 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); + struct arpreq { struct sockaddr arp_pa; struct sockaddr arp_ha; @@ -98787,24 +88747,6 @@ struct arpreq { char arp_dev[16]; }; -enum { - AX25_VALUES_IPDEFMODE = 0, - AX25_VALUES_AXDEFMODE = 1, - AX25_VALUES_BACKOFF = 2, - AX25_VALUES_CONMODE = 3, - AX25_VALUES_WINDOW = 4, - AX25_VALUES_EWINDOW = 5, - AX25_VALUES_T1 = 6, - AX25_VALUES_T2 = 7, - AX25_VALUES_T3 = 8, - AX25_VALUES_IDLE = 9, - AX25_VALUES_N2 = 10, - AX25_VALUES_PACLEN = 11, - AX25_VALUES_PROTOCOL = 12, - AX25_VALUES_DS_TIMEOUT = 13, - AX25_MAX_VALUES = 14, -}; - enum ip_conntrack_status { IPS_EXPECTED_BIT = 0, IPS_EXPECTED = 1, @@ -98923,8 +88865,7 @@ enum { IFA_FLAGS = 8, IFA_RT_PRIORITY = 9, IFA_TARGET_NETNSID = 10, - IFA_PROTO = 11, - __IFA_MAX = 12, + __IFA_MAX = 11, }; struct ifa_cacheinfo { @@ -98974,7 +88915,50 @@ struct inet_fill_args { struct devinet_sysctl_table { struct ctl_table_header *sysctl_header; - struct ctl_table devinet_vars[34]; + struct ctl_table devinet_vars[33]; +}; + +struct rtentry { + long unsigned int rt_pad1; + struct sockaddr rt_dst; + struct sockaddr rt_gateway; + struct sockaddr rt_genmask; + short unsigned int rt_flags; + short int rt_pad2; + long unsigned int rt_pad3; + void *rt_pad4; + short int rt_metric; + char *rt_dev; + long unsigned int rt_mtu; + long unsigned int rt_window; + 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; + struct sockaddr rt_gateway; + struct sockaddr rt_genmask; + short unsigned int rt_flags; + short int rt_pad2; + u32 rt_pad3; + unsigned char rt_tos; + unsigned char rt_class; + short int rt_pad4; + short int rt_metric; + compat_uptr_t rt_dev; + u32 rt_mtu; + u32 rt_window; + short unsigned int rt_irtt; }; struct igmphdr { @@ -99027,52 +89011,9 @@ struct igmp_mcf_iter_state { struct ip_mc_list *im; }; -struct rtentry { - long unsigned int rt_pad1; - struct sockaddr rt_dst; - struct sockaddr rt_gateway; - struct sockaddr rt_genmask; - short unsigned int rt_flags; - short int rt_pad2; - long unsigned int rt_pad3; - void *rt_pad4; - short int rt_metric; - char *rt_dev; - long unsigned int rt_mtu; - long unsigned int rt_window; - 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; - struct sockaddr rt_gateway; - struct sockaddr rt_genmask; - short unsigned int rt_flags; - short int rt_pad2; - u32 rt_pad3; - unsigned char rt_tos; - unsigned char rt_class; - short int rt_pad4; - short int rt_metric; - compat_uptr_t rt_dev; - u32 rt_mtu; - u32 rt_window; - short unsigned int rt_irtt; -}; - struct fib_config { u8 fc_dst_len; - dscp_t fc_dscp; + u8 fc_tos; u8 fc_protocol; u8 fc_scope; u8 fc_type; @@ -99533,12 +89474,11 @@ struct rtm_dump_nexthop_bucket_data { struct nh_dump_filter filter; }; -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; +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 { @@ -99546,6 +89486,18 @@ struct snmp_mib { int entry; }; +struct fib4_rule { + struct fib_rule common; + u8 dst_len; + u8 src_len; + u8 tos; + __be32 src; + __be32 srcmask; + __be32 dst; + __be32 dstmask; + u32 tclassid; +}; + enum { PIM_TYPE_HELLO = 0, PIM_TYPE_REGISTER = 1, @@ -99663,7 +89615,6 @@ enum { struct vif_device { struct net_device *dev; - netdevice_tracker dev_tracker; long unsigned int bytes_in; long unsigned int bytes_out; long unsigned int pkt_in; @@ -99795,204 +89746,12 @@ struct compat_sioc_vif_req { compat_ulong_t obytes; }; -struct fib4_rule { - struct fib_rule common; - u8 dst_len; - u8 src_len; - dscp_t dscp; - __be32 src; - __be32 srcmask; - __be32 dst; - __be32 dstmask; - u32 tclassid; -}; - struct rta_mfc_stats { __u64 mfcs_packets; __u64 mfcs_bytes; __u64 mfcs_wrong_if; }; -struct inet_diag_sockid { - __be16 idiag_sport; - __be16 idiag_dport; - __be32 idiag_src[4]; - __be32 idiag_dst[4]; - __u32 idiag_if; - __u32 idiag_cookie[2]; -}; - -struct inet_diag_req { - __u8 idiag_family; - __u8 idiag_src_len; - __u8 idiag_dst_len; - __u8 idiag_ext; - struct inet_diag_sockid id; - __u32 idiag_states; - __u32 idiag_dbs; -}; - -struct inet_diag_req_v2 { - __u8 sdiag_family; - __u8 sdiag_protocol; - __u8 idiag_ext; - __u8 pad; - __u32 idiag_states; - struct inet_diag_sockid id; -}; - -struct inet_diag_bc_op { - unsigned char code; - unsigned char yes; - short unsigned int no; -}; - -enum { - INET_DIAG_BC_NOP = 0, - INET_DIAG_BC_JMP = 1, - INET_DIAG_BC_S_GE = 2, - INET_DIAG_BC_S_LE = 3, - INET_DIAG_BC_D_GE = 4, - INET_DIAG_BC_D_LE = 5, - INET_DIAG_BC_AUTO = 6, - INET_DIAG_BC_S_COND = 7, - INET_DIAG_BC_D_COND = 8, - INET_DIAG_BC_DEV_COND = 9, - INET_DIAG_BC_MARK_COND = 10, - INET_DIAG_BC_S_EQ = 11, - INET_DIAG_BC_D_EQ = 12, - INET_DIAG_BC_CGROUP_COND = 13, -}; - -struct inet_diag_hostcond { - __u8 family; - __u8 prefix_len; - int port; - __be32 addr[0]; -}; - -struct inet_diag_markcond { - __u32 mark; - __u32 mask; -}; - -struct inet_diag_msg { - __u8 idiag_family; - __u8 idiag_state; - __u8 idiag_timer; - __u8 idiag_retrans; - struct inet_diag_sockid id; - __u32 idiag_expires; - __u32 idiag_rqueue; - __u32 idiag_wqueue; - __u32 idiag_uid; - __u32 idiag_inode; -}; - -enum { - INET_DIAG_NONE = 0, - INET_DIAG_MEMINFO = 1, - INET_DIAG_INFO = 2, - INET_DIAG_VEGASINFO = 3, - INET_DIAG_CONG = 4, - INET_DIAG_TOS = 5, - INET_DIAG_TCLASS = 6, - INET_DIAG_SKMEMINFO = 7, - INET_DIAG_SHUTDOWN = 8, - INET_DIAG_DCTCPINFO = 9, - INET_DIAG_PROTOCOL = 10, - INET_DIAG_SKV6ONLY = 11, - INET_DIAG_LOCALS = 12, - INET_DIAG_PEERS = 13, - INET_DIAG_PAD = 14, - INET_DIAG_MARK = 15, - INET_DIAG_BBRINFO = 16, - INET_DIAG_CLASS_ID = 17, - INET_DIAG_MD5SIG = 18, - INET_DIAG_ULP_INFO = 19, - INET_DIAG_SK_BPF_STORAGES = 20, - INET_DIAG_CGROUP_ID = 21, - INET_DIAG_SOCKOPT = 22, - __INET_DIAG_MAX = 23, -}; - -struct inet_diag_meminfo { - __u32 idiag_rmem; - __u32 idiag_wmem; - __u32 idiag_fmem; - __u32 idiag_tmem; -}; - -struct inet_diag_sockopt { - __u8 recverr: 1; - __u8 is_icsk: 1; - __u8 freebind: 1; - __u8 hdrincl: 1; - __u8 mc_loop: 1; - __u8 transparent: 1; - __u8 mc_all: 1; - __u8 nodefrag: 1; - __u8 bind_address_no_port: 1; - __u8 recverr_rfc4884: 1; - __u8 defer_connect: 1; - __u8 unused: 5; -}; - -struct inet_diag_handler { - void (*dump)(struct sk_buff *, struct netlink_callback *, const struct inet_diag_req_v2 *); - int (*dump_one)(struct netlink_callback *, const struct inet_diag_req_v2 *); - void (*idiag_get_info)(struct sock *, struct inet_diag_msg *, void *); - int (*idiag_get_aux)(struct sock *, bool, struct sk_buff *); - size_t (*idiag_get_aux_size)(struct sock *, bool); - int (*destroy)(struct sk_buff *, const struct inet_diag_req_v2 *); - __u16 idiag_type; - __u16 idiag_info_size; -}; - -struct bpf_sk_storage_diag; - -struct inet_diag_dump_data { - struct nlattr *req_nlas[4]; - struct bpf_sk_storage_diag *bpf_stg_diag; -}; - -struct inet_diag_entry { - const __be32 *saddr; - const __be32 *daddr; - u16 sport; - u16 dport; - u16 family; - u16 userlocks; - u32 ifindex; - u32 mark; - u64 cgroup_id; -}; - -struct inet_diag_req_raw { - __u8 sdiag_family; - __u8 sdiag_protocol; - __u8 idiag_ext; - __u8 sdiag_raw_protocol; - __u32 idiag_states; - struct inet_diag_sockid id; -}; - -enum { - INET_ULP_INFO_UNSPEC = 0, - INET_ULP_INFO_NAME = 1, - INET_ULP_INFO_TLS = 2, - INET_ULP_INFO_MPTCP = 3, - __INET_ULP_INFO_MAX = 4, -}; - -struct tcp_diag_md5sig { - __u8 tcpm_family; - __u8 tcpm_prefixlen; - __u16 tcpm_keylen; - __be32 tcpm_addr[4]; - __u8 tcpm_key[80]; -}; - struct bictcp { u32 cnt; u32 last_max_cwnd; @@ -100013,12 +89772,6 @@ struct bictcp { u32 curr_rtt; }; -enum { - UDP_BPF_IPV4 = 0, - UDP_BPF_IPV6 = 1, - UDP_BPF_NUM_PROTS = 2, -}; - struct tls_rec { struct list_head list; int tx_ready; @@ -100067,37 +89820,10 @@ enum { TCP_BPF_NUM_CFGS = 4, }; -struct netlbl_audit { - u32 secid; - kuid_t loginuid; - unsigned int sessionid; -}; - -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; -}; - -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 { + UDP_BPF_IPV4 = 0, + UDP_BPF_IPV6 = 1, + UDP_BPF_NUM_PROTS = 2, }; struct cipso_v4_map_cache_bkt { @@ -100139,12 +89865,6 @@ struct xfrm_state_afinfo { void (*local_error)(struct sk_buff *, u32); }; -struct xfrm_input_afinfo { - u8 family; - bool is_ipip; - int (*callback)(struct sk_buff *, u8, int); -}; - struct ip_tunnel; struct ip6_tnl; @@ -100160,6 +89880,18 @@ struct xfrm_tunnel_skb_cb { } tunnel; }; +struct xfrm_mode_skb_cb { + struct xfrm_tunnel_skb_cb header; + __be16 id; + __be16 frag_off; + u8 ihl; + u8 tos; + u8 ttl; + u8 protocol; + u8 optlen; + u8 flow_lbl[3]; +}; + struct xfrm_spi_skb_cb { struct xfrm_tunnel_skb_cb header; unsigned int daddroff; @@ -100167,6 +89899,12 @@ struct xfrm_spi_skb_cb { __be32 seq; }; +struct xfrm_input_afinfo { + u8 family; + bool is_ipip; + int (*callback)(struct sk_buff *, u8, int); +}; + struct xfrm4_protocol { int (*handler)(struct sk_buff *); int (*input_handler)(struct sk_buff *, int, __be32, int); @@ -100176,18 +89914,6 @@ struct xfrm4_protocol { int priority; }; -struct xfrm_mode_skb_cb { - struct xfrm_tunnel_skb_cb header; - __be16 id; - __be16 frag_off; - u8 ihl; - u8 tos; - u8 ttl; - u8 protocol; - u8 optlen; - u8 flow_lbl[3]; -}; - typedef u64 (*btf_bpf_tcp_send_ack)(struct tcp_sock *, u32); enum { @@ -100224,26 +89950,6 @@ struct xfrm_policy_walk { u32 seq; }; -struct xfrm_kmaddress { - xfrm_address_t local; - xfrm_address_t remote; - u32 reserved; - u16 family; -}; - -struct xfrm_migrate { - xfrm_address_t old_daddr; - xfrm_address_t old_saddr; - xfrm_address_t new_daddr; - xfrm_address_t new_saddr; - u8 proto; - u8 mode; - u16 reserved; - u32 reqid; - u16 old_family; - u16 new_family; -}; - struct xfrmk_spdinfo { u32 incnt; u32 outcnt; @@ -100280,35 +89986,123 @@ struct xfrm_pol_inexact_node { struct hlist_head hhead; }; -struct xfrm_pol_inexact_key { - possible_net_t net; - u32 if_id; +struct xfrm_pol_inexact_key { + possible_net_t net; + u32 if_id; + u16 family; + u8 dir; + u8 type; +}; + +struct xfrm_pol_inexact_bin { + struct xfrm_pol_inexact_key k; + struct rhash_head head; + struct hlist_head hhead; + seqcount_spinlock_t count; + struct rb_root root_d; + struct rb_root root_s; + struct list_head inexact_bins; + struct callback_head rcu; +}; + +enum xfrm_pol_inexact_candidate_type { + XFRM_POL_CAND_BOTH = 0, + XFRM_POL_CAND_SADDR = 1, + XFRM_POL_CAND_DADDR = 2, + XFRM_POL_CAND_ANY = 3, + XFRM_POL_CAND_MAX = 4, +}; + +struct xfrm_pol_inexact_candidates { + struct hlist_head *res[4]; +}; + +enum xfrm_ae_ftype_t { + XFRM_AE_UNSPEC = 0, + XFRM_AE_RTHR = 1, + XFRM_AE_RVAL = 2, + XFRM_AE_LVAL = 4, + XFRM_AE_ETHR = 8, + XFRM_AE_CR = 16, + XFRM_AE_CE = 32, + XFRM_AE_CU = 64, + __XFRM_AE_MAX = 65, +}; + +enum xfrm_nlgroups { + XFRMNLGRP_NONE = 0, + XFRMNLGRP_ACQUIRE = 1, + XFRMNLGRP_EXPIRE = 2, + XFRMNLGRP_SA = 3, + XFRMNLGRP_POLICY = 4, + XFRMNLGRP_AEVENTS = 5, + XFRMNLGRP_REPORT = 6, + XFRMNLGRP_MIGRATE = 7, + XFRMNLGRP_MAPPING = 8, + __XFRMNLGRP_MAX = 9, +}; + +enum { + XFRM_MODE_FLAG_TUNNEL = 1, +}; + +struct km_event { + union { + u32 hard; + u32 proto; + u32 byid; + u32 aevent; + u32 type; + } data; + u32 seq; + u32 portid; + u32 event; + struct net *net; +}; + +struct xfrm_kmaddress { + xfrm_address_t local; + xfrm_address_t remote; + u32 reserved; u16 family; - u8 dir; - u8 type; }; -struct xfrm_pol_inexact_bin { - struct xfrm_pol_inexact_key k; - struct rhash_head head; - struct hlist_head hhead; - seqcount_spinlock_t count; - struct rb_root root_d; - struct rb_root root_s; - struct list_head inexact_bins; - struct callback_head rcu; +struct xfrm_migrate { + xfrm_address_t old_daddr; + xfrm_address_t old_saddr; + xfrm_address_t new_daddr; + xfrm_address_t new_saddr; + u8 proto; + u8 mode; + u16 reserved; + u32 reqid; + u16 old_family; + u16 new_family; }; -enum xfrm_pol_inexact_candidate_type { - XFRM_POL_CAND_BOTH = 0, - XFRM_POL_CAND_SADDR = 1, - XFRM_POL_CAND_DADDR = 2, - XFRM_POL_CAND_ANY = 3, - XFRM_POL_CAND_MAX = 4, +struct xfrm_mgr { + struct list_head list; + int (*notify)(struct xfrm_state *, const struct km_event *); + int (*acquire)(struct xfrm_state *, struct xfrm_tmpl *, struct xfrm_policy *); + struct xfrm_policy * (*compile_policy)(struct sock *, int, u8 *, int, int *); + int (*new_mapping)(struct xfrm_state *, xfrm_address_t *, __be16); + int (*notify_policy)(struct xfrm_policy *, int, const struct km_event *); + int (*report)(struct net *, u8, struct xfrm_selector *, xfrm_address_t *); + int (*migrate)(const struct xfrm_selector *, u8, u8, const struct xfrm_migrate *, int, const struct xfrm_kmaddress *, const struct xfrm_encap_tmpl *); + bool (*is_alive)(const struct km_event *); }; -struct xfrm_pol_inexact_candidates { - struct hlist_head *res[4]; +struct xfrmk_sadinfo { + u32 sadhcnt; + u32 sadhmcnt; + u32 sadcnt; +}; + +struct xfrm_translator { + int (*alloc_compat)(struct sk_buff *, const struct nlmsghdr *); + struct nlmsghdr * (*rcv_msg_compat)(const struct nlmsghdr *, int, const struct nla_policy *, struct netlink_ext_ack *); + int (*xlate_user_policy_sockptr)(u8 **, int); + struct module *owner; }; struct ip_beet_phdr { @@ -100318,10 +90112,6 @@ struct ip_beet_phdr { __u8 reserved; }; -enum { - XFRM_MODE_FLAG_TUNNEL = 1, -}; - struct ip_tunnel_6rd_parm { struct in6_addr prefix; __be32 relay_prefix; @@ -100329,13 +90119,16 @@ struct ip_tunnel_6rd_parm { u16 relay_prefixlen; }; +struct ip_tunnel_fan { + struct list_head fan_maps; +}; + struct ip_tunnel_prl_entry; struct ip_tunnel { struct ip_tunnel *next; struct hlist_node hash_node; struct net_device *dev; - netdevice_tracker dev_tracker; struct net *net; long unsigned int err_time; int err_count; @@ -100355,6 +90148,7 @@ struct ip_tunnel { struct ip_tunnel_6rd_parm ip6rd; struct ip_tunnel_prl_entry *prl; unsigned int prl_count; + struct ip_tunnel_fan fan; unsigned int ip_tnl_net_id; struct gro_cells gro_cells; __u32 fwmark; @@ -100387,7 +90181,6 @@ struct __ip6_tnl_parm { struct ip6_tnl { struct ip6_tnl *next; struct net_device *dev; - netdevice_tracker dev_tracker; struct net *net; struct __ip6_tnl_parm parms; struct flowi fl; @@ -100426,7 +90219,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; }; @@ -100439,329 +90233,11 @@ struct xfrm_trans_cb { struct net *net; }; -enum xfrm_ae_ftype_t { - XFRM_AE_UNSPEC = 0, - XFRM_AE_RTHR = 1, - XFRM_AE_RVAL = 2, - XFRM_AE_LVAL = 4, - XFRM_AE_ETHR = 8, - XFRM_AE_CR = 16, - XFRM_AE_CE = 32, - XFRM_AE_CU = 64, - __XFRM_AE_MAX = 65, -}; - -enum xfrm_nlgroups { - XFRMNLGRP_NONE = 0, - XFRMNLGRP_ACQUIRE = 1, - XFRMNLGRP_EXPIRE = 2, - XFRMNLGRP_SA = 3, - XFRMNLGRP_POLICY = 4, - XFRMNLGRP_AEVENTS = 5, - XFRMNLGRP_REPORT = 6, - XFRMNLGRP_MIGRATE = 7, - XFRMNLGRP_MAPPING = 8, - __XFRMNLGRP_MAX = 9, -}; - -struct km_event { - union { - u32 hard; - u32 proto; - u32 byid; - u32 aevent; - u32 type; - } data; - u32 seq; - u32 portid; - u32 event; - struct net *net; -}; - -struct xfrm_mgr { - struct list_head list; - int (*notify)(struct xfrm_state *, const struct km_event *); - int (*acquire)(struct xfrm_state *, struct xfrm_tmpl *, struct xfrm_policy *); - struct xfrm_policy * (*compile_policy)(struct sock *, int, u8 *, int, int *); - int (*new_mapping)(struct xfrm_state *, xfrm_address_t *, __be16); - int (*notify_policy)(struct xfrm_policy *, int, const struct km_event *); - int (*report)(struct net *, u8, struct xfrm_selector *, xfrm_address_t *); - int (*migrate)(const struct xfrm_selector *, u8, u8, const struct xfrm_migrate *, int, const struct xfrm_kmaddress *, const struct xfrm_encap_tmpl *); - bool (*is_alive)(const struct km_event *); -}; - -struct xfrmk_sadinfo { - u32 sadhcnt; - u32 sadhmcnt; - u32 sadcnt; -}; - -struct xfrm_translator { - int (*alloc_compat)(struct sk_buff *, const struct nlmsghdr *); - struct nlmsghdr * (*rcv_msg_compat)(const struct nlmsghdr *, int, const struct nla_policy *, struct netlink_ext_ack *); - int (*xlate_user_policy_sockptr)(u8 **, int); - struct module *owner; -}; - struct xfrm_user_offload { int ifindex; __u8 flags; }; -struct sadb_alg { - __u8 sadb_alg_id; - __u8 sadb_alg_ivlen; - __u16 sadb_alg_minbits; - __u16 sadb_alg_maxbits; - __u16 sadb_alg_reserved; -}; - -struct xfrm_algo_aead_info { - char *geniv; - u16 icv_truncbits; -}; - -struct xfrm_algo_auth_info { - u16 icv_truncbits; - u16 icv_fullbits; -}; - -struct xfrm_algo_encr_info { - char *geniv; - u16 blockbits; - u16 defkeybits; -}; - -struct xfrm_algo_comp_info { - u16 threshold; -}; - -struct xfrm_algo_desc { - char *name; - char *compat; - u8 available: 1; - u8 pfkey_supported: 1; - union { - struct xfrm_algo_aead_info aead; - struct xfrm_algo_auth_info auth; - struct xfrm_algo_encr_info encr; - struct xfrm_algo_comp_info comp; - } uinfo; - struct sadb_alg desc; -}; - -struct xfrm_algo_list { - struct xfrm_algo_desc *algs; - int entries; - u32 type; - u32 mask; -}; - -struct xfrm_aead_name { - const char *name; - int icvbits; -}; - -enum { - XFRM_SHARE_ANY = 0, - XFRM_SHARE_SESSION = 1, - XFRM_SHARE_USER = 2, - XFRM_SHARE_UNIQUE = 3, -}; - -struct xfrm_user_tmpl { - struct xfrm_id id; - __u16 family; - xfrm_address_t saddr; - __u32 reqid; - __u8 mode; - __u8 share; - __u8 optional; - __u32 aalgos; - __u32 ealgos; - __u32 calgos; -}; - -struct xfrm_userpolicy_type { - __u8 type; - __u16 reserved1; - __u8 reserved2; -}; - -enum xfrm_sadattr_type_t { - XFRMA_SAD_UNSPEC = 0, - XFRMA_SAD_CNT = 1, - XFRMA_SAD_HINFO = 2, - __XFRMA_SAD_MAX = 3, -}; - -struct xfrmu_sadhinfo { - __u32 sadhcnt; - __u32 sadhmcnt; -}; - -enum xfrm_spdattr_type_t { - XFRMA_SPD_UNSPEC = 0, - XFRMA_SPD_INFO = 1, - XFRMA_SPD_HINFO = 2, - XFRMA_SPD_IPV4_HTHRESH = 3, - XFRMA_SPD_IPV6_HTHRESH = 4, - __XFRMA_SPD_MAX = 5, -}; - -struct xfrmu_spdinfo { - __u32 incnt; - __u32 outcnt; - __u32 fwdcnt; - __u32 inscnt; - __u32 outscnt; - __u32 fwdscnt; -}; - -struct xfrmu_spdhinfo { - __u32 spdhcnt; - __u32 spdhmcnt; -}; - -struct xfrmu_spdhthresh { - __u8 lbits; - __u8 rbits; -}; - -struct xfrm_usersa_info { - struct xfrm_selector sel; - struct xfrm_id id; - xfrm_address_t saddr; - struct xfrm_lifetime_cfg lft; - struct xfrm_lifetime_cur curlft; - struct xfrm_stats stats; - __u32 seq; - __u32 reqid; - __u16 family; - __u8 mode; - __u8 replay_window; - __u8 flags; -}; - -struct xfrm_usersa_id { - xfrm_address_t daddr; - __be32 spi; - __u16 family; - __u8 proto; -}; - -struct xfrm_aevent_id { - struct xfrm_usersa_id sa_id; - xfrm_address_t saddr; - __u32 flags; - __u32 reqid; -}; - -struct xfrm_userspi_info { - struct xfrm_usersa_info info; - __u32 min; - __u32 max; -}; - -struct xfrm_userpolicy_info { - struct xfrm_selector sel; - struct xfrm_lifetime_cfg lft; - struct xfrm_lifetime_cur curlft; - __u32 priority; - __u32 index; - __u8 dir; - __u8 action; - __u8 flags; - __u8 share; -}; - -struct xfrm_userpolicy_id { - struct xfrm_selector sel; - __u32 index; - __u8 dir; -}; - -struct xfrm_user_acquire { - struct xfrm_id id; - xfrm_address_t saddr; - struct xfrm_selector sel; - struct xfrm_userpolicy_info policy; - __u32 aalgos; - __u32 ealgos; - __u32 calgos; - __u32 seq; -}; - -struct xfrm_user_expire { - struct xfrm_usersa_info state; - __u8 hard; -}; - -struct xfrm_user_polexpire { - struct xfrm_userpolicy_info pol; - __u8 hard; -}; - -struct xfrm_usersa_flush { - __u8 proto; -}; - -struct xfrm_user_report { - __u8 proto; - struct xfrm_selector sel; -}; - -struct xfrm_user_kmaddress { - xfrm_address_t local; - xfrm_address_t remote; - __u32 reserved; - __u16 family; -}; - -struct xfrm_user_migrate { - xfrm_address_t old_daddr; - xfrm_address_t old_saddr; - xfrm_address_t new_daddr; - xfrm_address_t new_saddr; - __u8 proto; - __u8 mode; - __u16 reserved; - __u32 reqid; - __u16 old_family; - __u16 new_family; -}; - -struct xfrm_user_mapping { - struct xfrm_usersa_id id; - __u32 reqid; - xfrm_address_t old_saddr; - xfrm_address_t new_saddr; - __be16 old_sport; - __be16 new_sport; -}; - -struct xfrm_userpolicy_default { - __u8 in; - __u8 fwd; - __u8 out; -}; - -struct xfrm_dump_info { - struct sk_buff *in_skb; - struct sk_buff *out_skb; - u32 nlmsg_seq; - u16 nlmsg_flags; -}; - -struct xfrm_link { - int (*doit)(struct sk_buff *, struct nlmsghdr *, struct nlattr **); - int (*start)(struct netlink_callback *); - int (*dump)(struct sk_buff *, struct netlink_callback *); - int (*done)(struct netlink_callback *); - const struct nla_policy *nla_pol; - int nla_max; -}; - struct espintcp_msg { struct sk_buff *skb; struct sk_msg skmsg; @@ -100791,15 +90267,6 @@ struct unix_stream_read_state { unsigned int splice_flags; }; -struct bpf_unix_iter_state { - struct seq_net_private p; - unsigned int cur_sk; - unsigned int end_sk; - unsigned int max_sk; - struct sock **batch; - bool st_bucket_done; -}; - struct bpf_iter__unix { union { struct bpf_iter_meta *meta; @@ -100810,53 +90277,6 @@ struct bpf_iter__unix { uid_t uid; }; -struct unix_diag_req { - __u8 sdiag_family; - __u8 sdiag_protocol; - __u16 pad; - __u32 udiag_states; - __u32 udiag_ino; - __u32 udiag_show; - __u32 udiag_cookie[2]; -}; - -struct unix_diag_msg { - __u8 udiag_family; - __u8 udiag_type; - __u8 udiag_state; - __u8 pad; - __u32 udiag_ino; - __u32 udiag_cookie[2]; -}; - -enum { - UNIX_DIAG_NAME = 0, - UNIX_DIAG_VFS = 1, - UNIX_DIAG_PEER = 2, - UNIX_DIAG_ICONS = 3, - UNIX_DIAG_RQLEN = 4, - UNIX_DIAG_MEMINFO = 5, - UNIX_DIAG_SHUTDOWN = 6, - UNIX_DIAG_UID = 7, - __UNIX_DIAG_MAX = 8, -}; - -struct unix_diag_vfs { - __u32 udiag_vfs_ino; - __u32 udiag_vfs_dev; -}; - -struct unix_diag_rqlen { - __u32 udiag_rqueue; - __u32 udiag_wqueue; -}; - -struct ac6_iter_state { - struct seq_net_private p; - struct net_device *dev; - struct inet6_dev *idev; -}; - struct ioam6_pernet_data { struct mutex lock; struct rhashtable namespaces; @@ -100900,6 +90320,12 @@ struct compat_in6_rtmsg { s32 rtmsg_ifindex; }; +struct ac6_iter_state { + struct seq_net_private p; + struct net_device *dev; + struct inet6_dev *idev; +}; + struct ip6_fraglist_iter { struct ipv6hdr *tmp_hdr; struct sk_buff *frag; @@ -100933,9 +90359,15 @@ struct ipcm6_cookie { struct sockcm_cookie sockc; __s16 hlimit; __s16 tclass; - __u16 gso_size; __s8 dontfrag; struct ipv6_txoptions *opt; + __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 { @@ -100966,32 +90398,6 @@ struct ifla_cacheinfo { __u32 retrans_time; }; -struct wpan_phy; - -struct wpan_dev_header_ops; - -struct wpan_dev { - struct wpan_phy *wpan_phy; - int iftype; - struct list_head list; - struct net_device *netdev; - const struct wpan_dev_header_ops *header_ops; - struct net_device *lowpan_dev; - u32 identifier; - __le16 pan_id; - __le16 short_addr; - __le64 extended_addr; - atomic_t bsn; - atomic_t dsn; - u8 min_be; - u8 max_be; - u8 csma_retries; - s8 frame_retries; - bool lbt; - bool promiscuous_mode; - bool ackreq; -}; - struct prefixmsg { unsigned char prefix_family; unsigned char prefix_pad1; @@ -101078,8 +90484,7 @@ enum { DEVCONF_IOAM6_ENABLED = 53, DEVCONF_IOAM6_ID = 54, DEVCONF_IOAM6_ID_WIDE = 55, - DEVCONF_NDISC_EVICT_NOCARRIER = 56, - DEVCONF_MAX = 57, + DEVCONF_MAX = 56, }; enum { @@ -101090,90 +90495,6 @@ enum { INET6_IFADDR_STATE_DEAD = 4, }; -enum nl802154_cca_modes { - __NL802154_CCA_INVALID = 0, - NL802154_CCA_ENERGY = 1, - NL802154_CCA_CARRIER = 2, - NL802154_CCA_ENERGY_CARRIER = 3, - NL802154_CCA_ALOHA = 4, - NL802154_CCA_UWB_SHR = 5, - NL802154_CCA_UWB_MULTIPLEXED = 6, - __NL802154_CCA_ATTR_AFTER_LAST = 7, - NL802154_CCA_ATTR_MAX = 6, -}; - -enum nl802154_cca_opts { - NL802154_CCA_OPT_ENERGY_CARRIER_AND = 0, - NL802154_CCA_OPT_ENERGY_CARRIER_OR = 1, - __NL802154_CCA_OPT_ATTR_AFTER_LAST = 2, - NL802154_CCA_OPT_ATTR_MAX = 1, -}; - -enum nl802154_supported_bool_states { - NL802154_SUPPORTED_BOOL_FALSE = 0, - NL802154_SUPPORTED_BOOL_TRUE = 1, - __NL802154_SUPPORTED_BOOL_INVALD = 2, - NL802154_SUPPORTED_BOOL_BOTH = 3, - __NL802154_SUPPORTED_BOOL_AFTER_LAST = 4, - NL802154_SUPPORTED_BOOL_MAX = 3, -}; - -struct wpan_phy_supported { - u32 channels[32]; - u32 cca_modes; - u32 cca_opts; - u32 iftypes; - enum nl802154_supported_bool_states lbt; - u8 min_minbe; - u8 max_minbe; - u8 min_maxbe; - u8 max_maxbe; - u8 min_csma_backoffs; - u8 max_csma_backoffs; - s8 min_frame_retries; - s8 max_frame_retries; - size_t tx_powers_size; - size_t cca_ed_levels_size; - const s32 *tx_powers; - const s32 *cca_ed_levels; -}; - -struct wpan_phy_cca { - enum nl802154_cca_modes mode; - enum nl802154_cca_opts opt; -}; - -struct wpan_phy { - const void *privid; - u32 flags; - u8 current_channel; - u8 current_page; - struct wpan_phy_supported supported; - s32 transmit_power; - struct wpan_phy_cca cca; - __le64 perm_extended_addr; - s32 cca_ed_level; - u8 symbol_duration; - u16 lifs_period; - u16 sifs_period; - struct device dev; - possible_net_t _net; - char priv[0]; -}; - -struct ieee802154_addr { - u8 mode; - __le16 pan_id; - union { - __le16 short_addr; - __le64 extended_addr; - }; -}; - -struct wpan_dev_header_ops { - int (*create)(struct sk_buff *, struct net_device *, const struct ieee802154_addr *, const struct ieee802154_addr *, unsigned int); -}; - union fwnet_hwaddr { u8 u[16]; struct { @@ -101194,7 +90515,6 @@ struct in6_validator_info { struct ifa6_config { const struct in6_addr *pfx; unsigned int plen; - u8 ifa_proto; const struct in6_addr *peer_pfx; u32 rt_priority; u32 ifa_flags; @@ -101214,14 +90534,12 @@ enum { IPV6_SADDR_RULE_LOCAL = 1, IPV6_SADDR_RULE_SCOPE = 2, IPV6_SADDR_RULE_PREFERRED = 3, - IPV6_SADDR_RULE_HOA = 4, - IPV6_SADDR_RULE_OIF = 5, - IPV6_SADDR_RULE_LABEL = 6, - IPV6_SADDR_RULE_PRIVACY = 7, - IPV6_SADDR_RULE_ORCHID = 8, - IPV6_SADDR_RULE_PREFIX = 9, - IPV6_SADDR_RULE_NOT_OPTIMISTIC = 10, - IPV6_SADDR_RULE_MAX = 11, + IPV6_SADDR_RULE_OIF = 4, + IPV6_SADDR_RULE_LABEL = 5, + IPV6_SADDR_RULE_PRIVACY = 6, + IPV6_SADDR_RULE_ORCHID = 7, + IPV6_SADDR_RULE_PREFIX = 8, + IPV6_SADDR_RULE_MAX = 9, }; struct ipv6_saddr_score { @@ -101300,91 +90618,18 @@ struct ip6addrlbl_init_table { u32 label; }; +struct rd_msg { + struct icmp6hdr icmph; + struct in6_addr target; + struct in6_addr dest; + __u8 opt[0]; +}; + struct fib6_gc_args { int timeout; int more; }; -enum fib6_walk_state { - FWS_S = 0, - FWS_L = 1, - FWS_R = 2, - FWS_C = 3, - FWS_U = 4, -}; - -struct fib6_walker { - struct list_head lh; - struct fib6_node *root; - struct fib6_node *node; - struct fib6_info *leaf; - enum fib6_walk_state state; - unsigned int skip; - unsigned int count; - unsigned int skip_in_node; - int (*func)(struct fib6_walker *); - void *args; -}; - -struct fib6_entry_notifier_info { - struct fib_notifier_info info; - struct fib6_info *rt; - unsigned int nsiblings; -}; - -struct ipv6_route_iter { - struct seq_net_private p; - struct fib6_walker w; - loff_t skip; - struct fib6_table *tbl; - int sernum; -}; - -struct bpf_iter__ipv6_route { - union { - struct bpf_iter_meta *meta; - }; - union { - struct fib6_info *rt; - }; -}; - -struct rt6_rtnl_dump_arg { - struct sk_buff *skb; - struct netlink_callback *cb; - struct net *net; - struct fib_dump_filter filter; -}; - -struct fib6_cleaner { - struct fib6_walker w; - struct net *net; - int (*func)(struct fib6_info *, void *); - int sernum; - void *arg; - bool skip_notify; -}; - -enum { - FIB6_NO_SERNUM_CHANGE = 0, -}; - -struct fib6_dump_arg { - struct net *net; - struct notifier_block *nb; - struct netlink_ext_ack *extack; -}; - -struct fib6_nh_pcpu_arg { - struct fib6_info *from; - const struct fib6_table *table; -}; - -struct lookup_args { - int offset; - const struct in6_addr *addr; -}; - struct rt6_exception { struct hlist_node hlist; struct rt6_info *rt6i; @@ -101405,11 +90650,11 @@ struct route_info { __u8 prefix[0]; }; -struct rd_msg { - struct icmp6hdr icmph; - struct in6_addr target; - struct in6_addr dest; - __u8 opt[0]; +struct rt6_rtnl_dump_arg { + struct sk_buff *skb; + struct netlink_callback *cb; + struct net *net; + struct fib_dump_filter filter; }; struct netevent_redirect { @@ -101464,7 +90709,6 @@ struct __rt6_probe_work { struct work_struct work; struct in6_addr target; struct net_device *dev; - netdevice_tracker dev_tracker; }; struct fib6_nh_frl_arg { @@ -101543,6 +90787,79 @@ struct fib6_nh_exception_dump_walker { unsigned int count; }; +enum fib6_walk_state { + FWS_S = 0, + FWS_L = 1, + FWS_R = 2, + FWS_C = 3, + FWS_U = 4, +}; + +struct fib6_walker { + struct list_head lh; + struct fib6_node *root; + struct fib6_node *node; + struct fib6_info *leaf; + enum fib6_walk_state state; + unsigned int skip; + unsigned int count; + unsigned int skip_in_node; + int (*func)(struct fib6_walker *); + void *args; +}; + +struct fib6_entry_notifier_info { + struct fib_notifier_info info; + struct fib6_info *rt; + unsigned int nsiblings; +}; + +struct ipv6_route_iter { + struct seq_net_private p; + struct fib6_walker w; + loff_t skip; + struct fib6_table *tbl; + int sernum; +}; + +struct bpf_iter__ipv6_route { + union { + struct bpf_iter_meta *meta; + }; + union { + struct fib6_info *rt; + }; +}; + +struct fib6_cleaner { + struct fib6_walker w; + struct net *net; + int (*func)(struct fib6_info *, void *); + int sernum; + void *arg; + bool skip_notify; +}; + +enum { + FIB6_NO_SERNUM_CHANGE = 0, +}; + +struct fib6_dump_arg { + struct net *net; + struct notifier_block *nb; + struct netlink_ext_ack *extack; +}; + +struct fib6_nh_pcpu_arg { + struct fib6_info *from; + const struct fib6_table *table; +}; + +struct lookup_args { + int offset; + const struct in6_addr *addr; +}; + struct ipv6_mreq { struct in6_addr ipv6mr_multiaddr; int ipv6mr_ifindex; @@ -101736,7 +91053,8 @@ struct ioam6_trace_hdr { __be16 namespace_id; __u8 nodelen: 5; __u8 overflow: 1; - char: 3; + char: 2; + char: 1; __u8 remlen: 7; union { __be32 type_be32; @@ -101960,13 +91278,6 @@ struct xfrm6_protocol { int priority; }; -struct fib6_rule { - struct fib_rule common; - struct rt6key src; - struct rt6key dst; - dscp_t dscp; -}; - struct br_input_skb_cb { struct net_device *brdev; u16 frag_max_size; @@ -101983,6 +91294,13 @@ struct br_input_skb_cb { struct nf_bridge_frag_data; +struct fib6_rule { + struct fib_rule common; + struct rt6key src; + struct rt6key dst; + u8 tclass; +}; + struct calipso_doi; struct netlbl_calipso_ops { @@ -102050,79 +91368,6 @@ struct seg6_lwt { struct seg6_iptunnel_encap tuninfo[0]; }; -struct sr6_tlv_hmac { - struct sr6_tlv tlvhdr; - __u16 reserved; - __be32 hmackeyid; - __u8 hmac[32]; -}; - -enum { - SEG6_HMAC_ALGO_SHA1 = 1, - SEG6_HMAC_ALGO_SHA256 = 2, -}; - -struct seg6_hmac_algo { - u8 alg_id; - char name[64]; - struct crypto_shash **tfms; - struct shash_desc **shashs; -}; - -enum { - RPL_IPTUNNEL_UNSPEC = 0, - RPL_IPTUNNEL_SRH = 1, - __RPL_IPTUNNEL_MAX = 2, -}; - -struct rpl_iptunnel_encap { - struct ipv6_rpl_sr_hdr srh[0]; -}; - -struct rpl_lwt { - struct dst_cache cache; - struct rpl_iptunnel_encap tuninfo; -}; - -enum { - __IOAM6_IPTUNNEL_MODE_MIN = 0, - IOAM6_IPTUNNEL_MODE_INLINE = 1, - IOAM6_IPTUNNEL_MODE_ENCAP = 2, - IOAM6_IPTUNNEL_MODE_AUTO = 3, - __IOAM6_IPTUNNEL_MODE_MAX = 4, -}; - -enum { - IOAM6_IPTUNNEL_UNSPEC = 0, - IOAM6_IPTUNNEL_MODE = 1, - IOAM6_IPTUNNEL_DST = 2, - IOAM6_IPTUNNEL_TRACE = 3, - IOAM6_IPTUNNEL_FREQ_K = 4, - IOAM6_IPTUNNEL_FREQ_N = 5, - __IOAM6_IPTUNNEL_MAX = 6, -}; - -struct ioam6_lwt_encap { - struct ipv6_opt_hdr eh; - u8 pad[2]; - struct ioam6_hdr ioamh; - struct ioam6_trace_hdr traceh; -}; - -struct ioam6_lwt_freq { - u32 k; - u32 n; -}; - -struct ioam6_lwt { - struct dst_cache cache; - struct ioam6_lwt_freq freq; - atomic_t pkt_cnt; - u8 mode; - struct in6_addr tundst; - struct ioam6_lwt_encap tuninfo; -}; - enum l3mdev_type { L3MDEV_TYPE_UNSPEC = 0, L3MDEV_TYPE_VRF = 1, @@ -102236,18 +91481,40 @@ struct seg6_action_param { void (*destroy)(struct seg6_local_lwt *); }; -struct rt2_hdr { - struct ipv6_rt_hdr rt_hdr; - __u32 reserved; - struct in6_addr addr; +struct sr6_tlv_hmac { + struct sr6_tlv tlvhdr; + __u16 reserved; + __be32 hmackeyid; + __u8 hmac[32]; }; -struct mip6_report_rate_limiter { - spinlock_t lock; - ktime_t stamp; - int iif; - struct in6_addr src; - struct in6_addr dst; +enum { + SEG6_HMAC_ALGO_SHA1 = 1, + SEG6_HMAC_ALGO_SHA256 = 2, +}; + +struct seg6_hmac_algo { + u8 alg_id; + char name[64]; + struct crypto_shash **tfms; + struct shash_desc **shashs; +}; + +enum { + 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 { @@ -102405,15 +91672,6 @@ struct fanout_args { __u32 max_num_members; }; -struct virtio_net_hdr { - __u8 flags; - __u8 gso_type; - __virtio16 hdr_len; - __virtio16 gso_size; - __virtio16 csum_start; - __virtio16 csum_offset; -}; - struct packet_mclist { struct packet_mclist *next; int ifindex; @@ -102581,9 +91839,8 @@ struct packet_sock { int copy_thresh; spinlock_t bind_lock; struct mutex pg_vec_lock; + long unsigned int flags; unsigned int running; - unsigned int auxdata: 1; - unsigned int origdev: 1; unsigned int has_vnet_hdr: 1; unsigned int tp_loss: 1; unsigned int tp_tx_has_off: 1; @@ -102619,11 +91876,6 @@ struct packet_sock { long: 64; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - long: 64; - long: 64; struct packet_type prot_hook; long: 64; long: 64; @@ -102649,7 +91901,6 @@ struct packet_sock { long: 64; long: 64; atomic_t tp_drops; - long: 32; long: 64; long: 64; long: 64; @@ -102683,6 +91934,11 @@ struct packet_sock { long: 64; }; +enum packet_sock_flags { + PACKET_SOCK_ORIGDEV = 0, + PACKET_SOCK_AUXDATA = 1, +}; + struct packet_mreq_max { int mr_ifindex; short unsigned int mr_type; @@ -102707,62 +91963,6 @@ struct packet_skb_cb { } sa; }; -struct packet_diag_req { - __u8 sdiag_family; - __u8 sdiag_protocol; - __u16 pad; - __u32 pdiag_ino; - __u32 pdiag_show; - __u32 pdiag_cookie[2]; -}; - -struct packet_diag_msg { - __u8 pdiag_family; - __u8 pdiag_type; - __u16 pdiag_num; - __u32 pdiag_ino; - __u32 pdiag_cookie[2]; -}; - -enum { - PACKET_DIAG_INFO = 0, - PACKET_DIAG_MCLIST = 1, - PACKET_DIAG_RX_RING = 2, - PACKET_DIAG_TX_RING = 3, - PACKET_DIAG_FANOUT = 4, - PACKET_DIAG_UID = 5, - PACKET_DIAG_MEMINFO = 6, - PACKET_DIAG_FILTER = 7, - __PACKET_DIAG_MAX = 8, -}; - -struct packet_diag_info { - __u32 pdi_index; - __u32 pdi_version; - __u32 pdi_reserve; - __u32 pdi_copy_thresh; - __u32 pdi_tstamp; - __u32 pdi_flags; -}; - -struct packet_diag_mclist { - __u32 pdmc_index; - __u32 pdmc_count; - __u16 pdmc_type; - __u16 pdmc_alen; - __u8 pdmc_addr[32]; -}; - -struct packet_diag_ring { - __u32 pdr_block_size; - __u32 pdr_block_nr; - __u32 pdr_frame_size; - __u32 pdr_frame_nr; - __u32 pdr_retire_tmo; - __u32 pdr_sizeof_priv; - __u32 pdr_features; -}; - struct vlan_group { unsigned int nr_vlan_devs; struct hlist_node hlist; @@ -102800,7 +92000,6 @@ struct vlan_dev_priv { u16 vlan_id; u16 flags; struct net_device *real_dev; - netdevice_tracker dev_tracker; unsigned char real_dev_addr[6]; struct proc_dir_entry *dent; struct vlan_pcpu_stats *vlan_pcpu_stats; @@ -102872,6 +92071,42 @@ struct netlbl_domhsh_tbl { u32 size; }; +enum { + NLBL_MGMT_C_UNSPEC = 0, + NLBL_MGMT_C_ADD = 1, + NLBL_MGMT_C_REMOVE = 2, + NLBL_MGMT_C_LISTALL = 3, + NLBL_MGMT_C_ADDDEF = 4, + NLBL_MGMT_C_REMOVEDEF = 5, + NLBL_MGMT_C_LISTDEF = 6, + NLBL_MGMT_C_PROTOCOLS = 7, + NLBL_MGMT_C_VERSION = 8, + __NLBL_MGMT_C_MAX = 9, +}; + +enum { + NLBL_MGMT_A_UNSPEC = 0, + NLBL_MGMT_A_DOMAIN = 1, + NLBL_MGMT_A_PROTOCOL = 2, + NLBL_MGMT_A_VERSION = 3, + NLBL_MGMT_A_CV4DOI = 4, + NLBL_MGMT_A_IPV6ADDR = 5, + NLBL_MGMT_A_IPV6MASK = 6, + NLBL_MGMT_A_IPV4ADDR = 7, + NLBL_MGMT_A_IPV4MASK = 8, + NLBL_MGMT_A_ADDRSELECTOR = 9, + NLBL_MGMT_A_SELECTORLIST = 10, + NLBL_MGMT_A_FAMILY = 11, + NLBL_MGMT_A_CLPDOI = 12, + __NLBL_MGMT_A_MAX = 13, +}; + +struct netlbl_domhsh_walk_arg { + struct netlink_callback *nl_cb; + struct sk_buff *skb; + u32 seq; +}; + enum { NLBL_UNLABEL_C_UNSPEC = 0, NLBL_UNLABEL_C_ACCEPT = 1, @@ -102903,13 +92138,13 @@ struct netlbl_unlhsh_tbl { }; struct netlbl_unlhsh_addr4 { - u32 secid; + struct lsmblob lsmblob; struct netlbl_af4list list; struct callback_head rcu; }; struct netlbl_unlhsh_addr6 { - u32 secid; + struct lsmblob lsmblob; struct netlbl_af6list list; struct callback_head rcu; }; @@ -102961,47 +92196,11 @@ struct netlbl_cipsov4_doiwalk_arg { u32 seq; }; -struct netlbl_domhsh_walk_arg { +struct netlbl_domhsh_walk_arg___2 { struct netlbl_audit *audit_info; u32 doi; }; -enum { - NLBL_MGMT_C_UNSPEC = 0, - NLBL_MGMT_C_ADD = 1, - NLBL_MGMT_C_REMOVE = 2, - NLBL_MGMT_C_LISTALL = 3, - NLBL_MGMT_C_ADDDEF = 4, - NLBL_MGMT_C_REMOVEDEF = 5, - NLBL_MGMT_C_LISTDEF = 6, - NLBL_MGMT_C_PROTOCOLS = 7, - NLBL_MGMT_C_VERSION = 8, - __NLBL_MGMT_C_MAX = 9, -}; - -enum { - NLBL_MGMT_A_UNSPEC = 0, - NLBL_MGMT_A_DOMAIN = 1, - NLBL_MGMT_A_PROTOCOL = 2, - NLBL_MGMT_A_VERSION = 3, - NLBL_MGMT_A_CV4DOI = 4, - NLBL_MGMT_A_IPV6ADDR = 5, - NLBL_MGMT_A_IPV6MASK = 6, - NLBL_MGMT_A_IPV4ADDR = 7, - NLBL_MGMT_A_IPV4MASK = 8, - NLBL_MGMT_A_ADDRSELECTOR = 9, - NLBL_MGMT_A_SELECTORLIST = 10, - NLBL_MGMT_A_FAMILY = 11, - NLBL_MGMT_A_CLPDOI = 12, - __NLBL_MGMT_A_MAX = 13, -}; - -struct netlbl_domhsh_walk_arg___2 { - struct netlink_callback *nl_cb; - struct sk_buff *skb; - u32 seq; -}; - enum { NLBL_CALIPSO_C_UNSPEC = 0, NLBL_CALIPSO_C_ADD = 1, @@ -103053,7 +92252,7 @@ struct iucv_irq_data { u16 ippathid; u8 ipflags1; u8 iptype; - u32 res2[8]; + u32 res2[9]; }; struct iucv_irq_list { @@ -103504,21 +92703,38 @@ struct reply_func { int (*cb)(struct net_device *, struct nlmsghdr *, u32, struct nlattr **, struct sk_buff *); }; +enum dns_payload_content_type { + DNS_PAYLOAD_IS_SERVER_LIST = 0, +}; + +struct dns_payload_header { + __u8 zero; + __u8 content; + __u8 version; +}; + +enum { + dns_key_data = 0, + dns_key_error = 1, +}; + enum switchdev_attr_id { SWITCHDEV_ATTR_ID_UNDEFINED = 0, SWITCHDEV_ATTR_ID_PORT_STP_STATE = 1, - SWITCHDEV_ATTR_ID_PORT_MST_STATE = 2, - SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS = 3, - SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS = 4, - SWITCHDEV_ATTR_ID_PORT_MROUTER = 5, - SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME = 6, - SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING = 7, - SWITCHDEV_ATTR_ID_BRIDGE_VLAN_PROTOCOL = 8, - SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED = 9, - SWITCHDEV_ATTR_ID_BRIDGE_MROUTER = 10, - SWITCHDEV_ATTR_ID_BRIDGE_MST = 11, - SWITCHDEV_ATTR_ID_MRP_PORT_ROLE = 12, - SWITCHDEV_ATTR_ID_VLAN_MSTI = 13, + SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS = 2, + SWITCHDEV_ATTR_ID_PORT_PRE_BRIDGE_FLAGS = 3, + SWITCHDEV_ATTR_ID_PORT_MROUTER = 4, + SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME = 5, + SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING = 6, + SWITCHDEV_ATTR_ID_BRIDGE_VLAN_PROTOCOL = 7, + SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED = 8, + SWITCHDEV_ATTR_ID_BRIDGE_MROUTER = 9, + SWITCHDEV_ATTR_ID_MRP_PORT_ROLE = 10, +}; + +struct switchdev_brport_flags { + long unsigned int val; + long unsigned int mask; }; struct switchdev_attr { @@ -103529,19 +92745,39 @@ struct switchdev_attr { void (*complete)(struct net_device *, int, void *); union { u8 stp_state; - struct switchdev_mst_state mst_state; struct switchdev_brport_flags brport_flags; bool mrouter; clock_t ageing_time; bool vlan_filtering; u16 vlan_protocol; - bool mst; bool mc_disabled; u8 mrp_port_role; - struct switchdev_vlan_msti vlan_msti; } u; }; +enum switchdev_obj_id { + SWITCHDEV_OBJ_ID_UNDEFINED = 0, + SWITCHDEV_OBJ_ID_PORT_VLAN = 1, + SWITCHDEV_OBJ_ID_PORT_MDB = 2, + SWITCHDEV_OBJ_ID_HOST_MDB = 3, + SWITCHDEV_OBJ_ID_MRP = 4, + SWITCHDEV_OBJ_ID_RING_TEST_MRP = 5, + SWITCHDEV_OBJ_ID_RING_ROLE_MRP = 6, + SWITCHDEV_OBJ_ID_RING_STATE_MRP = 7, + SWITCHDEV_OBJ_ID_IN_TEST_MRP = 8, + SWITCHDEV_OBJ_ID_IN_ROLE_MRP = 9, + SWITCHDEV_OBJ_ID_IN_STATE_MRP = 10, +}; + +struct switchdev_obj { + struct list_head list; + struct net_device *orig_dev; + enum switchdev_obj_id id; + u32 flags; + void *complete_priv; + void (*complete)(struct net_device *, int, void *); +}; + struct switchdev_brport { struct net_device *dev; const void *ctx; @@ -103606,7 +92842,6 @@ typedef void switchdev_deferred_func_t(struct net_device *, const void *); struct switchdev_deferred_item { struct list_head list; struct net_device *dev; - netdevice_tracker dev_tracker; switchdev_deferred_func_t *func; long unsigned int data[0]; }; @@ -103631,64 +92866,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_CAP_GENERIC_HWA = 1, - NCSI_CAP_GENERIC_HDS = 2, - NCSI_CAP_GENERIC_FC = 4, - NCSI_CAP_GENERIC_FC1 = 8, - NCSI_CAP_GENERIC_MC = 16, - NCSI_CAP_GENERIC_HWA_UNKNOWN = 0, - NCSI_CAP_GENERIC_HWA_SUPPORT = 32, - NCSI_CAP_GENERIC_HWA_NOT_SUPPORT = 64, - NCSI_CAP_GENERIC_HWA_RESERVED = 96, - NCSI_CAP_GENERIC_HWA_MASK = 96, - NCSI_CAP_GENERIC_MASK = 127, - NCSI_CAP_BC_ARP = 1, - NCSI_CAP_BC_DHCPC = 2, - NCSI_CAP_BC_DHCPS = 4, - NCSI_CAP_BC_NETBIOS = 8, - NCSI_CAP_BC_MASK = 15, - NCSI_CAP_MC_IPV6_NEIGHBOR = 1, - NCSI_CAP_MC_IPV6_ROUTER = 2, - NCSI_CAP_MC_DHCPV6_RELAY = 4, - NCSI_CAP_MC_DHCPV6_WELL_KNOWN = 8, - NCSI_CAP_MC_IPV6_MLD = 16, - NCSI_CAP_MC_IPV6_NEIGHBOR_S = 32, - NCSI_CAP_MC_MASK = 63, - NCSI_CAP_AEN_LSC = 1, - NCSI_CAP_AEN_CR = 2, - NCSI_CAP_AEN_HDS = 4, - NCSI_CAP_AEN_MASK = 7, - NCSI_CAP_VLAN_ONLY = 1, - NCSI_CAP_VLAN_NO = 2, - NCSI_CAP_VLAN_ANY = 4, - 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_channel_version { u32 version; u32 alpha2; @@ -103860,6 +93037,23 @@ struct ncsi_dev_priv { u32 package_whitelist; }; +struct ncsi_cmd_arg { + struct ncsi_dev_priv *ndp; + unsigned char type; + unsigned char id; + unsigned char package; + unsigned char channel; + short unsigned int payload; + unsigned int req_flags; + union { + unsigned char bytes[16]; + short unsigned int words[8]; + unsigned int dwords[4]; + }; + unsigned char *data; + struct genl_info *info; +}; + struct ncsi_pkt_hdr { unsigned char mc_id; unsigned char revision; @@ -103875,14 +93069,31 @@ struct ncsi_cmd_pkt_hdr { struct ncsi_pkt_hdr common; }; -struct ncsi_rsp_pkt_hdr { - struct ncsi_pkt_hdr common; - __be16 code; - __be16 reason; +struct ncsi_cmd_pkt { + struct ncsi_cmd_pkt_hdr cmd; + __be32 checksum; + unsigned char pad[26]; }; -struct ncsi_rsp_pkt { - struct ncsi_rsp_pkt_hdr rsp; +struct ncsi_cmd_sp_pkt { + struct ncsi_cmd_pkt_hdr cmd; + unsigned char reserved[3]; + unsigned char hw_arbitration; + __be32 checksum; + unsigned char pad[22]; +}; + +struct ncsi_cmd_dc_pkt { + struct ncsi_cmd_pkt_hdr cmd; + unsigned char reserved[3]; + unsigned char ald; + __be32 checksum; + unsigned char pad[22]; +}; + +struct ncsi_cmd_rc_pkt { + struct ncsi_cmd_pkt_hdr cmd; + __be32 reserved; __be32 checksum; unsigned char pad[22]; }; @@ -103954,6 +93165,88 @@ struct ncsi_cmd_snfc_pkt { unsigned char pad[22]; }; +struct ncsi_cmd_oem_pkt { + struct ncsi_cmd_pkt_hdr cmd; + __be32 mfr_id; + unsigned char data[0]; +}; + +struct ncsi_cmd_handler { + unsigned char type; + int payload; + 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, + NCSI_CAP_GENERIC_FC = 4, + NCSI_CAP_GENERIC_FC1 = 8, + NCSI_CAP_GENERIC_MC = 16, + NCSI_CAP_GENERIC_HWA_UNKNOWN = 0, + NCSI_CAP_GENERIC_HWA_SUPPORT = 32, + NCSI_CAP_GENERIC_HWA_NOT_SUPPORT = 64, + NCSI_CAP_GENERIC_HWA_RESERVED = 96, + NCSI_CAP_GENERIC_HWA_MASK = 96, + NCSI_CAP_GENERIC_MASK = 127, + NCSI_CAP_BC_ARP = 1, + NCSI_CAP_BC_DHCPC = 2, + NCSI_CAP_BC_DHCPS = 4, + NCSI_CAP_BC_NETBIOS = 8, + NCSI_CAP_BC_MASK = 15, + NCSI_CAP_MC_IPV6_NEIGHBOR = 1, + NCSI_CAP_MC_IPV6_ROUTER = 2, + NCSI_CAP_MC_DHCPV6_RELAY = 4, + NCSI_CAP_MC_DHCPV6_WELL_KNOWN = 8, + NCSI_CAP_MC_IPV6_MLD = 16, + NCSI_CAP_MC_IPV6_NEIGHBOR_S = 32, + NCSI_CAP_MC_MASK = 63, + NCSI_CAP_AEN_LSC = 1, + NCSI_CAP_AEN_CR = 2, + NCSI_CAP_AEN_HDS = 4, + NCSI_CAP_AEN_MASK = 7, + NCSI_CAP_VLAN_ONLY = 1, + NCSI_CAP_VLAN_NO = 2, + NCSI_CAP_VLAN_ANY = 4, + 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; + __be16 reason; +}; + +struct ncsi_rsp_pkt { + struct ncsi_rsp_pkt_hdr rsp; + __be32 checksum; + unsigned char pad[22]; +}; + struct ncsi_rsp_oem_pkt { struct ncsi_rsp_pkt_hdr rsp; __be32 mfr_id; @@ -104133,64 +93426,6 @@ struct ncsi_rsp_handler { int (*handler)(struct ncsi_request *); }; -struct ncsi_cmd_arg { - struct ncsi_dev_priv *ndp; - unsigned char type; - unsigned char id; - unsigned char package; - unsigned char channel; - short unsigned int payload; - unsigned int req_flags; - union { - unsigned char bytes[16]; - short unsigned int words[8]; - unsigned int dwords[4]; - }; - unsigned char *data; - struct genl_info *info; -}; - -struct ncsi_cmd_pkt { - struct ncsi_cmd_pkt_hdr cmd; - __be32 checksum; - unsigned char pad[26]; -}; - -struct ncsi_cmd_sp_pkt { - struct ncsi_cmd_pkt_hdr cmd; - unsigned char reserved[3]; - unsigned char hw_arbitration; - __be32 checksum; - unsigned char pad[22]; -}; - -struct ncsi_cmd_dc_pkt { - struct ncsi_cmd_pkt_hdr cmd; - unsigned char reserved[3]; - unsigned char ald; - __be32 checksum; - unsigned char pad[22]; -}; - -struct ncsi_cmd_rc_pkt { - struct ncsi_cmd_pkt_hdr cmd; - __be32 reserved; - __be32 checksum; - unsigned char pad[22]; -}; - -struct ncsi_cmd_oem_pkt { - struct ncsi_cmd_pkt_hdr cmd; - __be32 mfr_id; - unsigned char data[0]; -}; - -struct ncsi_cmd_handler { - unsigned char type; - int payload; - int (*handler)(struct sk_buff *, struct ncsi_cmd_arg *); -}; - struct ncsi_aen_pkt_hdr { struct ncsi_pkt_hdr common; unsigned char reserved2[3]; @@ -104443,7 +93678,6 @@ struct xsk_map_node { struct xdp_ring { u32 producer; - long: 32; long: 64; long: 64; long: 64; @@ -104476,7 +93710,6 @@ struct xdp_ring { long: 64; long: 64; u32 pad1; - long: 32; long: 64; long: 64; long: 64; @@ -104509,7 +93742,6 @@ struct xdp_ring { long: 64; long: 64; u32 consumer; - long: 32; long: 64; long: 64; long: 64; @@ -104575,7 +93807,6 @@ struct xdp_ring { long: 64; long: 64; u32 pad3; - long: 32; long: 64; long: 64; long: 64; @@ -104630,7 +93861,7 @@ struct xsk_dma_map { }; struct mptcp_mib { - long unsigned int mibs[47]; + long unsigned int mibs[43]; }; enum mptcp_event_type { @@ -104693,7 +93924,6 @@ struct mptcp_pm_data { u8 local_addr_used; u8 subflows; u8 status; - long unsigned int id_avail_bitmap[4]; struct mptcp_rm_list rm_list_tx; struct mptcp_rm_list rm_list_rx; }; @@ -104717,7 +93947,7 @@ struct mptcp_sock { u64 ack_seq; u64 rcv_wnd_sent; u64 rcv_data_fin_seq; - int rmem_fwd_alloc; + int wmem_reserved; struct sock *last_snd; int snd_burst; int old_wspace; @@ -104728,8 +93958,6 @@ struct mptcp_sock { u32 token; int rmem_released; long unsigned int flags; - long unsigned int cb_flags; - long unsigned int push_pending; bool recovery; bool can_ack; bool fully_established; @@ -104738,13 +93966,12 @@ struct mptcp_sock { bool rcv_fastclose; bool use_64bit_ack; bool csum_enabled; - u8 recvmsg_inq: 1; - u8 cork: 1; - u8 nodelay: 1; + spinlock_t join_list_lock; struct work_struct work; struct sk_buff *ooo_last_skb; struct rb_root out_of_order_queue; struct sk_buff_head receive_queue; + int tx_pending_data; struct list_head conn_list; struct list_head rtx_queue; struct mptcp_data_frag *first_pending; @@ -104760,7 +93987,6 @@ struct mptcp_sock { } rcvq_space; u32 setsockopt_seq; char ca_name[16]; - struct mptcp_sock *dl_next; }; struct mptcp_subflow_request_sock { @@ -104795,115 +94021,60 @@ struct mptcp_delegated_action { struct mptcp_subflow_context { struct list_head node; - union { - struct { - long unsigned int avg_pacing_rate; - u64 local_key; - u64 remote_key; - u64 idsn; - u64 map_seq; - u32 snd_isn; - u32 token; - u32 rel_write_seq; - 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; - u32 mp_capable: 1; - u32 mp_join: 1; - u32 fully_established: 1; - 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 send_fastclose: 1; - u32 rx_eof: 1; - u32 can_ack: 1; - u32 disposable: 1; - u32 stale: 1; - u32 local_id_valid: 1; - u32 valid_csum_seen: 1; - enum mptcp_data_avail data_avail; - u32 remote_nonce; - u64 thmac; - u32 local_nonce; - u32 remote_token; - 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 { - long unsigned int avg_pacing_rate; - u64 local_key; - u64 remote_key; - u64 idsn; - u64 map_seq; - u32 snd_isn; - u32 token; - u32 rel_write_seq; - 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; - u32 mp_capable: 1; - u32 mp_join: 1; - u32 fully_established: 1; - 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 send_fastclose: 1; - u32 rx_eof: 1; - u32 can_ack: 1; - u32 disposable: 1; - u32 stale: 1; - u32 local_id_valid: 1; - u32 valid_csum_seen: 1; - enum mptcp_data_avail data_avail; - u32 remote_nonce; - u64 thmac; - u32 local_nonce; - u32 remote_token; - 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; - } reset; - }; + u64 local_key; + u64 remote_key; + u64 idsn; + u64 map_seq; + u32 snd_isn; + u32 token; + u32 rel_write_seq; + 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; + u32 mp_capable: 1; + u32 mp_join: 1; + u32 fully_established: 1; + 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; + u32 local_nonce; + u32 remote_token; + 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; + void (*tcp_data_ready)(struct sock *); void (*tcp_state_change)(struct sock *); + void (*tcp_write_space)(struct sock *); void (*tcp_error_report)(struct sock *); struct callback_head rcu; }; @@ -104949,14 +94120,10 @@ enum linux_mptcp_mib_field { MPTCP_MIB_MPPRIORX = 37, MPTCP_MIB_MPFAILTX = 38, MPTCP_MIB_MPFAILRX = 39, - MPTCP_MIB_MPFASTCLOSETX = 40, - MPTCP_MIB_MPFASTCLOSERX = 41, - MPTCP_MIB_MPRSTTX = 42, - MPTCP_MIB_MPRSTRX = 43, - MPTCP_MIB_RCVPRUNED = 44, - MPTCP_MIB_SUBFLOWSTALE = 45, - MPTCP_MIB_SUBFLOWRECOVER = 46, - __MPTCP_MIB_MAX = 47, + MPTCP_MIB_RCVPRUNED = 40, + MPTCP_MIB_SUBFLOWSTALE = 41, + MPTCP_MIB_SUBFLOWRECOVER = 42, + __MPTCP_MIB_MAX = 43, }; struct trace_event_raw_mptcp_subflow_get_send { @@ -105017,8 +94184,6 @@ 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_mptcp_sendmsg_frag)(void *, struct mptcp_ext *); - typedef void (*btf_trace_get_mapping_status)(void *, struct mptcp_ext *); typedef void (*btf_trace_ack_update_msk)(void *, u64, u64, u64, u64, u64); @@ -105034,7 +94199,6 @@ struct mptcp_skb_cb { enum { MPTCP_CMSG_TS = 1, - MPTCP_CMSG_INQ = 2, }; struct mptcp_sendmsg_info { @@ -105048,7 +94212,7 @@ struct mptcp_sendmsg_info { struct subflow_send_info { struct sock *ssk; - u64 linger_time; + u64 ratio; }; enum mapping_status { @@ -105072,7 +94236,12 @@ struct csum_pseudo_header { __sum16 csum; }; -struct mptcp_pm_add_entry; +struct token_bucket { + spinlock_t lock; + int chain_len; + struct hlist_nulls_head req_chain; + struct hlist_nulls_head msk_chain; +}; struct mptcp_pernet { struct ctl_table_header *ctl_table_hdr; @@ -105083,21 +94252,21 @@ struct mptcp_pernet { u8 allow_join_initial_addr_port; }; -struct token_bucket { - spinlock_t lock; - int chain_len; - struct hlist_nulls_head req_chain; - struct hlist_nulls_head msk_chain; -}; - 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_SUBFLOW_ESTABLISHED = 4, - MPTCP_PM_ALREADY_ESTABLISHED = 5, - MPTCP_PM_MPC_ENDPOINT_ACCOUNTED = 6, + MPTCP_PM_ALREADY_ESTABLISHED = 4, + MPTCP_PM_SUBFLOW_ESTABLISHED = 5, +}; + +enum { + INET_ULP_INFO_UNSPEC = 0, + INET_ULP_INFO_NAME = 1, + INET_ULP_INFO_TLS = 2, + INET_ULP_INFO_MPTCP = 3, + __INET_ULP_INFO_MAX = 4, }; enum { @@ -105209,210 +94378,6 @@ struct join_entry { u8 valid; }; -struct mptcp_info { - __u8 mptcpi_subflows; - __u8 mptcpi_add_addr_signal; - __u8 mptcpi_add_addr_accepted; - __u8 mptcpi_subflows_max; - __u8 mptcpi_add_addr_signal_max; - __u8 mptcpi_add_addr_accepted_max; - __u32 mptcpi_flags; - __u32 mptcpi_token; - __u64 mptcpi_write_seq; - __u64 mptcpi_snd_una; - __u64 mptcpi_rcv_nxt; - __u8 mptcpi_local_addr_used; - __u8 mptcpi_local_addr_max; - __u8 mptcpi_csum_enabled; -}; - -struct mptcp_subflow_data { - __u32 size_subflow_data; - __u32 num_subflows; - __u32 size_kernel; - __u32 size_user; -}; - -struct mptcp_subflow_addrs { - union { - __kernel_sa_family_t sa_family; - struct sockaddr sa_local; - struct sockaddr_in sin_local; - struct sockaddr_in6 sin6_local; - struct __kernel_sockaddr_storage ss_local; - }; - union { - struct sockaddr sa_remote; - struct sockaddr_in sin_remote; - struct sockaddr_in6 sin6_remote; - struct __kernel_sockaddr_storage ss_remote; - }; -}; - -struct mctp_netdev_ops; - -struct mctp_dev { - struct net_device *dev; - refcount_t refs; - unsigned int net; - const struct mctp_netdev_ops *ops; - u8 *addrs; - size_t num_addrs; - spinlock_t addrs_lock; - struct callback_head rcu; -}; - -typedef __u8 mctp_eid_t; - -struct mctp_addr { - mctp_eid_t s_addr; -}; - -struct sockaddr_mctp { - __kernel_sa_family_t smctp_family; - __u16 __smctp_pad0; - unsigned int smctp_network; - struct mctp_addr smctp_addr; - __u8 smctp_type; - __u8 smctp_tag; - __u8 __smctp_pad1; -}; - -struct sockaddr_mctp_ext { - struct sockaddr_mctp smctp_base; - int smctp_ifindex; - __u8 smctp_halen; - __u8 __smctp_pad0[3]; - __u8 smctp_haddr[32]; -}; - -struct mctp_ioc_tag_ctl { - mctp_eid_t peer_addr; - __u8 tag; - __u16 flags; -}; - -struct mctp_hdr { - u8 ver; - u8 dest; - u8 src; - u8 flags_seq_tag; -}; - -struct mctp_sock { - struct sock sk; - unsigned int bind_net; - mctp_eid_t bind_addr; - __u8 bind_type; - bool addr_ext; - struct hlist_head keys; - struct timer_list key_expiry; -}; - -struct mctp_sk_key { - mctp_eid_t peer_addr; - mctp_eid_t local_addr; - __u8 tag; - struct sock *sk; - struct hlist_node hlist; - struct hlist_node sklist; - spinlock_t lock; - refcount_t refs; - struct sk_buff *reasm_head; - struct sk_buff **reasm_tailp; - bool reasm_dead; - u8 last_seq; - bool valid; - long unsigned int expiry; - long unsigned int dev_flow_state; - struct mctp_dev *dev; - bool manual_alloc; -}; - -struct mctp_skb_cb { - unsigned int magic; - unsigned int net; - int ifindex; - mctp_eid_t src; - unsigned char halen; - unsigned char haddr[32]; -}; - -struct mctp_route { - mctp_eid_t min; - mctp_eid_t max; - struct mctp_dev *dev; - unsigned int mtu; - unsigned char type; - int (*output)(struct mctp_route *, struct sk_buff *); - struct list_head list; - refcount_t refs; - struct callback_head rcu; -}; - -struct mctp_netdev_ops { - void (*release_flow)(struct mctp_dev *, struct mctp_sk_key *); -}; - -enum { - MCTP_TRACE_KEY_TIMEOUT = 0, - MCTP_TRACE_KEY_REPLIED = 1, - MCTP_TRACE_KEY_INVALIDATED = 2, - MCTP_TRACE_KEY_CLOSED = 3, - MCTP_TRACE_KEY_DROPPED = 4, -}; - -struct trace_event_raw_mctp_key_acquire { - struct trace_entry ent; - __u8 paddr; - __u8 laddr; - __u8 tag; - char __data[0]; -}; - -struct trace_event_raw_mctp_key_release { - struct trace_entry ent; - __u8 paddr; - __u8 laddr; - __u8 tag; - int reason; - char __data[0]; -}; - -struct trace_event_data_offsets_mctp_key_acquire {}; - -struct trace_event_data_offsets_mctp_key_release {}; - -typedef void (*btf_trace_mctp_key_acquire)(void *, const struct mctp_sk_key *); - -typedef void (*btf_trace_mctp_key_release)(void *, const struct mctp_sk_key *, int); - -enum { - IFLA_MCTP_UNSPEC = 0, - IFLA_MCTP_NET = 1, - __IFLA_MCTP_MAX = 2, -}; - -struct mctp_dump_cb { - int h; - int idx; - size_t a_idx; -}; - -enum mctp_neigh_source { - MCTP_NEIGH_STATIC = 0, - MCTP_NEIGH_DISCOVER = 1, -}; - -struct mctp_neigh { - struct mctp_dev *dev; - mctp_eid_t eid; - enum mctp_neigh_source source; - unsigned char ha[32]; - struct list_head list; - struct callback_head rcu; -}; - enum css_eval_cond { CSS_EVAL_UNREG = 0, CSS_EVAL_NOT_ONLINE = 1, @@ -105469,42 +94434,6 @@ struct chp_id { __u8 id; }; -struct css_general_char { - short: 12; - u64 dynio: 1; - char: 4; - u64 eadm: 1; - int: 23; - u64 aif: 1; - char: 3; - u64 mcss: 1; - u64 fcs: 1; - char: 1; - u64 ext_mb: 1; - char: 7; - u64 aif_tdd: 1; - char: 1; - u64 qebsm: 1; - char: 2; - u64 aiv: 1; - char: 5; - u64 aif_osa: 1; - short: 12; - u64 eadm_rf: 1; - char: 1; - u64 cib: 1; - char: 5; - u64 fcx: 1; - int: 19; - u64 alt_ssi: 1; - char: 1; - u64 narf: 1; - char: 5; - u64 enarf: 1; - char: 6; - u64 util_str: 1; -}; - struct cmd_scsw { __u32 key: 4; __u32 sctl: 1; @@ -105558,7 +94487,8 @@ struct eadm_scsw { u32 cc: 2; char: 6; u32 ectl: 1; - char: 2; + short: 1; + char: 1; u32 fctl: 3; u32 actl: 7; u32 stctl: 5; @@ -105632,13 +94562,14 @@ struct chsc_pnso_area { struct chsc_header request; char: 2; u8 m: 1; - char: 7; + char: 5; + char: 2; u8 ssid: 2; u8 fmt: 4; u16 sch; char: 8; u8 cssid; - short: 16; + int: 0; u8 oc; struct chsc_pnso_resume_token resume_token; u32 n: 1; @@ -106198,7 +95129,7 @@ struct channel_path_desc_fmt1 { u8 chpp; u32 unused[2]; u16 chid; - short: 16; + int: 0; u16 mdc; short: 13; u8 r: 1; @@ -106218,10 +95149,12 @@ struct css_chsc_char { u32 secm: 1; char: 1; u32 scmc: 1; - int: 20; + int: 9; + short: 11; u32 scssc: 1; u32 scsscf: 1; - char: 7; + short: 3; + char: 4; u32 pnso: 1; }; @@ -106240,7 +95173,7 @@ struct chsc_ssqd_area { u16 first_sch; short: 16; u16 last_sch; - int: 32; + long: 0; struct chsc_header response; struct qdio_ssqd_desc qdio_ssqd; long: 64; @@ -106753,20 +95686,19 @@ struct chsc_ssqd_area { struct chsc_scssc_area { struct chsc_header request; u16 operation_code; - long: 16; long: 64; u64 summary_indicator_addr; u64 subchannel_indicator_addr; u32 ks: 4; u32 kc: 4; - int: 21; + short: 8; + short: 13; u32 isc: 3; u32 word_with_d_bit; int: 32; struct subchannel_id schid; u32 reserved[1004]; struct chsc_header response; - long: 32; long: 64; long: 64; long: 64; @@ -106786,7 +95718,7 @@ struct chsc_scpd { u32 last_chpid: 8; u32 zeroes1; struct chsc_header response; - int: 32; + long: 0; u8 data[0]; long: 64; long: 64; @@ -107309,7 +96241,6 @@ struct chsc_sda_area { struct chsc_header response; char: 4; u32 format2: 4; - long: 24; long: 64; long: 64; long: 64; @@ -107711,7 +96642,8 @@ struct chsc_scm_info { u64 reqtok; u32 reserved1[4]; struct chsc_header response; - long: 56; + long: 0; + int: 24; u8 rq; u32 mbc; u64 msa; @@ -107794,6 +96726,7 @@ struct subchannel { __u8 vpm; __u8 lpm; __u8 opm; + long: 0; struct schib schib; int isc; struct chsc_ssd_info ssd_info; @@ -107844,7 +96777,7 @@ struct pgid { __u32 cpu_id: 24; __u32 cpu_model: 16; __u32 tod_high; -} __attribute__((packed)); +}; struct chp_link { struct chp_id chpid; @@ -107888,9 +96821,9 @@ struct chsc_ssd_area { u16 f_sch; short: 16; u16 l_sch; - int: 32; + long: 0; struct chsc_header response; - int: 32; + long: 0; u8 sch_valid: 1; u8 dev_valid: 1; u8 st: 3; @@ -108469,7 +97402,7 @@ struct chse_cudb { u16 chp_valid: 8; u16 cu; u32 esm_valid: 8; - int: 24; + long: 0; u8 chpid[8]; long: 64; u8 esm[8]; @@ -108484,7 +97417,7 @@ struct chsc_scud { u16 first_cu; short: 16; u16 last_cu; - int: 32; + long: 0; struct chsc_header response; char: 4; u16 fmt_resp: 4; @@ -108574,8 +97507,8 @@ struct esw3 { struct esw_eadm { __u32 sublog; struct erw_eadm erw; - long: 32; long: 64; + int: 32; }; struct irb { @@ -108612,8 +97545,8 @@ struct tcw { u64 tccb; u32 output_count; u32 input_count; - long: 32; long: 64; + int: 32; u32 intrg; }; @@ -108705,14 +97638,11 @@ struct ccw_device_private { unsigned int pgid_unknown: 1; unsigned int initialized: 1; } __attribute__((packed)) flags; - char: 8; long unsigned int intparm; struct qdio_irq *qdio_data; int async_kill_io_rc; - int: 32; struct work_struct todo_work; enum cdev_todo todo; - int: 32; wait_queue_head_t wait_q; struct timer_list timer; void *cmb; @@ -108722,8 +97652,7 @@ struct ccw_device_private { struct gen_pool *dma_pool; struct ccw_device_dma_area *dma_area; enum interruption_class int_class; - int: 32; -} __attribute__((packed)); +}; enum uc_todo { UC_TODO_RETRY = 0, @@ -108770,17 +97699,17 @@ struct cmd_orb { struct tm_orb { u32 intparm; u32 key: 4; - short: 9; + char: 4; + char: 5; u32 b: 1; - char: 2; + short: 2; u32 lpm: 8; char: 7; u32 x: 1; u32 tcw; u32 prio: 8; - char: 8; + short: 8; u32 rsvpgm: 8; - long: 8; long: 64; long: 64; }; @@ -108791,15 +97720,16 @@ struct eadm_orb { char: 4; u32 compat1: 1; u32 compat2: 1; - int: 21; + short: 6; + short: 15; u32 x: 1; u32 aob; u32 css_prio: 8; - char: 8; + short: 8; u32 scm_prio: 8; - long: 37; + long: 8; + int: 29; u32 fmt: 3; - long: 32; long: 64; }; @@ -108842,6 +97772,15 @@ struct ccw_device_dma_area { struct pgid pgid[8]; }; +struct idset; + +struct cb_data { + void *data; + struct idset *set; + int (*fn_known_sch)(struct subchannel *, void *); + int (*fn_unknown_sch)(struct subchannel_id, void *); +}; + struct sclp_chp_info { u8 recognized[32]; u8 standby[32]; @@ -108892,7 +97831,7 @@ struct tsa_intrg { u32 cu_state: 8; u32 dev_state: 8; u32 op_state: 8; - int: 24; + long: 0; u8 sd_info[12]; u32 dl_id; u8 dd_data[28]; @@ -108922,12 +97861,13 @@ struct dcw { struct tccb_tcah { u32 format: 8; - long: 48; + int: 24; + int: 24; u32 tcal: 8; u32 sac: 16; char: 8; u32 prio: 8; - int: 32; + long: 0; }; struct tccb_tcat { @@ -108949,25 +97889,13 @@ struct itcw { int intrg_max_tidaws; }; -struct idset; - -struct cb_data { - void *data; - struct idset *set; - int (*fn_known_sch)(struct subchannel *, void *); - int (*fn_unknown_sch)(struct subchannel_id, void *); -}; - -typedef struct { - char _[4096]; -} addr_type; - struct trace_event_raw_s390_class_schib { struct trace_entry ent; u8 cssid; u8 ssid; u16 schno; u16 devno; + long: 0; struct schib schib; u8 pmcw_ena; u8 pmcw_st; @@ -109119,18 +98047,23 @@ typedef void (*btf_trace_s390_cio_adapter_int)(void *, struct tpi_info *); typedef void (*btf_trace_s390_cio_stcrw)(void *, struct crw *, int); +typedef struct { + char _[4096]; +} addr_type; + typedef void fsm_func_t(struct ccw_device *, enum dev_event); enum io_sch_action { IO_SCH_UNREG = 0, IO_SCH_ORPH_UNREG = 1, - IO_SCH_ATTACH = 2, - IO_SCH_UNREG_ATTACH = 3, - IO_SCH_ORPH_ATTACH = 4, - IO_SCH_REPROBE = 5, - IO_SCH_VERIFY = 6, - IO_SCH_DISC = 7, - IO_SCH_NOP = 8, + IO_SCH_UNREG_CDEV = 2, + IO_SCH_ATTACH = 3, + IO_SCH_UNREG_ATTACH = 4, + IO_SCH_ORPH_ATTACH = 5, + IO_SCH_REPROBE = 6, + IO_SCH_VERIFY = 7, + IO_SCH_DISC = 8, + IO_SCH_NOP = 9, }; struct stlck_data { @@ -109138,85 +98071,6 @@ struct stlck_data { int rc; }; -struct arqb { - u64 data; - u16 fmt: 4; - u16 cmd_code; - short: 16; - u16 msb_count; - u32 reserved[12]; -}; - -struct arsb { - u16 fmt: 4; - int: 28; - u8 ef; - char: 8; - u8 ecbi; - char: 8; - u8 fvf; - short: 16; - u8 eqc; - u64 fail_msb; - u64 fail_aidaw; - u64 fail_ms; - u64 fail_scm; - u32 reserved[4]; -}; - -struct msb { - u8 fmt: 4; - u8 oc: 4; - u8 flags; - short: 12; - u16 bs: 4; - u32 blk_count; - u64 data_addr; - u64 scm_addr; - long: 64; -}; - -struct aob { - struct arqb request; - struct arsb response; - struct msb msb[124]; -}; - -struct scm_device; - -struct aob_rq_header { - struct scm_device *scmdev; - char data[0]; -}; - -struct scm_device { - u64 address; - u64 size; - unsigned int nr_max_block; - struct device dev; - struct { - unsigned int persistence: 4; - unsigned int oper_state: 4; - unsigned int data_state: 4; - unsigned int rank: 4; - unsigned int release: 1; - unsigned int res_id: 8; - } attrs; -}; - -enum scm_event { - SCM_CHANGE = 0, - SCM_AVAIL = 1, -}; - -struct scm_driver { - struct device_driver drv; - int (*probe)(struct scm_device *); - void (*remove)(struct scm_device *); - void (*notify)(struct scm_device *, enum scm_event); - void (*handler)(struct scm_device *, void *, blk_status_t); -}; - struct cmbdata { __u64 size; __u64 elapsed_time; @@ -109313,6 +98167,86 @@ struct cmbe { u32 reserved[7]; }; +struct arqb { + u64 data; + u16 fmt: 4; + u16 cmd_code; + short: 16; + u16 msb_count; + u32 reserved[12]; +}; + +struct arsb { + u16 fmt: 4; + int: 0; + u8 ef; + short: 0; + u8 ecbi; + long: 0; + u8 fvf; + short: 0; + char: 8; + u8 eqc; + u64 fail_msb; + u64 fail_aidaw; + u64 fail_ms; + u64 fail_scm; + u32 reserved[4]; +}; + +struct msb { + u8 fmt: 4; + u8 oc: 4; + u8 flags; + short: 12; + u16 bs: 4; + u32 blk_count; + u64 data_addr; + u64 scm_addr; + long: 64; +}; + +struct aob { + struct arqb request; + struct arsb response; + struct msb msb[124]; +}; + +struct scm_device; + +struct aob_rq_header { + struct scm_device *scmdev; + char data[0]; +}; + +struct scm_device { + u64 address; + u64 size; + unsigned int nr_max_block; + struct device dev; + struct { + unsigned int persistence: 4; + unsigned int oper_state: 4; + unsigned int data_state: 4; + unsigned int rank: 4; + unsigned int release: 1; + unsigned int res_id: 8; + } attrs; +}; + +enum scm_event { + SCM_CHANGE = 0, + SCM_AVAIL = 1, +}; + +struct scm_driver { + struct device_driver drv; + int (*probe)(struct scm_device *); + void (*remove)(struct scm_device *); + void (*notify)(struct scm_device *, enum scm_event); + void (*handler)(struct scm_device *, void *, blk_status_t); +}; + struct sysrq_work { int key; struct work_struct work; @@ -109346,6 +98280,13 @@ struct sccb_header { u16 response_code; }; +struct init_sccb { + struct sccb_header header; + u16 _reserved; + u16 mask_length; + u8 masks[4084]; +}; + struct evbuf_header { u16 length; u8 type; @@ -109375,6 +98316,53 @@ struct sclp_register { void (*receiver_fn)(struct evbuf_header *); }; +enum { + sclp_init_state_uninitialized = 0, + sclp_init_state_initializing = 1, + sclp_init_state_initialized = 2, +}; + +struct sclp_trace_entry { + char id[4]; + u32 a; + u64 b; +}; + +enum sclp_running_state_t { + sclp_running_state_idle = 0, + sclp_running_state_running = 1, + sclp_running_state_reset_pending = 2, +}; + +enum sclp_reading_state_t { + sclp_reading_state_idle = 0, + sclp_reading_state_reading = 1, +}; + +enum sclp_activation_state_t { + sclp_activation_state_active = 0, + sclp_activation_state_deactivating = 1, + sclp_activation_state_inactive = 2, + sclp_activation_state_activating = 3, +}; + +enum sclp_mask_state_t { + sclp_mask_state_idle = 0, + sclp_mask_state_initializing = 1, +}; + +struct sclp_statechangebuf { + struct evbuf_header header; + u8 validity_sclp_active_facility_mask: 1; + u8 validity_sclp_receive_mask: 1; + u8 validity_sclp_send_mask: 1; + u8 validity_read_data_function_mask: 1; + u16 _zeros: 12; + u16 mask_length; + u64 sclp_active_facility_mask; + u8 masks[2046]; +} __attribute__((packed)); + struct mto { u16 length; u16 type; @@ -109414,7 +98402,7 @@ struct mdb { struct msg_buf { struct evbuf_header header; struct mdb mdb; -} __attribute__((packed)); +}; struct sclp_buffer { struct list_head list; @@ -109977,7 +98965,7 @@ struct attach_storage_sccb { struct sccb_header header; short: 16; u16 assigned; - int: 32; + long: 0; u32 entries[0]; }; @@ -109998,60 +98986,6 @@ struct chp_info_sccb { u8 cssid; }; -struct init_sccb { - struct sccb_header header; - u16 _reserved; - u16 mask_length; - u8 masks[4084]; -}; - -enum { - sclp_init_state_uninitialized = 0, - sclp_init_state_initializing = 1, - sclp_init_state_initialized = 2, -}; - -struct sclp_trace_entry { - char id[4]; - u32 a; - u64 b; -}; - -enum sclp_running_state_t { - sclp_running_state_idle = 0, - sclp_running_state_running = 1, - sclp_running_state_reset_pending = 2, -}; - -enum sclp_reading_state_t { - sclp_reading_state_idle = 0, - sclp_reading_state_reading = 1, -}; - -enum sclp_activation_state_t { - sclp_activation_state_active = 0, - sclp_activation_state_deactivating = 1, - sclp_activation_state_inactive = 2, - sclp_activation_state_activating = 3, -}; - -enum sclp_mask_state_t { - sclp_mask_state_idle = 0, - sclp_mask_state_initializing = 1, -}; - -struct sclp_statechangebuf { - struct evbuf_header header; - u8 validity_sclp_active_facility_mask: 1; - u8 validity_sclp_receive_mask: 1; - u8 validity_sclp_send_mask: 1; - u8 validity_read_data_function_mask: 1; - u16 _zeros: 12; - u16 mask_length; - u64 sclp_active_facility_mask; - u8 masks[2046]; -} __attribute__((packed)); - struct conf_mgm_data { u8 reserved; u8 ev_qualifier; @@ -110163,7 +99097,7 @@ struct sclp_sd_evbuf { u8 eq; u8 di; u8 rflags; - long: 56; + long: 0; u32 id; short: 16; u8 fmt; @@ -110810,7 +99744,7 @@ struct raw3270_ua { char awauai; char ahauai; } __attribute__((packed)) aua; -} __attribute__((packed)); +}; struct string { struct list_head list; @@ -110920,7 +99854,7 @@ struct raw3215_req { int len; int delayable; int residual; - int: 32; + long: 0; struct ccw1 ccws[3]; struct raw3215_info *info; struct raw3215_req *next; @@ -111013,7 +99947,7 @@ struct sdias_evbuf { struct sdias_sccb { struct sccb_header hdr; struct sdias_evbuf evbuf; -} __attribute__((packed)); +}; enum arch_id { ARCH_S390 = 0, @@ -111025,6 +99959,46 @@ struct ipib_info { u32 checksum; } __attribute__((packed)); +struct uv_cb_attest { + struct uv_cb_header header; + u64 reserved08[2]; + u64 arcb_addr; + u64 cont_token; + u8 reserved28[6]; + u16 user_data_len; + u8 user_data[256]; + u32 reserved130[3]; + u32 meas_len; + u64 meas_addr; + u8 config_uid[16]; + u32 reserved158; + u32 add_data_len; + u64 add_data_addr; + u64 reserved168[4]; +}; + +struct uvio_ioctl_cb { + __u32 flags; + __u16 uv_rc; + __u16 uv_rrc; + __u64 argument_addr; + __u32 argument_len; + __u8 reserved14[44]; +}; + +struct uvio_attest { + __u64 arcb_addr; + __u64 meas_addr; + __u64 add_data_addr; + __u8 user_data[256]; + __u8 config_uid[16]; + __u32 arcb_len; + __u32 meas_len; + __u32 add_data_len; + __u16 user_data_len; + __u16 reserved136; +}; + struct ap_device_id { __u16 match_flags; __u8 dev_type; @@ -111033,32 +100007,6 @@ struct ap_device_id { typedef unsigned int ap_qid_t; -struct ap_queue_status { - unsigned int queue_empty: 1; - unsigned int replies_waiting: 1; - unsigned int queue_full: 1; - unsigned int _pad1: 4; - unsigned int irq_enabled: 1; - unsigned int response_code: 8; - unsigned int _pad2: 16; -}; - -struct ap_config_info { - unsigned int apsc: 1; - unsigned int apxa: 1; - unsigned int qact: 1; - unsigned int rc8a: 1; - unsigned char _reserved1: 4; - unsigned char _reserved2[3]; - unsigned char Na; - unsigned char Nd; - unsigned char _reserved3[10]; - unsigned int apm[8]; - unsigned int aqm[8]; - unsigned int adm[8]; - unsigned char _reserved4[16]; -}; - union ap_qact_ap_info { long unsigned int val; struct { @@ -111066,7 +100014,7 @@ union ap_qact_ap_info { unsigned int mode: 3; int: 26; unsigned int cat: 8; - char: 8; + short: 0; unsigned char ver[2]; }; }; @@ -111111,9 +100059,6 @@ struct ap_driver { unsigned int flags; int (*probe)(struct ap_device *); void (*remove)(struct ap_device *); - int (*in_use)(long unsigned int *, long unsigned int *); - void (*on_config_changed)(struct ap_config_info *, struct ap_config_info *); - void (*on_scan_complete)(struct ap_config_info *, struct ap_config_info *); }; struct ap_device { @@ -111185,7 +100130,6 @@ struct ap_perms { long unsigned int ioctlm[4]; long unsigned int apm[4]; long unsigned int aqm[4]; - long unsigned int adm[4]; }; struct __ap_calc_ctrs { @@ -111209,6 +100153,13 @@ struct ap_qirq_ctrl { typedef enum ap_sm_wait ap_func_t(struct ap_queue *); +struct smsg_callback { + struct list_head list; + const char *prefix; + int len; + void (*callback)(const char *, char *); +}; + struct vq_config_block { __u16 index; __u16 num; @@ -111293,7 +100244,7 @@ struct airq_info { struct airq_iv *aiv; }; -/*=============================== ARCH S390: 5.18.11-100.fc35.s390x ===========================*/ +/*=============================== ARCH S390: 5.15.0-86-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 677363d34b9..56edf39e0f8 100644 --- a/driver/modern_bpf/definitions/vmlinux.h +++ b/driver/modern_bpf/definitions/vmlinux.h @@ -14,4 +14,5 @@ #include "aarch64/overlay.h" #elif defined(__TARGET_ARCH_s390) #include "s390x/vmlinux.h" +#include "s390x/overlay.h" #endif