riscv: Optimize kernel virtual address conversion macro
authorAlexandre Ghiti <alex@ghiti.fr>
Wed, 21 Jul 2021 07:59:37 +0000 (09:59 +0200)
committerPalmer Dabbelt <palmerdabbelt@google.com>
Thu, 12 Aug 2021 01:37:48 +0000 (18:37 -0700)
The current test in kernel_mapping_va_to_pa only applies when
CONFIG_XIP_KERNEL is set, so use IS_ENABLED to optimize this macro at
compile-time in standard kernels that do not require this test.

Signed-off-by: Alexandre Ghiti <alex@ghiti.fr>
Tested-by: Emil Renner Berthing <kernel@esmil.dk>
Reviewed-by: Jisheng Zhang <jszhang@kernel.org>
Reviewed-By: Vitaly Wool <vitaly.wool@konsulko.com>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
arch/riscv/include/asm/page.h

index cca8764..d40d77d 100644 (file)
@@ -122,7 +122,7 @@ extern struct kernel_mapping kernel_map;
 #define linear_mapping_va_to_pa(x)     ((unsigned long)(x) - kernel_map.va_pa_offset)
 #define kernel_mapping_va_to_pa(y) ({                                          \
        unsigned long _y = y;                                                   \
-       (_y < kernel_map.virt_addr + XIP_OFFSET) ?                                      \
+       (IS_ENABLED(CONFIG_XIP_KERNEL) && _y < kernel_map.virt_addr + XIP_OFFSET) ?     \
                ((unsigned long)(_y) - kernel_map.va_kernel_xip_pa_offset) :            \
                ((unsigned long)(_y) - kernel_map.va_kernel_pa_offset - XIP_OFFSET);    \
        })