lkml.org 
[lkml]   [2022]   [May]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v2 0/4] unified way to use static key and optimize pgtable_l4_enabled
    On Sun, May 8, 2022 at 9:46 PM Jisheng Zhang <jszhang@kernel.org> wrote:
    >
    > Currently, riscv has several features which may not be supported on all
    > riscv platforms, for example, FPU, SV48, SV57 and so on. To support
    > unified kernel Image style, we need to check whether the feature is
    > suportted or not. If the check sits at hot code path, then performance
    > will be impacted a lot. static key can be used to solve the issue. In
    > the past, FPU support has been converted to use static key mechanism.
    > I believe we will have similar cases in the future. For example, the
    > SV48 support can take advantage of static key[1].
    >
    > patch1 is a simple W=1 warning fix.
    > patch2 introduces an unified mechanism to use static key for riscv cpu
    > features.
    > patch3 converts has_cpu() to use the mechanism.
    > patch4 uses the mechanism to optimize pgtable_l4|[l5]_enabled.
    >
    > [1] http://lists.infradead.org/pipermail/linux-riscv/2021-December/011164.html

    Overall, using a script to generate CPU capabilities seems a bit
    over-engineered to me. We already have RISC-V ISA extension
    parsing infrastructure which can be easily extended to support
    static key arrays.

    Regards,
    Anup

    >
    > Since v1:
    > - Add a W=1 warning fix
    > - Fix W=1 error
    > - Based on v5.18-rcN, since SV57 support is added, so convert
    > pgtable_l5_enabled as well.
    >
    > Jisheng Zhang (4):
    > riscv: mm: init: make pt_ops_set_[early|late|fixmap] static
    > riscv: introduce unified static key mechanism for CPU features
    > riscv: replace has_fpu() with system_supports_fpu()
    > riscv: convert pgtable_l4|[l5]_enabled to static key
    >
    > arch/riscv/Makefile | 3 +
    > arch/riscv/include/asm/cpufeature.h | 110 ++++++++++++++++++++++++++++
    > arch/riscv/include/asm/pgalloc.h | 16 ++--
    > arch/riscv/include/asm/pgtable-64.h | 40 +++++-----
    > arch/riscv/include/asm/pgtable.h | 5 +-
    > arch/riscv/include/asm/switch_to.h | 9 +--
    > arch/riscv/kernel/cpu.c | 4 +-
    > arch/riscv/kernel/cpufeature.c | 29 ++++++--
    > arch/riscv/kernel/process.c | 2 +-
    > arch/riscv/kernel/signal.c | 4 +-
    > arch/riscv/mm/init.c | 52 ++++++-------
    > arch/riscv/mm/kasan_init.c | 16 ++--
    > arch/riscv/tools/Makefile | 22 ++++++
    > arch/riscv/tools/cpucaps | 7 ++
    > arch/riscv/tools/gen-cpucaps.awk | 40 ++++++++++
    > 15 files changed, 274 insertions(+), 85 deletions(-)
    > create mode 100644 arch/riscv/include/asm/cpufeature.h
    > create mode 100644 arch/riscv/tools/Makefile
    > create mode 100644 arch/riscv/tools/cpucaps
    > create mode 100755 arch/riscv/tools/gen-cpucaps.awk
    >
    > --
    > 2.34.1
    >

    \
     
     \ /
      Last update: 2022-05-09 06:40    [W:2.619 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site