forked from mirrors/linux
		
	clocksource/drivers/arm_arch_timer: Add __ro_after_init and __init
Some functions are not needed after booting, so mark them as __init to move them to the .init section. Some global variables are never modified after init, so can be __ro_after_init. Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com> Acked-by: Marc Zyngier <maz@kernel.org> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Link: https://lore.kernel.org/r/20210330140444.4fb2a7cb@xhacker.debian
This commit is contained in:
		
							parent
							
								
									25de4ce5ed
								
							
						
					
					
						commit
						e2bf384d43
					
				
					 1 changed files with 12 additions and 11 deletions
				
			
		|  | @ -51,7 +51,7 @@ | ||||||
| 
 | 
 | ||||||
| static unsigned arch_timers_present __initdata; | static unsigned arch_timers_present __initdata; | ||||||
| 
 | 
 | ||||||
| static void __iomem *arch_counter_base; | static void __iomem *arch_counter_base __ro_after_init; | ||||||
| 
 | 
 | ||||||
| struct arch_timer { | struct arch_timer { | ||||||
| 	void __iomem *base; | 	void __iomem *base; | ||||||
|  | @ -60,15 +60,16 @@ struct arch_timer { | ||||||
| 
 | 
 | ||||||
| #define to_arch_timer(e) container_of(e, struct arch_timer, evt) | #define to_arch_timer(e) container_of(e, struct arch_timer, evt) | ||||||
| 
 | 
 | ||||||
| static u32 arch_timer_rate; | static u32 arch_timer_rate __ro_after_init; | ||||||
| static int arch_timer_ppi[ARCH_TIMER_MAX_TIMER_PPI]; | u32 arch_timer_rate1 __ro_after_init; | ||||||
|  | static int arch_timer_ppi[ARCH_TIMER_MAX_TIMER_PPI] __ro_after_init; | ||||||
| 
 | 
 | ||||||
| static struct clock_event_device __percpu *arch_timer_evt; | static struct clock_event_device __percpu *arch_timer_evt; | ||||||
| 
 | 
 | ||||||
| static enum arch_timer_ppi_nr arch_timer_uses_ppi = ARCH_TIMER_VIRT_PPI; | static enum arch_timer_ppi_nr arch_timer_uses_ppi __ro_after_init = ARCH_TIMER_VIRT_PPI; | ||||||
| static bool arch_timer_c3stop; | static bool arch_timer_c3stop __ro_after_init; | ||||||
| static bool arch_timer_mem_use_virtual; | static bool arch_timer_mem_use_virtual __ro_after_init; | ||||||
| static bool arch_counter_suspend_stop; | static bool arch_counter_suspend_stop __ro_after_init; | ||||||
| #ifdef CONFIG_GENERIC_GETTIMEOFDAY | #ifdef CONFIG_GENERIC_GETTIMEOFDAY | ||||||
| static enum vdso_clock_mode vdso_default = VDSO_CLOCKMODE_ARCHTIMER; | static enum vdso_clock_mode vdso_default = VDSO_CLOCKMODE_ARCHTIMER; | ||||||
| #else | #else | ||||||
|  | @ -76,7 +77,7 @@ static enum vdso_clock_mode vdso_default = VDSO_CLOCKMODE_NONE; | ||||||
| #endif /* CONFIG_GENERIC_GETTIMEOFDAY */ | #endif /* CONFIG_GENERIC_GETTIMEOFDAY */ | ||||||
| 
 | 
 | ||||||
| static cpumask_t evtstrm_available = CPU_MASK_NONE; | static cpumask_t evtstrm_available = CPU_MASK_NONE; | ||||||
| static bool evtstrm_enable = IS_ENABLED(CONFIG_ARM_ARCH_TIMER_EVTSTREAM); | static bool evtstrm_enable __ro_after_init = IS_ENABLED(CONFIG_ARM_ARCH_TIMER_EVTSTREAM); | ||||||
| 
 | 
 | ||||||
| static int __init early_evtstrm_cfg(char *buf) | static int __init early_evtstrm_cfg(char *buf) | ||||||
| { | { | ||||||
|  | @ -176,7 +177,7 @@ static notrace u64 arch_counter_get_cntvct(void) | ||||||
|  * to exist on arm64. arm doesn't use this before DT is probed so even |  * to exist on arm64. arm doesn't use this before DT is probed so even | ||||||
|  * if we don't have the cp15 accessors we won't have a problem. |  * if we don't have the cp15 accessors we won't have a problem. | ||||||
|  */ |  */ | ||||||
| u64 (*arch_timer_read_counter)(void) = arch_counter_get_cntvct; | u64 (*arch_timer_read_counter)(void) __ro_after_init = arch_counter_get_cntvct; | ||||||
| EXPORT_SYMBOL_GPL(arch_timer_read_counter); | EXPORT_SYMBOL_GPL(arch_timer_read_counter); | ||||||
| 
 | 
 | ||||||
| static u64 arch_counter_read(struct clocksource *cs) | static u64 arch_counter_read(struct clocksource *cs) | ||||||
|  | @ -925,7 +926,7 @@ static int validate_timer_rate(void) | ||||||
|  * rate was probed first, and don't verify that others match. If the first node |  * rate was probed first, and don't verify that others match. If the first node | ||||||
|  * probed has a clock-frequency property, this overrides the HW register. |  * probed has a clock-frequency property, this overrides the HW register. | ||||||
|  */ |  */ | ||||||
| static void arch_timer_of_configure_rate(u32 rate, struct device_node *np) | static void __init arch_timer_of_configure_rate(u32 rate, struct device_node *np) | ||||||
| { | { | ||||||
| 	/* Who has more than one independent system counter? */ | 	/* Who has more than one independent system counter? */ | ||||||
| 	if (arch_timer_rate) | 	if (arch_timer_rate) | ||||||
|  | @ -939,7 +940,7 @@ static void arch_timer_of_configure_rate(u32 rate, struct device_node *np) | ||||||
| 		pr_warn("frequency not available\n"); | 		pr_warn("frequency not available\n"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void arch_timer_banner(unsigned type) | static void __init arch_timer_banner(unsigned type) | ||||||
| { | { | ||||||
| 	pr_info("%s%s%s timer(s) running at %lu.%02luMHz (%s%s%s).\n", | 	pr_info("%s%s%s timer(s) running at %lu.%02luMHz (%s%s%s).\n", | ||||||
| 		type & ARCH_TIMER_TYPE_CP15 ? "cp15" : "", | 		type & ARCH_TIMER_TYPE_CP15 ? "cp15" : "", | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Jisheng Zhang
						Jisheng Zhang