From 71d84b1ac1c1268cc1e6eaf7d7dfd2fe78f1675e Mon Sep 17 00:00:00 2001 From: Jiaolong He Date: Tue, 23 Jul 2024 17:08:42 +0800 Subject: [PATCH] chushi: kabi: add reserved fields in core structures. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在关键数据结构中增加保留字段,以保障内核二进制接口兼容, 同时这些字段也可用于紧急修复. the following fields involved: PCI: struct pci_sriov struct pci_dev struct pci_bus struct pci_driver block: struct bio_integrity_payload struct bio_set struct bdi_writeback struct backing_dev_info struct blkcg struct blkcg_policy struct queue_limits struct request_queue struct block_device_operations struct blk_mq_hw_ctx struct blk_mq_tag_set struct blk_mq_queue_data struct blk_mq_ops struct block_device struct bio struct bsg_job struct hd_struct struct gendisk cgroup: struct cgroup_subsys_state struct css_set struct cgroup_root struct cgroup_subsys io-sched: struct elevator_mq_ops struct elevator_type fs: struct address_space struct readahead_control struct writeback_control firmware: struct fwnode_handle timer: struct hrtimer struct timer_list irq: struct irq_desc struct irq_domain struct irq_data struct irq_work mm: struct mempolicy struct mempool_s struct vmem_altmap struct dev_pagemap_ops struct dev_pagemap struct vm_fault struct vm_operations_struct struct vm_area_struct struct mm_struct struct zone struct pglist_data struct shrinker struct swap_info_struct net: struct net_device_ops struct xt_target struct sk_buff struct dst_entry struct dst_ops struct fib_rule struct sock sched: struct sched_info struct load_weight struct sched_avg struct sched_statistics struct sched_entity struct sched_rt_entity struct sched_dl_entity struct task_struct struct sched_domain_shared struct sched_domain struct user_struct struct cpuacct struct cpudl struct numa_group struct rt_bandwidth struct dl_bandwidth struct dl_bw struct cfs_bandwidth struct task_group struct cfs_rq struct rt_rq struct dl_rq struct root_domain struct rq struct sched_group_capacity struct sched_group struct sched_class signal: struct signal_struct scsi: struct scsi_disk struct scsi_cmnd struct scsi_device struct scsi_target struct scsi_host_template struct Scsi_Host Signed-off-by: hejiaolong --- drivers/pci/pci.h | 9 +++ drivers/scsi/sd.h | 5 ++ include/linux/backing-dev-defs.h | 7 ++ include/linux/bio.h | 9 +++ include/linux/blk-mq.h | 29 ++++++++ include/linux/blk_types.h | 4 ++ include/linux/blkdev.h | 18 +++++ include/linux/bsg-lib.h | 3 + include/linux/cgroup-defs.h | 12 ++++ include/linux/fs.h | 4 ++ include/linux/fwnode.h | 2 + include/linux/hrtimer.h | 2 + include/linux/irq.h | 4 ++ include/linux/irq_work.h | 5 ++ include/linux/irqdesc.h | 4 ++ include/linux/irqdomain.h | 5 ++ include/linux/mempolicy.h | 3 + include/linux/mempool.h | 3 + include/linux/memremap.h | 8 +++ include/linux/mm.h | 7 ++ include/linux/mm_types.h | 10 +++ include/linux/mmzone.h | 6 ++ include/linux/netdevice.h | 3 + include/linux/netfilter/x_tables.h | 3 + include/linux/pagemap.h | 3 + include/linux/pci.h | 35 ++++++++++ include/linux/sched.h | 69 +++++++++++++++++++ include/linux/sched/signal.h | 4 ++ include/linux/sched/topology.h | 16 +++++ include/linux/sched/user.h | 3 + include/linux/shrinker.h | 2 + include/linux/skbuff.h | 3 + include/linux/swap.h | 3 + include/linux/timer.h | 2 + include/linux/writeback.h | 3 + include/net/dst.h | 2 + include/net/dst_ops.h | 3 + include/net/fib_rules.h | 2 + include/net/sock.h | 3 + include/scsi/scsi_cmnd.h | 5 ++ include/scsi/scsi_device.h | 14 ++++ include/scsi/scsi_host.h | 12 ++++ kernel/sched/cpuacct.c | 5 ++ kernel/sched/cpudeadline.h | 5 ++ kernel/sched/fair.c | 6 ++ kernel/sched/sched.h | 107 +++++++++++++++++++++++++++++ 46 files changed, 472 insertions(+) diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 2cc032e8cbb9..a1d24c21eeb8 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -310,6 +310,15 @@ struct pci_sriov { u16 subsystem_device; /* VF subsystem device */ resource_size_t barsz[PCI_SRIOV_NUM_BARS]; /* VF BAR size */ bool drivers_autoprobe; /* Auto probing of VFs by driver */ + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; #ifdef CONFIG_PCI_DOE diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h index 409dda5350d1..67355e21af97 100644 --- a/drivers/scsi/sd.h +++ b/drivers/scsi/sd.h @@ -151,6 +151,11 @@ struct scsi_disk { unsigned urswrz : 1; unsigned security : 1; unsigned ignore_medium_access_errors : 1; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; #define to_scsi_disk(obj) container_of(obj, struct scsi_disk, disk_dev) diff --git a/include/linux/backing-dev-defs.h b/include/linux/backing-dev-defs.h index 2ad261082bba..bf759a41a977 100644 --- a/include/linux/backing-dev-defs.h +++ b/include/linux/backing-dev-defs.h @@ -158,6 +158,10 @@ struct bdi_writeback { struct rcu_head rcu; }; #endif + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; struct backing_dev_info { @@ -201,6 +205,9 @@ struct backing_dev_info { #ifdef CONFIG_DEBUG_FS struct dentry *debug_dir; #endif + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; struct wb_lock_cookie { diff --git a/include/linux/bio.h b/include/linux/bio.h index 0286bada25ce..9fdb89881f65 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -346,6 +346,10 @@ struct bio_integrity_payload { struct work_struct bip_work; /* I/O completion */ struct bio_vec *bip_vec; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + struct bio_vec bip_inline_vecs[];/* embedded bvec array */ }; @@ -705,6 +709,11 @@ struct bio_set { * Hot un-plug notifier for the per-cpu cache, if used */ struct hlist_node cpuhp_dead; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; static inline bool bioset_initialized(struct bio_set *bs) diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 958ed7e89b30..13e160b3bf4a 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h @@ -304,6 +304,15 @@ struct blk_mq_hw_ctx { unsigned long state; } ____cacheline_aligned_in_smp; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; + /** * @run_work: Used for scheduling a hardware queue run at a later time. */ @@ -515,6 +524,15 @@ struct blk_mq_tag_set { struct mutex tag_list_lock; struct list_head tag_list; struct srcu_struct *srcu; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; /** @@ -526,6 +544,8 @@ struct blk_mq_tag_set { struct blk_mq_queue_data { struct request *rq; bool last; + + unsigned long chushi_reserve1; }; typedef bool (busy_tag_iter_fn)(struct request *, void *); @@ -645,6 +665,15 @@ struct blk_mq_ops { */ void (*show_rq)(struct seq_file *m, struct request *rq); #endif + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; enum { diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 92c8997b1938..a15dc44e5ff8 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -75,6 +75,8 @@ struct block_device { * path */ struct device bd_device; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; } __randomize_layout; #define bdev_whole(_bdev) \ @@ -316,6 +318,8 @@ struct bio { struct bio_set *bi_pool; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; /* * We can inline a number of vecs at the end of the bio, to avoid * double allocations for a small number of bio_vecs. This member diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index a7b65d4ab616..efe4168d09e3 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -337,6 +337,15 @@ struct queue_limits { * due to possible offsets. */ unsigned int dma_alignment; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; typedef int (*report_zones_cb)(struct blk_zone *zone, unsigned int idx, @@ -536,6 +545,10 @@ struct request_queue { struct mutex debugfs_mutex; bool mq_sysfs_init_done; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; /* Keep blk_queue_flag_name[] in sync with the definitions below */ @@ -1418,6 +1431,11 @@ struct block_device_operations { * driver. */ int (*alternative_gpt_sector)(struct gendisk *disk, sector_t *sector); + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; #ifdef CONFIG_COMPAT diff --git a/include/linux/bsg-lib.h b/include/linux/bsg-lib.h index 9e97ced2896d..5a9c52d65e13 100644 --- a/include/linux/bsg-lib.h +++ b/include/linux/bsg-lib.h @@ -60,6 +60,9 @@ struct bsg_job { struct bio *bidi_bio; void *dd_data; /* Used for driver-specific storage */ + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; void bsg_job_done(struct bsg_job *job, int result, diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index 265da00a1a8b..1d00fbc7260b 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h @@ -195,6 +195,9 @@ struct cgroup_subsys_state { struct work_struct destroy_work; struct rcu_work destroy_rwork; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + /* * PI: the parent css. Placed here for cache proximity to following * fields of the containing structure. @@ -297,6 +300,9 @@ struct css_set { /* For RCU-protected deletion */ struct rcu_head rcu_head; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; struct cgroup_base_stat { @@ -562,6 +568,9 @@ struct cgroup_root { /* Hierarchy-specific flags */ unsigned int flags; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + /* The path to use for release notifications. */ char release_agent_path[PATH_MAX]; @@ -690,6 +699,9 @@ struct cgroup_subsys { void (*release)(struct task_struct *task); void (*bind)(struct cgroup_subsys_state *root_css); + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + bool early_init:1; /* diff --git a/include/linux/fs.h b/include/linux/fs.h index ee5efad0d780..637ed55ec0e0 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -489,6 +489,10 @@ struct address_space { spinlock_t private_lock; struct list_head private_list; void *private_data; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; } __attribute__((aligned(sizeof(long)))) __randomize_layout; /* * On most architectures that alignment is already the case; but diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h index 5700451b300f..c926d9fd5eb5 100644 --- a/include/linux/fwnode.h +++ b/include/linux/fwnode.h @@ -45,6 +45,8 @@ struct fwnode_handle { struct list_head suppliers; struct list_head consumers; u8 flags; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; /* diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index 254d4a898179..70848af84175 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h @@ -124,6 +124,8 @@ struct hrtimer { u8 is_rel; u8 is_soft; u8 is_hard; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; /** diff --git a/include/linux/irq.h b/include/linux/irq.h index 90081afa10ce..87b38f3afde1 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -187,6 +187,10 @@ struct irq_data { struct irq_data *parent_data; #endif void *chip_data; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; /* diff --git a/include/linux/irq_work.h b/include/linux/irq_work.h index 136f2980cba3..c6b09f203738 100644 --- a/include/linux/irq_work.h +++ b/include/linux/irq_work.h @@ -18,6 +18,11 @@ struct irq_work { struct __call_single_node node; void (*func)(struct irq_work *); struct rcuwait irqwait; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; #define __IRQ_WORK_INIT(_func, _flags) (struct irq_work){ \ diff --git a/include/linux/irqdesc.h b/include/linux/irqdesc.h index d9451d456a73..7bcc3de8c1c5 100644 --- a/include/linux/irqdesc.h +++ b/include/linux/irqdesc.h @@ -105,6 +105,10 @@ struct irq_desc { #ifdef CONFIG_HARDIRQS_SW_RESEND struct hlist_node resend_node; #endif + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; } ____cacheline_internodealigned_in_smp; #ifdef CONFIG_SPARSE_IRQ diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index 51c254b7fec2..a5a3cf6bc5aa 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h @@ -170,6 +170,11 @@ struct irq_domain { const struct msi_parent_ops *msi_parent_ops; #endif + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + /* reverse map data. The linear map gets appended to the irq_domain */ irq_hw_number_t hwirq_max; unsigned int revmap_size; diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h index d232de7cdc56..f5139e298df6 100644 --- a/include/linux/mempolicy.h +++ b/include/linux/mempolicy.h @@ -52,6 +52,9 @@ struct mempolicy { nodemask_t cpuset_mems_allowed; /* relative to these nodes */ nodemask_t user_nodemask; /* nodemask passed by user */ } w; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; }; /* diff --git a/include/linux/mempool.h b/include/linux/mempool.h index 4aae6c06c5f2..bb3e15627b96 100644 --- a/include/linux/mempool.h +++ b/include/linux/mempool.h @@ -23,6 +23,9 @@ typedef struct mempool_s { mempool_alloc_t *alloc; mempool_free_t *free; wait_queue_head_t wait; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; } mempool_t; static inline bool mempool_initialized(mempool_t *pool) diff --git a/include/linux/memremap.h b/include/linux/memremap.h index 1314d9c5f05b..5b1d61fa1d49 100644 --- a/include/linux/memremap.h +++ b/include/linux/memremap.h @@ -25,6 +25,8 @@ struct vmem_altmap { unsigned long free; unsigned long align; unsigned long alloc; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; /* @@ -99,6 +101,8 @@ struct dev_pagemap_ops { */ int (*memory_failure)(struct dev_pagemap *pgmap, unsigned long pfn, unsigned long nr_pages, int mf_flags); + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; #define PGMAP_ALTMAP_VALID (1 << 0) @@ -133,6 +137,10 @@ struct dev_pagemap { const struct dev_pagemap_ops *ops; void *owner; int nr_range; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; union { struct range range; DECLARE_FLEX_ARRAY(struct range, ranges); diff --git a/include/linux/mm.h b/include/linux/mm.h index 3d617d0d6967..ddd3ffeafc20 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -549,6 +549,9 @@ struct vm_fault { * page table to avoid allocation from * atomic context. */ + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + }; /* @@ -628,6 +631,10 @@ struct vm_operations_struct { */ struct page *(*find_special_page)(struct vm_area_struct *vma, unsigned long addr); + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; #ifdef CONFIG_NUMA_BALANCING diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index ba25777ec0a7..b92cd3325a60 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -660,6 +660,11 @@ struct vm_area_struct { struct vma_numab_state *numab_state; /* NUMA Balancing state */ #endif struct vm_userfaultfd_ctx vm_userfaultfd_ctx; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; } __randomize_layout; #ifdef CONFIG_SCHED_MM_CID @@ -919,6 +924,11 @@ struct mm_struct { #endif /* CONFIG_LRU_GEN */ } __randomize_layout; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + /* * The mm_cpumask needs to be at the end of mm_struct, because it * is dynamically sized based on nr_cpu_ids. diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index 1acbc6ce1fe4..7a0056b975a5 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -986,6 +986,9 @@ struct zone { /* Zone statistics */ atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; atomic_long_t vm_numa_event[NR_VM_NUMA_EVENT_ITEMS]; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; } ____cacheline_internodealigned_in_smp; enum pgdat_flags { @@ -1404,6 +1407,9 @@ typedef struct pglist_data { #ifdef CONFIG_MEMORY_FAILURE struct memory_failure_stats mf_stats; #endif + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; } pg_data_t; #define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index ffa5248a90e2..c397f030b778 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1645,6 +1645,9 @@ struct net_device_ops { int (*ndo_hwtstamp_set)(struct net_device *dev, struct kernel_hwtstamp_config *kernel_config, struct netlink_ext_ack *extack); + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; /** diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index 5897f3dbaf7c..4a7ab7fe6444 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h @@ -217,6 +217,9 @@ struct xt_target { unsigned short proto; unsigned short family; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; /* Furniture shopping... */ diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 5a63b0927cc1..84305a5b8e17 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -1270,6 +1270,9 @@ struct readahead_control { struct file *file; struct address_space *mapping; struct file_ra_state *ra; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; /* private: use the readahead_* accessors instead */ pgoff_t _index; unsigned int _nr_pages; diff --git a/include/linux/pci.h b/include/linux/pci.h index ee89a69817aa..985edc27c4a7 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -529,6 +529,23 @@ struct pci_dev { /* These methods index pci_reset_fn_methods[] */ u8 reset_methods[PCI_NUM_RESET_METHODS]; /* In priority order */ + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; + unsigned long chushi_reserve9; + unsigned long chushi_reserve10; + unsigned long chushi_reserve11; + unsigned long chushi_reserve12; + unsigned long chushi_reserve13; + unsigned long chushi_reserve14; + unsigned long chushi_reserve15; + unsigned long chushi_reserve16; }; static inline struct pci_dev *pci_physfn(struct pci_dev *dev) @@ -678,6 +695,15 @@ struct pci_bus { struct bin_attribute *legacy_mem; /* Legacy mem */ unsigned int is_added:1; unsigned int unsafe_warn:1; /* warned about RW1C config write */ + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; #define to_pci_bus(n) container_of(n, struct pci_bus, dev) @@ -933,6 +959,15 @@ struct pci_driver { struct device_driver driver; struct pci_dynids dynids; bool driver_managed_dma; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; static inline struct pci_driver *to_pci_driver(struct device_driver *drv) diff --git a/include/linux/sched.h b/include/linux/sched.h index c02fd12b49dc..7bcdc9adc919 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -388,6 +388,14 @@ struct sched_info { /* When were we last queued to run? */ unsigned long long last_queued; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; #endif /* CONFIG_SCHED_INFO */ }; @@ -408,6 +416,15 @@ struct sched_info { struct load_weight { unsigned long weight; u32 inv_weight; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; /** @@ -501,6 +518,15 @@ struct sched_avg { unsigned long runnable_avg; unsigned long util_avg; struct util_est util_est; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; } ____cacheline_aligned; struct sched_statistics { @@ -542,6 +568,15 @@ struct sched_statistics { #ifdef CONFIG_SCHED_CORE u64 core_forceidle_sum; #endif + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; #endif /* CONFIG_SCHEDSTATS */ } ____cacheline_aligned; @@ -584,6 +619,15 @@ struct sched_entity { */ struct sched_avg avg; #endif + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; struct sched_rt_entity { @@ -602,6 +646,14 @@ struct sched_rt_entity { /* rq "owned" by this entity/group: */ struct rt_rq *my_q; #endif + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; } __randomize_layout; struct sched_dl_entity { @@ -675,6 +727,14 @@ struct sched_dl_entity { */ struct sched_dl_entity *pi_se; #endif + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; #ifdef CONFIG_UCLAMP_TASK @@ -1545,6 +1605,15 @@ struct task_struct { */ randomized_struct_fields_end + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; + /* CPU-specific state of this task: */ struct thread_struct thread; diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h index 0014d3adaf84..f4b1a9666bb9 100644 --- a/include/linux/sched/signal.h +++ b/include/linux/sched/signal.h @@ -245,6 +245,10 @@ struct signal_struct { * and may have inconsistent * permissions. */ + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; } __randomize_layout; /* diff --git a/include/linux/sched/topology.h b/include/linux/sched/topology.h index 67b573d5bf28..d728368477c5 100644 --- a/include/linux/sched/topology.h +++ b/include/linux/sched/topology.h @@ -82,6 +82,14 @@ struct sched_domain_shared { atomic_t nr_busy_cpus; int has_idle_cores; int nr_idle_scan; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; struct sched_domain { @@ -151,6 +159,14 @@ struct sched_domain { }; struct sched_domain_shared *shared; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; unsigned int span_weight; /* * Span of all CPUs in this domain. diff --git a/include/linux/sched/user.h b/include/linux/sched/user.h index 4cc52698e214..2f0343189dc3 100644 --- a/include/linux/sched/user.h +++ b/include/linux/sched/user.h @@ -34,6 +34,9 @@ struct user_struct { /* Miscellaneous per-user rate limit */ struct ratelimit_state ratelimit; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; extern int uids_sysfs_init(void); diff --git a/include/linux/shrinker.h b/include/linux/shrinker.h index 224293b2dd06..6bbbf30c3303 100644 --- a/include/linux/shrinker.h +++ b/include/linux/shrinker.h @@ -83,6 +83,8 @@ struct shrinker { #endif /* objs pending delete, per node */ atomic_long_t *nr_deferred; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; #define DEFAULT_SEEKS 2 /* A good number if you don't know better. */ diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 5f11f9873341..bcbc9877bbae 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -1043,6 +1043,9 @@ struct sk_buff { ); /* end headers group */ + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + /* These elements must be at the end, see alloc_skb() for details. */ sk_buff_data_t tail; sk_buff_data_t end; diff --git a/include/linux/swap.h b/include/linux/swap.h index cb25db2a93dd..e0f66d168811 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -321,6 +321,9 @@ struct swap_info_struct { */ struct work_struct discard_work; /* discard worker */ struct swap_cluster_list discard_clusters; /* discard clusters list */ + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; struct plist_node avail_lists[]; /* * entries in swap_avail_heads, one * entry per node. diff --git a/include/linux/timer.h b/include/linux/timer.h index 9162f275819a..7a3ce7ca1bdd 100644 --- a/include/linux/timer.h +++ b/include/linux/timer.h @@ -21,6 +21,8 @@ struct timer_list { #ifdef CONFIG_LOCKDEP struct lockdep_map lockdep_map; #endif + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; #ifdef CONFIG_LOCKDEP diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 083387c00f0c..021b52728948 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -89,6 +89,9 @@ struct writeback_control { size_t wb_lcand_bytes; /* bytes written by last candidate */ size_t wb_tcand_bytes; /* bytes written by this candidate */ #endif + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; static inline blk_opf_t wbc_to_write_flags(struct writeback_control *wbc) diff --git a/include/net/dst.h b/include/net/dst.h index 78884429deed..13ebc0d8a92b 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -92,6 +92,8 @@ struct dst_entry { #ifdef CONFIG_64BIT struct lwtunnel_state *lwtstate; #endif + + unsigned long chushi_reserve1; }; struct dst_metrics { diff --git a/include/net/dst_ops.h b/include/net/dst_ops.h index 3a9001a042a5..af16b5aadd57 100644 --- a/include/net/dst_ops.h +++ b/include/net/dst_ops.h @@ -40,6 +40,9 @@ struct dst_ops { struct kmem_cache *kmem_cachep; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + struct percpu_counter pcpuc_entries ____cacheline_aligned_in_smp; }; diff --git a/include/net/fib_rules.h b/include/net/fib_rules.h index 82da359bca03..cde348ee0cf8 100644 --- a/include/net/fib_rules.h +++ b/include/net/fib_rules.h @@ -44,6 +44,8 @@ struct fib_rule { struct fib_rule_port_range sport_range; struct fib_rule_port_range dport_range; struct rcu_head rcu; + + unsigned long chushi_reserve1; }; struct fib_lookup_arg { diff --git a/include/net/sock.h b/include/net/sock.h index 5942b5ff4c78..84bcbc09cbf7 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -545,6 +545,9 @@ struct sock { struct rcu_head sk_rcu; netns_tracker ns_tracker; struct hlist_node sk_bind2_node; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; }; enum sk_pacing { diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index 526def14e7fb..f4f526ee5c48 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h @@ -141,6 +141,11 @@ struct scsi_cmnd { * to be at an address < 16Mb). */ int result; /* Status code from lower level driver */ + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; /* Variant of blk_mq_rq_from_pdu() that verifies the type of its argument. */ diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index 9c8b6f611330..b06ab54fe339 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h @@ -281,6 +281,14 @@ struct scsi_device { struct mutex state_mutex; enum scsi_device_state sdev_state; struct task_struct *quiesced_by; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long sdev_data[]; } __attribute__((aligned(sizeof(unsigned long)))); @@ -367,6 +375,12 @@ struct scsi_target { char scsi_level; enum scsi_target_state state; void *hostdata; /* available to low-level driver */ + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long starget_data[]; /* for the transport */ /* starget_data must be the last element!!!! */ } __attribute__((aligned(sizeof(unsigned long)))); diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index f9d5ce6170a7..9b121a09d7e4 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h @@ -497,6 +497,11 @@ struct scsi_host_template { /* Delay for runtime autosuspend */ int rpm_autosuspend_delay; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; /* @@ -710,6 +715,13 @@ struct Scsi_Host { */ struct device *dma_dev; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + /* * We should ensure that this is aligned, both for better performance * and also because some compilers (m68k) don't automatically force diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c index 0de9dda09949..3f36cb2a4a61 100644 --- a/kernel/sched/cpuacct.c +++ b/kernel/sched/cpuacct.c @@ -26,6 +26,11 @@ struct cpuacct { /* cpuusage holds pointer to a u64-type object on every CPU */ u64 __percpu *cpuusage; struct kernel_cpustat __percpu *cpustat; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; static inline struct cpuacct *css_ca(struct cgroup_subsys_state *css) diff --git a/kernel/sched/cpudeadline.h b/kernel/sched/cpudeadline.h index 0adeda93b5fb..2fd25253cf38 100644 --- a/kernel/sched/cpudeadline.h +++ b/kernel/sched/cpudeadline.h @@ -13,6 +13,11 @@ struct cpudl { int size; cpumask_var_t free_cpus; struct cpudl_item *elements; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; }; #ifdef CONFIG_SMP diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 1e499b4e3c78..fd1b2b40e816 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -1413,6 +1413,12 @@ struct numa_group { struct rcu_head rcu; unsigned long total_faults; unsigned long max_faults_cpu; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + /* * faults[] array is split into two regions: faults_mem and faults_cpu. * diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 5c976c7dcc91..ed6f7389af3a 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -284,6 +284,14 @@ struct rt_bandwidth { u64 rt_runtime; struct hrtimer rt_period_timer; unsigned int rt_period_active; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; void __dl_clear_params(struct task_struct *p); @@ -315,6 +323,14 @@ struct dl_bw { raw_spinlock_t lock; u64 bw; u64 total_bw; + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; extern void init_dl_bw(struct dl_bw *dl_b); @@ -358,6 +374,15 @@ struct cfs_bandwidth { int nr_burst; u64 throttled_time; u64 burst_time; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; #endif }; @@ -414,6 +439,14 @@ struct task_group { struct uclamp_se uclamp[UCLAMP_CNT]; #endif + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; #ifdef CONFIG_FAIR_GROUP_SCHED @@ -651,6 +684,15 @@ struct cfs_rq { #endif #endif /* CONFIG_CFS_BANDWIDTH */ #endif /* CONFIG_FAIR_GROUP_SCHED */ + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; static inline int rt_bandwidth_enabled(void) @@ -697,6 +739,15 @@ struct rt_rq { struct rq *rq; struct task_group *tg; #endif + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; static inline bool rt_rq_is_runnable(struct rt_rq *rt_rq) @@ -765,6 +816,15 @@ struct dl_rq { * by the GRUB algorithm. */ u64 bw_ratio; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; #ifdef CONFIG_FAIR_GROUP_SCHED @@ -891,6 +951,15 @@ struct root_domain { * CPUs of the rd. Protected by RCU. */ struct perf_domain __rcu *pd; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; extern void init_defrootdomain(void); @@ -1168,6 +1237,15 @@ struct rq { call_single_data_t cfsb_csd; struct list_head cfsb_csd_list; #endif + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; #ifdef CONFIG_FAIR_GROUP_SCHED @@ -1897,6 +1975,16 @@ struct sched_group_capacity { int id; #endif + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; + unsigned long cpumask[]; /* Balance mask */ }; @@ -1910,6 +1998,16 @@ struct sched_group { int asym_prefer_cpu; /* CPU of highest priority in group */ int flags; + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; + /* * The CPUs this group covers. * @@ -2292,6 +2390,15 @@ struct sched_class { #ifdef CONFIG_SCHED_CORE int (*task_is_throttled)(struct task_struct *p, int cpu); #endif + + unsigned long chushi_reserve1; + unsigned long chushi_reserve2; + unsigned long chushi_reserve3; + unsigned long chushi_reserve4; + unsigned long chushi_reserve5; + unsigned long chushi_reserve6; + unsigned long chushi_reserve7; + unsigned long chushi_reserve8; }; static inline void put_prev_task(struct rq *rq, struct task_struct *prev)