Re: [patch 08/17] sh/cpu: Switch to arch_cpu_finalize_init()

John Paul Adrian Glaubitz <[email protected]>
Newsgroups gmane.linux.ports.sh.devel,gmane.linux.kernel,gmane.linux.ports.arm.kernel,gmane.linux.ports.ia64,gmane.linux.ports.mips,gmane.linux.ports.sparc,gmane.linux.uml.devel
Message-ID <eb2e34f5ebd541e648a6052e022d219cf0d65583.camel@physik.fu-berlin.de>
On Wed, 2023-06-14 at 01:39 +0200, Thomas Gleixner wrote:
> check_bugs() is about to be phased out. Switch over to the new
> arch_cpu_finalize_init() implementation.
> 
> No functional change.
> 
> Signed-off-by: Thomas Gleixner <[email protected]>
> Cc: Yoshinori Sato <[email protected]>
> Cc: Rich Felker <[email protected]>
> Cc: John Paul Adrian Glaubitz <[email protected]>
> Cc: [email protected]
> ---
>  arch/sh/Kconfig                 |    1 
>  arch/sh/include/asm/bugs.h      |   74 ----------------------------------------
>  arch/sh/include/asm/processor.h |    2 +
>  arch/sh/kernel/idle.c           |    1 
>  arch/sh/kernel/setup.c          |   55 +++++++++++++++++++++++++++++
>  5 files changed, 59 insertions(+), 74 deletions(-)
> 
> --- a/arch/sh/Kconfig
> +++ b/arch/sh/Kconfig
> @@ -6,6 +6,7 @@ config SUPERH
>  	select ARCH_ENABLE_MEMORY_HOTREMOVE if SPARSEMEM && MMU
>  	select ARCH_HAVE_NMI_SAFE_CMPXCHG if (GUSA_RB || CPU_SH4A)
>  	select ARCH_HAS_BINFMT_FLAT if !MMU
> +	select ARCH_HAS_CPU_FINALIZE_INIT
>  	select ARCH_HAS_CURRENT_STACK_POINTER
>  	select ARCH_HAS_GIGANTIC_PAGE
>  	select ARCH_HAS_GCOV_PROFILE_ALL
> --- a/arch/sh/include/asm/bugs.h
> +++ /dev/null
> @@ -1,74 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -#ifndef __ASM_SH_BUGS_H
> -#define __ASM_SH_BUGS_H
> -
> -/*
> - * This is included by init/main.c to check for architecture-dependent bugs.
> - *
> - * Needs:
> - *	void check_bugs(void);
> - */
> -
> -/*
> - * I don't know of any Super-H bugs yet.
> - */
> -
> -#include <asm/processor.h>
> -
> -extern void select_idle_routine(void);
> -
> -static void __init check_bugs(void)
> -{
> -	extern unsigned long loops_per_jiffy;
> -	char *p = &init_utsname()->machine[2]; /* "sh" */
> -
> -	select_idle_routine();
> -
> -	current_cpu_data.loops_per_jiffy = loops_per_jiffy;
> -
> -	switch (current_cpu_data.family) {
> -	case CPU_FAMILY_SH2:
> -		*p++ = '2';
> -		break;
> -	case CPU_FAMILY_SH2A:
> -		*p++ = '2';
> -		*p++ = 'a';
> -		break;
> -	case CPU_FAMILY_SH3:
> -		*p++ = '3';
> -		break;
> -	case CPU_FAMILY_SH4:
> -		*p++ = '4';
> -		break;
> -	case CPU_FAMILY_SH4A:
> -		*p++ = '4';
> -		*p++ = 'a';
> -		break;
> -	case CPU_FAMILY_SH4AL_DSP:
> -		*p++ = '4';
> -		*p++ = 'a';
> -		*p++ = 'l';
> -		*p++ = '-';
> -		*p++ = 'd';
> -		*p++ = 's';
> -		*p++ = 'p';
> -		break;
> -	case CPU_FAMILY_UNKNOWN:
> -		/*
> -		 * Specifically use CPU_FAMILY_UNKNOWN rather than
> -		 * default:, so we're able to have the compiler whine
> -		 * about unhandled enumerations.
> -		 */
> -		break;
> -	}
> -
> -	printk("CPU: %s\n", get_cpu_subtype(&current_cpu_data));
> -
> -#ifndef __LITTLE_ENDIAN__
> -	/* 'eb' means 'Endian Big' */
> -	*p++ = 'e';
> -	*p++ = 'b';
> -#endif
> -	*p = '\0';
> -}
> -#endif /* __ASM_SH_BUGS_H */
> --- a/arch/sh/include/asm/processor.h
> +++ b/arch/sh/include/asm/processor.h
> @@ -166,6 +166,8 @@ extern unsigned int instruction_size(uns
>  #define instruction_size(insn)	(2)
>  #endif
>  
> +void select_idle_routine(void);
> +
>  #endif /* __ASSEMBLY__ */
>  
>  #include <asm/processor_32.h>
> --- a/arch/sh/kernel/idle.c
> +++ b/arch/sh/kernel/idle.c
> @@ -15,6 +15,7 @@
>  #include <linux/irqflags.h>
>  #include <linux/smp.h>
>  #include <linux/atomic.h>
> +#include <asm/processor.h>
>  #include <asm/smp.h>
>  #include <asm/bl_bit.h>
>  
> --- a/arch/sh/kernel/setup.c
> +++ b/arch/sh/kernel/setup.c
> @@ -43,6 +43,7 @@
>  #include <asm/smp.h>
>  #include <asm/mmu_context.h>
>  #include <asm/mmzone.h>
> +#include <asm/processor.h>
>  #include <asm/sparsemem.h>
>  #include <asm/platform_early.h>
>  
> @@ -354,3 +355,57 @@ int test_mode_pin(int pin)
>  {
>  	return sh_mv.mv_mode_pins() & pin;
>  }
> +
> +void __init arch_cpu_finalize_init(void)
> +{
> +	char *p = &init_utsname()->machine[2]; /* "sh" */
> +
> +	select_idle_routine();
> +
> +	current_cpu_data.loops_per_jiffy = loops_per_jiffy;
> +
> +	switch (current_cpu_data.family) {
> +	case CPU_FAMILY_SH2:
> +		*p++ = '2';
> +		break;
> +	case CPU_FAMILY_SH2A:
> +		*p++ = '2';
> +		*p++ = 'a';
> +		break;
> +	case CPU_FAMILY_SH3:
> +		*p++ = '3';
> +		break;
> +	case CPU_FAMILY_SH4:
> +		*p++ = '4';
> +		break;
> +	case CPU_FAMILY_SH4A:
> +		*p++ = '4';
> +		*p++ = 'a';
> +		break;
> +	case CPU_FAMILY_SH4AL_DSP:
> +		*p++ = '4';
> +		*p++ = 'a';
> +		*p++ = 'l';
> +		*p++ = '-';
> +		*p++ = 'd';
> +		*p++ = 's';
> +		*p++ = 'p';
> +		break;
> +	case CPU_FAMILY_UNKNOWN:
> +		/*
> +		 * Specifically use CPU_FAMILY_UNKNOWN rather than
> +		 * default:, so we're able to have the compiler whine
> +		 * about unhandled enumerations.
> +		 */
> +		break;
> +	}
> +
> +	pr_info("CPU: %s\n", get_cpu_subtype(&current_cpu_data));
> +
> +#ifndef __LITTLE_ENDIAN__
> +	/* 'eb' means 'Endian Big' */
> +	*p++ = 'e';
> +	*p++ = 'b';
> +#endif
> +	*p = '\0';
> +}

Acked-by: John Paul Adrian Glaubitz <[email protected]>

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer
`. `'   Physicist
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.