lkml.org 
[lkml]   [2023]   [Jun]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip: x86/boot] sh/cpu: Switch to arch_cpu_finalize_init()
    The following commit has been merged into the x86/boot branch of tip:

    Commit-ID: 01eb454e9bfe593f320ecbc9aaec60bf87cd453d
    Gitweb: https://git.kernel.org/tip/01eb454e9bfe593f320ecbc9aaec60bf87cd453d
    Author: Thomas Gleixner <tglx@linutronix.de>
    AuthorDate: Wed, 14 Jun 2023 01:39:33 +02:00
    Committer: Thomas Gleixner <tglx@linutronix.de>
    CommitterDate: Fri, 16 Jun 2023 10:16:00 +02:00

    sh/cpu: Switch to arch_cpu_finalize_init()

    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 <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20230613224545.371697797@linutronix.de

    ---
    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(-)
    delete mode 100644 arch/sh/include/asm/bugs.h

    diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
    index 9652d36..e339745 100644
    --- 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
    diff --git a/arch/sh/include/asm/bugs.h b/arch/sh/include/asm/bugs.h
    deleted file mode 100644
    index fe52abb..0000000
    --- 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 */
    diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h
    index 85a6c1c..73fba7c 100644
    --- a/arch/sh/include/asm/processor.h
    +++ b/arch/sh/include/asm/processor.h
    @@ -166,6 +166,8 @@ extern unsigned int instruction_size(unsigned int insn);
    #define instruction_size(insn) (2)
    #endif

    +void select_idle_routine(void);
    +
    #endif /* __ASSEMBLY__ */

    #include <asm/processor_32.h>
    diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c
    index d662503..045d93f 100644
    --- 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>

    diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c
    index af977ec..cf7c0f7 100644
    --- 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';
    +}
    \
     
     \ /
      Last update: 2023-06-16 11:26    [W:2.264 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site