]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
riscv: uaccess: Relax the threshold for fast path
authorXiao Wang <xiao.w.wang@intel.com>
Wed, 13 Mar 2024 09:19:29 +0000 (17:19 +0800)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 22 May 2024 23:12:55 +0000 (16:12 -0700)
The bytes copy for unaligned head would cover at most SZREG-1 bytes, so
it's better to set the threshold as >= (SZREG-1 + word_copy stride size)
which equals to 9*SZREG-1.

Signed-off-by: Xiao Wang <xiao.w.wang@intel.com>
Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Link: https://lore.kernel.org/r/20240313091929.4029960-1-xiao.w.wang@intel.com
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/lib/uaccess.S

index 64792a7ae72e8ae229f34b2d9bfd3e35dd137fc2..1399d797d81b08cf93c9877bf20dbf30b3dd38b6 100644 (file)
@@ -44,7 +44,7 @@ SYM_FUNC_START(fallback_scalar_usercopy)
         * Use byte copy only if too small.
         * SZREG holds 4 for RV32 and 8 for RV64
         */
-       li      a3, 9*SZREG /* size must be larger than size in word_copy */
+       li      a3, 9*SZREG-1 /* size must >= (word_copy stride + SZREG-1) */
        bltu    a2, a3, .Lbyte_copy_tail
 
        /*