1. 11 Jan, 2024 1 commit
    • Palmer Dabbelt's avatar
      Merge patch series "riscv: enable EFFICIENT_UNALIGNED_ACCESS and DCACHE_WORD_ACCESS" · 17f2c308
      Palmer Dabbelt authored
      Jisheng Zhang <jszhang@kernel.org> says:
      
      Some riscv implementations such as T-HEAD's C906, C908, C910 and C920
      support efficient unaligned access, for performance reason we want
      to enable HAVE_EFFICIENT_UNALIGNED_ACCESS on these platforms. To
      avoid performance regressions on non efficient unaligned access
      platforms, HAVE_EFFICIENT_UNALIGNED_ACCESS can't be globally selected.
      
      To solve this problem, runtime code patching based on the detected
      speed is a good solution. But that's not easy, it involves lots of
      work to modify vairous subsystems such as net, mm, lib and so on.
      This can be done step by step.
      
      So let's take an easier solution: add support to efficient unaligned
      access and hide the support under NONPORTABLE.
      
      patch1 introduces RISCV_EFFICIENT_UNALIGNED_ACCESS which depends on
      NONPORTABLE, if users know during config time that the kernel will be
      only run on those efficient unaligned access hw platforms, they can
      enable it. Obviously, generic unified kernel Image shouldn't enable it.
      
      patch2 adds support DCACHE_WORD_ACCESS when MMU and
      RISCV_EFFICIENT_UNALIGNED_ACCESS.
      
      Below test program and step shows how much performance can be improved:
      
       $ cat tt.c
       #include <sys/types.h>
       #include <sys/stat.h>
       #include <unistd.h>
      
       #define ITERATIONS 1000000
      
       #define PATH "123456781234567812345678123456781"
      
       int main(void)
       {
               unsigned long i;
               struct stat buf;
      
               for (i = 0; i < ITERATIONS; i++)
                       stat(PATH, &buf);
      
               return 0;
       }
      
       $ gcc -O2 tt.c
       $ touch 123456781234567812345678123456781
       $ time ./a.out
      
      Per my test on T-HEAD C910 platforms, the above test performance is
      improved by about 7.5%.
      
      * b4-shazam-merge:
        riscv: select DCACHE_WORD_ACCESS for efficient unaligned access HW
        riscv: introduce RISCV_EFFICIENT_UNALIGNED_ACCESS
      
      Link: https://lore.kernel.org/r/20231225044207.3821-1-jszhang@kernel.orgSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
      17f2c308
  2. 10 Jan, 2024 22 commits
  3. 09 Jan, 2024 4 commits
  4. 04 Jan, 2024 3 commits
  5. 03 Jan, 2024 5 commits
  6. 20 Dec, 2023 5 commits