lkml.org 
[lkml]   [2018]   [Oct]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 088/109] ARM: bugs: add support for per-processor bug checking
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Russell King <rmk+kernel@armlinux.org.uk>

    Commit 9d3a04925deeabb97c8e26d940b501a2873e8af3 upstream.

    Add support for per-processor bug checking - each processor function
    descriptor gains a function pointer for this check, which must not be
    an __init function. If non-NULL, this will be called whenever a CPU
    enters the kernel via which ever path (boot CPU, secondary CPU startup,
    CPU resuming, etc.)

    This allows processor specific bug checks to validate that workaround
    bits are properly enabled by firmware via all entry paths to the kernel.

    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Boot-tested-by: Tony Lindgren <tony@atomide.com>
    Reviewed-by: Tony Lindgren <tony@atomide.com>
    Acked-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: David A. Long <dave.long@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/arm/include/asm/proc-fns.h | 4 ++++
    arch/arm/kernel/bugs.c | 4 ++++
    arch/arm/mm/proc-macros.S | 3 ++-
    3 files changed, 10 insertions(+), 1 deletion(-)

    --- a/arch/arm/include/asm/proc-fns.h
    +++ b/arch/arm/include/asm/proc-fns.h
    @@ -37,6 +37,10 @@ extern struct processor {
    */
    void (*_proc_init)(void);
    /*
    + * Check for processor bugs
    + */
    + void (*check_bugs)(void);
    + /*
    * Disable any processor specifics
    */
    void (*_proc_fin)(void);
    --- a/arch/arm/kernel/bugs.c
    +++ b/arch/arm/kernel/bugs.c
    @@ -5,6 +5,10 @@

    void check_other_bugs(void)
    {
    +#ifdef MULTI_CPU
    + if (processor.check_bugs)
    + processor.check_bugs();
    +#endif
    }

    void __init check_bugs(void)
    --- a/arch/arm/mm/proc-macros.S
    +++ b/arch/arm/mm/proc-macros.S
    @@ -273,13 +273,14 @@
    mcr p15, 0, ip, c7, c10, 4 @ data write barrier
    .endm

    -.macro define_processor_functions name:req, dabort:req, pabort:req, nommu=0, suspend=0
    +.macro define_processor_functions name:req, dabort:req, pabort:req, nommu=0, suspend=0, bugs=0
    .type \name\()_processor_functions, #object
    .align 2
    ENTRY(\name\()_processor_functions)
    .word \dabort
    .word \pabort
    .word cpu_\name\()_proc_init
    + .word \bugs
    .word cpu_\name\()_proc_fin
    .word cpu_\name\()_reset
    .word cpu_\name\()_do_idle

    \
     
     \ /
      Last update: 2018-10-16 19:34    [W:4.022 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site