From b2a0e130556cfde3942ad48ca185993fa5e053e3 Mon Sep 17 00:00:00 2001 From: Andrii Nakryiko Date: Mon, 17 Aug 2026 13:26:09 -0700 Subject: [PATCH] Enable CONFIG_SMP=y CONFIG_SMP=y is a basic expectation, let's make sure we have it set. Signed-off-by: Andrii Nakryiko --- include/arm/vmlinux_6.19.h | 2104 ++++++++++++++++++++++++---- include/loongarch64/vmlinux_6.19.h | 1148 +++++++++++++-- include/powerpc/vmlinux_6.19.h | 1175 ++++++++++++++-- include/riscv64/vmlinux_6.19.h | 1120 ++++++++++++++- include/x86/vmlinux_6.19.h | 1420 ++++++++++++++++++- kconfigs/config.common | 1 + 6 files changed, 6402 insertions(+), 566 deletions(-) diff --git a/include/arm/vmlinux_6.19.h b/include/arm/vmlinux_6.19.h index 9ae812e..3452cde 100644 --- a/include/arm/vmlinux_6.19.h +++ b/include/arm/vmlinux_6.19.h @@ -4907,16 +4907,17 @@ enum { __SCHED_FEAT_TTWU_QUEUE = 14, __SCHED_FEAT_SIS_UTIL = 15, __SCHED_FEAT_WARN_DOUBLE_CLOCK = 16, - __SCHED_FEAT_RT_RUNTIME_SHARE = 17, - __SCHED_FEAT_LB_MIN = 18, - __SCHED_FEAT_ATTACH_AGE_LOAD = 19, - __SCHED_FEAT_WA_IDLE = 20, - __SCHED_FEAT_WA_WEIGHT = 21, - __SCHED_FEAT_WA_BIAS = 22, - __SCHED_FEAT_UTIL_EST = 23, - __SCHED_FEAT_LATENCY_WARN = 24, - __SCHED_FEAT_NI_RANDOM = 25, - __SCHED_FEAT_NR = 26, + __SCHED_FEAT_RT_PUSH_IPI = 17, + __SCHED_FEAT_RT_RUNTIME_SHARE = 18, + __SCHED_FEAT_LB_MIN = 19, + __SCHED_FEAT_ATTACH_AGE_LOAD = 20, + __SCHED_FEAT_WA_IDLE = 21, + __SCHED_FEAT_WA_WEIGHT = 22, + __SCHED_FEAT_WA_BIAS = 23, + __SCHED_FEAT_UTIL_EST = 24, + __SCHED_FEAT_LATENCY_WARN = 25, + __SCHED_FEAT_NI_RANDOM = 26, + __SCHED_FEAT_NR = 27, }; enum { @@ -6402,6 +6403,15 @@ enum cpuhp_state { CPUHP_ONLINE = 237, }; +enum cpuhp_sync_state { + SYNC_STATE_DEAD = 0, + SYNC_STATE_KICKED = 1, + SYNC_STATE_SHOULD_DIE = 2, + SYNC_STATE_ALIVE = 3, + SYNC_STATE_SHOULD_ONLINE = 4, + SYNC_STATE_ONLINE = 5, +}; + enum ctx_state { CT_STATE_DISABLED = -1, CT_STATE_KERNEL = 0, @@ -7329,10 +7339,10 @@ enum fixed_addresses { FIX_EARLYCON_MEM_BASE = 0, __end_of_permanent_fixed_addresses = 1, FIX_KMAP_BEGIN = 1, - FIX_KMAP_END = 16, - FIX_TEXT_POKE0 = 17, - FIX_TEXT_POKE1 = 18, - __end_of_fixmap_region = 19, + FIX_KMAP_END = 64, + FIX_TEXT_POKE0 = 65, + FIX_TEXT_POKE1 = 66, + __end_of_fixmap_region = 67, FIX_BTMAP_END = 1, FIX_BTMAP_BEGIN = 224, __end_of_early_ioremap_region = 225, @@ -7676,6 +7686,12 @@ enum hash_pointers_policy { HASH_PTR_NEVER = 2, }; +enum hk_flags { + HK_FLAG_DOMAIN = 1, + HK_FLAG_MANAGED_IRQ = 2, + HK_FLAG_KERNEL_NOISE = 4, +}; + enum hk_type { HK_TYPE_DOMAIN = 0, HK_TYPE_MANAGED_IRQ = 1, @@ -8025,6 +8041,19 @@ enum ip_defrag_users { IP_DEFRAG_MACVLAN = 196614, }; +enum ipi_msg_type { + IPI_WAKEUP = 0, + IPI_TIMER = 1, + IPI_RESCHEDULE = 2, + IPI_CALL_FUNC = 3, + IPI_CPU_STOP = 4, + IPI_IRQ_WORK = 5, + IPI_COMPLETION = 6, + NR_IPI = 7, + IPI_CPU_BACKTRACE = 7, + MAX_IPI = 8, +}; + enum irq_domain_bus_token { DOMAIN_BUS_ANY = 0, DOMAIN_BUS_WIRED = 1, @@ -8575,6 +8604,14 @@ enum mthp_stat_item { __MTHP_STAT_COUNT = 17, }; +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, +}; + enum nbcon_prio { NBCON_PRIO_NONE = 0, NBCON_PRIO_NORMAL = 1, @@ -9909,6 +9946,13 @@ enum s_alloc { sa_none = 3, }; +enum scale_freq_source { + SCALE_FREQ_SOURCE_CPUFREQ = 0, + SCALE_FREQ_SOURCE_ARCH = 1, + SCALE_FREQ_SOURCE_CPPC = 2, + SCALE_FREQ_SOURCE_VIRT = 3, +}; + enum scan_balance { SCAN_EQUAL = 0, SCAN_FRACT = 1, @@ -10543,6 +10587,12 @@ enum tcx_action_base { TCX_REDIRECT = 7, }; +enum tick_broadcast_mode { + TICK_BROADCAST_OFF = 0, + TICK_BROADCAST_ON = 1, + TICK_BROADCAST_FORCE = 2, +}; + enum tick_broadcast_state { TICK_BROADCAST_EXIT = 0, TICK_BROADCAST_ENTER = 1, @@ -11112,7 +11162,7 @@ enum wq_internal_consts { enum wq_misc_consts { WORK_NR_COLORS = 16, - WORK_CPU_UNBOUND = 1, + WORK_CPU_UNBOUND = 4, WORK_BUSY_PENDING = 1, WORK_BUSY_RUNNING = 2, WORKER_DESC_LEN = 32, @@ -11241,6 +11291,12 @@ enum xfrm_replay_mode { XFRM_REPLAY_MODE_ESN = 2, }; +enum xps_map_type { + XPS_CPUS = 0, + XPS_RXQS = 1, + XPS_MAPS_MAX = 2, +}; + enum zone_flags { ZONE_BOOSTED_WATERMARK = 0, ZONE_RECLAIM_ACTIVE = 1, @@ -11640,9 +11696,21 @@ typedef struct { int val[2]; } __kernel_fsid_t; -typedef struct {} arch_rwlock_t; +typedef struct { + u32 lock; +} arch_rwlock_t; -typedef struct {} arch_spinlock_t; +struct __raw_tickets { + u16 owner; + u16 next; +}; + +typedef struct { + union { + u32 slock; + struct __raw_tickets tickets; + }; +} arch_spinlock_t; typedef struct { s64 counter; @@ -12216,16 +12284,26 @@ struct Qdisc { long: 32; long: 32; long: 32; - long: 32; - long: 32; __u8 __cacheline_group_begin__Qdisc_write[0]; struct qdisc_skb_head q; long unsigned int state; + long: 32; + long: 32; + long: 32; struct gnet_stats_basic_sync bstats; bool running; struct gnet_stats_queue qstats; struct sk_buff *to_free; __u8 __cacheline_group_end__Qdisc_write[0]; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic_long_t defer_count; struct llist_head defer_list; spinlock_t seqlock; @@ -12241,6 +12319,8 @@ struct Qdisc { long: 32; long: 32; long: 32; + long: 32; + long: 32; long int privdata[0]; }; @@ -12645,9 +12725,14 @@ struct xarray { void *xa_head; }; +struct optimistic_spin_queue { + atomic_t tail; +}; + struct rw_semaphore { atomic_long_t count; atomic_long_t owner; + struct optimistic_spin_queue osq; raw_spinlock_t wait_lock; struct list_head wait_list; }; @@ -12883,6 +12968,7 @@ struct kobject { struct mutex { atomic_long_t owner; raw_spinlock_t wait_lock; + struct optimistic_spin_queue osq; struct list_head wait_list; }; @@ -12977,6 +13063,7 @@ struct device { struct dev_msi_info msi; const struct dma_map_ops *dma_ops; u64 *dma_mask; + long: 32; u64 coherent_dma_mask; u64 bus_dma_limit; const struct bus_dma_region *dma_range_map; @@ -13004,6 +13091,7 @@ struct device { bool can_match: 1; bool dma_coherent: 1; bool dma_skip_sync: 1; + long: 32; }; struct resource { @@ -13377,7 +13465,6 @@ struct arm_pmu { const struct attribute_group *attr_groups[5]; int pmuver; bool has_smt; - long: 32; u64 reg_pmmir; u64 reg_brbidr; long unsigned int pmceid_bitmap[2]; @@ -13498,14 +13585,17 @@ struct aux_sigframe { }; struct percpu_counter { + raw_spinlock_t lock; + long: 32; s64 count; + s32 *counters; + long: 32; }; struct fprop_local_percpu { struct percpu_counter events; unsigned int period; raw_spinlock_t lock; - long: 32; }; struct timer_list { @@ -13534,6 +13624,7 @@ struct bdi_writeback { struct list_head b_dirty_time; spinlock_t list_lock; atomic_t writeback_inodes; + long: 32; struct percpu_counter stat[4]; long unsigned int bw_time_stamp; long unsigned int dirtied_stamp; @@ -13551,6 +13642,7 @@ struct bdi_writeback { struct delayed_work dwork; struct delayed_work bw_dwork; struct list_head bdi_node; + long: 32; }; struct backing_dev_info { @@ -13573,7 +13665,6 @@ struct backing_dev_info { char dev_name[64]; struct device *owner; struct timer_list laptop_mode_wb_timer; - long: 32; }; struct vfsmount; @@ -13617,7 +13708,6 @@ struct file { const struct path f_path; struct path __f_path; }; - long: 32; union { struct mutex f_pos_lock; u64 f_pipe; @@ -13891,7 +13981,6 @@ struct block_device { struct partition_meta_info *bd_meta_info; int bd_writers; void *bd_security; - long: 32; struct device bd_device; }; @@ -13986,6 +14075,7 @@ struct bpf_map { bool frozen; bool free_after_mult_rcu_gp; bool free_after_rcu_gp; + long: 32; atomic64_t sleepable_refcnt; s64 *elem_count; long: 32; @@ -14456,7 +14546,29 @@ struct bpf_lru_list { struct list_head lists[3]; unsigned int counts[2]; struct list_head *next_inactive_rotation; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; raw_spinlock_t lock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct bpf_lru_locallist; @@ -14464,6 +14576,21 @@ struct bpf_lru_locallist; struct bpf_common_lru { struct bpf_lru_list lru_list; struct bpf_lru_locallist *local_list; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct bpf_core_accessor { @@ -15133,6 +15260,7 @@ struct bpf_dtab { spinlock_t index_lock; unsigned int items; u32 n_buckets; + long: 32; }; struct bpf_dtab_netdev { @@ -15478,6 +15606,16 @@ struct bpf_lru { unsigned int target_free; unsigned int nr_scans; bool percpu; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct bucket; @@ -15490,6 +15628,10 @@ struct bpf_htab { struct bpf_mem_alloc pcpu_ma; struct bucket *buckets; void *elems; + long: 32; + long: 32; + long: 32; + long: 32; union { struct pcpu_freelist freelist; struct bpf_lru lru; @@ -15503,6 +15645,8 @@ struct bpf_htab { u32 elem_size; u32 hashrnd; long: 32; + long: 32; + long: 32; }; struct bpf_iarray { @@ -16360,6 +16504,7 @@ struct bpf_local_storage { struct bpf_local_storage_cache { spinlock_t idx_lock; + long: 32; u64 idx_usage_counts[16]; }; @@ -17075,11 +17220,30 @@ struct bpf_res_spin_lock { struct bpf_ringbuf { wait_queue_head_t waitq; struct irq_work work; + long: 32; u64 mask; struct page **pages; int nr_pages; bool overwrite_mode; + long: 32; + long: 32; + long: 32; rqspinlock_t spinlock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic_t busy; long: 32; long: 32; @@ -18072,6 +18236,9 @@ struct bpf_ringbuf { long: 32; long: 32; long: 32; + long unsigned int consumer_pos; + long: 32; + long: 32; long: 32; long: 32; long: 32; @@ -18092,7 +18259,6 @@ struct bpf_ringbuf { long: 32; long: 32; long: 32; - long unsigned int consumer_pos; long: 32; long: 32; long: 32; @@ -18968,157 +19134,135 @@ struct bpf_ringbuf { long: 32; long: 32; long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long unsigned int producer_pos; - long unsigned int pending_pos; - long unsigned int overwrite_pos; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long unsigned int producer_pos; + long unsigned int pending_pos; + long unsigned int overwrite_pos; long: 32; long: 32; long: 32; @@ -20337,7 +20481,6 @@ struct bpf_stab { struct sock **sks; struct sk_psock_progs progs; spinlock_t lock; - long: 32; }; struct bpf_stack_build_id { @@ -20412,7 +20555,34 @@ struct bpf_struct_ops_common_value { struct bpf_struct_ops_bpf_dummy_ops { struct bpf_struct_ops_common_value common; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct bpf_dummy_ops data; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct bpf_struct_ops_desc { @@ -20428,11 +20598,24 @@ struct bpf_struct_ops_link { struct bpf_link link; struct bpf_map *map; wait_queue_head_t wait_hup; - long: 32; }; struct bpf_struct_ops_value { struct bpf_struct_ops_common_value common; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; char data[0]; }; @@ -20447,6 +20630,8 @@ struct bpf_struct_ops_map { void *image_pages[8]; struct btf *btf; struct bpf_struct_ops_value *uvalue; + long: 32; + long: 32; struct bpf_struct_ops_value kvalue; }; @@ -20473,10 +20658,34 @@ struct tcp_congestion_ops { u32 flags; void (*init)(struct sock *); void (*release)(struct sock *); + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct bpf_struct_ops_tcp_congestion_ops { struct bpf_struct_ops_common_value common; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct tcp_congestion_ops data; }; @@ -21409,6 +21618,14 @@ struct bucket_table { struct callback_head rcu; struct bucket_table *future_tbl; struct lockdep_map dep_map; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct rhash_lock_head *buckets[0]; }; @@ -21501,6 +21718,10 @@ struct cacheinfo { void *priv; }; +struct cacheline_padding { + char x[0]; +}; + struct cachepolicy { const char policy[16]; unsigned int cr_mask; @@ -21508,6 +21729,14 @@ struct cachepolicy { pteval_t pte; }; +typedef struct cpumask cpumask_var_t[1]; + +struct call_function_data { + call_single_data_t *csd; + cpumask_var_t cpumask; + cpumask_var_t cpumask_ipi; +}; + struct call_summary { u8 num_params; bool is_void; @@ -21616,7 +21845,6 @@ struct cfs_rq { long: 32; long: 32; long: 32; - long: 32; } removed; }; @@ -22001,18 +22229,44 @@ struct clk_mux { spinlock_t *lock; }; -struct srcu_usage {}; +struct srcu_node; + +struct srcu_usage { + struct srcu_node *node; + struct srcu_node *level[2]; + int srcu_size_state; + struct mutex srcu_cb_mutex; + spinlock_t lock; + struct mutex srcu_gp_mutex; + long unsigned int srcu_gp_seq; + long unsigned int srcu_gp_seq_needed; + long unsigned int srcu_gp_seq_needed_exp; + long unsigned int srcu_gp_start; + long unsigned int srcu_last_gp_end; + long unsigned int srcu_size_jiffies; + long unsigned int srcu_n_lock_retries; + long unsigned int srcu_n_exp_nodelay; + bool sda_is_static; + long unsigned int srcu_barrier_seq; + struct mutex srcu_barrier_mutex; + struct completion srcu_barrier_completion; + atomic_t srcu_barrier_cpu_cnt; + long unsigned int reschedule_jiffies; + long unsigned int reschedule_count; + struct delayed_work work; + struct srcu_struct *srcu_ssp; +}; + +struct srcu_ctr; + +struct srcu_data; struct srcu_struct { - short int srcu_lock_nesting[2]; - u8 srcu_gp_running; - u8 srcu_gp_waiting; - long unsigned int srcu_idx; - long unsigned int srcu_idx_max; - struct swait_queue_head srcu_wq; - struct callback_head *srcu_cb_head; - struct callback_head **srcu_cb_tail; - struct work_struct srcu_work; + struct srcu_ctr *srcu_ctrp; + struct srcu_data *sda; + u8 srcu_reader_flavor; + struct lockdep_map dep_map; + struct srcu_usage *srcu_sup; }; struct srcu_notifier_head { @@ -22575,6 +22829,12 @@ struct container_dev { long: 32; }; +struct context_tracking { + atomic_t state; + long int nesting; + long int nmi_nesting; +}; + struct contig_page_info { long unsigned int free_pages; long unsigned int free_blocks_total; @@ -22646,6 +22906,11 @@ struct cpu_context_save { __u32 extra[2]; }; +struct cpu_efficiency { + const char *compatible; + long unsigned int efficiency; +}; + struct folio_batch { unsigned char nr; unsigned char i; @@ -22659,6 +22924,7 @@ struct cpu_fbatches { struct folio_batch lru_deactivate_file; struct folio_batch lru_deactivate; struct folio_batch lru_lazyfree; + struct folio_batch lru_activate; local_lock_t lock_irq; struct folio_batch lru_move_tail; }; @@ -22668,12 +22934,40 @@ struct cpu_map_ret { u32 skb_n; }; +struct cpu_rmap { + struct kref refcount; + u16 size; + void **obj; + struct { + u16 index; + u16 dist; + } near[0]; +}; + +struct cpu_stop_done { + atomic_t nr_todo; + int ret; + struct completion completion; +}; + typedef int (*cpu_stop_fn_t)(void *); struct cpu_stop_work { - struct work_struct work; + struct list_head list; cpu_stop_fn_t fn; + long unsigned int caller; void *arg; + struct cpu_stop_done *done; +}; + +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 cpu_tlb_fns { @@ -22682,6 +22976,17 @@ struct cpu_tlb_fns { long unsigned int tlb_flags; }; +struct cpu_topology { + int thread_id; + int core_id; + int cluster_id; + int package_id; + cpumask_t thread_sibling; + cpumask_t core_sibling; + cpumask_t cluster_sibling; + cpumask_t llc_sibling; +}; + struct cpu_user_fns { void (*cpu_clear_user_highpage)(struct page *, long unsigned int); void (*cpu_copy_user_highpage)(struct page *, struct page *, long unsigned int, struct vm_area_struct *); @@ -22694,8 +22999,6 @@ struct cpu_vfs_cap_data { kernel_cap_t inheritable; }; -typedef struct cpumask cpumask_var_t[1]; - struct cpudl_item; struct cpudl { @@ -22817,6 +23120,18 @@ struct cpuhp_cpu_state { enum cpuhp_state state; enum cpuhp_state target; enum cpuhp_state fail; + struct task_struct *thread; + bool should_run; + bool rollback; + bool single; + bool bringup; + struct hlist_node *node; + struct hlist_node *last; + enum cpuhp_state cb_state; + int result; + atomic_t ap_sync_state; + struct completion done_up; + struct completion done_down; }; struct cpuhp_step { @@ -22898,6 +23213,7 @@ struct cpuidle_driver { struct cpuinfo_arm { u32 cpuid; + unsigned int loops_per_jiffy; }; union cpumask_rcuhead { @@ -23257,12 +23573,13 @@ struct qstr { }; union shortname_store { - unsigned char string[44]; - long unsigned int words[11]; + unsigned char string[36]; + long unsigned int words[9]; }; struct lockref { union { + __u64 lock_count; struct { spinlock_t lock; int count; @@ -23302,6 +23619,7 @@ struct dentry { struct hlist_bl_node d_in_lookup_hash; struct callback_head d_rcu; } d_u; + long: 32; }; struct dentry__safe_trusted_or_null { @@ -23377,7 +23695,6 @@ struct dev_pagemap { const struct dev_pagemap_ops *ops; void *owner; int nr_range; - long: 32; union { struct range range; struct { @@ -23850,6 +24167,7 @@ struct dirty_throttle_control { struct dl_bw { raw_spinlock_t lock; + long: 32; u64 bw; u64 total_bw; }; @@ -23961,6 +24279,13 @@ struct dql { short unsigned int stall_thrs; long unsigned int history_head; long unsigned int history[4]; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; unsigned int limit; unsigned int num_completed; unsigned int prev_ovlimit; @@ -23974,6 +24299,9 @@ struct dql { short unsigned int stall_max; long unsigned int last_reap; long unsigned int stall_cnt; + long: 32; + long: 32; + long: 32; }; struct kqid { @@ -24007,7 +24335,6 @@ struct dquot { atomic_t dq_count; struct super_block *dq_sb; struct kqid dq_id; - long: 32; loff_t dq_off; long unsigned int dq_flags; long: 32; @@ -24133,7 +24460,31 @@ struct dst_ops { void (*confirm_neigh)(const struct dst_entry *, const void *); struct kmem_cache *kmem_cachep; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct percpu_counter pcpuc_entries; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct dump_stack_ctx { @@ -26564,7 +26915,6 @@ struct lock_manager_operations; struct file_lock { struct file_lock_core c; - long: 32; loff_t fl_start; loff_t fl_end; const struct file_lock_operations *fl_ops; @@ -26684,12 +27034,26 @@ struct files_struct { wait_queue_head_t resize_wait; struct fdtable *fdt; struct fdtable fdtab; + long: 32; + long: 32; + long: 32; 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[32]; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct filter_head { @@ -27549,10 +27913,39 @@ struct fqdir { struct inet_frags *f; struct net *net; bool dead; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct rhashtable rhashtable; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic_long_t mem; struct work_struct destroy_work; struct llist_node free_list; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct frag_hdr { @@ -27591,7 +27984,6 @@ struct inet_frag_queue { struct rb_root rb_fragments; struct sk_buff *fragments_tail; struct sk_buff *last_run_head; - long: 32; ktime_t stamp; int len; int meat; @@ -28095,8 +28487,34 @@ struct pcpu_gen_cookie; struct gen_cookie { struct pcpu_gen_cookie *local; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic64_t forward_last; atomic64_t reverse_last; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct gen_pool; @@ -28444,7 +28862,6 @@ struct napi_struct { struct gro_cell { struct sk_buff_head napi_skbs; - long: 32; struct napi_struct napi; local_lock_t bh_lock; }; @@ -28567,6 +28984,11 @@ struct hop_jumbo_hdr { __be32 jumbo_payload_len; }; +struct housekeeping { + struct cpumask cpumasks[3]; + long unsigned int flags; +}; + struct hprobe { enum hprobe_state state; int srcu_idx; @@ -28602,6 +29024,7 @@ struct hrtimer_cpu_base { unsigned int hang_detected: 1; unsigned int softirq_activated: 1; unsigned int online: 1; + long: 32; ktime_t expires_next; struct hrtimer *next_timer; long: 32; @@ -28609,7 +29032,21 @@ struct hrtimer_cpu_base { struct hrtimer *softirq_next_timer; long: 32; struct hrtimer_clock_base clock_base[8]; + long: 32; + long: 32; call_single_data_t csd; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct hrtimer_sleeper { @@ -29532,6 +29969,7 @@ struct inet6_ifaddr { __u8 dad_probes; __u8 stable_privacy_retry; __u16 scope; + long: 32; __u64 dad_nonce; long unsigned int cstamp; long unsigned int tstamp; @@ -29658,6 +30096,7 @@ struct sock_common { struct hlist_nulls_node skc_nulls_node; }; short unsigned int skc_tx_queue_mapping; + short unsigned int skc_rx_queue_mapping; union { int skc_incoming_cpu; u32 skc_rcv_wnd; @@ -29768,6 +30207,7 @@ struct sock { u16 sk_protocol; u16 sk_type; struct dst_entry *sk_dst_cache; + long: 32; netdev_features_t sk_route_caps; u16 sk_gso_type; u16 sk_gso_max_segs; @@ -30119,6 +30559,10 @@ struct inet_hashinfo { unsigned int lhash2_mask; struct inet_listen_hashbucket *lhash2; bool pernet; + long: 32; + long: 32; + long: 32; + long: 32; }; struct inet_listen_hashbucket { @@ -30219,8 +30663,37 @@ struct inet_skb_parm { struct inet_timewait_death_row { refcount_t tw_refcount; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct inet_hashinfo *hashinfo; int sysctl_max_tw_buckets; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct inet_timewait_sock { @@ -30279,8 +30752,8 @@ struct inode { short unsigned int i_bytes; u8 i_blkbits; enum rw_hint i_write_hint; - long: 32; blkcnt_t i_blocks; + seqcount_t i_size_seqcount; struct inode_state_flags i_state; struct rw_semaphore i_rwsem; long unsigned int dirtied_when; @@ -30294,7 +30767,6 @@ struct inode { struct hlist_head i_dentry; struct callback_head i_rcu; }; - long: 32; atomic64_t i_version; atomic64_t i_sequence; atomic_t i_count; @@ -31332,6 +31804,8 @@ struct irq_common_data { unsigned int state_use_accessors; void *handler_data; struct msi_desc *msi_desc; + cpumask_var_t affinity; + unsigned int ipi_offset; }; struct irq_data { @@ -31341,6 +31815,7 @@ struct irq_data { struct irq_common_data *common; struct irq_chip *chip; struct irq_domain *domain; + struct irq_data *parent_data; void *chip_data; }; @@ -31366,6 +31841,8 @@ struct irq_desc { int threads_handled_last; raw_spinlock_t lock; struct cpumask *percpu_enabled; + 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; @@ -31376,6 +31853,14 @@ struct irq_desc { struct module *owner; const char *name; struct hlist_node resend_node; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct irq_desc_devres { @@ -31406,6 +31891,7 @@ struct irq_domain { struct irq_domain_chip_generic *gc; struct device *dev; struct device *pm_dev; + struct irq_domain *parent; void (*exit)(struct irq_domain *); irq_hw_number_t hwirq_max; unsigned int revmap_size; @@ -31448,6 +31934,7 @@ struct irq_domain_info { const struct irq_domain_ops *ops; void *host_data; struct device *dev; + struct irq_domain *parent; struct irq_domain_chip_generic_info *dgc_info; int (*init)(struct irq_domain *); void (*exit)(struct irq_domain *); @@ -31455,12 +31942,20 @@ struct irq_domain_info { struct irq_fwspec; +struct irq_fwspec_info; + struct irq_domain_ops { int (*match)(struct irq_domain *, struct device_node *, enum irq_domain_bus_token); int (*select)(struct irq_domain *, struct irq_fwspec *, enum irq_domain_bus_token); int (*map)(struct irq_domain *, unsigned int, irq_hw_number_t); void (*unmap)(struct irq_domain *, unsigned int); int (*xlate)(struct irq_domain *, struct device_node *, const u32 *, unsigned int, long unsigned int *, unsigned int *); + int (*alloc)(struct irq_domain *, unsigned int, unsigned int, void *); + void (*free)(struct irq_domain *, unsigned int, unsigned int); + int (*activate)(struct irq_domain *, struct irq_data *, bool); + void (*deactivate)(struct irq_domain *, struct irq_data *); + int (*translate)(struct irq_domain *, struct irq_fwspec *, long unsigned int *, unsigned int *); + int (*get_fwspec_info)(struct irq_fwspec *, struct irq_fwspec_info *); }; struct irq_fwspec { @@ -31474,6 +31969,12 @@ struct irq_fwspec_info { const struct cpumask *affinity; }; +struct irq_glue { + struct irq_affinity_notify notify; + struct cpu_rmap *rmap; + u16 index; +}; + typedef irqreturn_t (*irq_handler_t)(int, void *); struct irqaction { @@ -31493,6 +31994,9 @@ struct irqaction { long unsigned int thread_mask; const char *name; struct proc_dir_entry *dir; + long: 32; + long: 32; + long: 32; }; struct irqchip_fwid { @@ -31563,6 +32067,8 @@ struct kallsyms_data { size_t found; }; +struct kcsan_scoped_access {}; + struct kern_ipc_perm { spinlock_t lock; bool deleted; @@ -31578,6 +32084,7 @@ struct kern_ipc_perm { struct rhash_head khtnode; struct callback_head rcu; refcount_t refcount; + long: 32; }; struct kernel_clone_args { @@ -31737,7 +32244,7 @@ struct kernfs_fs_context { }; struct kernfs_global_locks { - struct mutex open_file_mutex[2]; + struct mutex open_file_mutex[16]; }; struct simple_xattrs { @@ -31754,7 +32261,6 @@ struct kernfs_iattrs { struct simple_xattrs xattrs; atomic_t nr_user_xattrs; atomic_t user_xattr_size; - long: 32; }; struct kernfs_node { @@ -32594,6 +33100,17 @@ struct list_lru_one { struct list_lru_node { struct list_lru_one lru; atomic_long_t nr_items; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct listeners { @@ -33491,6 +34008,21 @@ struct mm_struct { struct { struct { atomic_t mm_count; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct maple_tree mm_mt; long unsigned int mmap_base; @@ -33504,10 +34036,13 @@ struct mm_struct { spinlock_t page_table_lock; struct rw_semaphore mmap_lock; struct list_head mmlist; + struct rcuwait vma_writer_wait; + seqcount_t mm_lock_seq; long unsigned int hiwater_rss; long unsigned int hiwater_vm; long unsigned int total_vm; long unsigned int locked_vm; + long: 32; atomic64_t pinned_vm; long unsigned int data_vm; long unsigned int exec_vm; @@ -33527,6 +34062,7 @@ struct mm_struct { long unsigned int env_start; long unsigned int env_end; long unsigned int saved_auxv[46]; + long: 32; struct percpu_counter rss_stat[4]; struct linux_binfmt *binfmt; long: 32; @@ -33537,6 +34073,18 @@ struct mm_struct { atomic_t tlb_flush_pending; struct uprobes_state uprobes_state; struct work_struct async_put_work; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; char flexible_array[0]; }; @@ -33748,6 +34296,7 @@ struct mnt_namespace { struct user_namespace *user_ns; struct ucounts *ucounts; wait_queue_head_t poll; + long: 32; u64 seq_origin; u64 event; unsigned int nr_mounts; @@ -33762,6 +34311,11 @@ struct mnt_ns_info { __u64 mnt_ns_id; }; +struct mnt_pcp { + int mnt_count; + int mnt_writers; +}; + struct plt_entries; struct mod_plt_sec { @@ -33868,8 +34422,6 @@ struct module { long: 32; long: 32; long: 32; - long: 32; - long: 32; struct module_memory mem[7]; struct mod_arch_specific arch; long unsigned int taints; @@ -33878,10 +34430,14 @@ struct module { struct module_sect_attrs *sect_attrs; struct module_notes_attrs *notes_attrs; char *args; + void *percpu; + unsigned int percpu_size; void *noinstr_text_start; unsigned int noinstr_text_size; unsigned int num_tracepoints; tracepoint_ptr_t *tracepoints_ptrs; + unsigned int num_srcu_structs; + struct srcu_struct **srcu_struct_ptrs; unsigned int num_bpf_raw_events; struct bpf_raw_event_map *bpf_raw_events; unsigned int btf_data_size; @@ -33902,6 +34458,18 @@ struct module { unsigned int num_kprobe_blacklist; long: 32; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct module_attribute { @@ -33970,8 +34538,7 @@ struct mount { struct callback_head mnt_rcu; struct llist_node mnt_llist; }; - int mnt_count; - int mnt_writers; + struct mnt_pcp *mnt_pcp; struct list_head mnt_mounts; struct list_head mnt_child; struct mount *mnt_next_for_sb; @@ -33991,6 +34558,7 @@ struct mount { }; int mnt_t_flags; int mnt_id; + long: 32; u64 mnt_id_unique; int mnt_group_id; int mnt_expiry_mark; @@ -34047,6 +34615,26 @@ struct mptcp_out_options {}; struct mptcp_sock {}; +struct mpu_rgn { + union { + u32 drbar; + u32 prbar; + }; + union { + u32 drsr; + u32 prlar; + }; + union { + u32 dracr; + u32 unused; + }; +}; + +struct mpu_rgn_info { + unsigned int used; + struct mpu_rgn rgns[16]; +}; + struct mq_sched { struct Qdisc **qdiscs; }; @@ -34182,6 +34770,15 @@ struct msi_desc { }; }; +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 multiprocess_signals { sigset_t signal; struct hlist_node node; @@ -34524,7 +35121,6 @@ struct neighbour { u8 protocol; u32 flags; seqlock_t ha_lock; - long: 32; unsigned char ha[32]; struct hh_cache hh; int (*output)(struct neighbour *, struct sk_buff *); @@ -34535,7 +35131,6 @@ struct neighbour { struct net_device *dev; netdevice_tracker dev_tracker; u8 primary_key[0]; - long: 32; }; struct neighbour_cb { @@ -34626,6 +35221,7 @@ struct netns_ipv4 { int sysctl_tcp_rmem[3]; int sysctl_tcp_rcvbuf_low_rtt; __u8 __cacheline_group_end__netns_ipv4_read_rx[0]; + long: 32; struct inet_timewait_death_row tcp_death_row; struct udp_table *udp_table; struct ipv4_devconf *devconf_all; @@ -34756,9 +35352,12 @@ struct netns_ipv4 { struct fib_notifier_ops *ipmr_notifier_ops; unsigned int ipmr_seq; atomic_t rt_genid; + long: 32; siphash_key_t ip_id_key; struct hlist_head *inet_addr_lst; struct delayed_work addr_chk_work; + long: 32; + long: 32; }; struct netns_sysctl_ipv6 { @@ -34846,6 +35445,17 @@ struct netns_ipv6 { u32 seq; } ip6addrlbl_table; struct ioam6_pernet_data *ioam6_data; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct netns_bpf { @@ -34874,6 +35484,7 @@ struct net { struct user_namespace *user_ns; struct ucounts *ucounts; struct idr netns_ids; + long: 32; struct ns_common ns; struct ref_tracker_dir refcnt_tracker; struct ref_tracker_dir notrefcnt_tracker; @@ -34895,6 +35506,13 @@ struct net { struct netns_packet packet; struct netns_nexthop nexthop; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct netns_ipv4 ipv4; struct netns_ipv6 ipv6; struct net_generic *gen; @@ -34903,12 +35521,58 @@ struct net { u64 net_cookie; struct sock *diag_nlsk; long: 32; + long: 32; + long: 32; }; struct net_aligned_data { atomic64_t net_cookie; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic_long_t tcp_memory_allocated; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic_long_t udp_memory_allocated; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct netdev_tc_txq { @@ -35025,6 +35689,8 @@ struct udp_tunnel_nic; struct net_device_ops; +struct xps_dev_maps; + struct pcpu_lstats; struct pcpu_sw_netstats; @@ -35080,6 +35746,7 @@ struct net_device { unsigned int mtu; short unsigned int needed_headroom; struct netdev_tc_txq tc_to_txq[16]; + struct xps_dev_maps *xps_maps[2]; struct bpf_mprog_entry *tcx_egress; __u8 __cacheline_group_end__net_device_read_tx[0]; __u8 __cacheline_group_begin__net_device_read_txrx[0]; @@ -35176,6 +35843,7 @@ struct net_device { unsigned int xdp_zc_max_segs; struct netdev_queue *ingress_queue; unsigned char broadcast[32]; + struct cpu_rmap *rx_cpu_rmap; struct hlist_node index_hlist; unsigned int num_tx_queues; struct Qdisc *qdisc; @@ -35186,7 +35854,7 @@ struct net_device { int watchdog_timeo; u32 proto_down_reason; struct list_head todo_list; - refcount_t dev_refcnt; + int *pcpu_refcnt; struct ref_tracker_dir refcnt_tracker; struct list_head link_watch_list; u8 reg_state; @@ -35198,7 +35866,6 @@ struct net_device { void *ml_priv; enum netdev_ml_priv_type ml_priv_type; enum netdev_stat_type pcpu_stat_type: 8; - long: 32; struct device dev; const struct attribute_group *sysfs_groups[5]; const struct attribute_group *sysfs_rx_queue_group; @@ -35254,6 +35921,10 @@ struct net_device { long: 32; long: 32; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; u8 priv[0]; }; @@ -35321,6 +35992,7 @@ struct net_device_ops { int (*ndo_set_vf_guid)(struct net_device *, int, u64, int); int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool); int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *); + int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32); int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *); int (*ndo_del_slave)(struct net_device *, struct net_device *); struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool); @@ -35495,6 +36167,8 @@ struct net_protocol { u32 secret; }; +struct rps_sock_flow_table; + struct skb_defer_node; struct net_hotdata { @@ -35512,6 +36186,8 @@ struct net_hotdata { struct kmem_cache *skbuff_cache; struct kmem_cache *skbuff_fclone_cache; struct kmem_cache *skb_small_head_cache; + struct rps_sock_flow_table *rps_sock_flow_table; + u32 rps_cpu_mask; struct skb_defer_node *skb_defer_nodes; int gro_normal_batch; int netdev_budget; @@ -35760,6 +36436,17 @@ struct netdev_queue { long unsigned int trans_start; long unsigned int state; struct napi_struct *napi; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct netdev_queue_attribute { @@ -35838,16 +36525,20 @@ struct pp_memory_provider_params { const struct memory_provider_ops *mp_ops; }; +struct rps_map; + +struct rps_dev_flow_table; + 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; const struct attribute_group **groups; struct net_device *dev; netdevice_tracker dev_tracker; struct napi_struct *napi; struct pp_memory_provider_params mp_params; - long: 32; - long: 32; }; struct netdev_stat_ops { @@ -36015,7 +36706,6 @@ struct netlink_sock { struct module *module; struct rhash_head node; struct callback_head rcu; - long: 32; }; struct netlink_table { @@ -36341,6 +37031,14 @@ struct node_barn { unsigned int nr_empty; }; +struct node_groups { + unsigned int id; + union { + unsigned int ngroups; + unsigned int ncpus; + }; +}; + struct node_notify { int nid; }; @@ -36422,7 +37120,37 @@ struct ntp_data { struct numa_drop_counters { atomic_t drops0; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic_t drops1; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct objpool_slot { @@ -36466,6 +37194,11 @@ struct of_clk_provider { void *data; }; +struct of_cpu_method { + const char *method; + const struct smp_operations *ops; +}; + struct of_dev_auxdata { char *compatible; resource_size_t phys_addr; @@ -36629,6 +37362,13 @@ struct open_how { __u64 resolve; }; +struct optimistic_spin_node { + struct optimistic_spin_node *next; + struct optimistic_spin_node *prev; + int locked; + int cpu; +}; + struct osnoise_entry { struct trace_entry ent; u64 noise; @@ -36697,12 +37437,52 @@ struct pp_alloc_cache { struct ptr_ring { int producer; spinlock_t producer_lock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; int consumer_head; int consumer_tail; spinlock_t consumer_lock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; int size; int batch; void **queue; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct page_pool_params_slow { @@ -36734,13 +37514,30 @@ struct page_pool { long unsigned int defer_start; long unsigned int defer_warn; u32 xdp_mem_id; + long: 32; struct pp_alloc_cache alloc; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct ptr_ring ring; void *mp_priv; const struct memory_provider_ops *mp_ops; struct xarray dma_mapped; atomic_t pages_state_release_cnt; refcount_t user_cnt; + long: 32; u64 destroy_cnt; struct page_pool_params_slow slow; long: 32; @@ -36752,6 +37549,14 @@ struct page_pool { } user; long: 32; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct page_pool_bh { @@ -36914,6 +37719,10 @@ struct pcpu_chunk { int free_bytes; struct pcpu_block_md chunk_md; long unsigned int *bound_map; + long: 32; + long: 32; + long: 32; + long: 32; void *base_addr; long unsigned int *alloc_map; struct pcpu_block_md *md_blocks; @@ -36926,6 +37735,12 @@ struct pcpu_chunk { int nr_populated; int nr_empty_pop_pages; long unsigned int populated[0]; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct pcpu_dstats { @@ -36994,9 +37809,13 @@ struct per_cpu_pages { u8 alloc_factor; short int free_count; struct list_head lists[12]; + long: 32; }; -struct per_cpu_zonestat {}; +struct per_cpu_zonestat { + s8 vm_stat_diff[10]; + s8 stat_threshold; +}; struct per_frame_masks { u64 may_read; @@ -37207,7 +38026,6 @@ struct perf_event_context { raw_spinlock_t lock; struct mutex mutex; struct list_head pmu_ctx_list; - long: 32; struct perf_event_groups pinned_groups; struct perf_event_groups flexible_groups; struct list_head event_list; @@ -37264,7 +38082,6 @@ struct perf_cpu_pmu_context { int exclusive; int pmu_disable_count; raw_spinlock_t hrtimer_lock; - long: 32; struct hrtimer hrtimer; ktime_t hrtimer_interval; unsigned int hrtimer_active; @@ -37695,10 +38512,32 @@ struct zone { long unsigned int present_pages; const char *name; int initialized; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + struct cacheline_padding _pad1_; struct free_area free_area[11]; long unsigned int flags; spinlock_t lock; struct llist_head trylock_free_pages; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + struct cacheline_padding _pad2_; long unsigned int percpu_drift_mark; long unsigned int compact_cached_free_pfn; long unsigned int compact_cached_migrate_pfn[2]; @@ -37709,8 +38548,21 @@ struct zone { int compact_order_failed; bool compact_blockskip_flush; bool contiguous; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + struct cacheline_padding _pad3_; atomic_long_t vm_stat[10]; atomic_long_t vm_numa_event[0]; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct zoneref { @@ -37746,10 +38598,31 @@ struct pglist_data { struct task_struct *kcompactd; bool proactive_compact_trigger; long unsigned int totalreserve_pages; + long: 32; + long: 32; + long: 32; + long: 32; + struct cacheline_padding _pad1_; struct lruvec __lruvec; long unsigned int flags; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + struct cacheline_padding _pad2_; struct per_cpu_nodestat *per_cpu_nodestats; atomic_long_t vm_stat[46]; + long: 32; }; struct phc_vclocks_reply_data { @@ -37971,6 +38844,7 @@ struct pid { refcount_t count; unsigned int level; spinlock_t lock; + long: 32; struct { u64 ino; struct rb_node pidfs_node; @@ -37983,7 +38857,6 @@ struct pid { wait_queue_head_t wait_pidfd; struct callback_head rcu; struct upid numbers[0]; - long: 32; }; struct pid_namespace { @@ -37998,7 +38871,6 @@ struct pid_namespace { struct user_namespace *user_ns; struct ucounts *ucounts; int reboot; - long: 32; struct ns_common ns; struct work_struct work; }; @@ -38454,6 +39326,7 @@ struct prev_cputime { u64 utime; u64 stime; raw_spinlock_t lock; + long: 32; }; struct print_entry { @@ -39093,8 +39966,26 @@ struct raw6_sock { __u32 offset; struct icmp6_filter filter; __u32 ip6mr_table; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct numa_drop_counters drop_counters; struct ipv6_pinfo inet6; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct raw_data_entry { @@ -39114,6 +40005,21 @@ struct raw_frag_vec { struct raw_hashinfo { spinlock_t lock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct hlist_head ht[256]; }; @@ -39121,6 +40027,10 @@ struct raw_sock { struct inet_sock inet; struct icmp_filter filter; u32 ipmr_table; + long: 32; + long: 32; + long: 32; + long: 32; struct numa_drop_counters drop_counters; }; @@ -39174,15 +40084,12 @@ struct rcu_cblist { long int len; }; -struct rcu_ctrlblk { - struct callback_head *rcucblist; - struct callback_head **donetail; - struct callback_head **curtail; - long unsigned int gp_seq; -}; - -struct rcu_gp_oldstate { - long unsigned int rgos_norm; +union rcu_noqs { + struct { + u8 norm; + u8 exp; + } b; + u16 s; }; struct rcu_segcblist { @@ -39194,6 +40101,163 @@ struct rcu_segcblist { u8 flags; }; +struct rcu_snap_record { + long unsigned int gp_seq; + long: 32; + u64 cputime_irq; + u64 cputime_softirq; + u64 cputime_system; + u64 nr_hardirqs; + unsigned int nr_softirqs; + long: 32; + long long unsigned int nr_csw; + long unsigned int jiffies; + long: 32; +}; + +struct rcu_node; + +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; + unsigned int gpwrap_count; + bool cpu_started; + struct rcu_node *mynode; + long unsigned int grpmask; + long unsigned int ticks_this_gp; + struct irq_work defer_qs_iw; + int 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 watching_snap; + 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_watching_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_state; + long unsigned int rcu_onl_gp_seq; + short int rcu_onl_gp_state; + long unsigned int last_fqs_resched; + long unsigned int last_sched_clock; + struct rcu_snap_record snap_record; + long int lazy_len; + int cpu; +}; + +struct rcu_exp_work { + long unsigned int rew_s; + struct kthread_work rew_work; +}; + +struct rcu_gp_oldstate { + long unsigned int rgos_norm; + long unsigned int rgos_exp; +}; + +struct rt_mutex_base { + raw_spinlock_t wait_lock; + struct rb_root_cached waiters; + struct task_struct *owner; +}; + +struct rt_mutex { + struct rt_mutex_base rtmutex; +}; + +struct 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; + struct kthread_worker *exp_kworker; + 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 kthread_mutex; + struct task_struct *boost_kthread_task; + unsigned int boost_kthread_status; + long unsigned int n_boosts; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + raw_spinlock_t fqslock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + 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; + raw_spinlock_t exp_poll_lock; + long unsigned int exp_seq_poll_rq; + struct work_struct exp_poll_wq; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; +}; + union rcu_special { struct { u8 blocked; @@ -39204,6 +40268,97 @@ union rcu_special { u32 s; }; +struct sr_wait_node { + atomic_t inuse; + struct llist_node node; +}; + +struct rcu_state { + struct rcu_node node[1]; + struct rcu_node *level[2]; + int ncpus; + int n_online_cpus; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + 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; + long unsigned int gp_seq_polled; + long unsigned int gp_seq_polled_snap; + long unsigned int gp_seq_polled_exp_snap; + 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; + int nr_fqs_jiffies_stall; + long unsigned int jiffies_resched; + long unsigned int n_force_qs_gpstart; + const char *name; + char abbr; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + arch_spinlock_t ofl_lock; + struct llist_head srs_next; + struct llist_node *srs_wait_tail; + struct llist_node *srs_done_tail; + struct sr_wait_node srs_wait_nodes[5]; + struct work_struct srs_cleanup_work; + atomic_t srs_cleanups_pending; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; +}; + struct rcu_synchronize { struct callback_head head; struct completion completion; @@ -39697,7 +40852,6 @@ struct ring_buffer_per_cpu { struct work_struct update_pages_work; struct completion update_done; struct rb_irq_work irq_work; - long: 32; }; struct rings_reply_data { @@ -39759,12 +40913,54 @@ struct root_domain { long: 32; struct dl_bw dl_bw; struct cpudl cpudl; - long: 32; u64 visit_cookie; + 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; struct perf_domain *pd; +}; + +struct rps_dev_flow { + u16 cpu; + u16 filter; + unsigned int last_qtail; + u32 hash; +}; + +struct rps_dev_flow_table { + u8 log; + struct callback_head rcu; + struct rps_dev_flow flows[0]; +}; + +struct rps_map { + unsigned int len; + struct callback_head rcu; + u16 cpus[0]; +}; + +struct rps_sock_flow_table { + struct callback_head rcu; + u32 mask; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + u32 ents[0]; }; struct rt_prio_array { @@ -39821,7 +41017,6 @@ struct rq { unsigned int queue_mask; unsigned int nr_running; unsigned int ttwu_pending; - long: 32; u64 nr_switches; long: 32; long: 32; @@ -40443,6 +41638,11 @@ struct sb_writers { struct percpu_rw_semaphore rw_sem[3]; }; +struct scale_freq_data { + enum scale_freq_source source; + void (*set_freq_scale)(void); +}; + struct scan_control { long unsigned int nr_to_reclaim; nodemask_t *nodemask; @@ -40739,6 +41939,15 @@ struct sd_flag_debug { char *name; }; +struct sd_flow_limit { + struct callback_head rcu; + unsigned int count; + u8 log_buckets; + unsigned int history_head; + u16 history[128]; + u8 buckets[0]; +}; + struct sg_lb_stats { long unsigned int avg_load; long unsigned int group_load; @@ -40790,6 +41999,17 @@ struct sec_path { struct seccomp {}; +struct secondary_data { + union { + struct mpu_rgn_info *mpu_rgn_info; + u64 pgdir; + }; + long unsigned int swapper_pg_dir; + void *stack; + struct task_struct *task; + long: 32; +}; + struct section_perm { const char *name; long unsigned int start; @@ -41186,12 +42406,14 @@ struct shmem_inode_info { struct list_head swaplist; }; }; + long: 32; struct timespec64 i_crtime; struct shared_policy policy; struct simple_xattrs xattrs; long unsigned int fallocend; unsigned int fsflags; atomic_t stop_eviction; + long: 32; struct inode vfs_inode; }; @@ -41458,6 +42680,20 @@ struct sk_skb_cb { struct skb_defer_node { struct llist_head defer_list; atomic_long_t defer_count; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct skb_frag { @@ -41584,6 +42820,15 @@ struct smc_hashinfo { struct hlist_head ht; }; +struct smp_call_on_cpu_struct { + struct work_struct work; + struct completion done; + int (*func)(void *); + void *data; + int ret; + int cpu; +}; + struct smp_hotplug_thread { struct task_struct **store; struct list_head list; @@ -41598,6 +42843,13 @@ struct smp_hotplug_thread { const char *thread_comm; }; +struct smp_operations { + void (*smp_init_cpus)(void); + void (*smp_prepare_cpus)(unsigned int); + void (*smp_secondary_init)(unsigned int); + int (*smp_boot_secondary)(unsigned int, struct task_struct *); +}; + struct smpboot_thread_data { unsigned int cpu; unsigned int status; @@ -41737,6 +42989,15 @@ struct socket_wq { struct fasync_struct *fasync_list; long unsigned int flags; struct callback_head rcu; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct socket { @@ -41746,6 +43007,16 @@ struct socket { struct file *file; struct sock *sk; const struct proto_ops *ops; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct socket_wq wq; }; @@ -41756,6 +43027,10 @@ struct socket__safe_trusted_or_null { struct socket_alloc { struct socket socket; struct inode vfs_inode; + long: 32; + long: 32; + long: 32; + long: 32; }; struct sockmap_link { @@ -41774,19 +43049,62 @@ struct softnet_data { local_lock_t process_queue_bh_lock; unsigned int processed; unsigned int time_squeeze; + struct softnet_data *rps_ipi_list; unsigned int received_rps; bool in_net_rx_action; bool in_napi_threaded_poll; + struct sd_flow_limit *flow_limit; struct Qdisc *output_queue; struct Qdisc **output_queue_tailp; struct sk_buff *completion_queue; struct netdev_xmit xmit; + unsigned int input_queue_head; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + call_single_data_t csd; + struct softnet_data *rps_ipi_next; + unsigned int cpu; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long int pad[3]; + unsigned int input_queue_tail; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; struct numa_drop_counters drop_counters; int defer_ipi_scheduled; long: 32; + long: 32; + long: 32; call_single_data_t defer_csd; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct software_node { @@ -41847,6 +43165,62 @@ struct sr6_tlv { __u8 data[0]; }; +struct srcu_ctr { + atomic_long_t srcu_locks; + atomic_long_t srcu_unlocks; +}; + +struct srcu_data { + struct srcu_ctr srcu_ctrs[2]; + int srcu_reader_flavor; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + spinlock_t lock; + struct rcu_segcblist srcu_cblist; + long unsigned int srcu_gp_seq_needed; + long unsigned int srcu_gp_seq_needed_exp; + bool srcu_cblist_invoking; + struct timer_list delay_work; + struct work_struct work; + struct callback_head srcu_barrier_head; + struct callback_head srcu_ec_head; + int srcu_ec_state; + struct srcu_node *mynode; + long unsigned int grpmask; + int cpu; + struct srcu_struct *ssp; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; +}; + +struct srcu_node { + spinlock_t lock; + long unsigned int srcu_have_cbs[4]; + long unsigned int srcu_data_have_cbs[4]; + long unsigned int srcu_gp_seq_needed_exp; + struct srcu_node *srcu_parent; + int grplo; + int grphi; +}; + struct ss_tmp { enum ss_state state; long unsigned int data; @@ -42215,12 +43589,34 @@ struct super_block { struct work_struct destroy_work; struct mutex s_sync_lock; int s_stack_depth; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; spinlock_t s_inode_list_lock; struct list_head s_inodes; spinlock_t s_inode_wblist_lock; struct list_head s_inodes_wb; long int s_min_writeback_pages; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct super_operations { @@ -42462,6 +43858,13 @@ struct sysinfo { char _f[8]; }; +struct sysrq_key_op { + void (* const handler)(u8); + const char * const help_msg; + const char * const action_msg; + const int enable_mask; +}; + struct system_counterval_t { u64 cycles; enum clocksource_ids cs_id; @@ -42610,6 +44013,8 @@ struct vfp_hard_struct { __u32 fpscr; __u32 fpinst; __u32 fpinst2; + __u32 cpu; + long: 32; }; union vfp_state { @@ -42666,6 +44071,20 @@ struct task_struct { int normal_prio; unsigned int rt_priority; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct sched_entity se; struct sched_rt_entity rt; long: 32; @@ -42822,12 +44241,6 @@ struct task_struct { struct bpf_net_context *bpf_net_context; struct llist_head kretprobe_instances; struct thread_struct thread; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; }; struct task_struct__safe_rcu { @@ -43104,18 +44517,6 @@ struct tcp_sock { struct rb_root out_of_order_queue; __u8 __cacheline_group_end__tcp_sock_read_rx[0]; long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; - long: 32; __u8 __cacheline_group_begin__tcp_sock_write_tx[0]; u32 segs_out; u32 data_segs_out; @@ -43809,7 +45210,6 @@ struct timer_base { long: 32; long: 32; long: 32; - long: 32; }; struct timer_of { @@ -43873,7 +45273,6 @@ struct tk_data { struct timekeeper shadow_timekeeper; raw_spinlock_t lock; long: 32; - long: 32; }; struct tk_fast { @@ -43882,6 +45281,12 @@ struct tk_fast { struct tk_read_base base[2]; }; +struct tlb_args { + struct vm_area_struct *ta_vma; + long unsigned int ta_start; + long unsigned int ta_end; +}; + struct tls_crypto_info { __u16 version; __u16 cipher_type; @@ -44121,7 +45526,6 @@ struct trace_array { unsigned int n_err_log_entries; struct tracer *current_trace; struct tracer_flags *current_trace_flags; - long: 32; u64 trace_flags; unsigned char trace_flags_index[64]; unsigned int flags; @@ -44156,7 +45560,6 @@ struct trace_array { struct list_head hist_vars; struct trace_func_repeats *last_func_repeats; bool ring_buffer_expanded; - long: 32; }; struct trace_array_cpu { @@ -44398,6 +45801,10 @@ struct trace_event_data_offsets_cpuhp_exit {}; struct trace_event_data_offsets_cpuhp_multi_enter {}; +struct trace_event_data_offsets_csd_function {}; + +struct trace_event_data_offsets_csd_queue_cpu {}; + struct trace_event_data_offsets_ctime {}; struct trace_event_data_offsets_ctime_ns_xchg {}; @@ -44519,6 +45926,8 @@ struct trace_event_data_offsets_hrtimer_setup {}; struct trace_event_data_offsets_hrtimer_start {}; +struct trace_event_data_offsets_hw_pressure_update {}; + struct trace_event_data_offsets_icmp_send {}; struct trace_event_data_offsets_inet_sk_error_report {}; @@ -44810,6 +46219,8 @@ struct trace_event_data_offsets_qdisc_reset { const void *kind_ptr_; }; +struct trace_event_data_offsets_rcu_stall_warning {}; + struct trace_event_data_offsets_rcu_utilization {}; struct trace_event_data_offsets_reclaim_retry_zone {}; @@ -45280,6 +46691,22 @@ struct trace_event_raw_cpuhp_multi_enter { char __data[0]; }; +struct trace_event_raw_csd_function { + struct trace_entry ent; + void *func; + void *csd; + char __data[0]; +}; + +struct trace_event_raw_csd_queue_cpu { + struct trace_entry ent; + unsigned int cpu; + void *callsite; + void *func; + void *csd; + char __data[0]; +}; + struct trace_event_raw_ctime { struct trace_entry ent; dev_t dev; @@ -45609,6 +47036,13 @@ struct trace_event_raw_hrtimer_start { long: 32; }; +struct trace_event_raw_hw_pressure_update { + struct trace_entry ent; + long unsigned int hw_pressure; + int cpu; + char __data[0]; +}; + struct trace_event_raw_icmp_send { struct trace_entry ent; const void *skbaddr; @@ -46635,6 +48069,13 @@ struct trace_event_raw_qdisc_reset { char __data[0]; }; +struct trace_event_raw_rcu_stall_warning { + struct trace_entry ent; + const char *rcuname; + const char *msg; + char __data[0]; +}; + struct trace_event_raw_rcu_utilization { struct trace_entry ent; const char *s; @@ -48050,11 +49491,26 @@ struct udp_sock { struct sk_buff * (*gro_receive)(struct sock *, struct list_head *, struct sk_buff *); int (*gro_complete)(struct sock *, struct sk_buff *, int); struct udp_prod_queue *udp_prod_queue; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct sk_buff_head reader_queue; int forward_deficit; int forward_threshold; bool peeking_with_offset; struct hlist_node tunnel_list; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct numa_drop_counters drop_counters; }; @@ -48062,6 +49518,12 @@ struct udp6_sock { struct udp_sock udp; struct ipv6_pinfo inet6; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct udp_dev_scratch { @@ -48075,6 +49537,7 @@ struct udp_hslot { }; int count; spinlock_t lock; + long: 32; }; struct udp_hslot_main { @@ -48090,6 +49553,20 @@ struct udp_mib { struct udp_prod_queue { struct llist_head ll_root; atomic_t rmem_alloc; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct udp_skb_cb { @@ -48194,12 +49671,25 @@ struct unix_sock { struct sock *listener; struct unix_vertex *vertex; spinlock_t lock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct socket_wq peer_wq; wait_queue_entry_t peer_wake; struct scm_stat scm_stat; int inq_len; bool recvmsg_inq; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct unlink_vma_file_batch { @@ -48487,17 +49977,33 @@ struct vm_area_struct { const vm_flags_t vm_flags; vma_flags_t flags; }; + unsigned int vm_lock_seq; 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; void *vm_private_data; + long: 32; + long: 32; + long: 32; + refcount_t vm_refcnt; struct { struct rb_node rb; long unsigned int rb_subtree_last; } shared; struct vm_userfaultfd_ctx vm_userfaultfd_ctx; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct vm_area_struct__safe_trusted_or_null { @@ -48640,7 +50146,7 @@ struct vmap_block { struct vmap_area *va; long unsigned int free; long unsigned int dirty; - long unsigned int used_map[32]; + long unsigned int used_map[16]; long unsigned int dirty_min; long unsigned int dirty_max; struct list_head free_list; @@ -48741,6 +50247,7 @@ struct wb_completion { struct wb_domain { spinlock_t lock; + long: 32; struct fprop_global completions; struct timer_list period_timer; long unsigned int period_time; @@ -48779,6 +50286,13 @@ struct word_at_a_time { const long unsigned int high_bits; }; +struct work_for_cpu { + struct work_struct work; + long int (*fn)(void *); + void *arg; + long int ret; +}; + struct work_offq_data { u32 pool_id; u32 disable; @@ -48883,8 +50397,6 @@ struct workqueue_struct { long: 32; long: 32; long: 32; - long: 32; - long: 32; unsigned int flags; struct pool_workqueue **cpu_pwq; struct wq_node_nr_active *node_nr_active[0]; @@ -49148,6 +50660,14 @@ struct xdp_umem; struct xdp_sock { struct sock sk; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct xsk_queue *rx; struct net_device *dev; struct xdp_umem *umem; @@ -49161,6 +50681,14 @@ struct xdp_sock { XSK_BOUND = 1, XSK_UNBOUND = 2, } state; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct xsk_queue *tx; struct list_head tx_list; u32 tx_budget_spent; @@ -49174,6 +50702,17 @@ struct xdp_sock { struct xsk_queue *fq_tmp; struct xsk_queue *cq_tmp; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct xdp_test_data { @@ -49427,7 +50966,6 @@ struct xfrm_state { u32 extra_flags; struct xfrm_mark smark; } props; - long: 32; struct xfrm_lifetime_cfg lft; struct xfrm_algo_auth *aalg; struct xfrm_algo *ealg; @@ -49507,6 +51045,22 @@ struct xol_area { long unsigned int vaddr; }; +struct xps_map; + +struct xps_dev_maps { + struct callback_head rcu; + unsigned int nr_ids; + s16 num_tc; + struct xps_map *attr_map[0]; +}; + +struct xps_map { + unsigned int len; + unsigned int alloc_len; + struct callback_head rcu; + u16 queues[0]; +}; + struct xsk_buff_pool { struct device *dev; struct net_device *netdev; @@ -49520,6 +51074,20 @@ struct xsk_buff_pool { struct list_head xskb_list; u32 heads_cnt; u16 queue_id; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct xsk_queue *fq; struct xsk_queue *cq; dma_addr_t *dma_pages; @@ -49546,6 +51114,14 @@ struct xsk_buff_pool { spinlock_t cq_cached_prod_lock; struct xdp_buff_xsk *free_heads[0]; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct xsk_tx_metadata_ops { @@ -50172,6 +51748,12 @@ typedef void (*btf_trace_cpuhp_exit)(void *, unsigned int, int, int, int); typedef void (*btf_trace_cpuhp_multi_enter)(void *, unsigned int, int, int, int (*)(unsigned int, struct hlist_node *), struct hlist_node *); +typedef void (*btf_trace_csd_function_entry)(void *, smp_call_func_t, call_single_data_t *); + +typedef void (*btf_trace_csd_function_exit)(void *, smp_call_func_t, call_single_data_t *); + +typedef void (*btf_trace_csd_queue_cpu)(void *, const unsigned int, long unsigned int, smp_call_func_t, call_single_data_t *); + typedef void (*btf_trace_ctime_ns_xchg)(void *, struct inode *, u32, u32, u32); typedef void (*btf_trace_ctime_xchg_skip)(void *, struct inode *, struct timespec64 *); @@ -50252,6 +51834,8 @@ typedef void (*btf_trace_hrtimer_setup)(void *, struct hrtimer *, clockid_t, enu typedef void (*btf_trace_hrtimer_start)(void *, struct hrtimer *, enum hrtimer_mode); +typedef void (*btf_trace_hw_pressure_update)(void *, int, long unsigned int); + typedef void (*btf_trace_icmp_send)(void *, const struct sk_buff *, int, int); typedef void (*btf_trace_inet_sk_error_report)(void *, const struct sock *); @@ -50534,6 +52118,8 @@ typedef void (*btf_trace_qdisc_enqueue)(void *, struct Qdisc *, const struct net typedef void (*btf_trace_qdisc_reset)(void *, struct Qdisc *); +typedef void (*btf_trace_rcu_stall_warning)(void *, const char *, const char *); + typedef void (*btf_trace_rcu_utilization)(void *, const char *); typedef void (*btf_trace_reclaim_retry_zone)(void *, struct zoneref *, int, long unsigned int, long unsigned int, long unsigned int, int, bool); @@ -50852,6 +52438,10 @@ typedef int (*parse_pred_fn)(const char *, void *, int, struct filter_parse_erro typedef int (*parse_unknown_fn)(char *, char *, const char *, void *); +typedef int pcpu_fc_cpu_distance_fn_t(unsigned int, unsigned int); + +typedef int pcpu_fc_cpu_to_node_fn_t(int); + typedef void perf_iterate_f(struct perf_event *, void *); typedef int perf_snapshot_branch_stack_t(struct perf_branch_entry *, unsigned int); diff --git a/include/loongarch64/vmlinux_6.19.h b/include/loongarch64/vmlinux_6.19.h index 9e5bee2..d1c5e07 100644 --- a/include/loongarch64/vmlinux_6.19.h +++ b/include/loongarch64/vmlinux_6.19.h @@ -5047,16 +5047,17 @@ enum { __SCHED_FEAT_TTWU_QUEUE = 14, __SCHED_FEAT_SIS_UTIL = 15, __SCHED_FEAT_WARN_DOUBLE_CLOCK = 16, - __SCHED_FEAT_RT_RUNTIME_SHARE = 17, - __SCHED_FEAT_LB_MIN = 18, - __SCHED_FEAT_ATTACH_AGE_LOAD = 19, - __SCHED_FEAT_WA_IDLE = 20, - __SCHED_FEAT_WA_WEIGHT = 21, - __SCHED_FEAT_WA_BIAS = 22, - __SCHED_FEAT_UTIL_EST = 23, - __SCHED_FEAT_LATENCY_WARN = 24, - __SCHED_FEAT_NI_RANDOM = 25, - __SCHED_FEAT_NR = 26, + __SCHED_FEAT_RT_PUSH_IPI = 17, + __SCHED_FEAT_RT_RUNTIME_SHARE = 18, + __SCHED_FEAT_LB_MIN = 19, + __SCHED_FEAT_ATTACH_AGE_LOAD = 20, + __SCHED_FEAT_WA_IDLE = 21, + __SCHED_FEAT_WA_WEIGHT = 22, + __SCHED_FEAT_WA_BIAS = 23, + __SCHED_FEAT_UTIL_EST = 24, + __SCHED_FEAT_LATENCY_WARN = 25, + __SCHED_FEAT_NI_RANDOM = 26, + __SCHED_FEAT_NR = 27, }; enum { @@ -6751,6 +6752,15 @@ enum cpuhp_state { CPUHP_ONLINE = 237, }; +enum cpuhp_sync_state { + SYNC_STATE_DEAD = 0, + SYNC_STATE_KICKED = 1, + SYNC_STATE_SHOULD_DIE = 2, + SYNC_STATE_ALIVE = 3, + SYNC_STATE_SHOULD_ONLINE = 4, + SYNC_STATE_ONLINE = 5, +}; + enum ctx_state { CT_STATE_DISABLED = -1, CT_STATE_KERNEL = 0, @@ -8067,6 +8077,12 @@ enum hash_pointers_policy { HASH_PTR_NEVER = 2, }; +enum hk_flags { + HK_FLAG_DOMAIN = 1, + HK_FLAG_MANAGED_IRQ = 2, + HK_FLAG_KERNEL_NOISE = 4, +}; + enum hk_type { HK_TYPE_DOMAIN = 0, HK_TYPE_MANAGED_IRQ = 1, @@ -8478,6 +8494,13 @@ enum ip_defrag_users { IP_DEFRAG_MACVLAN = 196614, }; +enum ipi_msg_type { + IPI_RESCHEDULE = 0, + IPI_CALL_FUNCTION = 1, + IPI_IRQ_WORK = 2, + IPI_CLEAR_VECTOR = 3, +}; + enum irq_domain_bus_token { DOMAIN_BUS_ANY = 0, DOMAIN_BUS_WIRED = 1, @@ -9095,6 +9118,14 @@ enum mthp_stat_item { __MTHP_STAT_COUNT = 17, }; +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, +}; + enum nbcon_prio { NBCON_PRIO_NONE = 0, NBCON_PRIO_NORMAL = 1, @@ -11760,8 +11791,8 @@ enum vdso_pages { VDSO_TIMENS_PAGE_OFFSET = 1, VDSO_RNG_PAGE_OFFSET = 2, VDSO_ARCH_PAGES_START = 3, - VDSO_ARCH_PAGES_END = 3, - VDSO_NR_PAGES = 4, + VDSO_ARCH_PAGES_END = 10, + VDSO_NR_PAGES = 11, }; enum verifier_phase { @@ -12007,7 +12038,7 @@ enum wq_internal_consts { enum wq_misc_consts { WORK_NR_COLORS = 16, - WORK_CPU_UNBOUND = 1, + WORK_CPU_UNBOUND = 2048, WORK_BUSY_PENDING = 1, WORK_BUSY_RUNNING = 2, WORKER_DESC_LEN = 32, @@ -12136,6 +12167,12 @@ enum xfrm_replay_mode { XFRM_REPLAY_MODE_ESN = 2, }; +enum xps_map_type { + XPS_CPUS = 0, + XPS_RXQS = 1, + XPS_MAPS_MAX = 2, +}; + enum zone_flags { ZONE_BOOSTED_WATERMARK = 0, ZONE_RECLAIM_ACTIVE = 1, @@ -12588,10 +12625,6 @@ typedef struct { int val[2]; } __kernel_fsid_t; -typedef struct {} arch_rwlock_t; - -typedef struct {} arch_spinlock_t; - typedef struct { s64 counter; } atomic64_t; @@ -12728,6 +12761,35 @@ typedef struct { void *lock; } class_rcu_tasks_trace_t; +struct qspinlock { + union { + atomic_t val; + struct { + u8 locked; + u8 pending; + }; + struct { + u16 locked_pending; + u16 tail; + }; + }; +}; + +typedef struct qspinlock arch_spinlock_t; + +struct qrwlock { + union { + atomic_t cnts; + struct { + u8 wlocked; + u8 __lstate[3]; + }; + }; + arch_spinlock_t wait_lock; +}; + +typedef struct qrwlock arch_rwlock_t; + typedef struct { arch_rwlock_t raw_lock; } rwlock_t; @@ -13031,12 +13093,19 @@ typedef struct { typedef struct { unsigned int ipi_irqs[4]; unsigned int __softirq_pending; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_t message; long: 64; long: 64; long: 64; long: 64; long: 64; + long: 64; + long: 64; } irq_cpustat_t; typedef struct { @@ -13074,7 +13143,7 @@ typedef struct { } memdesc_flags_t; typedef struct { - u64 asid[1]; + u64 asid[2048]; void *vdso; } mm_context_t; @@ -13373,6 +13442,12 @@ struct Qdisc { struct gnet_stats_queue qstats; struct sk_buff *to_free; __u8 __cacheline_group_end__Qdisc_write[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t defer_count; struct llist_head defer_list; spinlock_t seqlock; @@ -13381,6 +13456,7 @@ struct Qdisc { struct lock_class_key root_lock_key; long: 64; long: 64; + long: 64; long int privdata[0]; }; @@ -14680,9 +14756,14 @@ struct acpi_device_dir { struct proc_dir_entry *entry; }; +struct optimistic_spin_queue { + atomic_t tail; +}; + struct mutex { atomic_long_t owner; raw_spinlock_t wait_lock; + struct optimistic_spin_queue osq; struct list_head wait_list; }; @@ -16211,7 +16292,7 @@ struct acpi_tsd_package { }; struct cpumask { - long unsigned int bits[1]; + long unsigned int bits[32]; }; typedef struct cpumask cpumask_var_t[1]; @@ -17124,6 +17205,7 @@ struct action_devres { struct rw_semaphore { atomic_long_t count; atomic_long_t owner; + struct optimistic_spin_queue osq; raw_spinlock_t wait_lock; struct list_head wait_list; }; @@ -18008,7 +18090,9 @@ struct avecintc_data { }; struct percpu_counter { + raw_spinlock_t lock; s64 count; + s32 *counters; }; struct fprop_local_percpu { @@ -18389,6 +18473,10 @@ struct blk_mq_hw_ctx { spinlock_t lock; struct list_head dispatch; long unsigned int state; + long: 64; + long: 64; + long: 64; + long: 64; }; struct delayed_work run_work; cpumask_var_t cpumask; @@ -18417,6 +18505,13 @@ struct blk_mq_hw_ctx { struct hlist_node cpuhp_dead; struct kobject kobj; struct list_head hctx_list; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct blk_mq_queue_data; @@ -18460,16 +18555,20 @@ struct blk_mq_queue_map { unsigned int queue_offset; }; +struct lockdep_map {}; + +struct srcu_ctr; + +struct srcu_data; + +struct srcu_usage; + struct srcu_struct { - short int srcu_lock_nesting[2]; - u8 srcu_gp_running; - u8 srcu_gp_waiting; - long unsigned int srcu_idx; - long unsigned int srcu_idx_max; - struct swait_queue_head srcu_wq; - struct callback_head *srcu_cb_head; - struct callback_head **srcu_cb_tail; - struct work_struct srcu_work; + struct srcu_ctr *srcu_ctrp; + struct srcu_data *sda; + u8 srcu_reader_flavor; + struct lockdep_map dep_map; + struct srcu_usage *srcu_sup; }; struct blk_mq_tag_set { @@ -19110,6 +19209,13 @@ struct bpf_lru_list { unsigned int counts[2]; struct list_head *next_inactive_rotation; raw_spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bpf_lru_locallist; @@ -19117,6 +19223,13 @@ struct bpf_lru_locallist; 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; }; struct bpf_core_accessor { @@ -20108,6 +20221,10 @@ struct bpf_lru { unsigned int target_free; unsigned int nr_scans; bool percpu; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bucket; @@ -20120,6 +20237,9 @@ struct bpf_htab { struct bpf_mem_alloc pcpu_ma; struct bucket *buckets; void *elems; + long: 64; + long: 64; + long: 64; union { struct pcpu_freelist freelist; struct bpf_lru lru; @@ -20131,6 +20251,7 @@ struct bpf_htab { u32 n_buckets; u32 elem_size; u32 hashrnd; + long: 64; }; struct bpf_iarray { @@ -21597,14 +21718,7 @@ struct bpf_prog_stats { long: 64; }; -struct rqspinlock { - union { - atomic_t val; - u32 locked; - }; -}; - -typedef struct rqspinlock rqspinlock_t; +typedef struct qspinlock rqspinlock_t; struct bpf_queue_stack { struct bpf_map map; @@ -21692,16 +21806,13 @@ struct bpf_ringbuf { struct page **pages; int nr_pages; bool overwrite_mode; - rqspinlock_t spinlock; - atomic_t busy; - long: 64; - long: 64; long: 64; long: 64; long: 64; long: 64; long: 64; long: 64; + rqspinlock_t spinlock; long: 64; long: 64; long: 64; @@ -21709,6 +21820,7 @@ struct bpf_ringbuf { long: 64; long: 64; long: 64; + atomic_t busy; long: 64; long: 64; long: 64; @@ -28089,7 +28201,19 @@ struct bpf_struct_ops_common_value { struct bpf_struct_ops_bpf_dummy_ops { struct bpf_struct_ops_common_value common; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct bpf_dummy_ops data; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bpf_struct_ops_desc { @@ -28109,6 +28233,13 @@ struct bpf_struct_ops_link { struct bpf_struct_ops_value { struct bpf_struct_ops_common_value common; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; char data[0]; }; @@ -28123,6 +28254,9 @@ struct bpf_struct_ops_map { void *image_pages[8]; struct btf *btf; struct bpf_struct_ops_value *uvalue; + long: 64; + long: 64; + long: 64; struct bpf_struct_ops_value kvalue; }; @@ -28149,10 +28283,22 @@ struct tcp_congestion_ops { u32 flags; void (*init)(struct sock *); void (*release)(struct sock *); + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bpf_struct_ops_tcp_congestion_ops { struct bpf_struct_ops_common_value common; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct tcp_congestion_ops data; }; @@ -29055,8 +29201,6 @@ struct bucket { rqspinlock_t raw_lock; }; -struct lockdep_map {}; - struct rhash_lock_head; struct bucket_table { @@ -29067,6 +29211,7 @@ struct bucket_table { struct callback_head rcu; struct bucket_table *future_tbl; struct lockdep_map dep_map; + long: 64; struct rhash_lock_head *buckets[0]; }; @@ -29167,6 +29312,16 @@ struct cacheinfo { void *priv; }; +struct cacheline_padding { + char x[0]; +}; + +struct call_function_data { + call_single_data_t *csd; + cpumask_var_t cpumask; + cpumask_var_t cpumask_ipi; +}; + struct call_summary { u8 num_params; bool is_void; @@ -29626,7 +29781,33 @@ struct clk_mux { spinlock_t *lock; }; -struct srcu_usage {}; +struct srcu_node; + +struct srcu_usage { + struct srcu_node *node; + struct srcu_node *level[4]; + int srcu_size_state; + struct mutex srcu_cb_mutex; + spinlock_t lock; + struct mutex srcu_gp_mutex; + long unsigned int srcu_gp_seq; + long unsigned int srcu_gp_seq_needed; + long unsigned int srcu_gp_seq_needed_exp; + long unsigned int srcu_gp_start; + long unsigned int srcu_last_gp_end; + long unsigned int srcu_size_jiffies; + long unsigned int srcu_n_lock_retries; + long unsigned int srcu_n_exp_nodelay; + bool sda_is_static; + long unsigned int srcu_barrier_seq; + struct mutex srcu_barrier_mutex; + struct completion srcu_barrier_completion; + atomic_t srcu_barrier_cpu_cnt; + long unsigned int reschedule_jiffies; + long unsigned int reschedule_count; + struct delayed_work work; + struct srcu_struct *srcu_ssp; +}; struct srcu_notifier_head { struct mutex mutex; @@ -30148,6 +30329,12 @@ struct container_dev { int (*offline)(struct container_dev *); }; +struct context_tracking { + atomic_t state; + long int nesting; + long int nmi_nesting; +}; + struct core_thread { struct task_struct *task; struct core_thread *next; @@ -30204,6 +30391,7 @@ struct cpu_fbatches { struct folio_batch lru_deactivate_file; struct folio_batch lru_deactivate; struct folio_batch lru_lazyfree; + struct folio_batch lru_activate; local_lock_t lock_irq; struct folio_batch lru_move_tail; }; @@ -30219,12 +30407,40 @@ struct cpu_map_ret { u32 skb_n; }; +struct cpu_rmap { + struct kref refcount; + u16 size; + void **obj; + struct { + u16 index; + u16 dist; + } near[0]; +}; + +struct cpu_stop_done { + atomic_t nr_todo; + int ret; + struct completion completion; +}; + typedef int (*cpu_stop_fn_t)(void *); struct cpu_stop_work { - struct work_struct work; + struct list_head list; cpu_stop_fn_t fn; + long unsigned int caller; void *arg; + struct cpu_stop_done *done; +}; + +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 cpu_vfs_cap_data { @@ -30359,6 +30575,18 @@ struct cpuhp_cpu_state { enum cpuhp_state state; enum cpuhp_state target; enum cpuhp_state fail; + struct task_struct *thread; + bool should_run; + bool rollback; + bool single; + bool bringup; + struct hlist_node *node; + struct hlist_node *last; + enum cpuhp_state cb_state; + int result; + atomic_t ap_sync_state; + struct completion done_up; + struct completion done_down; }; struct cpuhp_step { @@ -30770,6 +30998,7 @@ union shortname_store { struct lockref { union { + __u64 lock_count; struct { spinlock_t lock; int count; @@ -31420,6 +31649,7 @@ struct dql { short unsigned int stall_thrs; long unsigned int history_head; long unsigned int history[4]; + long: 64; unsigned int limit; unsigned int num_completed; unsigned int prev_ovlimit; @@ -31602,6 +31832,11 @@ struct dst_ops { void (*confirm_neigh)(const struct dst_entry *, const void *); struct kmem_cache *kmem_cachep; struct percpu_counter pcpuc_entries; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct dump_stack_ctx { @@ -34395,12 +34630,20 @@ struct files_struct { wait_queue_head_t resize_wait; struct fdtable *fdt; struct fdtable fdtab; + 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; }; struct filter_head { @@ -35004,6 +35247,12 @@ struct flush_backlogs { struct work_struct w[0]; }; +struct flush_tlb_data { + struct vm_area_struct *vma; + long unsigned int addr1; + long unsigned int addr2; +}; + struct fmt { const char *str; unsigned char state; @@ -35279,10 +35528,21 @@ struct fqdir { struct inet_frags *f; struct net *net; bool dead; + long: 64; + long: 64; struct rhashtable rhashtable; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t mem; struct work_struct destroy_work; struct llist_node free_list; + long: 64; + long: 64; }; struct frag_hdr { @@ -35811,8 +36071,21 @@ struct pcpu_gen_cookie; struct gen_cookie { struct pcpu_gen_cookie *local; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic64_t forward_last; atomic64_t reverse_last; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct disk_events; @@ -36392,6 +36665,11 @@ struct hotplug_slot_ops { int (*reset_slot)(struct hotplug_slot *, bool); }; +struct housekeeping { + struct cpumask cpumasks[3]; + long unsigned int flags; +}; + struct hprobe { enum hprobe_state state; int srcu_idx; @@ -36484,7 +36762,6 @@ struct hrtimer_cpu_base { ktime_t softirq_expires_next; struct hrtimer *softirq_next_timer; long: 64; - long: 64; struct hrtimer_clock_base clock_base[8]; call_single_data_t csd; long: 64; @@ -37528,6 +37805,7 @@ struct sock_common { struct hlist_nulls_node skc_nulls_node; }; short unsigned int skc_tx_queue_mapping; + short unsigned int skc_rx_queue_mapping; union { int skc_incoming_cpu; u32 skc_rcv_wnd; @@ -37985,6 +38263,12 @@ struct inet_hashinfo { unsigned int lhash2_mask; struct inet_listen_hashbucket *lhash2; bool pernet; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct inet_listen_hashbucket { @@ -38085,8 +38369,21 @@ struct inet_skb_parm { struct inet_timewait_death_row { refcount_t tw_refcount; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct inet_hashinfo *hashinfo; int sysctl_max_tw_buckets; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct inet_timewait_sock { @@ -39244,6 +39541,8 @@ struct irq_common_data { unsigned int state_use_accessors; void *handler_data; struct msi_desc *msi_desc; + cpumask_var_t affinity; + cpumask_var_t effective_affinity; }; struct irq_data { @@ -39279,6 +39578,8 @@ struct irq_desc { int threads_handled_last; raw_spinlock_t lock; struct cpumask *percpu_enabled; + 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; @@ -39288,6 +39589,10 @@ struct irq_desc { int parent_irq; struct module *owner; const char *name; + long: 64; + long: 64; + long: 64; + long: 64; }; struct irq_desc_devres { @@ -39404,6 +39709,12 @@ struct irq_generic_chip_devres { unsigned int set; }; +struct irq_glue { + struct irq_affinity_notify notify; + struct cpu_rmap *rmap; + u16 index; +}; + struct irq_matrix { unsigned int matrix_bits; unsigned int alloc_start; @@ -39445,6 +39756,10 @@ struct irqaction { long unsigned int thread_mask; const char *name; struct proc_dir_entry *dir; + long: 64; + long: 64; + long: 64; + long: 64; }; struct irqchip_fwid { @@ -39527,6 +39842,8 @@ struct kallsyms_data { size_t found; }; +struct kcsan_scoped_access {}; + struct kern_ipc_perm { spinlock_t lock; bool deleted; @@ -39542,6 +39859,11 @@ struct kern_ipc_perm { struct rhash_head khtnode; struct callback_head rcu; refcount_t refcount; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct kernel_clone_args { @@ -39700,7 +40022,7 @@ struct kernfs_fs_context { }; struct kernfs_global_locks { - struct mutex open_file_mutex[2]; + struct mutex open_file_mutex[1024]; }; struct simple_xattrs { @@ -40538,6 +40860,9 @@ struct list_lru_one { struct list_lru_node { struct list_lru_one lru; atomic_long_t nr_items; + long: 64; + long: 64; + long: 64; }; struct listeners { @@ -40800,7 +41125,7 @@ struct loongson_system_configuration { int boot_cpu_id; int cores_per_node; int cores_per_package; - long unsigned int cores_io_master[1]; + long unsigned int cores_io_master[32]; long unsigned int suspend_addr; const char *cpuname; }; @@ -41311,6 +41636,12 @@ struct mcfg_fixup { struct resource cfgres; }; +struct mcs_spinlock { + struct mcs_spinlock *next; + int locked; + int count; +}; + struct mdio_bus_stats { u64_stats_t transfers; u64_stats_t errors; @@ -41590,6 +41921,13 @@ struct mm_struct { struct { struct { atomic_t mm_count; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct maple_tree mm_mt; long unsigned int mmap_base; @@ -41603,6 +41941,8 @@ struct mm_struct { spinlock_t page_table_lock; struct rw_semaphore mmap_lock; struct list_head mmlist; + struct rcuwait vma_writer_wait; + seqcount_t mm_lock_seq; long unsigned int hiwater_rss; long unsigned int hiwater_vm; long unsigned int total_vm; @@ -41635,6 +41975,8 @@ struct mm_struct { atomic_t tlb_flush_pending; struct uprobes_state uprobes_state; struct work_struct async_put_work; + long: 64; + long: 64; }; char flexible_array[0]; }; @@ -41851,6 +42193,11 @@ struct mnt_ns_info { __u64 mnt_ns_id; }; +struct mnt_pcp { + int mnt_count; + int mnt_writers; +}; + struct mod_section { int shndx; int num_entries; @@ -41943,7 +42290,6 @@ struct module { unsigned int num_exentries; struct exception_table_entry *extable; int (*init)(void); - long: 64; struct module_memory mem[7]; struct mod_arch_specific arch; long unsigned int taints; @@ -41952,10 +42298,14 @@ struct module { struct module_sect_attrs *sect_attrs; struct module_notes_attrs *notes_attrs; char *args; + void *percpu; + unsigned int percpu_size; void *noinstr_text_start; unsigned int noinstr_text_size; unsigned int num_tracepoints; tracepoint_ptr_t *tracepoints_ptrs; + unsigned int num_srcu_structs; + struct srcu_struct **srcu_struct_ptrs; unsigned int num_bpf_raw_events; struct bpf_raw_event_map *bpf_raw_events; unsigned int btf_data_size; @@ -41977,10 +42327,6 @@ struct module { long: 64; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - long: 64; }; struct module_attribute { @@ -42055,8 +42401,7 @@ struct mount { struct callback_head mnt_rcu; struct llist_node mnt_llist; }; - int mnt_count; - int mnt_writers; + struct mnt_pcp *mnt_pcp; struct list_head mnt_mounts; struct list_head mnt_child; struct mount *mnt_next_for_sb; @@ -42337,6 +42682,15 @@ struct msix_entry { u16 entry; }; +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 multi_symbols_sort { const char **funcs; u64 *cookies; @@ -42682,6 +43036,7 @@ struct neighbour { u8 protocol; u32 flags; seqlock_t ha_lock; + long: 0; unsigned char ha[32]; struct hh_cache hh; int (*output)(struct neighbour *, struct sk_buff *); @@ -43050,12 +43405,38 @@ struct net { struct netns_bpf bpf; u64 net_cookie; struct sock *diag_nlsk; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct net_aligned_data { atomic64_t net_cookie; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t tcp_memory_allocated; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t udp_memory_allocated; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct netdev_tc_txq { @@ -43172,6 +43553,8 @@ struct udp_tunnel_nic; struct net_device_ops; +struct xps_dev_maps; + struct pcpu_lstats; struct pcpu_sw_netstats; @@ -43226,6 +43609,7 @@ struct net_device { unsigned int mtu; short unsigned int needed_headroom; struct netdev_tc_txq tc_to_txq[16]; + struct xps_dev_maps *xps_maps[2]; struct bpf_mprog_entry *tcx_egress; __u8 __cacheline_group_end__net_device_read_tx[0]; __u8 __cacheline_group_begin__net_device_read_txrx[0]; @@ -43320,6 +43704,7 @@ struct net_device { unsigned int xdp_zc_max_segs; struct netdev_queue *ingress_queue; unsigned char broadcast[32]; + struct cpu_rmap *rx_cpu_rmap; struct hlist_node index_hlist; unsigned int num_tx_queues; struct Qdisc *qdisc; @@ -43330,7 +43715,7 @@ struct net_device { int watchdog_timeo; u32 proto_down_reason; struct list_head todo_list; - refcount_t dev_refcnt; + int *pcpu_refcnt; struct ref_tracker_dir refcnt_tracker; struct list_head link_watch_list; u8 reg_state; @@ -43387,6 +43772,7 @@ struct net_device { struct mutex lock; struct hlist_head neighbours[2]; struct hwtstamp_provider *hwprov; + long: 64; u8 priv[0]; }; @@ -43454,6 +43840,7 @@ struct net_device_ops { int (*ndo_set_vf_guid)(struct net_device *, int, u64, int); int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool); int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *); + int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32); int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *); int (*ndo_del_slave)(struct net_device *, struct net_device *); struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool); @@ -43630,6 +44017,8 @@ struct net_protocol { u32 secret; }; +struct rps_sock_flow_table; + struct skb_defer_node; struct net_hotdata { @@ -43647,6 +44036,8 @@ struct net_hotdata { struct kmem_cache *skbuff_cache; struct kmem_cache *skbuff_fclone_cache; struct kmem_cache *skb_small_head_cache; + struct rps_sock_flow_table *rps_sock_flow_table; + u32 rps_cpu_mask; struct skb_defer_node *skb_defer_nodes; int gro_normal_batch; int netdev_budget; @@ -43888,12 +44279,17 @@ struct netdev_queue { long unsigned int tx_maxrate; atomic_long_t trans_timeout; struct net_device *sb_dev; + long: 64; struct dql dql; spinlock_t _xmit_lock; int xmit_lock_owner; long unsigned int trans_start; long unsigned int state; struct napi_struct *napi; + long: 64; + long: 64; + long: 64; + long: 64; }; struct netdev_queue_attribute { @@ -43966,8 +44362,14 @@ struct pp_memory_provider_params { const struct memory_provider_ops *mp_ops; }; +struct rps_map; + +struct rps_dev_flow_table; + 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; const struct attribute_group **groups; struct net_device *dev; @@ -43975,8 +44377,6 @@ struct netdev_rx_queue { struct napi_struct *napi; struct pp_memory_provider_params mp_params; long: 64; - long: 64; - long: 64; }; struct netdev_stat_ops { @@ -44476,6 +44876,14 @@ struct node_barn { unsigned int nr_empty; }; +struct node_groups { + unsigned int id; + union { + unsigned int ngroups; + unsigned int ncpus; + }; +}; + struct node_notify { int nid; }; @@ -44600,7 +45008,21 @@ struct ntp_data { struct numa_drop_counters { atomic_t drops0; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_t drops1; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct nvs_region { @@ -44801,6 +45223,13 @@ struct open_how { __u64 resolve; }; +struct optimistic_spin_node { + struct optimistic_spin_node *next; + struct optimistic_spin_node *prev; + int locked; + int cpu; +}; + struct osnoise_entry { struct trace_entry ent; u64 noise; @@ -44862,12 +45291,31 @@ struct pp_alloc_cache { struct ptr_ring { int producer; spinlock_t producer_lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; int consumer_head; int consumer_tail; spinlock_t consumer_lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; int size; int batch; void **queue; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct page_pool_params_slow { @@ -44900,7 +45348,19 @@ struct page_pool { long unsigned int defer_start; long unsigned int defer_warn; u32 xdp_mem_id; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct pp_alloc_cache alloc; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct ptr_ring ring; void *mp_priv; const struct memory_provider_ops *mp_ops; @@ -45407,9 +45867,6 @@ struct pci_host_bridge { long: 64; long: 64; long: 64; - long: 64; - long: 64; - long: 64; long unsigned int private[0]; }; @@ -45519,6 +45976,7 @@ struct pcpu_chunk { int nr_populated; int nr_empty_pop_pages; long unsigned int populated[0]; + long: 64; }; struct pcpu_dstats { @@ -45559,6 +46017,10 @@ struct pcpu_sw_netstats { struct pdev_archdata {}; +struct pending_list { + struct list_head head; +}; + struct per_cpu_nodestat { s8 stat_threshold; s8 vm_node_stat_diff[45]; @@ -45575,9 +46037,16 @@ struct per_cpu_pages { u8 alloc_factor; short int free_count; struct list_head lists[12]; + long: 64; + long: 64; + long: 64; + long: 64; }; -struct per_cpu_zonestat {}; +struct per_cpu_zonestat { + s8 vm_stat_diff[10]; + s8 stat_threshold; +}; struct per_frame_masks { u64 may_read; @@ -46262,14 +46731,32 @@ struct zone { long unsigned int present_pages; const char *name; int initialized; + long: 64; + long: 64; + struct cacheline_padding _pad1_; struct free_area free_area[12]; long unsigned int flags; spinlock_t lock; struct llist_head trylock_free_pages; + long: 64; + struct cacheline_padding _pad2_; long unsigned int percpu_drift_mark; bool contiguous; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct cacheline_padding _pad3_; atomic_long_t vm_stat[10]; atomic_long_t vm_numa_event[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct zoneref { @@ -46300,10 +46787,22 @@ struct pglist_data { enum zone_type kswapd_highest_zoneidx; atomic_t kswapd_failures; long unsigned int totalreserve_pages; + long: 64; + long: 64; + struct cacheline_padding _pad1_; struct lruvec __lruvec; long unsigned int flags; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct cacheline_padding _pad2_; struct per_cpu_nodestat *per_cpu_nodestats; atomic_long_t vm_stat[45]; + long: 64; + long: 64; }; struct phc_vclocks_reply_data { @@ -47638,6 +48137,10 @@ struct qdisc_walker { int (*fn)(struct Qdisc *, long unsigned int, struct qdisc_walker *); }; +struct qnode { + struct mcs_spinlock mcs; +}; + struct queue_limits { blk_features_t features; blk_flags_t flags; @@ -47806,6 +48309,7 @@ struct raw6_sock { __u32 offset; struct icmp6_filter filter; __u32 ip6mr_table; + long: 0; struct numa_drop_counters drop_counters; struct ipv6_pinfo inet6; }; @@ -47827,6 +48331,13 @@ struct raw_frag_vec { struct raw_hashinfo { spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct hlist_head ht[256]; }; @@ -47834,6 +48345,11 @@ struct raw_sock { struct inet_sock inet; struct icmp_filter filter; u32 ipmr_table; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct numa_drop_counters drop_counters; }; @@ -47886,15 +48402,12 @@ struct rcu_cblist { long int len; }; -struct rcu_ctrlblk { - struct callback_head *rcucblist; - struct callback_head **donetail; - struct callback_head **curtail; - long unsigned int gp_seq; -}; - -struct rcu_gp_oldstate { - long unsigned int rgos_norm; +union rcu_noqs { + struct { + u8 norm; + u8 exp; + } b; + u16 s; }; struct rcu_segcblist { @@ -47906,6 +48419,147 @@ struct rcu_segcblist { u8 flags; }; +struct rcu_snap_record { + long unsigned int gp_seq; + u64 cputime_irq; + u64 cputime_softirq; + u64 cputime_system; + u64 nr_hardirqs; + unsigned int nr_softirqs; + long long unsigned int nr_csw; + long unsigned int jiffies; +}; + +struct rcu_node; + +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; + unsigned int gpwrap_count; + bool cpu_started; + struct rcu_node *mynode; + long unsigned int grpmask; + long unsigned int ticks_this_gp; + struct irq_work defer_qs_iw; + int 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 watching_snap; + 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_watching_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_state; + long unsigned int rcu_onl_gp_seq; + short int rcu_onl_gp_state; + long unsigned int last_fqs_resched; + long unsigned int last_sched_clock; + struct rcu_snap_record snap_record; + long int lazy_len; + int cpu; +}; + +struct rcu_exp_work { + long unsigned int rew_s; + struct kthread_work rew_work; +}; + +struct rcu_gp_oldstate { + long unsigned int rgos_norm; + long unsigned int rgos_exp; +}; + +struct rt_mutex_base { + raw_spinlock_t wait_lock; + struct rb_root_cached waiters; + struct task_struct *owner; +}; + +struct rt_mutex { + struct rt_mutex_base rtmutex; +}; + +struct 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; + struct kthread_worker *exp_kworker; + 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 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; + raw_spinlock_t fqslock; + long: 64; + long: 64; + long: 64; + long: 64; + 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; + raw_spinlock_t exp_poll_lock; + long unsigned int exp_seq_poll_rq; + struct work_struct exp_poll_wq; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; + union rcu_special { struct { u8 blocked; @@ -47916,6 +48570,76 @@ union rcu_special { u32 s; }; +struct sr_wait_node { + atomic_t inuse; + struct llist_node node; +}; + +struct rcu_state { + struct rcu_node node[131]; + struct rcu_node *level[4]; + int ncpus; + int n_online_cpus; + 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; + long unsigned int gp_seq_polled; + long unsigned int gp_seq_polled_snap; + long unsigned int gp_seq_polled_exp_snap; + 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; + int nr_fqs_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; + arch_spinlock_t ofl_lock; + struct llist_head srs_next; + struct llist_node *srs_wait_tail; + struct llist_node *srs_done_tail; + struct sr_wait_node srs_wait_nodes[5]; + struct work_struct srs_cleanup_work; + atomic_t srs_cleanups_pending; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; + struct rcu_synchronize { struct callback_head head; struct completion completion; @@ -48506,11 +49230,47 @@ struct root_domain { struct dl_bw dl_bw; struct cpudl cpudl; u64 visit_cookie; + 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; struct perf_domain *pd; }; +struct rps_dev_flow { + u16 cpu; + u16 filter; + unsigned int last_qtail; + u32 hash; +}; + +struct rps_dev_flow_table { + u8 log; + struct callback_head rcu; + struct rps_dev_flow flows[0]; +}; + +struct rps_map { + unsigned int len; + struct callback_head rcu; + u16 cpus[0]; +}; + +struct rps_sock_flow_table { + struct callback_head rcu; + u32 mask; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + u32 ents[0]; +}; + struct rt_prio_array { long unsigned int bitmap[2]; struct list_head queue[100]; @@ -48626,6 +49386,7 @@ struct rq { long: 64; long: 64; long: 64; + long: 64; }; struct rqspinlock_held { @@ -49122,12 +49883,30 @@ struct sb_writers { struct sbitmap_word { long unsigned int word; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; long unsigned int cleared; raw_spinlock_t swap_lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct sbq_wait_state { wait_queue_head_t wait; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct scan_control { @@ -49433,6 +50212,15 @@ struct sd_flag_debug { char *name; }; +struct sd_flow_limit { + struct callback_head rcu; + unsigned int count; + u8 log_buckets; + unsigned int history_head; + u16 history[128]; + u8 buckets[0]; +}; + struct sg_lb_stats { long unsigned int avg_load; long unsigned int group_load; @@ -49491,6 +50279,11 @@ struct seccomp_data { __u64 args[6]; }; +struct secondary_data { + long unsigned int stack; + long unsigned int thread_info; +}; + struct timezone; struct xattr; @@ -50077,6 +50870,12 @@ struct sk_skb_cb { struct skb_defer_node { struct llist_head defer_list; atomic_long_t defer_count; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct skb_frag { @@ -50202,6 +51001,15 @@ struct smc_hashinfo { struct hlist_head ht; }; +struct smp_call_on_cpu_struct { + struct work_struct work; + struct completion done; + int (*func)(void *); + void *data; + int ret; + int cpu; +}; + struct smp_hotplug_thread { struct task_struct **store; struct list_head list; @@ -50216,6 +51024,12 @@ struct smp_hotplug_thread { const char *thread_comm; }; +struct smp_ops { + void (*init_ipi)(void); + void (*send_ipi_single)(int, unsigned int); + void (*send_ipi_mask)(const struct cpumask *, unsigned int); +}; + struct smpboot_thread_data { unsigned int cpu; unsigned int status; @@ -50355,6 +51169,7 @@ struct socket_wq { struct fasync_struct *fasync_list; long unsigned int flags; struct callback_head rcu; + long: 64; }; struct socket { @@ -50364,6 +51179,9 @@ struct socket { struct file *file; struct sock *sk; const struct proto_ops *ops; + long: 64; + long: 64; + long: 64; struct socket_wq wq; }; @@ -50374,6 +51192,8 @@ struct socket__safe_trusted_or_null { struct socket_alloc { struct socket socket; struct inode vfs_inode; + long: 64; + long: 64; }; struct sockmap_link { @@ -50391,19 +51211,43 @@ struct softnet_data { local_lock_t process_queue_bh_lock; unsigned int processed; unsigned int time_squeeze; + struct softnet_data *rps_ipi_list; unsigned int received_rps; bool in_net_rx_action; bool in_napi_threaded_poll; + struct sd_flow_limit *flow_limit; struct Qdisc *output_queue; struct Qdisc **output_queue_tailp; struct sk_buff *completion_queue; struct netdev_xmit xmit; + long: 64; + long: 64; + long: 64; + unsigned int input_queue_head; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + call_single_data_t csd; + struct softnet_data *rps_ipi_next; + unsigned int cpu; + long: 64; + long: 64; + long int pad[3]; + unsigned int input_queue_tail; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; + long: 64; + long: 64; + long: 64; struct numa_drop_counters drop_counters; int defer_ipi_scheduled; long: 64; long: 64; + long: 64; call_single_data_t defer_csd; }; @@ -50454,6 +51298,46 @@ struct sr6_tlv { __u8 data[0]; }; +struct srcu_ctr { + atomic_long_t srcu_locks; + atomic_long_t srcu_unlocks; +}; + +struct srcu_data { + struct srcu_ctr srcu_ctrs[2]; + int srcu_reader_flavor; + long: 64; + long: 64; + long: 64; + spinlock_t lock; + struct rcu_segcblist srcu_cblist; + long unsigned int srcu_gp_seq_needed; + long unsigned int srcu_gp_seq_needed_exp; + bool srcu_cblist_invoking; + struct timer_list delay_work; + struct work_struct work; + struct callback_head srcu_barrier_head; + struct callback_head srcu_ec_head; + int srcu_ec_state; + struct srcu_node *mynode; + long unsigned int grpmask; + int cpu; + struct srcu_struct *ssp; + long: 64; + long: 64; + long: 64; +}; + +struct srcu_node { + spinlock_t lock; + long unsigned int srcu_have_cbs[4]; + long unsigned int srcu_data_have_cbs[4]; + long unsigned int srcu_gp_seq_needed_exp; + struct srcu_node *srcu_parent; + int grplo; + int grphi; +}; + struct ss_tmp { enum ss_state state; long unsigned int data; @@ -50785,11 +51669,14 @@ struct super_block { struct work_struct destroy_work; struct mutex s_sync_lock; int s_stack_depth; + long: 64; + long: 64; spinlock_t s_inode_list_lock; struct list_head s_inodes; spinlock_t s_inode_wblist_lock; struct list_head s_inodes_wb; long int s_min_writeback_pages; + long: 64; }; struct super_operations { @@ -51034,6 +51921,13 @@ struct sysinfo { char _f[0]; }; +struct sysrq_key_op { + void (* const handler)(u8); + const char * const help_msg; + const char * const action_msg; + const int enable_mask; +}; + struct system_counterval_t { u64 cycles; enum clocksource_ids cs_id; @@ -51286,11 +52180,9 @@ struct task_struct { struct llist_head kretprobe_instances; struct llist_head rethooks; long: 64; - struct thread_struct thread; - long: 64; - long: 64; long: 64; long: 64; + struct thread_struct thread; }; struct task_struct__safe_rcu { @@ -51608,6 +52500,11 @@ struct tcp_sock { struct rb_root out_of_order_queue; __u8 __cacheline_group_end__tcp_sock_read_rx[0]; long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; __u8 __cacheline_group_begin__tcp_sock_write_tx[0]; u32 segs_out; u32 data_segs_out; @@ -52310,7 +53207,6 @@ struct timer_base { struct hlist_head vectors[576]; long: 64; long: 64; - long: 64; }; struct timer_rand_state { @@ -52346,7 +53242,6 @@ struct tk_data { struct timekeeper timekeeper; struct timekeeper shadow_timekeeper; raw_spinlock_t lock; - long: 64; }; struct tk_fast { @@ -52865,6 +53760,10 @@ struct trace_event_data_offsets_cpuhp_exit {}; struct trace_event_data_offsets_cpuhp_multi_enter {}; +struct trace_event_data_offsets_csd_function {}; + +struct trace_event_data_offsets_csd_queue_cpu {}; + struct trace_event_data_offsets_ctime {}; struct trace_event_data_offsets_ctime_ns_xchg {}; @@ -53262,6 +54161,8 @@ struct trace_event_data_offsets_qdisc_reset { const void *kind_ptr_; }; +struct trace_event_data_offsets_rcu_stall_warning {}; + struct trace_event_data_offsets_rcu_utilization {}; struct trace_event_data_offsets_reclaim_retry_zone {}; @@ -53726,6 +54627,22 @@ struct trace_event_raw_cpuhp_multi_enter { char __data[0]; }; +struct trace_event_raw_csd_function { + struct trace_entry ent; + void *func; + void *csd; + char __data[0]; +}; + +struct trace_event_raw_csd_queue_cpu { + struct trace_entry ent; + unsigned int cpu; + void *callsite; + void *func; + void *csd; + char __data[0]; +}; + struct trace_event_raw_ctime { struct trace_entry ent; dev_t dev; @@ -55020,6 +55937,13 @@ struct trace_event_raw_qdisc_reset { char __data[0]; }; +struct trace_event_raw_rcu_stall_warning { + struct trace_entry ent; + const char *rcuname; + const char *msg; + char __data[0]; +}; + struct trace_event_raw_rcu_utilization { struct trace_entry ent; const char *s; @@ -56456,11 +57380,14 @@ struct udp_sock { struct sk_buff * (*gro_receive)(struct sock *, struct list_head *, struct sk_buff *); int (*gro_complete)(struct sock *, struct sk_buff *, int); struct udp_prod_queue *udp_prod_queue; + long: 64; + long: 64; struct sk_buff_head reader_queue; int forward_deficit; int forward_threshold; bool peeking_with_offset; struct hlist_node tunnel_list; + long: 64; struct numa_drop_counters drop_counters; }; @@ -56498,6 +57425,12 @@ struct udp_mib { struct udp_prod_queue { struct llist_head ll_root; atomic_t rmem_alloc; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct udp_skb_cb { @@ -56593,6 +57526,10 @@ struct unix_sock { struct sock *listener; struct unix_vertex *vertex; spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; struct socket_wq peer_wq; wait_queue_entry_t peer_wake; struct scm_stat scm_stat; @@ -56810,10 +57747,17 @@ struct va_format { struct vdso_pcpu_data { u32 node; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct vdso_arch_data { - struct vdso_pcpu_data pdata[1]; + struct vdso_pcpu_data pdata[2048]; }; struct vdso_timestamp { @@ -56931,17 +57875,25 @@ struct vm_area_struct { const vm_flags_t vm_flags; vma_flags_t flags; }; + unsigned int vm_lock_seq; 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; void *vm_private_data; + long: 64; + long: 64; + long: 64; + refcount_t vm_refcnt; struct { struct rb_node rb; long unsigned int rb_subtree_last; } shared; struct vm_userfaultfd_ctx vm_userfaultfd_ctx; + long: 64; + long: 64; + long: 64; }; struct vm_area_struct__safe_trusted_or_null { @@ -57092,7 +58044,7 @@ struct vmap_block { struct vmap_area *va; long unsigned int free; long unsigned int dirty; - long unsigned int used_map[16]; + long unsigned int used_map[4]; long unsigned int dirty_min; long unsigned int dirty_max; struct list_head free_list; @@ -57256,6 +58208,13 @@ struct word_at_a_time { const long unsigned int high_bits; }; +struct work_for_cpu { + struct work_struct work; + long int (*fn)(void *); + void *arg; + long int ret; +}; + struct work_offq_data { u32 pool_id; u32 disable; @@ -57350,7 +58309,6 @@ struct workqueue_struct { struct callback_head rcu; long: 64; long: 64; - long: 64; unsigned int flags; struct pool_workqueue **cpu_pwq; struct wq_node_nr_active *node_nr_active[0]; @@ -57603,6 +58561,9 @@ struct xdp_umem; struct xdp_sock { struct sock sk; + long: 64; + long: 64; + long: 64; struct xsk_queue *rx; struct net_device *dev; struct xdp_umem *umem; @@ -57616,6 +58577,7 @@ struct xdp_sock { XSK_BOUND = 1, XSK_UNBOUND = 2, } state; + long: 64; struct xsk_queue *tx; struct list_head tx_list; u32 tx_budget_spent; @@ -57942,6 +58904,22 @@ struct xol_area { long unsigned int vaddr; }; +struct xps_map; + +struct xps_dev_maps { + struct callback_head rcu; + unsigned int nr_ids; + s16 num_tc; + struct xps_map *attr_map[0]; +}; + +struct xps_map { + unsigned int len; + unsigned int alloc_len; + struct callback_head rcu; + u16 queues[0]; +}; + struct xsk_buff_pool { struct device *dev; struct net_device *netdev; @@ -57979,6 +58957,8 @@ struct xsk_buff_pool { spinlock_t cq_prod_lock; spinlock_t cq_cached_prod_lock; struct xdp_buff_xsk *free_heads[0]; + long: 64; + long: 64; }; struct xsk_tx_metadata_ops { @@ -58629,6 +59609,12 @@ typedef void (*btf_trace_cpuhp_exit)(void *, unsigned int, int, int, int); typedef void (*btf_trace_cpuhp_multi_enter)(void *, unsigned int, int, int, int (*)(unsigned int, struct hlist_node *), struct hlist_node *); +typedef void (*btf_trace_csd_function_entry)(void *, smp_call_func_t, call_single_data_t *); + +typedef void (*btf_trace_csd_function_exit)(void *, smp_call_func_t, call_single_data_t *); + +typedef void (*btf_trace_csd_queue_cpu)(void *, const unsigned int, long unsigned int, smp_call_func_t, call_single_data_t *); + typedef void (*btf_trace_ctime_ns_xchg)(void *, struct inode *, u32, u32, u32); typedef void (*btf_trace_ctime_xchg_skip)(void *, struct inode *, struct timespec64 *); @@ -58981,6 +59967,8 @@ typedef void (*btf_trace_qdisc_enqueue)(void *, struct Qdisc *, const struct net typedef void (*btf_trace_qdisc_reset)(void *, struct Qdisc *); +typedef void (*btf_trace_rcu_stall_warning)(void *, const char *, const char *); + typedef void (*btf_trace_rcu_utilization)(void *, const char *); typedef void (*btf_trace_reclaim_retry_zone)(void *, struct zoneref *, int, long unsigned int, long unsigned int, long unsigned int, int, bool); @@ -59301,6 +60289,10 @@ typedef int (*parse_pred_fn)(const char *, void *, int, struct filter_parse_erro typedef int (*parse_unknown_fn)(char *, char *, const char *, void *); +typedef int pcpu_fc_cpu_distance_fn_t(unsigned int, unsigned int); + +typedef int pcpu_fc_cpu_to_node_fn_t(int); + typedef void perf_iterate_f(struct perf_event *, void *); typedef int perf_snapshot_branch_stack_t(struct perf_branch_entry *, unsigned int); diff --git a/include/powerpc/vmlinux_6.19.h b/include/powerpc/vmlinux_6.19.h index dbad9c3..3e6fb2c 100644 --- a/include/powerpc/vmlinux_6.19.h +++ b/include/powerpc/vmlinux_6.19.h @@ -426,7 +426,7 @@ enum { }; enum { - CPU_FTRS_ALWAYS = 0, + CPU_FTRS_ALWAYS = 16777216, }; enum { @@ -4879,16 +4879,17 @@ enum { __SCHED_FEAT_TTWU_QUEUE = 14, __SCHED_FEAT_SIS_UTIL = 15, __SCHED_FEAT_WARN_DOUBLE_CLOCK = 16, - __SCHED_FEAT_RT_RUNTIME_SHARE = 17, - __SCHED_FEAT_LB_MIN = 18, - __SCHED_FEAT_ATTACH_AGE_LOAD = 19, - __SCHED_FEAT_WA_IDLE = 20, - __SCHED_FEAT_WA_WEIGHT = 21, - __SCHED_FEAT_WA_BIAS = 22, - __SCHED_FEAT_UTIL_EST = 23, - __SCHED_FEAT_LATENCY_WARN = 24, - __SCHED_FEAT_NI_RANDOM = 25, - __SCHED_FEAT_NR = 26, + __SCHED_FEAT_RT_PUSH_IPI = 17, + __SCHED_FEAT_RT_RUNTIME_SHARE = 18, + __SCHED_FEAT_LB_MIN = 19, + __SCHED_FEAT_ATTACH_AGE_LOAD = 20, + __SCHED_FEAT_WA_IDLE = 21, + __SCHED_FEAT_WA_WEIGHT = 22, + __SCHED_FEAT_WA_BIAS = 23, + __SCHED_FEAT_UTIL_EST = 24, + __SCHED_FEAT_LATENCY_WARN = 25, + __SCHED_FEAT_NI_RANDOM = 26, + __SCHED_FEAT_NR = 27, }; enum { @@ -4977,6 +4978,12 @@ enum { true = 1, }; +enum { + kExit = 0, + kSetAndTest = 1, + kTest = 2, +}; + enum { sysctl_hung_task_timeout_secs = 0, }; @@ -6333,6 +6340,15 @@ enum cpuhp_state { CPUHP_ONLINE = 237, }; +enum cpuhp_sync_state { + SYNC_STATE_DEAD = 0, + SYNC_STATE_KICKED = 1, + SYNC_STATE_SHOULD_DIE = 2, + SYNC_STATE_ALIVE = 3, + SYNC_STATE_SHOULD_ONLINE = 4, + SYNC_STATE_ONLINE = 5, +}; + enum ctx_state { CT_STATE_DISABLED = -1, CT_STATE_KERNEL = 0, @@ -7572,6 +7588,12 @@ enum hash_pointers_policy { HASH_PTR_NEVER = 2, }; +enum hk_flags { + HK_FLAG_DOMAIN = 1, + HK_FLAG_MANAGED_IRQ = 2, + HK_FLAG_KERNEL_NOISE = 4, +}; + enum hk_type { HK_TYPE_DOMAIN = 0, HK_TYPE_MANAGED_IRQ = 1, @@ -8124,6 +8146,15 @@ enum kprobe_slot_state { SLOT_USED = 2, }; +enum kvm_bus { + KVM_MMIO_BUS = 0, + KVM_PIO_BUS = 1, + KVM_VIRTIO_CCW_NOTIFY_BUS = 2, + KVM_FAST_MMIO_BUS = 3, + KVM_IOCSR_BUS = 4, + KVM_NR_BUSES = 5, +}; + enum l2tp_debug_flags { L2TP_MSG_DEBUG = 1, L2TP_MSG_CONTROL = 2, @@ -8504,6 +8535,14 @@ enum mthp_stat_item { __MTHP_STAT_COUNT = 17, }; +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, +}; + enum nbcon_prio { NBCON_PRIO_NONE = 0, NBCON_PRIO_NORMAL = 1, @@ -10401,6 +10440,12 @@ enum tcx_action_base { TCX_REDIRECT = 7, }; +enum tick_broadcast_mode { + TICK_BROADCAST_OFF = 0, + TICK_BROADCAST_ON = 1, + TICK_BROADCAST_FORCE = 2, +}; + enum tick_broadcast_state { TICK_BROADCAST_EXIT = 0, TICK_BROADCAST_ENTER = 1, @@ -10960,7 +11005,7 @@ enum wq_internal_consts { enum wq_misc_consts { WORK_NR_COLORS = 16, - WORK_CPU_UNBOUND = 1, + WORK_CPU_UNBOUND = 2, WORK_BUSY_PENDING = 1, WORK_BUSY_RUNNING = 2, WORKER_DESC_LEN = 32, @@ -11089,6 +11134,12 @@ enum xfrm_replay_mode { XFRM_REPLAY_MODE_ESN = 2, }; +enum xps_map_type { + XPS_CPUS = 0, + XPS_RXQS = 1, + XPS_MAPS_MAX = 2, +}; + enum zone_flags { ZONE_BOOSTED_WATERMARK = 0, ZONE_RECLAIM_ACTIVE = 1, @@ -11488,9 +11539,13 @@ typedef struct { __u32 u[4]; } __vector128; -typedef struct {} arch_rwlock_t; +typedef struct { + volatile int lock; +} arch_rwlock_t; -typedef struct {} arch_spinlock_t; +typedef struct { + volatile unsigned int slock; +} arch_spinlock_t; typedef struct { s64 counter; @@ -12062,14 +12117,24 @@ struct Qdisc { struct sk_buff_head skb_bad_txq; __u8 __cacheline_group_end__Qdisc_read_mostly[0]; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; __u8 __cacheline_group_begin__Qdisc_write[0]; struct qdisc_skb_head q; long unsigned int state; + long: 32; + long: 32; + long: 32; struct gnet_stats_basic_sync bstats; bool running; struct gnet_stats_queue qstats; struct sk_buff *to_free; __u8 __cacheline_group_end__Qdisc_write[0]; + long: 32; atomic_long_t defer_count; struct llist_head defer_list; spinlock_t seqlock; @@ -12077,6 +12142,8 @@ struct Qdisc { netdevice_tracker dev_tracker; struct lock_class_key root_lock_key; long: 32; + long: 32; + long: 32; long int privdata[0]; }; @@ -12553,9 +12620,14 @@ struct xarray { void *xa_head; }; +struct optimistic_spin_queue { + atomic_t tail; +}; + struct rw_semaphore { atomic_long_t count; atomic_long_t owner; + struct optimistic_spin_queue osq; raw_spinlock_t wait_lock; struct list_head wait_list; }; @@ -12791,6 +12863,7 @@ struct kobject { struct mutex { atomic_long_t owner; raw_spinlock_t wait_lock; + struct optimistic_spin_queue osq; struct list_head wait_list; }; @@ -12882,7 +12955,6 @@ struct device { struct dev_pm_domain *pm_domain; struct dev_msi_info msi; u64 *dma_mask; - long: 32; u64 coherent_dma_mask; u64 bus_dma_limit; const struct bus_dma_region *dma_range_map; @@ -12908,6 +12980,7 @@ struct device { bool of_node_reused: 1; bool state_synced: 1; bool can_match: 1; + long: 32; }; struct resource { @@ -13212,14 +13285,17 @@ struct attribute_group { }; struct percpu_counter { + raw_spinlock_t lock; + long: 32; s64 count; + s32 *counters; + long: 32; }; struct fprop_local_percpu { struct percpu_counter events; unsigned int period; raw_spinlock_t lock; - long: 32; }; struct timer_list { @@ -13248,6 +13324,7 @@ struct bdi_writeback { struct list_head b_dirty_time; spinlock_t list_lock; atomic_t writeback_inodes; + long: 32; struct percpu_counter stat[4]; long unsigned int bw_time_stamp; long unsigned int dirtied_stamp; @@ -13265,6 +13342,7 @@ struct bdi_writeback { struct delayed_work dwork; struct delayed_work bw_dwork; struct list_head bdi_node; + long: 32; }; struct backing_dev_info { @@ -13287,7 +13365,6 @@ struct backing_dev_info { char dev_name[64]; struct device *owner; struct timer_list laptop_mode_wb_timer; - long: 32; }; struct vfsmount; @@ -13331,7 +13408,6 @@ struct file { const struct path f_path; struct path __f_path; }; - long: 32; union { struct mutex f_pos_lock; u64 f_pipe; @@ -13615,7 +13691,6 @@ struct block_device { struct partition_meta_info *bd_meta_info; int bd_writers; void *bd_security; - long: 32; struct device bd_device; }; @@ -13710,6 +13785,7 @@ struct bpf_map { bool frozen; bool free_after_mult_rcu_gp; bool free_after_rcu_gp; + long: 32; atomic64_t sleepable_refcnt; s64 *elem_count; long: 32; @@ -14180,7 +14256,21 @@ struct bpf_lru_list { struct list_head lists[3]; unsigned int counts[2]; struct list_head *next_inactive_rotation; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; raw_spinlock_t lock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct bpf_lru_locallist; @@ -14188,6 +14278,13 @@ struct bpf_lru_locallist; struct bpf_common_lru { struct bpf_lru_list lru_list; struct bpf_lru_locallist *local_list; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct bpf_core_accessor { @@ -14870,6 +14967,7 @@ struct bpf_dtab { spinlock_t index_lock; unsigned int items; u32 n_buckets; + long: 32; }; struct bpf_dtab_netdev { @@ -15215,6 +15313,8 @@ struct bpf_lru { unsigned int target_free; unsigned int nr_scans; bool percpu; + long: 32; + long: 32; }; struct bucket; @@ -15227,6 +15327,10 @@ struct bpf_htab { struct bpf_mem_alloc pcpu_ma; struct bucket *buckets; void *elems; + long: 32; + long: 32; + long: 32; + long: 32; union { struct pcpu_freelist freelist; struct bpf_lru lru; @@ -15240,6 +15344,8 @@ struct bpf_htab { u32 elem_size; u32 hashrnd; long: 32; + long: 32; + long: 32; }; struct bpf_iarray { @@ -16139,6 +16245,7 @@ struct bpf_local_storage { struct bpf_local_storage_cache { spinlock_t idx_lock; + long: 32; u64 idx_usage_counts[16]; }; @@ -16836,17 +16943,15 @@ struct bpf_res_spin_lock { struct bpf_ringbuf { wait_queue_head_t waitq; struct irq_work work; + long: 32; u64 mask; struct page **pages; int nr_pages; bool overwrite_mode; - rqspinlock_t spinlock; - atomic_t busy; - long: 32; - long: 32; long: 32; long: 32; long: 32; + rqspinlock_t spinlock; long: 32; long: 32; long: 32; @@ -16854,6 +16959,7 @@ struct bpf_ringbuf { long: 32; long: 32; long: 32; + atomic_t busy; long: 32; long: 32; long: 32; @@ -20092,7 +20198,6 @@ struct bpf_stab { struct sock **sks; struct sk_psock_progs progs; spinlock_t lock; - long: 32; }; struct bpf_stack_build_id { @@ -20167,7 +20272,18 @@ struct bpf_struct_ops_common_value { struct bpf_struct_ops_bpf_dummy_ops { struct bpf_struct_ops_common_value common; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct bpf_dummy_ops data; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct bpf_struct_ops_desc { @@ -20183,11 +20299,16 @@ struct bpf_struct_ops_link { struct bpf_link link; struct bpf_map *map; wait_queue_head_t wait_hup; - long: 32; }; struct bpf_struct_ops_value { struct bpf_struct_ops_common_value common; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; char data[0]; }; @@ -20202,6 +20323,8 @@ struct bpf_struct_ops_map { void *image_pages[8]; struct btf *btf; struct bpf_struct_ops_value *uvalue; + long: 32; + long: 32; struct bpf_struct_ops_value kvalue; }; @@ -20228,10 +20351,18 @@ struct tcp_congestion_ops { u32 flags; void (*init)(struct sock *); void (*release)(struct sock *); + long: 32; + long: 32; }; struct bpf_struct_ops_tcp_congestion_ops { struct bpf_struct_ops_common_value common; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct tcp_congestion_ops data; }; @@ -21283,6 +21414,18 @@ struct cacheinfo { void *priv; }; +struct cacheline_padding { + char x[0]; +}; + +typedef struct cpumask cpumask_var_t[1]; + +struct call_function_data { + call_single_data_t *csd; + cpumask_var_t cpumask; + cpumask_var_t cpumask_ipi; +}; + struct call_summary { u8 num_params; bool is_void; @@ -21368,7 +21511,6 @@ struct cfs_rq { long: 32; long: 32; long: 32; - long: 32; } removed; }; @@ -21979,6 +22121,12 @@ struct container_dev { long: 32; }; +struct context_tracking { + atomic_t state; + long int nesting; + long int nmi_nesting; +}; + struct core_thread { struct task_struct *task; struct core_thread *next; @@ -22029,6 +22177,7 @@ struct cpu_fbatches { struct folio_batch lru_deactivate_file; struct folio_batch lru_deactivate; struct folio_batch lru_lazyfree; + struct folio_batch lru_activate; local_lock_t lock_irq; struct folio_batch lru_move_tail; }; @@ -22094,6 +22243,16 @@ struct cpu_map_ret { u32 skb_n; }; +struct cpu_rmap { + struct kref refcount; + u16 size; + void **obj; + struct { + u16 index; + u16 dist; + } near[0]; +}; + struct cpu_spec; typedef void (*cpu_setup_t)(long unsigned int, struct cpu_spec *); @@ -22120,12 +22279,30 @@ struct cpu_spec { long int (*machine_check_early)(struct pt_regs *); }; +struct cpu_stop_done { + atomic_t nr_todo; + int ret; + struct completion completion; +}; + typedef int (*cpu_stop_fn_t)(void *); struct cpu_stop_work { - struct work_struct work; + struct list_head list; cpu_stop_fn_t fn; + long unsigned int caller; void *arg; + struct cpu_stop_done *done; +}; + +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 cpu_vfs_cap_data { @@ -22135,8 +22312,6 @@ struct cpu_vfs_cap_data { kernel_cap_t inheritable; }; -typedef struct cpumask cpumask_var_t[1]; - struct cpudl_item; struct cpudl { @@ -22266,6 +22441,18 @@ struct cpuhp_cpu_state { enum cpuhp_state state; enum cpuhp_state target; enum cpuhp_state fail; + struct task_struct *thread; + bool should_run; + bool rollback; + bool single; + bool bringup; + struct hlist_node *node; + struct hlist_node *last; + enum cpuhp_state cb_state; + int result; + atomic_t ap_sync_state; + struct completion done_up; + struct completion done_down; }; struct cpuhp_step { @@ -22614,8 +22801,8 @@ struct qstr { }; union shortname_store { - unsigned char string[44]; - long unsigned int words[11]; + unsigned char string[36]; + long unsigned int words[9]; }; struct lockref { @@ -22659,6 +22846,7 @@ struct dentry { struct hlist_bl_node d_in_lookup_hash; struct callback_head d_rcu; } d_u; + long: 32; }; struct dentry__safe_trusted_or_null { @@ -22734,7 +22922,6 @@ struct dev_pagemap { const struct dev_pagemap_ops *ops; void *owner; int nr_range; - long: 32; union { struct range range; struct { @@ -23197,6 +23384,7 @@ struct div_result { struct dl_bw { raw_spinlock_t lock; + long: 32; u64 bw; u64 total_bw; }; @@ -23308,6 +23496,13 @@ struct dql { short unsigned int stall_thrs; long unsigned int history_head; long unsigned int history[4]; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; unsigned int limit; unsigned int num_completed; unsigned int prev_ovlimit; @@ -23321,6 +23516,9 @@ struct dql { short unsigned int stall_max; long unsigned int last_reap; long unsigned int stall_cnt; + long: 32; + long: 32; + long: 32; }; struct kqid { @@ -23354,7 +23552,6 @@ struct dquot { atomic_t dq_count; struct super_block *dq_sb; struct kqid dq_id; - long: 32; loff_t dq_off; long unsigned int dq_flags; long: 32; @@ -23494,7 +23691,15 @@ struct dst_ops { void (*confirm_neigh)(const struct dst_entry *, const void *); struct kmem_cache *kmem_cachep; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct percpu_counter pcpuc_entries; + long: 32; + long: 32; }; struct dump_stack_ctx { @@ -25941,7 +26146,6 @@ struct lock_manager_operations; struct file_lock { struct file_lock_core c; - long: 32; loff_t fl_start; loff_t fl_end; const struct file_lock_operations *fl_ops; @@ -26061,12 +26265,18 @@ struct files_struct { wait_queue_head_t resize_wait; struct fdtable *fdt; struct fdtable fdtab; + long: 32; + long: 32; + long: 32; 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[32]; + long: 32; + long: 32; + long: 32; }; struct filter_head { @@ -26956,10 +27166,15 @@ struct fqdir { struct inet_frags *f; struct net *net; bool dead; + long: 32; struct rhashtable rhashtable; + long: 32; + long: 32; atomic_long_t mem; struct work_struct destroy_work; struct llist_node free_list; + long: 32; + long: 32; }; struct frag_hdr { @@ -26998,7 +27213,6 @@ struct inet_frag_queue { struct rb_root rb_fragments; struct sk_buff *fragments_tail; struct sk_buff *last_run_head; - long: 32; ktime_t stamp; int len; int meat; @@ -27488,8 +27702,18 @@ struct pcpu_gen_cookie; struct gen_cookie { struct pcpu_gen_cookie *local; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic64_t forward_last; atomic64_t reverse_last; + long: 32; + long: 32; + long: 32; + long: 32; }; struct disk_events; @@ -27806,7 +28030,6 @@ struct napi_struct { struct gro_cell { struct sk_buff_head napi_skbs; - long: 32; struct napi_struct napi; local_lock_t bh_lock; }; @@ -27946,6 +28169,11 @@ struct hop_jumbo_hdr { __be32 jumbo_payload_len; }; +struct housekeeping { + struct cpumask cpumasks[3]; + long unsigned int flags; +}; + struct hprobe { enum hprobe_state state; int srcu_idx; @@ -27981,6 +28209,7 @@ struct hrtimer_cpu_base { unsigned int hang_detected: 1; unsigned int softirq_activated: 1; unsigned int online: 1; + long: 32; ktime_t expires_next; struct hrtimer *next_timer; long: 32; @@ -27988,7 +28217,13 @@ struct hrtimer_cpu_base { struct hrtimer *softirq_next_timer; long: 32; struct hrtimer_clock_base clock_base[8]; + long: 32; + long: 32; call_single_data_t csd; + long: 32; + long: 32; + long: 32; + long: 32; }; struct hrtimer_sleeper { @@ -28915,6 +29150,7 @@ struct inet6_ifaddr { __u8 dad_probes; __u8 stable_privacy_retry; __u16 scope; + long: 32; __u64 dad_nonce; long unsigned int cstamp; long unsigned int tstamp; @@ -29041,6 +29277,7 @@ struct sock_common { struct hlist_nulls_node skc_nulls_node; }; short unsigned int skc_tx_queue_mapping; + short unsigned int skc_rx_queue_mapping; union { int skc_incoming_cpu; u32 skc_rcv_wnd; @@ -29151,6 +29388,7 @@ struct sock { u16 sk_protocol; u16 sk_type; struct dst_entry *sk_dst_cache; + long: 32; netdev_features_t sk_route_caps; u16 sk_gso_type; u16 sk_gso_max_segs; @@ -29502,6 +29740,10 @@ struct inet_hashinfo { unsigned int lhash2_mask; struct inet_listen_hashbucket *lhash2; bool pernet; + long: 32; + long: 32; + long: 32; + long: 32; }; struct inet_listen_hashbucket { @@ -29602,8 +29844,21 @@ struct inet_skb_parm { struct inet_timewait_death_row { refcount_t tw_refcount; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct inet_hashinfo *hashinfo; int sysctl_max_tw_buckets; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct inet_timewait_sock { @@ -29662,8 +29917,8 @@ struct inode { short unsigned int i_bytes; u8 i_blkbits; enum rw_hint i_write_hint; - long: 32; blkcnt_t i_blocks; + seqcount_t i_size_seqcount; struct inode_state_flags i_state; struct rw_semaphore i_rwsem; long unsigned int dirtied_when; @@ -29677,7 +29932,6 @@ struct inode { struct hlist_head i_dentry; struct callback_head i_rcu; }; - long: 32; atomic64_t i_version; atomic64_t i_sequence; atomic_t i_count; @@ -30717,6 +30971,7 @@ struct irq_common_data { unsigned int state_use_accessors; void *handler_data; struct msi_desc *msi_desc; + cpumask_var_t affinity; }; struct irq_data { @@ -30751,6 +31006,8 @@ struct irq_desc { int threads_handled_last; raw_spinlock_t lock; struct cpumask *percpu_enabled; + 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; @@ -30760,6 +31017,10 @@ struct irq_desc { int parent_irq; struct module *owner; const char *name; + long: 32; + long: 32; + long: 32; + long: 32; }; struct irq_desc_devres { @@ -30858,6 +31119,12 @@ struct irq_fwspec_info { const struct cpumask *affinity; }; +struct irq_glue { + struct irq_affinity_notify notify; + struct cpu_rmap *rmap; + u16 index; +}; + typedef irqreturn_t (*irq_handler_t)(int, void *); struct irqaction { @@ -30877,6 +31144,9 @@ struct irqaction { long unsigned int thread_mask; const char *name; struct proc_dir_entry *dir; + long: 32; + long: 32; + long: 32; }; struct irqchip_fwid { @@ -30935,6 +31205,8 @@ struct kallsyms_data { size_t found; }; +struct kcsan_scoped_access {}; + struct kern_ipc_perm { spinlock_t lock; bool deleted; @@ -30950,6 +31222,7 @@ struct kern_ipc_perm { struct rhash_head khtnode; struct callback_head rcu; refcount_t refcount; + long: 32; }; struct kernel_clone_args { @@ -31109,7 +31382,7 @@ struct kernfs_fs_context { }; struct kernfs_global_locks { - struct mutex open_file_mutex[2]; + struct mutex open_file_mutex[4]; }; struct simple_xattrs { @@ -31126,7 +31399,6 @@ struct kernfs_iattrs { struct simple_xattrs xattrs; atomic_t nr_user_xattrs; atomic_t user_xattr_size; - long: 32; }; struct kernfs_node { @@ -31913,6 +32185,9 @@ struct list_lru_one { struct list_lru_node { struct list_lru_one lru; atomic_long_t nr_items; + long: 32; + long: 32; + long: 32; }; struct listeners { @@ -32829,6 +33104,13 @@ struct mm_struct { struct { struct { atomic_t mm_count; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct maple_tree mm_mt; long unsigned int mmap_base; @@ -32846,6 +33128,7 @@ struct mm_struct { long unsigned int hiwater_vm; long unsigned int total_vm; long unsigned int locked_vm; + long: 32; atomic64_t pinned_vm; long unsigned int data_vm; long unsigned int exec_vm; @@ -32865,6 +33148,7 @@ struct mm_struct { long unsigned int env_start; long unsigned int env_end; long unsigned int saved_auxv[76]; + long: 32; struct percpu_counter rss_stat[4]; struct linux_binfmt *binfmt; mm_context_t context; @@ -32874,6 +33158,8 @@ struct mm_struct { atomic_t tlb_flush_pending; struct uprobes_state uprobes_state; struct work_struct async_put_work; + long: 32; + long: 32; }; char flexible_array[0]; }; @@ -33086,6 +33372,7 @@ struct mnt_namespace { struct user_namespace *user_ns; struct ucounts *ucounts; wait_queue_head_t poll; + long: 32; u64 seq_origin; u64 event; unsigned int nr_mounts; @@ -33100,6 +33387,11 @@ struct mnt_ns_info { __u64 mnt_ns_id; }; +struct mnt_pcp { + int mnt_count; + int mnt_writers; +}; + struct mod_arch_specific { unsigned int core_plt_section; unsigned int init_plt_section; @@ -33192,8 +33484,6 @@ struct module { long: 32; long: 32; long: 32; - long: 32; - long: 32; struct module_memory mem[7]; struct mod_arch_specific arch; long unsigned int taints; @@ -33202,10 +33492,14 @@ struct module { struct module_sect_attrs *sect_attrs; struct module_notes_attrs *notes_attrs; char *args; + void *percpu; + unsigned int percpu_size; void *noinstr_text_start; unsigned int noinstr_text_size; unsigned int num_tracepoints; tracepoint_ptr_t *tracepoints_ptrs; + unsigned int num_srcu_structs; + struct srcu_struct **srcu_struct_ptrs; unsigned int num_bpf_raw_events; struct bpf_raw_event_map *bpf_raw_events; unsigned int btf_data_size; @@ -33227,10 +33521,6 @@ struct module { int num_static_call_sites; struct static_call_site *static_call_sites; long: 32; - long: 32; - long: 32; - long: 32; - long: 32; }; struct module_attribute { @@ -33299,8 +33589,7 @@ struct mount { struct callback_head mnt_rcu; struct llist_node mnt_llist; }; - int mnt_count; - int mnt_writers; + struct mnt_pcp *mnt_pcp; struct list_head mnt_mounts; struct list_head mnt_child; struct mount *mnt_next_for_sb; @@ -33320,6 +33609,7 @@ struct mount { }; int mnt_t_flags; int mnt_id; + long: 32; u64 mnt_id_unique; int mnt_group_id; int mnt_expiry_mark; @@ -33499,6 +33789,15 @@ struct msi_desc { }; }; +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 multi_symbols_sort { const char **funcs; u64 *cookies; @@ -33846,7 +34145,6 @@ struct neighbour { u8 protocol; u32 flags; seqlock_t ha_lock; - long: 32; unsigned char ha[32]; struct hh_cache hh; int (*output)(struct neighbour *, struct sk_buff *); @@ -33857,7 +34155,6 @@ struct neighbour { struct net_device *dev; netdevice_tracker dev_tracker; u8 primary_key[0]; - long: 32; }; struct neighbour_cb { @@ -33948,6 +34245,7 @@ struct netns_ipv4 { int sysctl_tcp_rmem[3]; int sysctl_tcp_rcvbuf_low_rtt; __u8 __cacheline_group_end__netns_ipv4_read_rx[0]; + long: 32; struct inet_timewait_death_row tcp_death_row; struct udp_table *udp_table; struct ipv4_devconf *devconf_all; @@ -34078,9 +34376,12 @@ struct netns_ipv4 { struct fib_notifier_ops *ipmr_notifier_ops; unsigned int ipmr_seq; atomic_t rt_genid; + long: 32; siphash_key_t ip_id_key; struct hlist_head *inet_addr_lst; struct delayed_work addr_chk_work; + long: 32; + long: 32; }; struct netns_sysctl_ipv6 { @@ -34168,6 +34469,9 @@ struct netns_ipv6 { u32 seq; } ip6addrlbl_table; struct ioam6_pernet_data *ioam6_data; + long: 32; + long: 32; + long: 32; }; struct netns_bpf { @@ -34196,6 +34500,7 @@ struct net { struct user_namespace *user_ns; struct ucounts *ucounts; struct idr netns_ids; + long: 32; struct ns_common ns; struct ref_tracker_dir refcnt_tracker; struct ref_tracker_dir notrefcnt_tracker; @@ -34216,7 +34521,6 @@ struct net { struct netns_mib mib; struct netns_packet packet; struct netns_nexthop nexthop; - long: 32; struct netns_ipv4 ipv4; struct netns_ipv6 ipv6; struct net_generic *gen; @@ -34225,12 +34529,34 @@ struct net { u64 net_cookie; struct sock *diag_nlsk; long: 32; + long: 32; + long: 32; }; struct net_aligned_data { atomic64_t net_cookie; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic_long_t tcp_memory_allocated; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic_long_t udp_memory_allocated; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct netdev_tc_txq { @@ -34347,6 +34673,8 @@ struct udp_tunnel_nic; struct net_device_ops; +struct xps_dev_maps; + struct pcpu_lstats; struct pcpu_sw_netstats; @@ -34402,6 +34730,7 @@ struct net_device { unsigned int mtu; short unsigned int needed_headroom; struct netdev_tc_txq tc_to_txq[16]; + struct xps_dev_maps *xps_maps[2]; struct bpf_mprog_entry *tcx_egress; __u8 __cacheline_group_end__net_device_read_tx[0]; __u8 __cacheline_group_begin__net_device_read_txrx[0]; @@ -34498,6 +34827,7 @@ struct net_device { unsigned int xdp_zc_max_segs; struct netdev_queue *ingress_queue; unsigned char broadcast[32]; + struct cpu_rmap *rx_cpu_rmap; struct hlist_node index_hlist; unsigned int num_tx_queues; struct Qdisc *qdisc; @@ -34508,7 +34838,7 @@ struct net_device { int watchdog_timeo; u32 proto_down_reason; struct list_head todo_list; - refcount_t dev_refcnt; + int *pcpu_refcnt; struct ref_tracker_dir refcnt_tracker; struct list_head link_watch_list; u8 reg_state; @@ -34520,7 +34850,6 @@ struct net_device { void *ml_priv; enum netdev_ml_priv_type ml_priv_type; enum netdev_stat_type pcpu_stat_type: 8; - long: 32; struct device dev; const struct attribute_group *sysfs_groups[5]; const struct attribute_group *sysfs_rx_queue_group; @@ -34568,6 +34897,12 @@ struct net_device { struct hlist_head neighbours[2]; struct hwtstamp_provider *hwprov; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; u8 priv[0]; }; @@ -34635,6 +34970,7 @@ struct net_device_ops { int (*ndo_set_vf_guid)(struct net_device *, int, u64, int); int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool); int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *); + int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32); int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *); int (*ndo_del_slave)(struct net_device *, struct net_device *); struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool); @@ -34811,6 +35147,8 @@ struct net_protocol { u32 secret; }; +struct rps_sock_flow_table; + struct skb_defer_node; struct net_hotdata { @@ -34828,6 +35166,8 @@ struct net_hotdata { struct kmem_cache *skbuff_cache; struct kmem_cache *skbuff_fclone_cache; struct kmem_cache *skb_small_head_cache; + struct rps_sock_flow_table *rps_sock_flow_table; + u32 rps_cpu_mask; struct skb_defer_node *skb_defer_nodes; int gro_normal_batch; int netdev_budget; @@ -35076,6 +35416,9 @@ struct netdev_queue { long unsigned int trans_start; long unsigned int state; struct napi_struct *napi; + long: 32; + long: 32; + long: 32; }; struct netdev_queue_attribute { @@ -35146,16 +35489,20 @@ struct pp_memory_provider_params { const struct memory_provider_ops *mp_ops; }; +struct rps_map; + +struct rps_dev_flow_table; + 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; const struct attribute_group **groups; struct net_device *dev; netdevice_tracker dev_tracker; struct napi_struct *napi; struct pp_memory_provider_params mp_params; - long: 32; - long: 32; }; struct netdev_stat_ops { @@ -35323,7 +35670,6 @@ struct netlink_sock { struct module *module; struct rhash_head node; struct callback_head rcu; - long: 32; }; struct netlink_table { @@ -35649,6 +35995,14 @@ struct node_barn { unsigned int nr_empty; }; +struct node_groups { + unsigned int id; + union { + unsigned int ngroups; + unsigned int ncpus; + }; +}; + struct node_notify { int nid; }; @@ -35730,7 +36084,21 @@ struct ntp_data { struct numa_drop_counters { atomic_t drops0; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; atomic_t drops1; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct objpool_head; @@ -35958,6 +36326,13 @@ struct open_how { __u64 resolve; }; +struct optimistic_spin_node { + struct optimistic_spin_node *next; + struct optimistic_spin_node *prev; + int locked; + int cpu; +}; + struct optimized_kprobe { struct kprobe kp; struct list_head list; @@ -36025,12 +36400,28 @@ struct pp_alloc_cache { struct ptr_ring { int producer; spinlock_t producer_lock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; int consumer_head; int consumer_tail; spinlock_t consumer_lock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; int size; int batch; void **queue; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct page_pool_params_slow { @@ -36062,13 +36453,22 @@ struct page_pool { long unsigned int defer_start; long unsigned int defer_warn; u32 xdp_mem_id; + long: 32; struct pp_alloc_cache alloc; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct ptr_ring ring; void *mp_priv; const struct memory_provider_ops *mp_ops; struct xarray dma_mapped; atomic_t pages_state_release_cnt; refcount_t user_cnt; + long: 32; u64 destroy_cnt; struct page_pool_params_slow slow; long: 32; @@ -36401,7 +36801,6 @@ struct pci_dev { const char *driver_override; long unsigned int priv_flags; u8 reset_methods[8]; - long: 32; }; struct pci_device_id { @@ -36486,6 +36885,10 @@ struct pci_host_bridge { 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: 32; + long: 32; + long: 32; + long: 32; long unsigned int private[0]; }; @@ -36547,6 +36950,10 @@ struct pcpu_chunk { int free_bytes; struct pcpu_block_md chunk_md; long unsigned int *bound_map; + long: 32; + long: 32; + long: 32; + long: 32; void *base_addr; long unsigned int *alloc_map; struct pcpu_block_md *md_blocks; @@ -36559,6 +36966,12 @@ struct pcpu_chunk { int nr_populated; int nr_empty_pop_pages; long unsigned int populated[0]; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct pcpu_dstats { @@ -36631,9 +37044,13 @@ struct per_cpu_pages { u8 alloc_factor; short int free_count; struct list_head lists[12]; + long: 32; }; -struct per_cpu_zonestat {}; +struct per_cpu_zonestat { + s8 vm_stat_diff[10]; + s8 stat_threshold; +}; struct per_frame_masks { u64 may_read; @@ -36821,7 +37238,6 @@ struct perf_event_context { raw_spinlock_t lock; struct mutex mutex; struct list_head pmu_ctx_list; - long: 32; struct perf_event_groups pinned_groups; struct perf_event_groups flexible_groups; struct list_head event_list; @@ -36878,7 +37294,6 @@ struct perf_cpu_pmu_context { int exclusive; int pmu_disable_count; raw_spinlock_t hrtimer_lock; - long: 32; struct hrtimer hrtimer; ktime_t hrtimer_interval; unsigned int hrtimer_active; @@ -37310,14 +37725,33 @@ struct zone { long unsigned int present_pages; const char *name; int initialized; + long: 32; + long: 32; + struct cacheline_padding _pad1_; struct free_area free_area[11]; long unsigned int flags; spinlock_t lock; struct llist_head trylock_free_pages; + long: 32; + long: 32; + struct cacheline_padding _pad2_; long unsigned int percpu_drift_mark; bool contiguous; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + struct cacheline_padding _pad3_; atomic_long_t vm_stat[10]; atomic_long_t vm_numa_event[0]; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct zoneref { @@ -37348,10 +37782,23 @@ struct pglist_data { enum zone_type kswapd_highest_zoneidx; atomic_t kswapd_failures; long unsigned int totalreserve_pages; + long: 32; + long: 32; + long: 32; + struct cacheline_padding _pad1_; struct lruvec __lruvec; long unsigned int flags; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + struct cacheline_padding _pad2_; struct per_cpu_nodestat *per_cpu_nodestats; atomic_long_t vm_stat[45]; + long: 32; + long: 32; }; struct phc_vclocks_reply_data { @@ -37573,6 +38020,7 @@ struct pid { refcount_t count; unsigned int level; spinlock_t lock; + long: 32; struct { u64 ino; struct rb_node pidfs_node; @@ -37585,7 +38033,6 @@ struct pid { wait_queue_head_t wait_pidfd; struct callback_head rcu; struct upid numbers[0]; - long: 32; }; struct pid_namespace { @@ -37600,7 +38047,6 @@ struct pid_namespace { struct user_namespace *user_ns; struct ucounts *ucounts; int reboot; - long: 32; struct ns_common ns; struct work_struct work; }; @@ -38134,6 +38580,7 @@ struct prev_cputime { u64 utime; u64 stime; raw_spinlock_t lock; + long: 32; }; struct print_entry { @@ -38739,8 +39186,18 @@ struct raw6_sock { __u32 offset; struct icmp6_filter filter; __u32 ip6mr_table; + long: 32; + long: 32; + long: 32; struct numa_drop_counters drop_counters; struct ipv6_pinfo inet6; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct raw_data_entry { @@ -38760,6 +39217,13 @@ struct raw_frag_vec { struct raw_hashinfo { spinlock_t lock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct hlist_head ht[256]; }; @@ -38767,6 +39231,10 @@ struct raw_sock { struct inet_sock inet; struct icmp_filter filter; u32 ipmr_table; + long: 32; + long: 32; + long: 32; + long: 32; struct numa_drop_counters drop_counters; }; @@ -38820,15 +39288,12 @@ struct rcu_cblist { long int len; }; -struct rcu_ctrlblk { - struct callback_head *rcucblist; - struct callback_head **donetail; - struct callback_head **curtail; - long unsigned int gp_seq; -}; - -struct rcu_gp_oldstate { - long unsigned int rgos_norm; +union rcu_noqs { + struct { + u8 norm; + u8 exp; + } b; + u16 s; }; struct rcu_segcblist { @@ -38840,6 +39305,147 @@ struct rcu_segcblist { u8 flags; }; +struct rcu_snap_record { + long unsigned int gp_seq; + long: 32; + u64 cputime_irq; + u64 cputime_softirq; + u64 cputime_system; + u64 nr_hardirqs; + unsigned int nr_softirqs; + long: 32; + long long unsigned int nr_csw; + long unsigned int jiffies; + long: 32; +}; + +struct rcu_node; + +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; + unsigned int gpwrap_count; + bool cpu_started; + struct rcu_node *mynode; + long unsigned int grpmask; + long unsigned int ticks_this_gp; + struct irq_work defer_qs_iw; + int 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 watching_snap; + 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_watching_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_state; + long unsigned int rcu_onl_gp_seq; + short int rcu_onl_gp_state; + long unsigned int last_fqs_resched; + long unsigned int last_sched_clock; + struct rcu_snap_record snap_record; + long int lazy_len; + int cpu; +}; + +struct rcu_exp_work { + long unsigned int rew_s; + struct kthread_work rew_work; +}; + +struct rcu_gp_oldstate { + long unsigned int rgos_norm; + long unsigned int rgos_exp; +}; + +struct rt_mutex_base { + raw_spinlock_t wait_lock; + struct rb_root_cached waiters; + struct task_struct *owner; +}; + +struct rt_mutex { + struct rt_mutex_base rtmutex; +}; + +struct 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; + struct kthread_worker *exp_kworker; + 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 kthread_mutex; + struct task_struct *boost_kthread_task; + unsigned int boost_kthread_status; + long unsigned int n_boosts; + long: 32; + long: 32; + long: 32; + raw_spinlock_t fqslock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + 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; + raw_spinlock_t exp_poll_lock; + long unsigned int exp_seq_poll_rq; + struct work_struct exp_poll_wq; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; +}; + union rcu_special { struct { u8 blocked; @@ -38850,6 +39456,73 @@ union rcu_special { u32 s; }; +struct sr_wait_node { + atomic_t inuse; + struct llist_node node; +}; + +struct rcu_state { + struct rcu_node node[1]; + struct rcu_node *level[2]; + int ncpus; + int n_online_cpus; + long: 32; + long: 32; + long: 32; + long: 32; + 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; + long unsigned int gp_seq_polled; + long unsigned int gp_seq_polled_snap; + long unsigned int gp_seq_polled_exp_snap; + 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; + int nr_fqs_jiffies_stall; + long unsigned int jiffies_resched; + long unsigned int n_force_qs_gpstart; + const char *name; + char abbr; + long: 32; + long: 32; + arch_spinlock_t ofl_lock; + struct llist_head srs_next; + struct llist_node *srs_wait_tail; + struct llist_node *srs_done_tail; + struct sr_wait_node srs_wait_nodes[5]; + struct work_struct srs_cleanup_work; + atomic_t srs_cleanups_pending; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; +}; + struct rcu_synchronize { struct callback_head head; struct completion completion; @@ -39353,7 +40026,6 @@ struct ring_buffer_per_cpu { struct work_struct update_pages_work; struct completion update_done; struct rb_irq_work irq_work; - long: 32; }; struct rings_reply_data { @@ -39410,12 +40082,46 @@ struct root_domain { long: 32; struct dl_bw dl_bw; struct cpudl cpudl; - long: 32; u64 visit_cookie; + 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; struct perf_domain *pd; +}; + +struct rps_dev_flow { + u16 cpu; + u16 filter; + unsigned int last_qtail; + u32 hash; +}; + +struct rps_dev_flow_table { + u8 log; + struct callback_head rcu; + struct rps_dev_flow flows[0]; +}; + +struct rps_map { + unsigned int len; + struct callback_head rcu; + u16 cpus[0]; +}; + +struct rps_sock_flow_table { + struct callback_head rcu; + u32 mask; + long: 32; + long: 32; long: 32; + long: 32; + long: 32; + u32 ents[0]; }; struct rt_prio_array { @@ -39472,7 +40178,6 @@ struct rq { unsigned int queue_mask; unsigned int nr_running; unsigned int ttwu_pending; - long: 32; u64 nr_switches; long: 32; long: 32; @@ -39802,16 +40507,18 @@ struct rtnexthop { int rtnh_ifindex; }; +struct srcu_ctr; + +struct srcu_data; + +struct srcu_usage; + struct srcu_struct { - short int srcu_lock_nesting[2]; - u8 srcu_gp_running; - u8 srcu_gp_waiting; - long unsigned int srcu_idx; - long unsigned int srcu_idx_max; - struct swait_queue_head srcu_wq; - struct callback_head *srcu_cb_head; - struct callback_head **srcu_cb_tail; - struct work_struct srcu_work; + struct srcu_ctr *srcu_ctrp; + struct srcu_data *sda; + u8 srcu_reader_flavor; + struct lockdep_map dep_map; + struct srcu_usage *srcu_sup; }; struct rtnl_af_ops { @@ -40351,6 +41058,15 @@ struct sd_flag_debug { char *name; }; +struct sd_flow_limit { + struct callback_head rcu; + unsigned int count; + u8 log_buckets; + unsigned int history_head; + u16 history[128]; + u8 buckets[0]; +}; + struct sg_lb_stats { long unsigned int avg_load; long unsigned int group_load; @@ -41010,6 +41726,12 @@ struct sk_skb_cb { struct skb_defer_node { struct llist_head defer_list; atomic_long_t defer_count; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct skb_frag { @@ -41136,6 +41858,15 @@ struct smc_hashinfo { struct hlist_head ht; }; +struct smp_call_on_cpu_struct { + struct work_struct work; + struct completion done; + int (*func)(void *); + void *data; + int ret; + int cpu; +}; + struct smp_hotplug_thread { struct task_struct **store; struct list_head list; @@ -41150,6 +41881,21 @@ struct smp_hotplug_thread { const char *thread_comm; }; +struct smp_ops_t { + void (*message_pass)(int, int); + int (*cause_nmi_ipi)(int); + void (*probe)(void); + int (*kick_cpu)(int); + int (*prepare_cpu)(int); + void (*setup_cpu)(int); + void (*bringup_done)(void); + void (*take_timebase)(void); + void (*give_timebase)(void); + int (*cpu_disable)(void); + void (*cpu_die)(unsigned int); + int (*cpu_bootable)(unsigned int); +}; + struct smpboot_thread_data { unsigned int cpu; unsigned int status; @@ -41289,6 +42035,7 @@ struct socket_wq { struct fasync_struct *fasync_list; long unsigned int flags; struct callback_head rcu; + long: 32; }; struct socket { @@ -41298,6 +42045,8 @@ struct socket { struct file *file; struct sock *sk; const struct proto_ops *ops; + long: 32; + long: 32; struct socket_wq wq; }; @@ -41308,6 +42057,10 @@ struct socket__safe_trusted_or_null { struct socket_alloc { struct socket socket; struct inode vfs_inode; + long: 32; + long: 32; + long: 32; + long: 32; }; struct sockmap_link { @@ -41326,18 +42079,37 @@ struct softnet_data { local_lock_t process_queue_bh_lock; unsigned int processed; unsigned int time_squeeze; + struct softnet_data *rps_ipi_list; unsigned int received_rps; bool in_net_rx_action; bool in_napi_threaded_poll; + struct sd_flow_limit *flow_limit; struct Qdisc *output_queue; struct Qdisc **output_queue_tailp; struct sk_buff *completion_queue; struct netdev_xmit xmit; + unsigned int input_queue_head; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + call_single_data_t csd; + struct softnet_data *rps_ipi_next; + unsigned int cpu; + long: 32; + long: 32; + long int pad[3]; + unsigned int input_queue_tail; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; struct numa_drop_counters drop_counters; int defer_ipi_scheduled; long: 32; + long: 32; + long: 32; call_single_data_t defer_csd; }; @@ -41399,7 +42171,73 @@ struct sr6_tlv { __u8 data[0]; }; -struct srcu_usage {}; +struct srcu_ctr { + atomic_long_t srcu_locks; + atomic_long_t srcu_unlocks; +}; + +struct srcu_node; + +struct srcu_data { + struct srcu_ctr srcu_ctrs[2]; + int srcu_reader_flavor; + long: 32; + long: 32; + long: 32; + spinlock_t lock; + struct rcu_segcblist srcu_cblist; + long unsigned int srcu_gp_seq_needed; + long unsigned int srcu_gp_seq_needed_exp; + bool srcu_cblist_invoking; + struct timer_list delay_work; + struct work_struct work; + struct callback_head srcu_barrier_head; + struct callback_head srcu_ec_head; + int srcu_ec_state; + struct srcu_node *mynode; + long unsigned int grpmask; + int cpu; + struct srcu_struct *ssp; + long: 32; + long: 32; + long: 32; +}; + +struct srcu_node { + spinlock_t lock; + long unsigned int srcu_have_cbs[4]; + long unsigned int srcu_data_have_cbs[4]; + long unsigned int srcu_gp_seq_needed_exp; + struct srcu_node *srcu_parent; + int grplo; + int grphi; +}; + +struct srcu_usage { + struct srcu_node *node; + struct srcu_node *level[2]; + int srcu_size_state; + struct mutex srcu_cb_mutex; + spinlock_t lock; + struct mutex srcu_gp_mutex; + long unsigned int srcu_gp_seq; + long unsigned int srcu_gp_seq_needed; + long unsigned int srcu_gp_seq_needed_exp; + long unsigned int srcu_gp_start; + long unsigned int srcu_last_gp_end; + long unsigned int srcu_size_jiffies; + long unsigned int srcu_n_lock_retries; + long unsigned int srcu_n_exp_nodelay; + bool sda_is_static; + long unsigned int srcu_barrier_seq; + struct mutex srcu_barrier_mutex; + struct completion srcu_barrier_completion; + atomic_t srcu_barrier_cpu_cnt; + long unsigned int reschedule_jiffies; + long unsigned int reschedule_count; + struct delayed_work work; + struct srcu_struct *srcu_ssp; +}; struct srcu_notifier_head { struct mutex mutex; @@ -41763,6 +42601,12 @@ struct super_block { struct work_struct destroy_work; struct mutex s_sync_lock; int s_stack_depth; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; spinlock_t s_inode_list_lock; struct list_head s_inodes; spinlock_t s_inode_wblist_lock; @@ -42004,6 +42848,13 @@ struct sysinfo { char _f[8]; }; +struct sysrq_key_op { + void (* const handler)(u8); + const char * const help_msg; + const char * const action_msg; + const int enable_mask; +}; + struct system_counterval_t { u64 cycles; enum clocksource_ids cs_id; @@ -42051,11 +42902,23 @@ typedef struct task_struct *class_task_lock_t; struct thread_info { int preempt_count; + unsigned int cpu; long unsigned int local_flags; unsigned char slb_preload_nr; unsigned char slb_preload_tail; u32 slb_preload_esid[16]; + long: 32; + long: 32; + long: 32; + long: 32; long unsigned int flags; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct wake_q_node { @@ -42130,6 +42993,10 @@ struct task_struct { int normal_prio; unsigned int rt_priority; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct sched_entity se; struct sched_rt_entity rt; long: 32; @@ -42279,7 +43146,17 @@ struct task_struct { struct llist_head kretprobe_instances; struct llist_head rethooks; long: 32; + long: 32; + long: 32; struct thread_struct thread; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct task_struct__safe_rcu { @@ -42556,10 +43433,6 @@ struct tcp_sock { struct rb_root out_of_order_queue; __u8 __cacheline_group_end__tcp_sock_read_rx[0]; long: 32; - long: 32; - long: 32; - long: 32; - long: 32; __u8 __cacheline_group_begin__tcp_sock_write_tx[0]; u32 segs_out; u32 data_segs_out; @@ -43148,6 +44021,18 @@ struct thread_group_cputimer { struct task_cputime_atomic cputime_atomic; }; +struct thread_groups { + unsigned int property; + unsigned int nr_groups; + unsigned int threads_per_group; + unsigned int thread_list[8]; +}; + +struct thread_groups_list { + unsigned int nr_properties; + struct thread_groups property_tgs[2]; +}; + struct tick_device { struct clock_event_device *evtdev; enum tick_device_mode mode; @@ -43240,7 +44125,6 @@ struct timer_base { bool timers_pending; long unsigned int pending_map[18]; struct hlist_head vectors[576]; - long: 32; }; struct timer_rand_state { @@ -43278,7 +44162,6 @@ struct tk_data { struct timekeeper shadow_timekeeper; raw_spinlock_t lock; long: 32; - long: 32; }; struct tk_fast { @@ -43526,7 +44409,6 @@ struct trace_array { unsigned int n_err_log_entries; struct tracer *current_trace; struct tracer_flags *current_trace_flags; - long: 32; u64 trace_flags; unsigned char trace_flags_index[64]; unsigned int flags; @@ -43561,7 +44443,6 @@ struct trace_array { struct list_head hist_vars; struct trace_func_repeats *last_func_repeats; bool ring_buffer_expanded; - long: 32; }; struct trace_array_cpu { @@ -43762,6 +44643,10 @@ struct trace_event_data_offsets_cpuhp_exit {}; struct trace_event_data_offsets_cpuhp_multi_enter {}; +struct trace_event_data_offsets_csd_function {}; + +struct trace_event_data_offsets_csd_queue_cpu {}; + struct trace_event_data_offsets_ctime {}; struct trace_event_data_offsets_ctime_ns_xchg {}; @@ -44151,6 +45036,8 @@ struct trace_event_data_offsets_qdisc_reset { const void *kind_ptr_; }; +struct trace_event_data_offsets_rcu_stall_warning {}; + struct trace_event_data_offsets_rcu_utilization {}; struct trace_event_data_offsets_reclaim_retry_zone {}; @@ -44561,6 +45448,22 @@ struct trace_event_raw_cpuhp_multi_enter { char __data[0]; }; +struct trace_event_raw_csd_function { + struct trace_entry ent; + void *func; + void *csd; + char __data[0]; +}; + +struct trace_event_raw_csd_queue_cpu { + struct trace_entry ent; + unsigned int cpu; + void *callsite; + void *func; + void *csd; + char __data[0]; +}; + struct trace_event_raw_ctime { struct trace_entry ent; dev_t dev; @@ -45830,6 +46733,13 @@ struct trace_event_raw_qdisc_reset { char __data[0]; }; +struct trace_event_raw_rcu_stall_warning { + struct trace_entry ent; + const char *rcuname; + const char *msg; + char __data[0]; +}; + struct trace_event_raw_rcu_utilization { struct trace_entry ent; const char *s; @@ -47281,6 +48191,13 @@ struct udp_sock { int forward_threshold; bool peeking_with_offset; struct hlist_node tunnel_list; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct numa_drop_counters drop_counters; }; @@ -47288,6 +48205,12 @@ struct udp6_sock { struct udp_sock udp; struct ipv6_pinfo inet6; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct udp_dev_scratch { @@ -47301,6 +48224,7 @@ struct udp_hslot { }; int count; spinlock_t lock; + long: 32; }; struct udp_hslot_main { @@ -47316,6 +48240,12 @@ struct udp_mib { struct udp_prod_queue { struct llist_head ll_root; atomic_t rmem_alloc; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct udp_skb_cb { @@ -47411,12 +48341,25 @@ struct unix_sock { struct sock *listener; struct unix_vertex *vertex; spinlock_t lock; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct socket_wq peer_wq; wait_queue_entry_t peer_wake; struct scm_stat scm_stat; int inq_len; bool recvmsg_inq; long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; }; struct unlink_vma_file_batch { @@ -47993,6 +48936,7 @@ struct wb_completion { struct wb_domain { spinlock_t lock; + long: 32; struct fprop_global completions; struct timer_list period_timer; long unsigned int period_time; @@ -48031,6 +48975,13 @@ struct word_at_a_time { const long unsigned int low_bits; }; +struct work_for_cpu { + struct work_struct work; + long int (*fn)(void *); + void *arg; + long int ret; +}; + struct work_offq_data { u32 pool_id; u32 disable; @@ -48127,8 +49078,6 @@ struct workqueue_struct { struct callback_head rcu; long: 32; long: 32; - long: 32; - long: 32; unsigned int flags; struct pool_workqueue **cpu_pwq; struct wq_node_nr_active *node_nr_active[0]; @@ -48410,6 +49359,9 @@ struct xdp_sock { struct xsk_queue *fq_tmp; struct xsk_queue *cq_tmp; long: 32; + long: 32; + long: 32; + long: 32; }; struct xdp_test_data { @@ -48647,7 +49599,6 @@ struct xfrm_state { u32 extra_flags; struct xfrm_mark smark; } props; - long: 32; struct xfrm_lifetime_cfg lft; struct xfrm_algo_auth *aalg; struct xfrm_algo *ealg; @@ -48727,6 +49678,22 @@ struct xol_area { long unsigned int vaddr; }; +struct xps_map; + +struct xps_dev_maps { + struct callback_head rcu; + unsigned int nr_ids; + s16 num_tc; + struct xps_map *attr_map[0]; +}; + +struct xps_map { + unsigned int len; + unsigned int alloc_len; + struct callback_head rcu; + u16 queues[0]; +}; + struct xsk_buff_pool { struct device *dev; struct net_device *netdev; @@ -48740,6 +49707,12 @@ struct xsk_buff_pool { struct list_head xskb_list; u32 heads_cnt; u16 queue_id; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; + long: 32; struct xsk_queue *fq; struct xsk_queue *cq; dma_addr_t *dma_pages; @@ -49348,6 +50321,12 @@ typedef void (*btf_trace_cpuhp_exit)(void *, unsigned int, int, int, int); typedef void (*btf_trace_cpuhp_multi_enter)(void *, unsigned int, int, int, int (*)(unsigned int, struct hlist_node *), struct hlist_node *); +typedef void (*btf_trace_csd_function_entry)(void *, smp_call_func_t, call_single_data_t *); + +typedef void (*btf_trace_csd_function_exit)(void *, smp_call_func_t, call_single_data_t *); + +typedef void (*btf_trace_csd_queue_cpu)(void *, const unsigned int, long unsigned int, smp_call_func_t, call_single_data_t *); + typedef void (*btf_trace_ctime_ns_xchg)(void *, struct inode *, u32, u32, u32); typedef void (*btf_trace_ctime_xchg_skip)(void *, struct inode *, struct timespec64 *); @@ -49678,6 +50657,8 @@ typedef void (*btf_trace_qdisc_enqueue)(void *, struct Qdisc *, const struct net typedef void (*btf_trace_qdisc_reset)(void *, struct Qdisc *); +typedef void (*btf_trace_rcu_stall_warning)(void *, const char *, const char *); + typedef void (*btf_trace_rcu_utilization)(void *, const char *); typedef void (*btf_trace_reclaim_retry_zone)(void *, struct zoneref *, int, long unsigned int, long unsigned int, long unsigned int, int, bool); @@ -49994,6 +50975,10 @@ typedef int (*parse_pred_fn)(const char *, void *, int, struct filter_parse_erro typedef int (*parse_unknown_fn)(char *, char *, const char *, void *); +typedef int pcpu_fc_cpu_distance_fn_t(unsigned int, unsigned int); + +typedef int pcpu_fc_cpu_to_node_fn_t(int); + typedef void (*perf_irq_t)(struct pt_regs *); typedef void perf_iterate_f(struct perf_event *, void *); diff --git a/include/riscv64/vmlinux_6.19.h b/include/riscv64/vmlinux_6.19.h index d77d755..61cc8a5 100644 --- a/include/riscv64/vmlinux_6.19.h +++ b/include/riscv64/vmlinux_6.19.h @@ -4797,16 +4797,17 @@ enum { __SCHED_FEAT_TTWU_QUEUE = 14, __SCHED_FEAT_SIS_UTIL = 15, __SCHED_FEAT_WARN_DOUBLE_CLOCK = 16, - __SCHED_FEAT_RT_RUNTIME_SHARE = 17, - __SCHED_FEAT_LB_MIN = 18, - __SCHED_FEAT_ATTACH_AGE_LOAD = 19, - __SCHED_FEAT_WA_IDLE = 20, - __SCHED_FEAT_WA_WEIGHT = 21, - __SCHED_FEAT_WA_BIAS = 22, - __SCHED_FEAT_UTIL_EST = 23, - __SCHED_FEAT_LATENCY_WARN = 24, - __SCHED_FEAT_NI_RANDOM = 25, - __SCHED_FEAT_NR = 26, + __SCHED_FEAT_RT_PUSH_IPI = 17, + __SCHED_FEAT_RT_RUNTIME_SHARE = 18, + __SCHED_FEAT_LB_MIN = 19, + __SCHED_FEAT_ATTACH_AGE_LOAD = 20, + __SCHED_FEAT_WA_IDLE = 21, + __SCHED_FEAT_WA_WEIGHT = 22, + __SCHED_FEAT_WA_BIAS = 23, + __SCHED_FEAT_UTIL_EST = 24, + __SCHED_FEAT_LATENCY_WARN = 25, + __SCHED_FEAT_NI_RANDOM = 26, + __SCHED_FEAT_NR = 27, }; enum { @@ -6272,6 +6273,15 @@ enum cpuhp_state { CPUHP_ONLINE = 237, }; +enum cpuhp_sync_state { + SYNC_STATE_DEAD = 0, + SYNC_STATE_KICKED = 1, + SYNC_STATE_SHOULD_DIE = 2, + SYNC_STATE_ALIVE = 3, + SYNC_STATE_SHOULD_ONLINE = 4, + SYNC_STATE_ONLINE = 5, +}; + enum ctx_state { CT_STATE_DISABLED = -1, CT_STATE_KERNEL = 0, @@ -7518,6 +7528,12 @@ enum hash_pointers_policy { HASH_PTR_NEVER = 2, }; +enum hk_flags { + HK_FLAG_DOMAIN = 1, + HK_FLAG_MANAGED_IRQ = 2, + HK_FLAG_KERNEL_NOISE = 4, +}; + enum hk_type { HK_TYPE_DOMAIN = 0, HK_TYPE_MANAGED_IRQ = 1, @@ -7867,6 +7883,18 @@ enum ip_defrag_users { IP_DEFRAG_MACVLAN = 196614, }; +enum ipi_message_type { + IPI_RESCHEDULE = 0, + IPI_CALL_FUNC = 1, + IPI_CPU_STOP = 2, + IPI_CPU_CRASH_STOP = 3, + IPI_IRQ_WORK = 4, + IPI_TIMER = 5, + IPI_CPU_BACKTRACE = 6, + IPI_KGDB_ROUNDUP = 7, + IPI_MAX = 8, +}; + enum irq_domain_bus_token { DOMAIN_BUS_ANY = 0, DOMAIN_BUS_WIRED = 1, @@ -8439,6 +8467,14 @@ enum mthp_stat_item { __MTHP_STAT_COUNT = 17, }; +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, +}; + enum nbcon_prio { NBCON_PRIO_NONE = 0, NBCON_PRIO_NORMAL = 1, @@ -9690,6 +9726,13 @@ enum sbi_ext_dbcn_fid { SBI_EXT_DBCN_CONSOLE_WRITE_BYTE = 2, }; +enum sbi_ext_hsm_fid { + SBI_EXT_HSM_HART_START = 0, + SBI_EXT_HSM_HART_STOP = 1, + SBI_EXT_HSM_HART_STATUS = 2, + SBI_EXT_HSM_HART_SUSPEND = 3, +}; + enum sbi_ext_id { SBI_EXT_BASE = 16, SBI_EXT_TIME = 1414090053, @@ -10483,6 +10526,12 @@ enum tcx_action_base { TCX_REDIRECT = 7, }; +enum tick_broadcast_mode { + TICK_BROADCAST_OFF = 0, + TICK_BROADCAST_ON = 1, + TICK_BROADCAST_FORCE = 2, +}; + enum tick_broadcast_state { TICK_BROADCAST_EXIT = 0, TICK_BROADCAST_ENTER = 1, @@ -11051,7 +11100,7 @@ enum wq_internal_consts { enum wq_misc_consts { WORK_NR_COLORS = 16, - WORK_CPU_UNBOUND = 1, + WORK_CPU_UNBOUND = 64, WORK_BUSY_PENDING = 1, WORK_BUSY_RUNNING = 2, WORKER_DESC_LEN = 32, @@ -11180,6 +11229,12 @@ enum xfrm_replay_mode { XFRM_REPLAY_MODE_ESN = 2, }; +enum xps_map_type { + XPS_CPUS = 0, + XPS_RXQS = 1, + XPS_MAPS_MAX = 2, +}; + enum zone_flags { ZONE_BOOSTED_WATERMARK = 0, ZONE_RECLAIM_ACTIVE = 1, @@ -11584,10 +11639,6 @@ typedef struct { int val[2]; } __kernel_fsid_t; -typedef struct {} arch_rwlock_t; - -typedef struct {} arch_spinlock_t; - typedef struct { s64 counter; } atomic64_t; @@ -11724,6 +11775,35 @@ typedef struct { void *lock; } class_rcu_tasks_trace_t; +struct qspinlock { + union { + atomic_t val; + struct { + u8 locked; + u8 pending; + }; + struct { + u16 locked_pending; + u16 tail; + }; + }; +}; + +typedef struct qspinlock arch_spinlock_t; + +struct qrwlock { + union { + atomic_t cnts; + struct { + u8 wlocked; + u8 __lstate[3]; + }; + }; + arch_spinlock_t wait_lock; +}; + +typedef struct qrwlock arch_rwlock_t; + typedef struct { arch_rwlock_t raw_lock; } rwlock_t; @@ -12184,9 +12264,17 @@ typedef struct { long unsigned int f; } memdesc_flags_t; +struct cpumask { + long unsigned int bits[1]; +}; + +typedef struct cpumask cpumask_t; + typedef struct { atomic_long_t id; void *vdso; + cpumask_t icache_stale_mask; + bool force_icache_flush; long unsigned int flags; } mm_context_t; @@ -12481,6 +12569,12 @@ struct Qdisc { struct gnet_stats_queue qstats; struct sk_buff *to_free; __u8 __cacheline_group_end__Qdisc_write[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t defer_count; struct llist_head defer_list; spinlock_t seqlock; @@ -12489,6 +12583,7 @@ struct Qdisc { struct lock_class_key root_lock_key; long: 64; long: 64; + long: 64; long int privdata[0]; }; @@ -13022,9 +13117,14 @@ struct xarray { void *xa_head; }; +struct optimistic_spin_queue { + atomic_t tail; +}; + struct rw_semaphore { atomic_long_t count; atomic_long_t owner; + struct optimistic_spin_queue osq; raw_spinlock_t wait_lock; struct list_head wait_list; }; @@ -13109,8 +13209,6 @@ struct adjtimex_result { bool clock_set; }; -struct cpumask; - struct affinity_context { const struct cpumask *new_mask; struct cpumask *user_mask; @@ -13260,6 +13358,7 @@ struct kobject { struct mutex { atomic_long_t owner; raw_spinlock_t wait_lock; + struct optimistic_spin_queue osq; struct list_head wait_list; }; @@ -13518,10 +13617,6 @@ struct aplic_priv { struct aplic_msicfg msicfg; }; -struct cpumask { - long unsigned int bits[1]; -}; - struct aplic_direct { struct aplic_priv priv; struct irq_domain *irqdomain; @@ -13722,7 +13817,9 @@ struct attribute_group { }; struct percpu_counter { + raw_spinlock_t lock; s64 count; + s32 *counters; }; struct fprop_local_percpu { @@ -14663,6 +14760,13 @@ struct bpf_lru_list { unsigned int counts[2]; struct list_head *next_inactive_rotation; raw_spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bpf_lru_locallist; @@ -14670,6 +14774,13 @@ struct bpf_lru_locallist; 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; }; struct bpf_core_accessor { @@ -14786,8 +14897,6 @@ struct bpf_cpu_map_entry { struct rcu_work free_work; }; -typedef struct cpumask cpumask_t; - struct bpf_cpumask { cpumask_t cpumask; refcount_t usage; @@ -15704,6 +15813,10 @@ struct bpf_lru { unsigned int target_free; unsigned int nr_scans; bool percpu; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bucket; @@ -15716,6 +15829,9 @@ struct bpf_htab { struct bpf_mem_alloc pcpu_ma; struct bucket *buckets; void *elems; + long: 64; + long: 64; + long: 64; union { struct pcpu_freelist freelist; struct bpf_lru lru; @@ -15727,6 +15843,7 @@ struct bpf_htab { u32 n_buckets; u32 elem_size; u32 hashrnd; + long: 64; }; struct bpf_iarray { @@ -17251,16 +17368,13 @@ struct bpf_ringbuf { struct page **pages; int nr_pages; bool overwrite_mode; - rqspinlock_t spinlock; - atomic_t busy; - long: 64; - long: 64; long: 64; long: 64; long: 64; long: 64; long: 64; long: 64; + rqspinlock_t spinlock; long: 64; long: 64; long: 64; @@ -17268,6 +17382,7 @@ struct bpf_ringbuf { long: 64; long: 64; long: 64; + atomic_t busy; long: 64; long: 64; long: 64; @@ -19046,7 +19161,19 @@ struct bpf_struct_ops_common_value { struct bpf_struct_ops_bpf_dummy_ops { struct bpf_struct_ops_common_value common; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct bpf_dummy_ops data; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bpf_struct_ops_desc { @@ -19066,6 +19193,13 @@ struct bpf_struct_ops_link { struct bpf_struct_ops_value { struct bpf_struct_ops_common_value common; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; char data[0]; }; @@ -19080,6 +19214,9 @@ struct bpf_struct_ops_map { void *image_pages[8]; struct btf *btf; struct bpf_struct_ops_value *uvalue; + long: 64; + long: 64; + long: 64; struct bpf_struct_ops_value kvalue; }; @@ -19106,10 +19243,22 @@ struct tcp_congestion_ops { u32 flags; void (*init)(struct sock *); void (*release)(struct sock *); + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bpf_struct_ops_tcp_congestion_ops { struct bpf_struct_ops_common_value common; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct tcp_congestion_ops data; }; @@ -20024,6 +20173,7 @@ struct bucket_table { struct callback_head rcu; struct bucket_table *future_tbl; struct lockdep_map dep_map; + long: 64; struct rhash_lock_head *buckets[0]; }; @@ -20115,6 +20265,18 @@ struct cacheinfo { void *priv; }; +struct cacheline_padding { + char x[0]; +}; + +typedef struct cpumask cpumask_var_t[1]; + +struct call_function_data { + call_single_data_t *csd; + cpumask_var_t cpumask; + cpumask_var_t cpumask_ipi; +}; + struct call_summary { u8 num_params; bool is_void; @@ -20576,18 +20738,44 @@ struct clk_mux { spinlock_t *lock; }; -struct srcu_usage {}; +struct srcu_node; + +struct srcu_usage { + struct srcu_node *node; + struct srcu_node *level[3]; + int srcu_size_state; + struct mutex srcu_cb_mutex; + spinlock_t lock; + struct mutex srcu_gp_mutex; + long unsigned int srcu_gp_seq; + long unsigned int srcu_gp_seq_needed; + long unsigned int srcu_gp_seq_needed_exp; + long unsigned int srcu_gp_start; + long unsigned int srcu_last_gp_end; + long unsigned int srcu_size_jiffies; + long unsigned int srcu_n_lock_retries; + long unsigned int srcu_n_exp_nodelay; + bool sda_is_static; + long unsigned int srcu_barrier_seq; + struct mutex srcu_barrier_mutex; + struct completion srcu_barrier_completion; + atomic_t srcu_barrier_cpu_cnt; + long unsigned int reschedule_jiffies; + long unsigned int reschedule_count; + struct delayed_work work; + struct srcu_struct *srcu_ssp; +}; + +struct srcu_ctr; + +struct srcu_data; struct srcu_struct { - short int srcu_lock_nesting[2]; - u8 srcu_gp_running; - u8 srcu_gp_waiting; - long unsigned int srcu_idx; - long unsigned int srcu_idx_max; - struct swait_queue_head srcu_wq; - struct callback_head *srcu_cb_head; - struct callback_head **srcu_cb_tail; - struct work_struct srcu_work; + struct srcu_ctr *srcu_ctrp; + struct srcu_data *sda; + u8 srcu_reader_flavor; + struct lockdep_map dep_map; + struct srcu_usage *srcu_sup; }; struct srcu_notifier_head { @@ -21014,6 +21202,12 @@ struct container_dev { int (*offline)(struct container_dev *); }; +struct context_tracking { + atomic_t state; + long int nesting; + long int nmi_nesting; +}; + struct core_thread { struct task_struct *task; struct core_thread *next; @@ -21064,6 +21258,7 @@ struct cpu_fbatches { struct folio_batch lru_deactivate_file; struct folio_batch lru_deactivate; struct folio_batch lru_lazyfree; + struct folio_batch lru_activate; local_lock_t lock_irq; struct folio_batch lru_move_tail; }; @@ -21092,17 +21287,49 @@ struct cpu_map_ret { u32 skb_n; }; +struct cpu_operations { + int (*cpu_start)(unsigned int, struct task_struct *); +}; + +struct cpu_rmap { + struct kref refcount; + u16 size; + void **obj; + struct { + u16 index; + u16 dist; + } near[0]; +}; + struct cpu_smt_info { unsigned int thread_num; int core_id; }; +struct cpu_stop_done { + atomic_t nr_todo; + int ret; + struct completion completion; +}; + typedef int (*cpu_stop_fn_t)(void *); struct cpu_stop_work { - struct work_struct work; + struct list_head list; cpu_stop_fn_t fn; + long unsigned int caller; void *arg; + struct cpu_stop_done *done; +}; + +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 cpu_topology { @@ -21123,8 +21350,6 @@ struct cpu_vfs_cap_data { kernel_cap_t inheritable; }; -typedef struct cpumask cpumask_var_t[1]; - struct cpudl_item; struct cpudl { @@ -21254,6 +21479,18 @@ struct cpuhp_cpu_state { enum cpuhp_state state; enum cpuhp_state target; enum cpuhp_state fail; + struct task_struct *thread; + bool should_run; + bool rollback; + bool single; + bool bringup; + struct hlist_node *node; + struct hlist_node *last; + enum cpuhp_state cb_state; + int result; + atomic_t ap_sync_state; + struct completion done_up; + struct completion done_down; }; struct cpuhp_step { @@ -21610,6 +21847,7 @@ union shortname_store { struct lockref { union { + __u64 lock_count; struct { spinlock_t lock; int count; @@ -22288,6 +22526,7 @@ struct dql { short unsigned int stall_thrs; long unsigned int history_head; long unsigned int history[4]; + long: 64; unsigned int limit; unsigned int num_completed; unsigned int prev_ovlimit; @@ -22458,6 +22697,11 @@ struct dst_ops { void (*confirm_neigh)(const struct dst_entry *, const void *); struct kmem_cache *kmem_cachep; struct percpu_counter pcpuc_entries; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct dump_stack_ctx { @@ -25400,12 +25644,20 @@ struct files_struct { wait_queue_head_t resize_wait; struct fdtable *fdt; struct fdtable fdtab; + 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; }; struct filter_head { @@ -26239,10 +26491,21 @@ struct fqdir { struct inet_frags *f; struct net *net; bool dead; + long: 64; + long: 64; struct rhashtable rhashtable; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t mem; struct work_struct destroy_work; struct llist_node free_list; + long: 64; + long: 64; }; struct frag_hdr { @@ -26627,8 +26890,21 @@ struct pcpu_gen_cookie; struct gen_cookie { struct pcpu_gen_cookie *local; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic64_t forward_last; atomic64_t reverse_last; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct disk_events; @@ -27059,6 +27335,11 @@ struct hop_jumbo_hdr { __be32 jumbo_payload_len; }; +struct housekeeping { + struct cpumask cpumasks[3]; + long unsigned int flags; +}; + struct hprobe { enum hprobe_state state; int srcu_idx; @@ -27099,7 +27380,6 @@ struct hrtimer_cpu_base { ktime_t softirq_expires_next; struct hrtimer *softirq_next_timer; long: 64; - long: 64; struct hrtimer_clock_base clock_base[8]; call_single_data_t csd; long: 64; @@ -27784,6 +28064,7 @@ struct imsic_vector; struct imsic_local_priv { raw_spinlock_t lock; long unsigned int *dirty_bitmap; + struct timer_list timer; struct imsic_vector *vectors; }; @@ -28197,6 +28478,7 @@ struct sock_common { struct hlist_nulls_node skc_nulls_node; }; short unsigned int skc_tx_queue_mapping; + short unsigned int skc_rx_queue_mapping; union { int skc_incoming_cpu; u32 skc_rcv_wnd; @@ -28654,6 +28936,12 @@ struct inet_hashinfo { unsigned int lhash2_mask; struct inet_listen_hashbucket *lhash2; bool pernet; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct inet_listen_hashbucket { @@ -28754,8 +29042,21 @@ struct inet_skb_parm { struct inet_timewait_death_row { refcount_t tw_refcount; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct inet_hashinfo *hashinfo; int sysctl_max_tw_buckets; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct inet_timewait_sock { @@ -29547,6 +29848,11 @@ struct ipfrag_skb_cb { int ip_defrag_offset; }; +struct ipi_mux_cpu { + atomic_t enable; + atomic_t bits; +}; + struct ipq { struct inet_frag_queue q; u8 ecn; @@ -29872,6 +30178,9 @@ struct irq_common_data { unsigned int state_use_accessors; void *handler_data; struct msi_desc *msi_desc; + cpumask_var_t affinity; + cpumask_var_t effective_affinity; + unsigned int ipi_offset; }; struct irq_data { @@ -29907,6 +30216,9 @@ struct irq_desc { int threads_handled_last; raw_spinlock_t lock; struct cpumask *percpu_enabled; + const struct cpumask *affinity_hint; + struct irq_affinity_notify *affinity_notify; + cpumask_var_t pending_mask; long unsigned int threads_oneshot; atomic_t threads_active; wait_queue_head_t wait_for_threads; @@ -29917,6 +30229,12 @@ struct irq_desc { struct module *owner; const char *name; struct hlist_node resend_node; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct irq_desc_devres { @@ -30028,6 +30346,12 @@ struct irq_fwspec_info { const struct cpumask *affinity; }; +struct irq_glue { + struct irq_affinity_notify notify; + struct cpu_rmap *rmap; + u16 index; +}; + struct irq_matrix { unsigned int matrix_bits; unsigned int alloc_start; @@ -30062,6 +30386,10 @@ struct irqaction { long unsigned int thread_mask; const char *name; struct proc_dir_entry *dir; + long: 64; + long: 64; + long: 64; + long: 64; }; struct irqchip_fwid { @@ -30117,6 +30445,8 @@ struct kallsym_iter { int show_value; }; +struct kcsan_scoped_access {}; + struct kern_ipc_perm { spinlock_t lock; bool deleted; @@ -30132,6 +30462,11 @@ struct kern_ipc_perm { struct rhash_head khtnode; struct callback_head rcu; refcount_t refcount; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct kernel_clone_args { @@ -30300,7 +30635,7 @@ struct kernfs_fs_context { }; struct kernfs_global_locks { - struct mutex open_file_mutex[2]; + struct mutex open_file_mutex[1024]; }; struct simple_xattrs { @@ -31115,6 +31450,9 @@ struct list_lru_one { struct list_lru_node { struct list_lru_one lru; atomic_long_t nr_items; + long: 64; + long: 64; + long: 64; }; struct listeners { @@ -31951,6 +32289,13 @@ struct mm_struct { struct { struct { atomic_t mm_count; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct maple_tree mm_mt; long unsigned int mmap_base; @@ -31964,6 +32309,8 @@ struct mm_struct { spinlock_t page_table_lock; struct rw_semaphore mmap_lock; struct list_head mmlist; + struct rcuwait vma_writer_wait; + seqcount_t mm_lock_seq; long unsigned int hiwater_rss; long unsigned int hiwater_vm; long unsigned int total_vm; @@ -31997,6 +32344,10 @@ struct mm_struct { atomic_t tlb_flush_batched; struct uprobes_state uprobes_state; struct work_struct async_put_work; + long: 64; + long: 64; + long: 64; + long: 64; }; char flexible_array[0]; }; @@ -32096,6 +32447,11 @@ struct mmap_unlock_irq_work { struct mm_struct *mm; }; +struct mmiowb_state { + u16 nesting_count; + u16 mmiowb_pending; +}; + struct mmpin { struct user_struct *user; unsigned int num_pg; @@ -32125,8 +32481,11 @@ struct mmu_gather_batch { struct encoded_page *encoded_pages[0]; }; +struct mmu_table_batch; + struct mmu_gather { struct mm_struct *mm; + struct mmu_table_batch *batch; long unsigned int start; long unsigned int end; unsigned int fullmm: 1; @@ -32153,6 +32512,12 @@ struct mmu_notifier_range { long unsigned int end; }; +struct mmu_table_batch { + struct callback_head rcu; + unsigned int nr; + void *tables[0]; +}; + struct mnt_id_req { __u32 size; __u32 mnt_ns_fd; @@ -32213,6 +32578,11 @@ struct mnt_ns_info { __u64 mnt_ns_id; }; +struct mnt_pcp { + int mnt_count; + int mnt_writers; +}; + struct mod_arch_specific {}; struct mod_initfree { @@ -32292,7 +32662,6 @@ struct module { unsigned int num_exentries; struct exception_table_entry *extable; int (*init)(void); - long: 64; struct module_memory mem[7]; struct mod_arch_specific arch; long unsigned int taints; @@ -32301,10 +32670,14 @@ struct module { struct module_sect_attrs *sect_attrs; struct module_notes_attrs *notes_attrs; char *args; + void *percpu; + unsigned int percpu_size; void *noinstr_text_start; unsigned int noinstr_text_size; unsigned int num_tracepoints; tracepoint_ptr_t *tracepoints_ptrs; + unsigned int num_srcu_structs; + struct srcu_struct **srcu_struct_ptrs; unsigned int num_bpf_raw_events; struct bpf_raw_event_map *bpf_raw_events; unsigned int btf_data_size; @@ -32323,10 +32696,6 @@ struct module { unsigned int num_kprobe_blacklist; long: 64; long: 64; - long: 64; - long: 64; - long: 64; - long: 64; }; struct module_attribute { @@ -32395,8 +32764,7 @@ struct mount { struct callback_head mnt_rcu; struct llist_node mnt_llist; }; - int mnt_count; - int mnt_writers; + struct mnt_pcp *mnt_pcp; struct list_head mnt_mounts; struct list_head mnt_child; struct mount *mnt_next_for_sb; @@ -32672,6 +33040,15 @@ struct msi_parent_ops { bool (*init_dev_msi_info)(struct device *, struct irq_domain *, struct irq_domain *, struct msi_domain_info *); }; +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 multiprocess_signals { sigset_t signal; struct hlist_node node; @@ -33012,6 +33389,7 @@ struct neighbour { u8 protocol; u32 flags; seqlock_t ha_lock; + long: 0; unsigned char ha[32]; struct hh_cache hh; int (*output)(struct neighbour *, struct sk_buff *); @@ -33384,12 +33762,38 @@ struct net { struct netns_bpf bpf; u64 net_cookie; struct sock *diag_nlsk; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct net_aligned_data { atomic64_t net_cookie; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t tcp_memory_allocated; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t udp_memory_allocated; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct netdev_tc_txq { @@ -33506,6 +33910,8 @@ struct udp_tunnel_nic; struct net_device_ops; +struct xps_dev_maps; + struct pcpu_lstats; struct pcpu_sw_netstats; @@ -33560,6 +33966,7 @@ struct net_device { unsigned int mtu; short unsigned int needed_headroom; struct netdev_tc_txq tc_to_txq[16]; + struct xps_dev_maps *xps_maps[2]; struct bpf_mprog_entry *tcx_egress; __u8 __cacheline_group_end__net_device_read_tx[0]; __u8 __cacheline_group_begin__net_device_read_txrx[0]; @@ -33654,6 +34061,7 @@ struct net_device { unsigned int xdp_zc_max_segs; struct netdev_queue *ingress_queue; unsigned char broadcast[32]; + struct cpu_rmap *rx_cpu_rmap; struct hlist_node index_hlist; unsigned int num_tx_queues; struct Qdisc *qdisc; @@ -33664,7 +34072,7 @@ struct net_device { int watchdog_timeo; u32 proto_down_reason; struct list_head todo_list; - refcount_t dev_refcnt; + int *pcpu_refcnt; struct ref_tracker_dir refcnt_tracker; struct list_head link_watch_list; u8 reg_state; @@ -33721,6 +34129,7 @@ struct net_device { struct mutex lock; struct hlist_head neighbours[2]; struct hwtstamp_provider *hwprov; + long: 64; u8 priv[0]; }; @@ -33788,6 +34197,7 @@ struct net_device_ops { int (*ndo_set_vf_guid)(struct net_device *, int, u64, int); int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool); int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *); + int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32); int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *); int (*ndo_del_slave)(struct net_device *, struct net_device *); struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool); @@ -33964,6 +34374,8 @@ struct net_protocol { u32 secret; }; +struct rps_sock_flow_table; + struct skb_defer_node; struct net_hotdata { @@ -33981,6 +34393,8 @@ struct net_hotdata { struct kmem_cache *skbuff_cache; struct kmem_cache *skbuff_fclone_cache; struct kmem_cache *skb_small_head_cache; + struct rps_sock_flow_table *rps_sock_flow_table; + u32 rps_cpu_mask; struct skb_defer_node *skb_defer_nodes; int gro_normal_batch; int netdev_budget; @@ -34222,12 +34636,17 @@ struct netdev_queue { long unsigned int tx_maxrate; atomic_long_t trans_timeout; struct net_device *sb_dev; + long: 64; struct dql dql; spinlock_t _xmit_lock; int xmit_lock_owner; long unsigned int trans_start; long unsigned int state; struct napi_struct *napi; + long: 64; + long: 64; + long: 64; + long: 64; }; struct netdev_queue_attribute { @@ -34300,8 +34719,14 @@ struct pp_memory_provider_params { const struct memory_provider_ops *mp_ops; }; +struct rps_map; + +struct rps_dev_flow_table; + 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; const struct attribute_group **groups; struct net_device *dev; @@ -34309,8 +34734,6 @@ struct netdev_rx_queue { struct napi_struct *napi; struct pp_memory_provider_params mp_params; long: 64; - long: 64; - long: 64; }; struct netdev_stat_ops { @@ -34799,6 +35222,14 @@ struct node_barn { unsigned int nr_empty; }; +struct node_groups { + unsigned int id; + union { + unsigned int ngroups; + unsigned int ncpus; + }; +}; + struct node_notify { int nid; }; @@ -34877,7 +35308,21 @@ struct ntp_data { struct numa_drop_counters { atomic_t drops0; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_t drops1; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct objpool_head; @@ -35062,6 +35507,13 @@ struct open_how { __u64 resolve; }; +struct optimistic_spin_node { + struct optimistic_spin_node *next; + struct optimistic_spin_node *prev; + int locked; + int cpu; +}; + struct osnoise_entry { struct trace_entry ent; u64 noise; @@ -35123,12 +35575,31 @@ struct pp_alloc_cache { struct ptr_ring { int producer; spinlock_t producer_lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; int consumer_head; int consumer_tail; spinlock_t consumer_lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; int size; int batch; void **queue; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct page_pool_params_slow { @@ -35161,7 +35632,19 @@ struct page_pool { long unsigned int defer_start; long unsigned int defer_warn; u32 xdp_mem_id; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct pp_alloc_cache alloc; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct ptr_ring ring; void *mp_priv; const struct memory_provider_ops *mp_ops; @@ -35577,6 +36060,7 @@ struct pcpu_chunk { int nr_populated; int nr_empty_pop_pages; long unsigned int populated[0]; + long: 64; }; struct pcpu_dstats { @@ -35633,9 +36117,16 @@ struct per_cpu_pages { u8 alloc_factor; short int free_count; struct list_head lists[12]; + long: 64; + long: 64; + long: 64; + long: 64; }; -struct per_cpu_zonestat {}; +struct per_cpu_zonestat { + s8 vm_stat_diff[10]; + s8 stat_threshold; +}; struct per_frame_masks { u64 may_read; @@ -36317,14 +36808,33 @@ struct zone { long unsigned int present_pages; const char *name; int initialized; + long: 64; + long: 64; + struct cacheline_padding _pad1_; struct free_area free_area[11]; long unsigned int flags; spinlock_t lock; struct llist_head trylock_free_pages; + long: 64; + long: 64; + struct cacheline_padding _pad2_; long unsigned int percpu_drift_mark; bool contiguous; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct cacheline_padding _pad3_; atomic_long_t vm_stat[10]; atomic_long_t vm_numa_event[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct zoneref { @@ -36355,10 +36865,22 @@ struct pglist_data { enum zone_type kswapd_highest_zoneidx; atomic_t kswapd_failures; long unsigned int totalreserve_pages; + long: 64; + long: 64; + struct cacheline_padding _pad1_; struct lruvec __lruvec; long unsigned int flags; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct cacheline_padding _pad2_; struct per_cpu_nodestat *per_cpu_nodestats; atomic_long_t vm_stat[45]; + long: 64; + long: 64; }; struct phc_vclocks_reply_data { @@ -37734,6 +38256,7 @@ struct raw6_sock { __u32 offset; struct icmp6_filter filter; __u32 ip6mr_table; + long: 0; struct numa_drop_counters drop_counters; struct ipv6_pinfo inet6; }; @@ -37755,6 +38278,13 @@ struct raw_frag_vec { struct raw_hashinfo { spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct hlist_head ht[256]; }; @@ -37762,6 +38292,11 @@ struct raw_sock { struct inet_sock inet; struct icmp_filter filter; u32 ipmr_table; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct numa_drop_counters drop_counters; }; @@ -37814,15 +38349,12 @@ struct rcu_cblist { long int len; }; -struct rcu_ctrlblk { - struct callback_head *rcucblist; - struct callback_head **donetail; - struct callback_head **curtail; - long unsigned int gp_seq; -}; - -struct rcu_gp_oldstate { - long unsigned int rgos_norm; +union rcu_noqs { + struct { + u8 norm; + u8 exp; + } b; + u16 s; }; struct rcu_segcblist { @@ -37834,6 +38366,147 @@ struct rcu_segcblist { u8 flags; }; +struct rcu_snap_record { + long unsigned int gp_seq; + u64 cputime_irq; + u64 cputime_softirq; + u64 cputime_system; + u64 nr_hardirqs; + unsigned int nr_softirqs; + long long unsigned int nr_csw; + long unsigned int jiffies; +}; + +struct rcu_node; + +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; + unsigned int gpwrap_count; + bool cpu_started; + struct rcu_node *mynode; + long unsigned int grpmask; + long unsigned int ticks_this_gp; + struct irq_work defer_qs_iw; + int 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 watching_snap; + 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_watching_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_state; + long unsigned int rcu_onl_gp_seq; + short int rcu_onl_gp_state; + long unsigned int last_fqs_resched; + long unsigned int last_sched_clock; + struct rcu_snap_record snap_record; + long int lazy_len; + int cpu; +}; + +struct rcu_exp_work { + long unsigned int rew_s; + struct kthread_work rew_work; +}; + +struct rcu_gp_oldstate { + long unsigned int rgos_norm; + long unsigned int rgos_exp; +}; + +struct rt_mutex_base { + raw_spinlock_t wait_lock; + struct rb_root_cached waiters; + struct task_struct *owner; +}; + +struct rt_mutex { + struct rt_mutex_base rtmutex; +}; + +struct 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; + struct kthread_worker *exp_kworker; + 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 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; + raw_spinlock_t fqslock; + long: 64; + long: 64; + long: 64; + long: 64; + 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; + raw_spinlock_t exp_poll_lock; + long unsigned int exp_seq_poll_rq; + struct work_struct exp_poll_wq; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; + union rcu_special { struct { u8 blocked; @@ -37844,6 +38517,77 @@ union rcu_special { u32 s; }; +struct sr_wait_node { + atomic_t inuse; + struct llist_node node; +}; + +struct rcu_state { + struct rcu_node node[5]; + struct rcu_node *level[3]; + int ncpus; + int n_online_cpus; + long: 64; + 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; + long unsigned int gp_seq_polled; + long unsigned int gp_seq_polled_snap; + long unsigned int gp_seq_polled_exp_snap; + 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; + int nr_fqs_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; + arch_spinlock_t ofl_lock; + struct llist_head srs_next; + struct llist_node *srs_wait_tail; + struct llist_node *srs_done_tail; + struct sr_wait_node srs_wait_nodes[5]; + struct work_struct srs_cleanup_work; + atomic_t srs_cleanups_pending; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; + struct rcu_synchronize { struct callback_head head; struct completion completion; @@ -38409,7 +39153,7 @@ struct riscv_isa_vendor_ext_data_list { bool is_initialized; const size_t ext_data_count; const struct riscv_isa_ext_data *ext_data; - struct riscv_isavendorinfo per_hart_isa_bitmap[1]; + struct riscv_isavendorinfo per_hart_isa_bitmap[64]; struct riscv_isavendorinfo all_harts_isa_bitmap; }; @@ -38496,11 +39240,47 @@ struct root_domain { struct dl_bw dl_bw; struct cpudl cpudl; u64 visit_cookie; + 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; struct perf_domain *pd; }; +struct rps_dev_flow { + u16 cpu; + u16 filter; + unsigned int last_qtail; + u32 hash; +}; + +struct rps_dev_flow_table { + u8 log; + struct callback_head rcu; + struct rps_dev_flow flows[0]; +}; + +struct rps_map { + unsigned int len; + struct callback_head rcu; + u16 cpus[0]; +}; + +struct rps_sock_flow_table { + struct callback_head rcu; + u32 mask; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + u32 ents[0]; +}; + struct rt_prio_array { long unsigned int bitmap[2]; struct list_head queue[100]; @@ -39136,6 +39916,11 @@ struct sb_writers { struct percpu_rw_semaphore rw_sem[3]; }; +struct sbi_hart_boot_data { + void *task_ptr; + void *stack_ptr; +}; + union sbi_pmu_ctr_info { long unsigned int value; struct { @@ -39502,6 +40287,15 @@ struct sd_flag_debug { char *name; }; +struct sd_flow_limit { + struct callback_head rcu; + unsigned int count; + u8 log_buckets; + unsigned int history_head; + u16 history[128]; + u8 buckets[0]; +}; + struct sg_lb_stats { long unsigned int avg_load; long unsigned int group_load; @@ -40125,6 +40919,12 @@ struct sk_skb_cb { struct skb_defer_node { struct llist_head defer_list; atomic_long_t defer_count; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct skb_frag { @@ -40250,6 +41050,15 @@ struct smc_hashinfo { struct hlist_head ht; }; +struct smp_call_on_cpu_struct { + struct work_struct work; + struct completion done; + int (*func)(void *); + void *data; + int ret; + int cpu; +}; + struct smp_hotplug_thread { struct task_struct **store; struct list_head list; @@ -40403,6 +41212,7 @@ struct socket_wq { struct fasync_struct *fasync_list; long unsigned int flags; struct callback_head rcu; + long: 64; }; struct socket { @@ -40412,6 +41222,9 @@ struct socket { struct file *file; struct sock *sk; const struct proto_ops *ops; + long: 64; + long: 64; + long: 64; struct socket_wq wq; }; @@ -40422,6 +41235,8 @@ struct socket__safe_trusted_or_null { struct socket_alloc { struct socket socket; struct inode vfs_inode; + long: 64; + long: 64; }; struct sockmap_link { @@ -40439,19 +41254,43 @@ struct softnet_data { local_lock_t process_queue_bh_lock; unsigned int processed; unsigned int time_squeeze; + struct softnet_data *rps_ipi_list; unsigned int received_rps; bool in_net_rx_action; bool in_napi_threaded_poll; + struct sd_flow_limit *flow_limit; struct Qdisc *output_queue; struct Qdisc **output_queue_tailp; struct sk_buff *completion_queue; struct netdev_xmit xmit; + long: 64; + long: 64; + long: 64; + unsigned int input_queue_head; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + call_single_data_t csd; + struct softnet_data *rps_ipi_next; + unsigned int cpu; + long: 64; + long: 64; + long int pad[3]; + unsigned int input_queue_tail; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; + long: 64; + long: 64; + long: 64; struct numa_drop_counters drop_counters; int defer_ipi_scheduled; long: 64; long: 64; + long: 64; call_single_data_t defer_csd; }; @@ -40509,6 +41348,46 @@ struct sr6_tlv { __u8 data[0]; }; +struct srcu_ctr { + atomic_long_t srcu_locks; + atomic_long_t srcu_unlocks; +}; + +struct srcu_data { + struct srcu_ctr srcu_ctrs[2]; + int srcu_reader_flavor; + long: 64; + long: 64; + long: 64; + spinlock_t lock; + struct rcu_segcblist srcu_cblist; + long unsigned int srcu_gp_seq_needed; + long unsigned int srcu_gp_seq_needed_exp; + bool srcu_cblist_invoking; + struct timer_list delay_work; + struct work_struct work; + struct callback_head srcu_barrier_head; + struct callback_head srcu_ec_head; + int srcu_ec_state; + struct srcu_node *mynode; + long unsigned int grpmask; + int cpu; + struct srcu_struct *ssp; + long: 64; + long: 64; + long: 64; +}; + +struct srcu_node { + spinlock_t lock; + long unsigned int srcu_have_cbs[4]; + long unsigned int srcu_data_have_cbs[4]; + long unsigned int srcu_gp_seq_needed_exp; + struct srcu_node *srcu_parent; + int grplo; + int grphi; +}; + struct ss_tmp { enum ss_state state; long unsigned int data; @@ -40818,11 +41697,14 @@ struct super_block { struct work_struct destroy_work; struct mutex s_sync_lock; int s_stack_depth; + long: 64; + long: 64; spinlock_t s_inode_list_lock; struct list_head s_inodes; spinlock_t s_inode_wblist_lock; struct list_head s_inodes_wb; long int s_min_writeback_pages; + long: 64; }; struct super_operations { @@ -41062,6 +41944,13 @@ struct sysinfo { char _f[0]; }; +struct sysrq_key_op { + void (* const handler)(u8); + const char * const help_msg; + const char * const action_msg; + const int enable_mask; +}; + struct system_counterval_t { u64 cycles; enum clocksource_ids cs_id; @@ -41141,6 +42030,8 @@ struct thread_struct { struct __riscv_v_ext_state vstate; long unsigned int align_ctl; struct __riscv_v_ext_state kernel_vstate; + bool force_icache_flush; + unsigned int prev_cpu; }; struct uprobe_task; @@ -41310,6 +42201,10 @@ struct task_struct { long: 64; long: 64; long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct task_struct__safe_rcu { @@ -41627,6 +42522,11 @@ struct tcp_sock { struct rb_root out_of_order_queue; __u8 __cacheline_group_end__tcp_sock_read_rx[0]; long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; __u8 __cacheline_group_begin__tcp_sock_write_tx[0]; u32 segs_out; u32 data_segs_out; @@ -42300,7 +43200,6 @@ struct timer_base { struct hlist_head vectors[576]; long: 64; long: 64; - long: 64; }; struct timer_rand_state { @@ -42336,7 +43235,6 @@ struct tk_data { struct timekeeper timekeeper; struct timekeeper shadow_timekeeper; raw_spinlock_t lock; - long: 64; }; struct tk_fast { @@ -42846,6 +43744,10 @@ struct trace_event_data_offsets_cpuhp_exit {}; struct trace_event_data_offsets_cpuhp_multi_enter {}; +struct trace_event_data_offsets_csd_function {}; + +struct trace_event_data_offsets_csd_queue_cpu {}; + struct trace_event_data_offsets_ctime {}; struct trace_event_data_offsets_ctime_ns_xchg {}; @@ -43243,6 +44145,8 @@ struct trace_event_data_offsets_qdisc_reset { const void *kind_ptr_; }; +struct trace_event_data_offsets_rcu_stall_warning {}; + struct trace_event_data_offsets_rcu_utilization {}; struct trace_event_data_offsets_reclaim_retry_zone {}; @@ -43711,6 +44615,22 @@ struct trace_event_raw_cpuhp_multi_enter { char __data[0]; }; +struct trace_event_raw_csd_function { + struct trace_entry ent; + void *func; + void *csd; + char __data[0]; +}; + +struct trace_event_raw_csd_queue_cpu { + struct trace_entry ent; + unsigned int cpu; + void *callsite; + void *func; + void *csd; + char __data[0]; +}; + struct trace_event_raw_ctime { struct trace_entry ent; dev_t dev; @@ -45004,6 +45924,13 @@ struct trace_event_raw_qdisc_reset { char __data[0]; }; +struct trace_event_raw_rcu_stall_warning { + struct trace_entry ent; + const char *rcuname; + const char *msg; + char __data[0]; +}; + struct trace_event_raw_rcu_utilization { struct trace_entry ent; const char *s; @@ -46432,11 +47359,14 @@ struct udp_sock { struct sk_buff * (*gro_receive)(struct sock *, struct list_head *, struct sk_buff *); int (*gro_complete)(struct sock *, struct sk_buff *, int); struct udp_prod_queue *udp_prod_queue; + long: 64; + long: 64; struct sk_buff_head reader_queue; int forward_deficit; int forward_threshold; bool peeking_with_offset; struct hlist_node tunnel_list; + long: 64; struct numa_drop_counters drop_counters; }; @@ -46474,6 +47404,12 @@ struct udp_mib { struct udp_prod_queue { struct llist_head ll_root; atomic_t rmem_alloc; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct udp_skb_cb { @@ -46569,6 +47505,10 @@ struct unix_sock { struct sock *listener; struct unix_vertex *vertex; spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; struct socket_wq peer_wq; wait_queue_entry_t peer_wake; struct scm_stat scm_stat; @@ -46883,17 +47823,25 @@ struct vm_area_struct { const vm_flags_t vm_flags; vma_flags_t flags; }; + unsigned int vm_lock_seq; 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; void *vm_private_data; + long: 64; + long: 64; + long: 64; + refcount_t vm_refcnt; struct { struct rb_node rb; long unsigned int rb_subtree_last; } shared; struct vm_userfaultfd_ctx vm_userfaultfd_ctx; + long: 64; + long: 64; + long: 64; }; struct vm_area_struct__safe_trusted_or_null { @@ -47192,6 +48140,13 @@ struct word_at_a_time { const long unsigned int high_bits; }; +struct work_for_cpu { + struct work_struct work; + long int (*fn)(void *); + void *arg; + long int ret; +}; + struct work_offq_data { u32 pool_id; u32 disable; @@ -47286,7 +48241,6 @@ struct workqueue_struct { struct callback_head rcu; long: 64; long: 64; - long: 64; unsigned int flags; struct pool_workqueue **cpu_pwq; struct wq_node_nr_active *node_nr_active[0]; @@ -47541,6 +48495,9 @@ struct xdp_umem; struct xdp_sock { struct sock sk; + long: 64; + long: 64; + long: 64; struct xsk_queue *rx; struct net_device *dev; struct xdp_umem *umem; @@ -47554,6 +48511,7 @@ struct xdp_sock { XSK_BOUND = 1, XSK_UNBOUND = 2, } state; + long: 64; struct xsk_queue *tx; struct list_head tx_list; u32 tx_budget_spent; @@ -47880,6 +48838,22 @@ struct xol_area { long unsigned int vaddr; }; +struct xps_map; + +struct xps_dev_maps { + struct callback_head rcu; + unsigned int nr_ids; + s16 num_tc; + struct xps_map *attr_map[0]; +}; + +struct xps_map { + unsigned int len; + unsigned int alloc_len; + struct callback_head rcu; + u16 queues[0]; +}; + struct xsk_buff_pool { struct device *dev; struct net_device *netdev; @@ -47917,6 +48891,8 @@ struct xsk_buff_pool { spinlock_t cq_prod_lock; spinlock_t cq_cached_prod_lock; struct xdp_buff_xsk *free_heads[0]; + long: 64; + long: 64; }; struct xsk_tx_metadata_ops { @@ -48541,6 +49517,12 @@ typedef void (*btf_trace_cpuhp_exit)(void *, unsigned int, int, int, int); typedef void (*btf_trace_cpuhp_multi_enter)(void *, unsigned int, int, int, int (*)(unsigned int, struct hlist_node *), struct hlist_node *); +typedef void (*btf_trace_csd_function_entry)(void *, smp_call_func_t, call_single_data_t *); + +typedef void (*btf_trace_csd_function_exit)(void *, smp_call_func_t, call_single_data_t *); + +typedef void (*btf_trace_csd_queue_cpu)(void *, const unsigned int, long unsigned int, smp_call_func_t, call_single_data_t *); + typedef void (*btf_trace_ctime_ns_xchg)(void *, struct inode *, u32, u32, u32); typedef void (*btf_trace_ctime_xchg_skip)(void *, struct inode *, struct timespec64 *); @@ -48895,6 +49877,8 @@ typedef void (*btf_trace_qdisc_enqueue)(void *, struct Qdisc *, const struct net typedef void (*btf_trace_qdisc_reset)(void *, struct Qdisc *); +typedef void (*btf_trace_rcu_stall_warning)(void *, const char *, const char *); + typedef void (*btf_trace_rcu_utilization)(void *, const char *); typedef void (*btf_trace_reclaim_retry_zone)(void *, struct zoneref *, int, long unsigned int, long unsigned int, long unsigned int, int, bool); @@ -49221,6 +50205,10 @@ typedef int (*parse_pred_fn)(const char *, void *, int, struct filter_parse_erro typedef int (*parse_unknown_fn)(char *, char *, const char *, void *); +typedef int pcpu_fc_cpu_distance_fn_t(unsigned int, unsigned int); + +typedef int pcpu_fc_cpu_to_node_fn_t(int); + typedef void perf_iterate_f(struct perf_event *, void *); typedef int perf_snapshot_branch_stack_t(struct perf_branch_entry *, unsigned int); diff --git a/include/x86/vmlinux_6.19.h b/include/x86/vmlinux_6.19.h index 8575fe1..8dd77af 100644 --- a/include/x86/vmlinux_6.19.h +++ b/include/x86/vmlinux_6.19.h @@ -5054,16 +5054,17 @@ enum { __SCHED_FEAT_TTWU_QUEUE = 14, __SCHED_FEAT_SIS_UTIL = 15, __SCHED_FEAT_WARN_DOUBLE_CLOCK = 16, - __SCHED_FEAT_RT_RUNTIME_SHARE = 17, - __SCHED_FEAT_LB_MIN = 18, - __SCHED_FEAT_ATTACH_AGE_LOAD = 19, - __SCHED_FEAT_WA_IDLE = 20, - __SCHED_FEAT_WA_WEIGHT = 21, - __SCHED_FEAT_WA_BIAS = 22, - __SCHED_FEAT_UTIL_EST = 23, - __SCHED_FEAT_LATENCY_WARN = 24, - __SCHED_FEAT_NI_RANDOM = 25, - __SCHED_FEAT_NR = 26, + __SCHED_FEAT_RT_PUSH_IPI = 17, + __SCHED_FEAT_RT_RUNTIME_SHARE = 18, + __SCHED_FEAT_LB_MIN = 19, + __SCHED_FEAT_ATTACH_AGE_LOAD = 20, + __SCHED_FEAT_WA_IDLE = 21, + __SCHED_FEAT_WA_WEIGHT = 22, + __SCHED_FEAT_WA_BIAS = 23, + __SCHED_FEAT_UTIL_EST = 24, + __SCHED_FEAT_LATENCY_WARN = 25, + __SCHED_FEAT_NI_RANDOM = 26, + __SCHED_FEAT_NR = 27, }; enum { @@ -6709,6 +6710,14 @@ enum cpufreq_table_sorting { CPUFREQ_TABLE_SORTED_DESCENDING = 2, }; +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, +}; + enum cpuhp_state { CPUHP_INVALID = -1, CPUHP_OFFLINE = 0, @@ -6893,6 +6902,15 @@ enum cpuhp_state { CPUHP_ONLINE = 237, }; +enum cpuhp_sync_state { + SYNC_STATE_DEAD = 0, + SYNC_STATE_KICKED = 1, + SYNC_STATE_SHOULD_DIE = 2, + SYNC_STATE_ALIVE = 3, + SYNC_STATE_SHOULD_ONLINE = 4, + SYNC_STATE_ONLINE = 5, +}; + enum cpuid_leafs { CPUID_1_EDX = 0, CPUID_8000_0001_EDX = 1, @@ -7240,6 +7258,14 @@ enum efi_secureboot_mode { efi_secureboot_mode_enabled = 3, }; +enum energy_perf_value_index { + EPP_INDEX_DEFAULT = 0, + EPP_INDEX_PERFORMANCE = 1, + EPP_INDEX_BALANCE_PERFORMANCE = 2, + EPP_INDEX_BALANCE_POWERSAVE = 3, + EPP_INDEX_POWERSAVE = 4, +}; + enum error_detector { ERROR_DETECTOR_KFENCE = 0, ERROR_DETECTOR_KASAN = 1, @@ -8262,6 +8288,12 @@ enum hash_pointers_policy { HASH_PTR_NEVER = 2, }; +enum hk_flags { + HK_FLAG_DOMAIN = 1, + HK_FLAG_MANAGED_IRQ = 2, + HK_FLAG_KERNEL_NOISE = 4, +}; + enum hk_type { HK_TYPE_DOMAIN = 0, HK_TYPE_MANAGED_IRQ = 1, @@ -8336,6 +8368,13 @@ enum hw_protection_action { HWPROT_ACT_REBOOT = 2, }; +enum hwp_cpufreq_attr_index { + HWP_BASE_FREQUENCY_INDEX = 0, + HWP_PERFORMANCE_PREFERENCE_INDEX = 1, + HWP_PERFORMANCE_AVAILABLE_PREFERENCES_INDEX = 2, + HWP_CPUFREQ_ATTR_COUNT = 3, +}; + enum hwtstamp_flags { HWTSTAMP_FLAG_BONDED_PHC_INDEX = 1, HWTSTAMP_FLAG_LAST = 1, @@ -9404,6 +9443,14 @@ enum mthp_stat_item { __MTHP_STAT_COUNT = 17, }; +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, +}; + enum nbcon_prio { NBCON_PRIO_NONE = 0, NBCON_PRIO_NORMAL = 1, @@ -12122,7 +12169,7 @@ enum wq_internal_consts { enum wq_misc_consts { WORK_NR_COLORS = 16, - WORK_CPU_UNBOUND = 1, + WORK_CPU_UNBOUND = 2, WORK_BUSY_PENDING = 1, WORK_BUSY_RUNNING = 2, WORKER_DESC_LEN = 32, @@ -12350,6 +12397,12 @@ enum xfrm_replay_mode { XFRM_REPLAY_MODE_ESN = 2, }; +enum xps_map_type { + XPS_CPUS = 0, + XPS_RXQS = 1, + XPS_MAPS_MAX = 2, +}; + enum xstate_copy_mode { XSTATE_COPY_FP = 0, XSTATE_COPY_FX = 1, @@ -12768,10 +12821,6 @@ typedef struct { int val[2]; } __kernel_fsid_t; -typedef struct {} arch_rwlock_t; - -typedef struct {} arch_spinlock_t; - typedef struct { s64 counter; } atomic64_t; @@ -12906,6 +12955,35 @@ typedef struct { void *lock; } class_rcu_tasks_trace_t; +struct qspinlock { + union { + atomic_t val; + struct { + u8 locked; + u8 pending; + }; + struct { + u16 locked_pending; + u16 tail; + }; + }; +}; + +typedef struct qspinlock arch_spinlock_t; + +struct qrwlock { + union { + atomic_t cnts; + struct { + u8 wlocked; + u8 __lstate[3]; + }; + }; + arch_spinlock_t wait_lock; +}; + +typedef struct qrwlock arch_rwlock_t; + typedef struct { arch_rwlock_t raw_lock; } rwlock_t; @@ -13018,11 +13096,12 @@ typedef struct { unsigned int x86_platform_ipis; unsigned int apic_perf_irqs; unsigned int apic_irq_work_irqs; + unsigned int irq_resched_count; + unsigned int irq_call_count; unsigned int irq_tlb_count; long: 64; long: 64; long: 64; - long: 64; } irq_cpustat_t; typedef struct { @@ -13063,6 +13142,10 @@ struct raw_spinlock { arch_spinlock_t raw_lock; }; +struct optimistic_spin_queue { + atomic_t tail; +}; + struct list_head { struct list_head *next; struct list_head *prev; @@ -13071,6 +13154,7 @@ struct list_head { struct mutex { atomic_long_t owner; raw_spinlock_t wait_lock; + struct optimistic_spin_queue osq; struct list_head wait_list; }; @@ -13440,6 +13524,12 @@ struct Qdisc { struct gnet_stats_queue qstats; struct sk_buff *to_free; __u8 __cacheline_group_end__Qdisc_write[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t defer_count; struct llist_head defer_list; spinlock_t seqlock; @@ -13448,6 +13538,7 @@ struct Qdisc { struct lock_class_key root_lock_key; long: 64; long: 64; + long: 64; long int privdata[0]; }; @@ -14040,6 +14131,7 @@ struct xarray { struct rw_semaphore { atomic_long_t count; atomic_long_t owner; + struct optimistic_spin_queue osq; raw_spinlock_t wait_lock; struct list_head wait_list; }; @@ -14477,6 +14569,11 @@ struct arch_hw_breakpoint { u8 type; }; +struct arch_hybrid_cpu_scale { + long unsigned int capacity; + long unsigned int freq_ratio; +}; + struct arch_io_reserve_memtype_wc_devres { resource_size_t start; resource_size_t size; @@ -14797,7 +14894,10 @@ struct attribute_group { }; struct percpu_counter { + raw_spinlock_t lock; s64 count; + struct list_head list; + s32 *counters; }; struct fprop_local_percpu { @@ -16154,6 +16254,13 @@ struct bpf_lru_list { unsigned int counts[2]; struct list_head *next_inactive_rotation; raw_spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bpf_lru_locallist; @@ -16161,6 +16268,13 @@ struct bpf_lru_locallist; 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; }; struct bpf_core_accessor { @@ -17163,6 +17277,10 @@ struct bpf_lru { unsigned int target_free; unsigned int nr_scans; bool percpu; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bucket; @@ -17175,6 +17293,9 @@ struct bpf_htab { struct bpf_mem_alloc pcpu_ma; struct bucket *buckets; void *elems; + long: 64; + long: 64; + long: 64; union { struct pcpu_freelist freelist; struct bpf_lru lru; @@ -17186,6 +17307,13 @@ struct bpf_htab { u32 n_buckets; u32 elem_size; u32 hashrnd; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bpf_iarray { @@ -18654,14 +18782,7 @@ struct bpf_prog_stats { long: 64; }; -struct rqspinlock { - union { - atomic_t val; - u32 locked; - }; -}; - -typedef struct rqspinlock rqspinlock_t; +typedef struct qspinlock rqspinlock_t; struct bpf_queue_stack { struct bpf_map map; @@ -18749,16 +18870,13 @@ struct bpf_ringbuf { struct page **pages; int nr_pages; bool overwrite_mode; - rqspinlock_t spinlock; - atomic_t busy; - long: 64; - long: 64; long: 64; long: 64; long: 64; long: 64; long: 64; long: 64; + rqspinlock_t spinlock; long: 64; long: 64; long: 64; @@ -18766,6 +18884,7 @@ struct bpf_ringbuf { long: 64; long: 64; long: 64; + atomic_t busy; long: 64; long: 64; long: 64; @@ -20538,7 +20657,19 @@ struct bpf_struct_ops_common_value { struct bpf_struct_ops_bpf_dummy_ops { struct bpf_struct_ops_common_value common; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct bpf_dummy_ops data; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bpf_struct_ops_desc { @@ -20558,6 +20689,13 @@ struct bpf_struct_ops_link { struct bpf_struct_ops_value { struct bpf_struct_ops_common_value common; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; char data[0]; }; @@ -20572,6 +20710,9 @@ struct bpf_struct_ops_map { void *image_pages[8]; struct btf *btf; struct bpf_struct_ops_value *uvalue; + long: 64; + long: 64; + long: 64; struct bpf_struct_ops_value kvalue; }; @@ -20598,10 +20739,22 @@ struct tcp_congestion_ops { u32 flags; void (*init)(struct sock *); void (*release)(struct sock *); + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct bpf_struct_ops_tcp_congestion_ops { struct bpf_struct_ops_common_value common; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct tcp_congestion_ops data; }; @@ -23072,6 +23225,7 @@ struct bucket_table { struct callback_head rcu; struct bucket_table *future_tbl; struct lockdep_map dep_map; + long: 64; struct rhash_lock_head *buckets[0]; }; @@ -23157,6 +23311,18 @@ struct cacheinfo { void *priv; }; +struct cacheline_padding { + char x[0]; +}; + +typedef struct cpumask cpumask_var_t[1]; + +struct call_function_data { + call_single_data_t *csd; + cpumask_var_t cpumask; + cpumask_var_t cpumask_ipi; +}; + struct call_summary { u8 num_params; bool is_void; @@ -23870,6 +24036,12 @@ struct container_dev { int (*offline)(struct container_dev *); }; +struct context_tracking { + atomic_t state; + long int nesting; + long int nmi_nesting; +}; + struct core_thread { struct task_struct *task; struct core_thread *next; @@ -23947,6 +24119,11 @@ struct cpu_dev { int c_x86_vendor; }; +struct cpu_down_work { + unsigned int cpu; + enum cpuhp_state target; +}; + struct entry_stack { char stack[4096]; }; @@ -24502,6 +24679,7 @@ struct cpu_fbatches { struct folio_batch lru_deactivate_file; struct folio_batch lru_deactivate; struct folio_batch lru_lazyfree; + struct folio_batch lru_activate; local_lock_t lock_irq; struct folio_batch lru_move_tail; }; @@ -24615,18 +24793,46 @@ struct cpu_perf_ibs { long unsigned int state[1]; }; +struct cpu_rmap { + struct kref refcount; + u16 size; + void **obj; + struct { + u16 index; + u16 dist; + } near[0]; +}; + struct cpu_signature { unsigned int sig; unsigned int pf; unsigned int rev; }; +struct cpu_stop_done { + atomic_t nr_todo; + int ret; + struct completion completion; +}; + typedef int (*cpu_stop_fn_t)(void *); struct cpu_stop_work { - struct work_struct work; + struct list_head list; cpu_stop_fn_t fn; + long unsigned int caller; void *arg; + struct cpu_stop_done *done; +}; + +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 cpu_vfs_cap_data { @@ -24636,7 +24842,69 @@ struct cpu_vfs_cap_data { kernel_cap_t inheritable; }; -typedef struct cpumask cpumask_var_t[1]; +struct update_util_data { + void (*func)(struct update_util_data *, u64, unsigned int); +}; + +struct pstate_data { + int current_pstate; + int min_pstate; + int max_pstate; + int max_pstate_physical; + int perf_ctl_scaling; + int scaling; + int turbo_pstate; + unsigned int min_freq; + unsigned int max_freq; + unsigned int turbo_freq; +}; + +struct vid_data { + int min; + int max; + int turbo; + int32_t ratio; +}; + +struct sample { + int32_t core_avg_perf; + int32_t busy_scaled; + u64 aperf; + u64 mperf; + u64 tsc; + u64 time; +}; + +struct cpudata { + int cpu; + unsigned int policy; + struct update_util_data update_util; + bool update_util_set; + struct pstate_data pstate; + struct vid_data vid; + u64 last_update; + u64 last_sample_time; + u64 aperf_mperf_shift; + u64 prev_aperf; + u64 prev_mperf; + u64 prev_tsc; + struct sample sample; + int32_t min_perf_ratio; + int32_t max_perf_ratio; + unsigned int iowait_boost; + s16 epp_powersave; + s16 epp_policy; + s16 epp_default; + s16 epp_cached; + u64 hwp_req_cached; + u64 hwp_cap_cached; + u64 last_io_update; + unsigned int capacity_perf; + unsigned int sched_flags; + u32 hwp_boost_min; + bool suspended; + struct delayed_work hwp_notify_work; +}; struct cpudl_item; @@ -24659,14 +24927,53 @@ struct cpufreq_cpuinfo { unsigned int transition_latency; }; +struct cpufreq_policy; + +struct cpufreq_policy_data; + +struct freq_attr; + +struct cpufreq_driver { + char name[16]; + u16 flags; + void *driver_data; + int (*init)(struct cpufreq_policy *); + int (*verify)(struct cpufreq_policy_data *); + int (*setpolicy)(struct cpufreq_policy *); + int (*target)(struct cpufreq_policy *, unsigned int, unsigned int); + int (*target_index)(struct cpufreq_policy *, unsigned int); + unsigned int (*fast_switch)(struct cpufreq_policy *, unsigned int); + void (*adjust_perf)(unsigned int, long unsigned int, long unsigned int, long unsigned int); + unsigned int (*get_intermediate)(struct cpufreq_policy *, unsigned int); + int (*target_intermediate)(struct cpufreq_policy *, unsigned int); + unsigned int (*get)(unsigned int); + void (*update_limits)(struct cpufreq_policy *); + int (*bios_limit)(int, unsigned int *); + int (*online)(struct cpufreq_policy *); + int (*offline)(struct cpufreq_policy *); + void (*exit)(struct cpufreq_policy *); + int (*suspend)(struct cpufreq_policy *); + int (*resume)(struct cpufreq_policy *); + void (*ready)(struct cpufreq_policy *); + struct freq_attr **attr; + bool boost_enabled; + int (*set_boost)(struct cpufreq_policy *, int); + void (*register_em)(struct cpufreq_policy *); +}; + +struct cpufreq_freqs { + struct cpufreq_policy *policy; + unsigned int old; + unsigned int new; + u8 flags; +}; + struct cpufreq_frequency_table { unsigned int flags; unsigned int driver_data; unsigned int frequency; }; -struct cpufreq_policy; - struct cpufreq_governor { char name[16]; int (*init)(struct cpufreq_policy *); @@ -24681,6 +24988,10 @@ struct cpufreq_governor { u8 flags; }; +typedef struct cpufreq_policy *class_cpufreq_policy_read_t; + +typedef struct cpufreq_policy *class_cpufreq_policy_write_t; + struct clk; struct plist_head { @@ -24705,8 +25016,6 @@ struct freq_constraints { struct cpufreq_stats; -struct thermal_cooling_device; - typedef int (*notifier_fn_t)(struct notifier_block *, long unsigned int, void *); struct notifier_block { @@ -24717,6 +25026,8 @@ struct notifier_block { struct freq_qos_request; +struct thermal_cooling_device; + struct cpufreq_policy { cpumask_var_t cpus; cpumask_var_t related_cpus; @@ -24765,10 +25076,30 @@ struct cpufreq_policy { struct notifier_block nb_max; }; +struct cpufreq_policy_data { + struct cpufreq_cpuinfo cpuinfo; + struct cpufreq_frequency_table *freq_table; + unsigned int cpu; + unsigned int min; + unsigned int max; +}; + struct cpuhp_cpu_state { enum cpuhp_state state; enum cpuhp_state target; enum cpuhp_state fail; + struct task_struct *thread; + bool should_run; + bool rollback; + bool single; + bool bringup; + struct hlist_node *node; + struct hlist_node *last; + enum cpuhp_state cb_state; + int result; + atomic_t ap_sync_state; + struct completion done_up; + struct completion done_down; }; struct cpuhp_step { @@ -25332,6 +25663,7 @@ union shortname_store { struct lockref { union { + __u64 lock_count; struct { spinlock_t lock; int count; @@ -26039,6 +26371,7 @@ struct dql { short unsigned int stall_thrs; long unsigned int history_head; long unsigned int history[4]; + long: 64; unsigned int limit; unsigned int num_completed; unsigned int prev_ovlimit; @@ -26209,6 +26542,9 @@ struct dst_ops { void (*confirm_neigh)(const struct dst_entry *, const void *); struct kmem_cache *kmem_cachep; struct percpu_counter pcpuc_entries; + long: 64; + long: 64; + long: 64; }; struct dump_stack_ctx { @@ -28822,12 +29158,20 @@ struct files_struct { wait_queue_head_t resize_wait; struct fdtable *fdt; struct fdtable fdtab; + 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; }; struct filter_head { @@ -29843,10 +30187,21 @@ struct fqdir { struct inet_frags *f; struct net *net; bool dead; + long: 64; + long: 64; struct rhashtable rhashtable; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t mem; struct work_struct destroy_work; struct llist_node free_list; + long: 64; + long: 64; }; struct frag_hdr { @@ -29934,6 +30289,12 @@ struct freelist_tid { }; }; +struct freq_attr { + struct attribute attr; + ssize_t (*show)(struct cpufreq_policy *, char *); + ssize_t (*store)(struct cpufreq_policy *, const char *, size_t); +}; + struct muldiv { u32 multiplier; u32 divider; @@ -30910,8 +31271,21 @@ struct pcpu_gen_cookie; struct gen_cookie { struct pcpu_gen_cookie *local; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic64_t forward_last; atomic64_t reverse_last; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct disk_events; @@ -31205,6 +31579,13 @@ struct ghcb { u32 ghcb_usage; }; +struct global_params { + bool no_turbo; + bool turbo_disabled; + int max_perf_pct; + int min_perf_pct; +}; + struct tc_stats { __u64 bytes; __u32 packets; @@ -31248,6 +31629,19 @@ struct gnet_stats_rate_est64 { __u64 pps; }; +struct gov_attr_set { + struct kobject kobj; + struct list_head policy_list; + struct mutex update_lock; + int usage_count; +}; + +struct governor_attr { + struct attribute attr; + ssize_t (*show)(struct gov_attr_set *, char *); + ssize_t (*store)(struct gov_attr_set *, const char *, size_t); +}; + struct gre_base_hdr { __be16 flags; __be16 protocol; @@ -31418,6 +31812,11 @@ struct hop_jumbo_hdr { __be32 jumbo_payload_len; }; +struct housekeeping { + struct cpumask cpumasks[3]; + long unsigned int flags; +}; + struct hpet_channel; struct hpet_base { @@ -31441,6 +31840,14 @@ struct hpet_channel { long: 64; }; +union hpet_lock { + struct { + arch_spinlock_t lock; + u32 value; + }; + u64 lockval; +}; + struct hprobe { enum hprobe_state state; int srcu_idx; @@ -31481,7 +31888,6 @@ struct hrtimer_cpu_base { ktime_t softirq_expires_next; struct hrtimer *softirq_next_timer; long: 64; - long: 64; struct hrtimer_clock_base clock_base[8]; call_single_data_t csd; long: 64; @@ -32642,6 +33048,7 @@ struct sock_common { struct hlist_nulls_node skc_nulls_node; }; short unsigned int skc_tx_queue_mapping; + short unsigned int skc_rx_queue_mapping; union { int skc_incoming_cpu; u32 skc_rcv_wnd; @@ -33099,6 +33506,12 @@ struct inet_hashinfo { unsigned int lhash2_mask; struct inet_listen_hashbucket *lhash2; bool pernet; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct inet_listen_hashbucket { @@ -33199,8 +33612,21 @@ struct inet_skb_parm { struct inet_timewait_death_row { refcount_t tw_refcount; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct inet_hashinfo *hashinfo; int sysctl_max_tw_buckets; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct inet_timewait_sock { @@ -34510,6 +34936,8 @@ struct irq_common_data { unsigned int state_use_accessors; void *handler_data; struct msi_desc *msi_desc; + cpumask_var_t affinity; + cpumask_var_t effective_affinity; }; struct irq_data { @@ -34545,6 +34973,9 @@ struct irq_desc { int threads_handled_last; raw_spinlock_t lock; struct cpumask *percpu_enabled; + const struct cpumask *affinity_hint; + struct irq_affinity_notify *affinity_notify; + cpumask_var_t pending_mask; long unsigned int threads_oneshot; atomic_t threads_active; wait_queue_head_t wait_for_threads; @@ -34555,6 +34986,13 @@ struct irq_desc { struct module *owner; const char *name; struct hlist_node resend_node; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; typedef struct irq_desc *vector_irq_t[256]; @@ -34663,6 +35101,12 @@ struct irq_fwspec_info { const struct cpumask *affinity; }; +struct irq_glue { + struct irq_affinity_notify notify; + struct cpu_rmap *rmap; + u16 index; +}; + struct irq_matrix { unsigned int matrix_bits; unsigned int alloc_start; @@ -34707,6 +35151,10 @@ struct irqaction { long unsigned int thread_mask; const char *name; struct proc_dir_entry *dir; + long: 64; + long: 64; + long: 64; + long: 64; }; struct irqchip_fwid { @@ -34789,6 +35237,8 @@ struct kcore_list { int type; }; +struct kcsan_scoped_access {}; + struct kern_ipc_perm { spinlock_t lock; bool deleted; @@ -34804,6 +35254,11 @@ struct kern_ipc_perm { struct rhash_head khtnode; struct callback_head rcu; refcount_t refcount; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct kernel_clone_args { @@ -34974,7 +35429,7 @@ struct kernfs_fs_context { }; struct kernfs_global_locks { - struct mutex open_file_mutex[2]; + struct mutex open_file_mutex[4]; }; struct simple_xattrs { @@ -35740,16 +36195,18 @@ struct kvm_arch { int cpu_dirty_log_size; }; +struct srcu_ctr; + +struct srcu_data; + +struct srcu_usage; + struct srcu_struct { - short int srcu_lock_nesting[2]; - u8 srcu_gp_running; - u8 srcu_gp_waiting; - long unsigned int srcu_idx; - long unsigned int srcu_idx_max; - struct swait_queue_head srcu_wq; - struct callback_head *srcu_cb_head; - struct callback_head **srcu_cb_tail; - struct work_struct srcu_work; + struct srcu_ctr *srcu_ctrp; + struct srcu_data *sda; + u8 srcu_reader_flavor; + struct lockdep_map dep_map; + struct srcu_usage *srcu_sup; }; struct kvm_io_bus; @@ -37177,6 +37634,9 @@ struct list_lru_one { struct list_lru_node { struct list_lru_one lru; atomic_long_t nr_items; + long: 64; + long: 64; + long: 64; }; struct listeners { @@ -37745,6 +38205,12 @@ struct mc146818_get_time_callback_param { unsigned char ctrl; }; +struct mcs_spinlock { + struct mcs_spinlock *next; + int locked; + int count; +}; + struct mdio_bus_stats { u64_stats_t transfers; u64_stats_t errors; @@ -38102,6 +38568,13 @@ struct mm_struct { struct { struct { atomic_t mm_count; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct maple_tree mm_mt; long unsigned int mmap_base; @@ -38115,6 +38588,8 @@ struct mm_struct { spinlock_t page_table_lock; struct rw_semaphore mmap_lock; struct list_head mmlist; + struct rcuwait vma_writer_wait; + seqcount_t mm_lock_seq; long unsigned int hiwater_rss; long unsigned int hiwater_vm; long unsigned int total_vm; @@ -38148,6 +38623,10 @@ struct mm_struct { atomic_t tlb_flush_batched; struct uprobes_state uprobes_state; struct work_struct async_put_work; + long: 64; + long: 64; + long: 64; + long: 64; }; char flexible_array[0]; }; @@ -38373,6 +38852,11 @@ struct mnt_ns_info { __u64 mnt_ns_id; }; +struct mnt_pcp { + int mnt_count; + int mnt_writers; +}; + struct mod_arch_specific { struct its_array its_pages; }; @@ -38454,7 +38938,6 @@ struct module { unsigned int num_exentries; struct exception_table_entry *extable; int (*init)(void); - long: 64; struct module_memory mem[7]; struct mod_arch_specific arch; long unsigned int taints; @@ -38463,10 +38946,14 @@ struct module { struct module_sect_attrs *sect_attrs; struct module_notes_attrs *notes_attrs; char *args; + void *percpu; + unsigned int percpu_size; void *noinstr_text_start; unsigned int noinstr_text_size; unsigned int num_tracepoints; tracepoint_ptr_t *tracepoints_ptrs; + unsigned int num_srcu_structs; + struct srcu_struct **srcu_struct_ptrs; unsigned int num_bpf_raw_events; struct bpf_raw_event_map *bpf_raw_events; unsigned int btf_data_size; @@ -38487,10 +38974,6 @@ struct module { unsigned int num_kprobe_blacklist; int num_static_call_sites; struct static_call_site *static_call_sites; - long: 64; - long: 64; - long: 64; - long: 64; }; struct module_attribute { @@ -38565,8 +39048,7 @@ struct mount { struct callback_head mnt_rcu; struct llist_node mnt_llist; }; - int mnt_count; - int mnt_writers; + struct mnt_pcp *mnt_pcp; struct list_head mnt_mounts; struct list_head mnt_child; struct mount *mnt_next_for_sb; @@ -38893,6 +39375,32 @@ struct msr_data { u64 data; }; +struct msr_info { + u32 msr_no; + struct msr reg; + struct msr *msrs; + int err; +}; + +struct msr_info_completion { + struct msr_info msr; + struct completion done; +}; + +struct msr_regs_info { + u32 *regs; + int err; +}; + +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 multi_symbols_sort { const char **funcs; u64 *cookies; @@ -38915,6 +39423,11 @@ struct mutex_waiter { struct ww_acquire_ctx *ww_ctx; }; +struct mwait_cpu_dead { + unsigned int control; + unsigned int status; +}; + struct name_snapshot { struct qstr name; union shortname_store inline_name; @@ -39238,6 +39751,7 @@ struct neighbour { u8 protocol; u32 flags; seqlock_t ha_lock; + long: 0; unsigned char ha[32]; struct hh_cache hh; int (*output)(struct neighbour *, struct sk_buff *); @@ -39610,12 +40124,38 @@ struct net { struct netns_bpf bpf; u64 net_cookie; struct sock *diag_nlsk; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct net_aligned_data { atomic64_t net_cookie; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t tcp_memory_allocated; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_long_t udp_memory_allocated; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct netdev_tc_txq { @@ -39732,6 +40272,8 @@ struct udp_tunnel_nic; struct net_device_ops; +struct xps_dev_maps; + struct pcpu_lstats; struct pcpu_sw_netstats; @@ -39786,6 +40328,7 @@ struct net_device { unsigned int mtu; short unsigned int needed_headroom; struct netdev_tc_txq tc_to_txq[16]; + struct xps_dev_maps *xps_maps[2]; struct bpf_mprog_entry *tcx_egress; __u8 __cacheline_group_end__net_device_read_tx[0]; __u8 __cacheline_group_begin__net_device_read_txrx[0]; @@ -39880,6 +40423,7 @@ struct net_device { unsigned int xdp_zc_max_segs; struct netdev_queue *ingress_queue; unsigned char broadcast[32]; + struct cpu_rmap *rx_cpu_rmap; struct hlist_node index_hlist; unsigned int num_tx_queues; struct Qdisc *qdisc; @@ -39890,7 +40434,7 @@ struct net_device { int watchdog_timeo; u32 proto_down_reason; struct list_head todo_list; - refcount_t dev_refcnt; + int *pcpu_refcnt; struct ref_tracker_dir refcnt_tracker; struct list_head link_watch_list; u8 reg_state; @@ -39950,6 +40494,7 @@ struct net_device { long: 64; long: 64; long: 64; + long: 64; u8 priv[0]; }; @@ -40017,6 +40562,7 @@ struct net_device_ops { int (*ndo_set_vf_guid)(struct net_device *, int, u64, int); int (*ndo_set_vf_rss_query_en)(struct net_device *, int, bool); int (*ndo_setup_tc)(struct net_device *, enum tc_setup_type, void *); + int (*ndo_rx_flow_steer)(struct net_device *, const struct sk_buff *, u16, u32); int (*ndo_add_slave)(struct net_device *, struct net_device *, struct netlink_ext_ack *); int (*ndo_del_slave)(struct net_device *, struct net_device *); struct net_device * (*ndo_get_xmit_slave)(struct net_device *, struct sk_buff *, bool); @@ -40193,6 +40739,8 @@ struct net_protocol { u32 secret; }; +struct rps_sock_flow_table; + struct skb_defer_node; struct net_hotdata { @@ -40210,6 +40758,8 @@ struct net_hotdata { struct kmem_cache *skbuff_cache; struct kmem_cache *skbuff_fclone_cache; struct kmem_cache *skb_small_head_cache; + struct rps_sock_flow_table *rps_sock_flow_table; + u32 rps_cpu_mask; struct skb_defer_node *skb_defer_nodes; int gro_normal_batch; int netdev_budget; @@ -40451,12 +41001,17 @@ struct netdev_queue { long unsigned int tx_maxrate; atomic_long_t trans_timeout; struct net_device *sb_dev; + long: 64; struct dql dql; spinlock_t _xmit_lock; int xmit_lock_owner; long unsigned int trans_start; long unsigned int state; struct napi_struct *napi; + long: 64; + long: 64; + long: 64; + long: 64; }; struct netdev_queue_attribute { @@ -40529,8 +41084,14 @@ struct pp_memory_provider_params { const struct memory_provider_ops *mp_ops; }; +struct rps_map; + +struct rps_dev_flow_table; + 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; const struct attribute_group **groups; struct net_device *dev; @@ -40538,8 +41099,6 @@ struct netdev_rx_queue { struct napi_struct *napi; struct pp_memory_provider_params mp_params; long: 64; - long: 64; - long: 64; }; struct netdev_stat_ops { @@ -41065,6 +41624,14 @@ struct node_barn { unsigned int nr_empty; }; +struct node_groups { + unsigned int id; + union { + unsigned int ngroups; + unsigned int ncpus; + }; +}; + struct node_notify { int nid; }; @@ -41143,7 +41710,21 @@ struct ntp_data { struct numa_drop_counters { atomic_t drops0; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; atomic_t drops1; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct objpool_head; @@ -41274,6 +41855,13 @@ struct open_how { __u64 resolve; }; +struct optimistic_spin_node { + struct optimistic_spin_node *next; + struct optimistic_spin_node *prev; + int locked; + int cpu; +}; + struct optimized_kprobe { struct kprobe kp; struct list_head list; @@ -41359,12 +41947,31 @@ struct pp_alloc_cache { struct ptr_ring { int producer; spinlock_t producer_lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; int consumer_head; int consumer_tail; spinlock_t consumer_lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; int size; int batch; void **queue; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct page_pool_params_slow { @@ -41397,7 +42004,19 @@ struct page_pool { long unsigned int defer_start; long unsigned int defer_warn; u32 xdp_mem_id; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct pp_alloc_cache alloc; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct ptr_ring ring; void *mp_priv; const struct memory_provider_ops *mp_ops; @@ -41816,6 +42435,7 @@ struct pcpu_chunk { int nr_populated; int nr_empty_pop_pages; long unsigned int populated[0]; + long: 64; }; struct pcpu_dstats { @@ -42002,9 +42622,16 @@ struct per_cpu_pages { u8 alloc_factor; short int free_count; struct list_head lists[12]; + long: 64; + long: 64; + long: 64; + long: 64; }; -struct per_cpu_zonestat {}; +struct per_cpu_zonestat { + s8 vm_stat_diff[10]; + s8 stat_threshold; +}; struct per_frame_masks { u64 may_read; @@ -42786,14 +43413,34 @@ struct zone { long unsigned int present_pages; const char *name; int initialized; + long: 64; + long: 64; + long: 64; + struct cacheline_padding _pad1_; struct free_area free_area[11]; long unsigned int flags; spinlock_t lock; struct llist_head trylock_free_pages; + long: 64; + long: 64; + struct cacheline_padding _pad2_; long unsigned int percpu_drift_mark; bool contiguous; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct cacheline_padding _pad3_; atomic_long_t vm_stat[10]; atomic_long_t vm_numa_event[0]; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct zoneref { @@ -42823,10 +43470,23 @@ struct pglist_data { enum zone_type kswapd_highest_zoneidx; atomic_t kswapd_failures; long unsigned int totalreserve_pages; + long: 64; + long: 64; + long: 64; + struct cacheline_padding _pad1_; struct lruvec __lruvec; long unsigned int flags; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + struct cacheline_padding _pad2_; struct per_cpu_nodestat *per_cpu_nodestats; atomic_long_t vm_stat[45]; + long: 64; + long: 64; }; struct phc_vclocks_reply_data { @@ -43804,6 +44464,18 @@ struct pseudo_fs_context { unsigned int s_d_flags; }; +struct pstate_funcs { + int (*get_max)(int); + int (*get_max_physical)(int); + int (*get_min)(int); + int (*get_turbo)(int); + int (*get_scaling)(void); + int (*get_cpu_scaling)(int); + int (*get_aperf_mperf_shift)(void); + u64 (*get_val)(struct cpudata *, int); + void (*get_vid)(struct cpudata *); +}; + struct pt_filter { long unsigned int msr_a; long unsigned int msr_b; @@ -44029,6 +44701,10 @@ struct qdisc_walker { int (*fn)(struct Qdisc *, long unsigned int, struct qdisc_walker *); }; +struct qnode { + struct mcs_spinlock mcs; +}; + struct queue_limits { blk_features_t features; blk_flags_t flags; @@ -44197,6 +44873,7 @@ struct raw6_sock { __u32 offset; struct icmp6_filter filter; __u32 ip6mr_table; + long: 0; struct numa_drop_counters drop_counters; struct ipv6_pinfo inet6; }; @@ -44218,6 +44895,13 @@ struct raw_frag_vec { struct raw_hashinfo { spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct hlist_head ht[256]; }; @@ -44225,6 +44909,11 @@ struct raw_sock { struct inet_sock inet; struct icmp_filter filter; u32 ipmr_table; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; struct numa_drop_counters drop_counters; }; @@ -44277,15 +44966,12 @@ struct rcu_cblist { long int len; }; -struct rcu_ctrlblk { - struct callback_head *rcucblist; - struct callback_head **donetail; - struct callback_head **curtail; - long unsigned int gp_seq; -}; - -struct rcu_gp_oldstate { - long unsigned int rgos_norm; +union rcu_noqs { + struct { + u8 norm; + u8 exp; + } b; + u16 s; }; struct rcu_segcblist { @@ -44297,6 +44983,147 @@ struct rcu_segcblist { u8 flags; }; +struct rcu_snap_record { + long unsigned int gp_seq; + u64 cputime_irq; + u64 cputime_softirq; + u64 cputime_system; + u64 nr_hardirqs; + unsigned int nr_softirqs; + long long unsigned int nr_csw; + long unsigned int jiffies; +}; + +struct rcu_node; + +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; + unsigned int gpwrap_count; + bool cpu_started; + struct rcu_node *mynode; + long unsigned int grpmask; + long unsigned int ticks_this_gp; + struct irq_work defer_qs_iw; + int 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 watching_snap; + 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_watching_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_state; + long unsigned int rcu_onl_gp_seq; + short int rcu_onl_gp_state; + long unsigned int last_fqs_resched; + long unsigned int last_sched_clock; + struct rcu_snap_record snap_record; + long int lazy_len; + int cpu; +}; + +struct rcu_exp_work { + long unsigned int rew_s; + struct kthread_work rew_work; +}; + +struct rcu_gp_oldstate { + long unsigned int rgos_norm; + long unsigned int rgos_exp; +}; + +struct rt_mutex_base { + raw_spinlock_t wait_lock; + struct rb_root_cached waiters; + struct task_struct *owner; +}; + +struct rt_mutex { + struct rt_mutex_base rtmutex; +}; + +struct 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; + struct kthread_worker *exp_kworker; + 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 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; + raw_spinlock_t fqslock; + long: 64; + long: 64; + long: 64; + long: 64; + 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; + raw_spinlock_t exp_poll_lock; + long unsigned int exp_seq_poll_rq; + struct work_struct exp_poll_wq; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; + union rcu_special { struct { u8 blocked; @@ -44307,6 +45134,78 @@ union rcu_special { u32 s; }; +struct sr_wait_node { + atomic_t inuse; + struct llist_node node; +}; + +struct rcu_state { + struct rcu_node node[1]; + struct rcu_node *level[2]; + int ncpus; + int n_online_cpus; + long: 64; + long: 64; + 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; + long unsigned int gp_seq_polled; + long unsigned int gp_seq_polled_snap; + long unsigned int gp_seq_polled_exp_snap; + 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; + int nr_fqs_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; + arch_spinlock_t ofl_lock; + struct llist_head srs_next; + struct llist_node *srs_wait_tail; + struct llist_node *srs_done_tail; + struct sr_wait_node srs_wait_nodes[5]; + struct work_struct srs_cleanup_work; + atomic_t srs_cleanups_pending; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; +}; + struct rcu_synchronize { struct callback_head head; struct completion completion; @@ -44841,11 +45740,47 @@ struct root_domain { struct dl_bw dl_bw; struct cpudl cpudl; u64 visit_cookie; + 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; struct perf_domain *pd; }; +struct rps_dev_flow { + u16 cpu; + u16 filter; + unsigned int last_qtail; + u32 hash; +}; + +struct rps_dev_flow_table { + u8 log; + struct callback_head rcu; + struct rps_dev_flow flows[0]; +}; + +struct rps_map { + unsigned int len; + struct callback_head rcu; + u16 cpus[0]; +}; + +struct rps_sock_flow_table { + struct callback_head rcu; + u32 mask; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + u32 ents[0]; +}; + struct rt_prio_array { long unsigned int bitmap[2]; struct list_head queue[100]; @@ -44952,6 +45887,7 @@ struct rq { u64 idle_stamp; u64 avg_idle; u64 max_idle_balance_cost; + struct rcuwait hotplug_wait; long unsigned int calc_load_update; long int calc_load_active; unsigned int nr_pinned; @@ -44960,7 +45896,6 @@ struct rq { cpumask_var_t scratch_mask; long: 64; long: 64; - long: 64; }; struct rqspinlock_held { @@ -45781,6 +46716,15 @@ struct sd_flag_debug { char *name; }; +struct sd_flow_limit { + struct callback_head rcu; + unsigned int count; + u8 log_buckets; + unsigned int history_head; + u16 history[128]; + u8 buckets[0]; +}; + struct sg_lb_stats { long unsigned int avg_load; long unsigned int group_load; @@ -46391,6 +47335,12 @@ struct sk_skb_cb { struct skb_defer_node { struct llist_head defer_list; atomic_long_t defer_count; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct skb_frag { @@ -46523,6 +47473,25 @@ struct smc_hashinfo { struct hlist_head ht; }; +struct smp_alt_module { + struct module *mod; + char *name; + const s32 *locks; + const s32 *locks_end; + u8 *text; + u8 *text_end; + struct list_head next; +}; + +struct smp_call_on_cpu_struct { + struct work_struct work; + struct completion done; + int (*func)(void *); + void *data; + int ret; + int cpu; +}; + struct smp_hotplug_thread { struct task_struct **store; struct list_head list; @@ -46537,6 +47506,24 @@ struct smp_hotplug_thread { const char *thread_comm; }; +struct smp_ops { + void (*smp_prepare_boot_cpu)(void); + void (*smp_prepare_cpus)(unsigned int); + void (*smp_cpus_done)(unsigned int); + void (*stop_other_cpus)(int); + void (*crash_stop_other_cpus)(void); + void (*smp_send_reschedule)(int); + void (*cleanup_dead_cpu)(unsigned int); + void (*poll_sync_state)(void); + int (*kick_ap_alive)(unsigned int, struct task_struct *); + int (*cpu_disable)(void); + void (*cpu_die)(unsigned int); + void (*play_dead)(void); + void (*stop_this_cpu)(void); + void (*send_call_func_ipi)(const struct cpumask *); + void (*send_call_func_single_ipi)(int); +}; + struct smp_text_poke_loc { s32 rel_addr; s32 disp; @@ -46690,6 +47677,7 @@ struct socket_wq { struct fasync_struct *fasync_list; long unsigned int flags; struct callback_head rcu; + long: 64; }; struct socket { @@ -46699,6 +47687,9 @@ struct socket { struct file *file; struct sock *sk; const struct proto_ops *ops; + long: 64; + long: 64; + long: 64; struct socket_wq wq; }; @@ -46709,6 +47700,8 @@ struct socket__safe_trusted_or_null { struct socket_alloc { struct socket socket; struct inode vfs_inode; + long: 64; + long: 64; }; struct sockmap_link { @@ -46726,19 +47719,43 @@ struct softnet_data { local_lock_t process_queue_bh_lock; unsigned int processed; unsigned int time_squeeze; + struct softnet_data *rps_ipi_list; unsigned int received_rps; bool in_net_rx_action; bool in_napi_threaded_poll; + struct sd_flow_limit *flow_limit; struct Qdisc *output_queue; struct Qdisc **output_queue_tailp; struct sk_buff *completion_queue; struct netdev_xmit xmit; + long: 64; + long: 64; + long: 64; + unsigned int input_queue_head; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + call_single_data_t csd; + struct softnet_data *rps_ipi_next; + unsigned int cpu; + long: 64; + long: 64; + long int pad[3]; + unsigned int input_queue_tail; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; + long: 64; + long: 64; + long: 64; struct numa_drop_counters drop_counters; int defer_ipi_scheduled; long: 64; long: 64; + long: 64; call_single_data_t defer_csd; }; @@ -46796,7 +47813,73 @@ struct sr6_tlv { __u8 data[0]; }; -struct srcu_usage {}; +struct srcu_ctr { + atomic_long_t srcu_locks; + atomic_long_t srcu_unlocks; +}; + +struct srcu_node; + +struct srcu_data { + struct srcu_ctr srcu_ctrs[2]; + int srcu_reader_flavor; + long: 64; + long: 64; + long: 64; + spinlock_t lock; + struct rcu_segcblist srcu_cblist; + long unsigned int srcu_gp_seq_needed; + long unsigned int srcu_gp_seq_needed_exp; + bool srcu_cblist_invoking; + struct timer_list delay_work; + struct work_struct work; + struct callback_head srcu_barrier_head; + struct callback_head srcu_ec_head; + int srcu_ec_state; + struct srcu_node *mynode; + long unsigned int grpmask; + int cpu; + struct srcu_struct *ssp; + long: 64; + long: 64; + long: 64; +}; + +struct srcu_node { + spinlock_t lock; + long unsigned int srcu_have_cbs[4]; + long unsigned int srcu_data_have_cbs[4]; + long unsigned int srcu_gp_seq_needed_exp; + struct srcu_node *srcu_parent; + int grplo; + int grphi; +}; + +struct srcu_usage { + struct srcu_node *node; + struct srcu_node *level[2]; + int srcu_size_state; + struct mutex srcu_cb_mutex; + spinlock_t lock; + struct mutex srcu_gp_mutex; + long unsigned int srcu_gp_seq; + long unsigned int srcu_gp_seq_needed; + long unsigned int srcu_gp_seq_needed_exp; + long unsigned int srcu_gp_start; + long unsigned int srcu_last_gp_end; + long unsigned int srcu_size_jiffies; + long unsigned int srcu_n_lock_retries; + long unsigned int srcu_n_exp_nodelay; + bool sda_is_static; + long unsigned int srcu_barrier_seq; + struct mutex srcu_barrier_mutex; + struct completion srcu_barrier_completion; + atomic_t srcu_barrier_cpu_cnt; + long unsigned int reschedule_jiffies; + long unsigned int reschedule_count; + struct delayed_work work; + struct srcu_struct *srcu_ssp; +}; struct srcu_notifier_head { struct mutex mutex; @@ -46812,6 +47895,13 @@ struct ss_tmp { spinlock_t *lock_irqsave; }; +struct ssb_state { + struct ssb_state *shared_state; + raw_spinlock_t lock; + unsigned int disable_state; + long unsigned int local_state; +}; + struct stack_entry { struct trace_entry ent; int size; @@ -47110,6 +48200,45 @@ struct subsys_private { struct lock_class_key lock_key; }; +struct sugov_policy; + +struct sugov_cpu { + struct update_util_data update_util; + struct sugov_policy *sg_policy; + unsigned int cpu; + bool iowait_boost_pending; + unsigned int iowait_boost; + u64 last_update; + long unsigned int util; + long unsigned int bw_min; +}; + +struct sugov_tunables; + +struct sugov_policy { + struct cpufreq_policy *policy; + struct sugov_tunables *tunables; + struct list_head tunables_hook; + raw_spinlock_t update_lock; + u64 last_freq_update_time; + s64 freq_update_delay_ns; + unsigned int next_freq; + unsigned int cached_raw_freq; + struct irq_work irq_work; + struct kthread_work work; + struct mutex work_lock; + struct kthread_worker worker; + struct task_struct *thread; + bool work_in_progress; + bool limits_changed; + bool need_freq_update; +}; + +struct sugov_tunables { + struct gov_attr_set attr_set; + unsigned int rate_limit_us; +}; + typedef struct super_block *class_super_write_t; struct mtd_info; @@ -47170,11 +48299,14 @@ struct super_block { struct work_struct destroy_work; struct mutex s_sync_lock; int s_stack_depth; + long: 64; + long: 64; spinlock_t s_inode_list_lock; struct list_head s_inodes; spinlock_t s_inode_wblist_lock; struct list_head s_inodes_wb; long int s_min_writeback_pages; + long: 64; }; struct super_operations { @@ -47412,6 +48544,13 @@ struct sysinfo { char _f[0]; }; +struct sysrq_key_op { + void (* const handler)(u8); + const char * const help_msg; + const char * const action_msg; + const int enable_mask; +}; + struct system_counterval_t { u64 cycles; enum clocksource_ids cs_id; @@ -47460,6 +48599,7 @@ struct thread_info { long unsigned int flags; long unsigned int syscall_work; u32 status; + u32 cpu; }; struct wake_q_node { @@ -47685,6 +48825,11 @@ struct task_struct { struct thread_struct thread; long: 64; long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct task_struct__safe_rcu { @@ -47961,6 +49106,11 @@ struct tcp_sock { struct rb_root out_of_order_queue; __u8 __cacheline_group_end__tcp_sock_read_rx[0]; long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; __u8 __cacheline_group_begin__tcp_sock_write_tx[0]; u32 segs_out; u32 data_segs_out; @@ -48539,6 +49689,32 @@ union text_poke_insn { } __attribute__((packed)); }; +struct thermal_cooling_device_ops; + +struct thermal_cooling_device { + int id; + const char *type; + long unsigned int max_state; + struct device device; + struct device_node *np; + void *devdata; + void *stats; + const struct thermal_cooling_device_ops *ops; + bool updated; + struct mutex lock; + struct list_head thermal_instances; + struct list_head node; +}; + +struct thermal_cooling_device_ops { + int (*get_max_state)(struct thermal_cooling_device *, long unsigned int *); + int (*get_cur_state)(struct thermal_cooling_device *, long unsigned int *); + int (*set_cur_state)(struct thermal_cooling_device *, long unsigned int); + int (*get_requested_power)(struct thermal_cooling_device *, u32 *); + int (*state2power)(struct thermal_cooling_device *, long unsigned int, u32 *); + int (*power2state)(struct thermal_cooling_device *, u32, long unsigned int *); +}; + struct thread_group_cputimer { struct task_cputime_atomic cputime_atomic; }; @@ -48634,7 +49810,6 @@ struct timer_base { struct hlist_head vectors[576]; long: 64; long: 64; - long: 64; }; struct timer_rand_state { @@ -48670,7 +49845,6 @@ struct tk_data { struct timekeeper timekeeper; struct timekeeper shadow_timekeeper; raw_spinlock_t lock; - long: 64; }; struct tk_fast { @@ -49208,6 +50382,10 @@ struct trace_event_data_offsets_cpuhp_exit {}; struct trace_event_data_offsets_cpuhp_multi_enter {}; +struct trace_event_data_offsets_csd_function {}; + +struct trace_event_data_offsets_csd_queue_cpu {}; + struct trace_event_data_offsets_ctime {}; struct trace_event_data_offsets_ctime_ns_xchg {}; @@ -49609,6 +50787,8 @@ struct trace_event_data_offsets_qdisc_reset { const void *kind_ptr_; }; +struct trace_event_data_offsets_rcu_stall_warning {}; + struct trace_event_data_offsets_rcu_utilization {}; struct trace_event_data_offsets_reclaim_retry_zone {}; @@ -50044,6 +51224,22 @@ struct trace_event_raw_cpuhp_multi_enter { char __data[0]; }; +struct trace_event_raw_csd_function { + struct trace_entry ent; + void *func; + void *csd; + char __data[0]; +}; + +struct trace_event_raw_csd_queue_cpu { + struct trace_entry ent; + unsigned int cpu; + void *callsite; + void *func; + void *csd; + char __data[0]; +}; + struct trace_event_raw_ctime { struct trace_entry ent; dev_t dev; @@ -51352,6 +52548,13 @@ struct trace_event_raw_qdisc_reset { char __data[0]; }; +struct trace_event_raw_rcu_stall_warning { + struct trace_entry ent; + const char *rcuname; + const char *msg; + char __data[0]; +}; + struct trace_event_raw_rcu_utilization { struct trace_entry ent; const char *s; @@ -52914,11 +54117,14 @@ struct udp_sock { struct sk_buff * (*gro_receive)(struct sock *, struct list_head *, struct sk_buff *); int (*gro_complete)(struct sock *, struct sk_buff *, int); struct udp_prod_queue *udp_prod_queue; + long: 64; + long: 64; struct sk_buff_head reader_queue; int forward_deficit; int forward_threshold; bool peeking_with_offset; struct hlist_node tunnel_list; + long: 64; struct numa_drop_counters drop_counters; }; @@ -52956,6 +54162,12 @@ struct udp_mib { struct udp_prod_queue { struct llist_head ll_root; atomic_t rmem_alloc; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; + long: 64; }; struct udp_skb_cb { @@ -53051,6 +54263,10 @@ struct unix_sock { struct sock *listener; struct unix_vertex *vertex; spinlock_t lock; + long: 64; + long: 64; + long: 64; + long: 64; struct socket_wq peer_wq; wait_queue_entry_t peer_wake; struct scm_stat scm_stat; @@ -53408,6 +54624,11 @@ struct vdso_time_data { long: 64; }; +struct vector_cleanup { + struct hlist_head head; + struct timer_list timer; +}; + struct vfree_deferred { struct llist_head list; struct work_struct wq; @@ -53484,18 +54705,25 @@ struct vm_area_struct { const vm_flags_t vm_flags; vma_flags_t flags; }; + unsigned int vm_lock_seq; 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; void *vm_private_data; + long: 64; + long: 64; + long: 64; + refcount_t vm_refcnt; struct { struct rb_node rb; long unsigned int rb_subtree_last; } shared; struct vm_userfaultfd_ctx vm_userfaultfd_ctx; struct pfnmap_track_ctx *pfnmap_track_ctx; + long: 64; + long: 64; }; struct vm_area_struct__safe_trusted_or_null { @@ -53799,6 +55027,13 @@ struct word_at_a_time { const long unsigned int high_bits; }; +struct work_for_cpu { + struct work_struct work; + long int (*fn)(void *); + void *arg; + long int ret; +}; + struct work_offq_data { u32 pool_id; u32 disable; @@ -53893,7 +55128,6 @@ struct workqueue_struct { struct callback_head rcu; long: 64; long: 64; - long: 64; unsigned int flags; struct pool_workqueue **cpu_pwq; struct wq_node_nr_active *node_nr_active[0]; @@ -54603,6 +55837,9 @@ struct xdp_umem; struct xdp_sock { struct sock sk; + long: 64; + long: 64; + long: 64; struct xsk_queue *rx; struct net_device *dev; struct xdp_umem *umem; @@ -54616,6 +55853,7 @@ struct xdp_sock { XSK_BOUND = 1, XSK_UNBOUND = 2, } state; + long: 64; struct xsk_queue *tx; struct list_head tx_list; u32 tx_budget_spent; @@ -54942,6 +56180,22 @@ struct xol_area { long unsigned int vaddr; }; +struct xps_map; + +struct xps_dev_maps { + struct callback_head rcu; + unsigned int nr_ids; + s16 num_tc; + struct xps_map *attr_map[0]; +}; + +struct xps_map { + unsigned int len; + unsigned int alloc_len; + struct callback_head rcu; + u16 queues[0]; +}; + struct xsk_buff_pool { struct device *dev; struct net_device *netdev; @@ -54979,6 +56233,8 @@ struct xsk_buff_pool { spinlock_t cq_prod_lock; spinlock_t cq_cached_prod_lock; struct xdp_buff_xsk *free_heads[0]; + long: 64; + long: 64; }; struct xsk_tx_metadata_ops { @@ -55551,6 +56807,14 @@ typedef void (*btf_trace_bpf_trigger_tp)(void *, int); typedef void (*btf_trace_bpf_xdp_link_attach_failed)(void *, const char *); +typedef void (*btf_trace_call_function_entry)(void *, int); + +typedef void (*btf_trace_call_function_exit)(void *, int); + +typedef void (*btf_trace_call_function_single_entry)(void *, int); + +typedef void (*btf_trace_call_function_single_exit)(void *, int); + typedef void (*btf_trace_cap_capable)(void *, const struct cred *, struct user_namespace *, const struct user_namespace *, int, int); typedef void (*btf_trace_console)(void *, const char *, size_t); @@ -55575,6 +56839,12 @@ typedef void (*btf_trace_cpuhp_exit)(void *, unsigned int, int, int, int); typedef void (*btf_trace_cpuhp_multi_enter)(void *, unsigned int, int, int, int (*)(unsigned int, struct hlist_node *), struct hlist_node *); +typedef void (*btf_trace_csd_function_entry)(void *, smp_call_func_t, call_single_data_t *); + +typedef void (*btf_trace_csd_function_exit)(void *, smp_call_func_t, call_single_data_t *); + +typedef void (*btf_trace_csd_queue_cpu)(void *, const unsigned int, long unsigned int, smp_call_func_t, call_single_data_t *); + typedef void (*btf_trace_ctime_ns_xchg)(void *, struct inode *, u32, u32, u32); typedef void (*btf_trace_ctime_xchg_skip)(void *, struct inode *, struct timespec64 *); @@ -55943,6 +57213,8 @@ typedef void (*btf_trace_qdisc_enqueue)(void *, struct Qdisc *, const struct net typedef void (*btf_trace_qdisc_reset)(void *, struct Qdisc *); +typedef void (*btf_trace_rcu_stall_warning)(void *, const char *, const char *); + typedef void (*btf_trace_rcu_utilization)(void *, const char *); typedef void (*btf_trace_rdpmc)(void *, unsigned int, u64, int); @@ -55953,6 +57225,10 @@ typedef void (*btf_trace_reclaim_retry_zone)(void *, struct zoneref *, int, long typedef void (*btf_trace_remove_migration_pte)(void *, long unsigned int, long unsigned int, int); +typedef void (*btf_trace_reschedule_entry)(void *, int); + +typedef void (*btf_trace_reschedule_exit)(void *, int); + typedef void (*btf_trace_rss_stat)(void *, struct mm_struct *, int); typedef void (*btf_trace_sb_clear_inode_writeback)(void *, struct inode *); @@ -56307,6 +57583,10 @@ typedef int (*parse_pred_fn)(const char *, void *, int, struct filter_parse_erro typedef int (*parse_unknown_fn)(char *, char *, const char *, void *); +typedef int pcpu_fc_cpu_distance_fn_t(unsigned int, unsigned int); + +typedef int pcpu_fc_cpu_to_node_fn_t(int); + typedef void perf_iterate_f(struct perf_event *, void *); typedef int perf_snapshot_branch_stack_t(struct perf_branch_entry *, unsigned int); diff --git a/kconfigs/config.common b/kconfigs/config.common index ece21f1..b48cdca 100644 --- a/kconfigs/config.common +++ b/kconfigs/config.common @@ -19,6 +19,7 @@ CONFIG_MULTIUSER=y CONFIG_NET=y CONFIG_PERF_EVENTS=y CONFIG_SECURITY=y +CONFIG_SMP=y CONFIG_SYSFS=y CONFIG_TRACEPOINTS=y CONFIG_TRACING=y