]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
riscv: Separate toolchain support dependency from RISCV_ISA_ZACAS
authorPu Lehui <pulehui@huawei.com>
Sat, 19 Jul 2025 09:17:24 +0000 (09:17 +0000)
committerDaniel Borkmann <daniel@iogearbox.net>
Fri, 15 Aug 2025 08:46:51 +0000 (10:46 +0200)
RV64 bpf is going to support ZACAS instructions. Let's separate
toolchain support dependency from RISCV_ISA_ZACAS.

Signed-off-by: Pu Lehui <pulehui@huawei.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Tested-by: Björn Töpel <bjorn@rivosinc.com>
Reviewed-by: Björn Töpel <bjorn@rivosinc.com>
Acked-by: Björn Töpel <bjorn@kernel.org>
Link: https://lore.kernel.org/bpf/20250719091730.2660197-5-pulehui@huaweicloud.com
arch/riscv/Kconfig
arch/riscv/include/asm/cmpxchg.h
arch/riscv/kernel/setup.c

index a4b233a0659ed80c0eb6b118ea8c8db81ed3fdba..451eb23d86c96307422d95e233e35b97569e9816 100644 (file)
@@ -714,7 +714,6 @@ config TOOLCHAIN_HAS_ZACAS
 
 config RISCV_ISA_ZACAS
        bool "Zacas extension support for atomic CAS"
-       depends on TOOLCHAIN_HAS_ZACAS
        depends on RISCV_ALTERNATIVE
        default y
        help
index 0b749e7102162477432f7cf9a34768fbdf2e8cc7..4f4f389282b8c385213a9310e56d2fa130fe337b 100644 (file)
 ({                                                                             \
        if (IS_ENABLED(CONFIG_RISCV_ISA_ZABHA) &&                               \
            IS_ENABLED(CONFIG_RISCV_ISA_ZACAS) &&                               \
+           IS_ENABLED(CONFIG_TOOLCHAIN_HAS_ZACAS) &&                           \
            riscv_has_extension_unlikely(RISCV_ISA_EXT_ZABHA) &&                \
            riscv_has_extension_unlikely(RISCV_ISA_EXT_ZACAS)) {                \
                r = o;                                                          \
                       r, p, co, o, n)                                  \
 ({                                                                     \
        if (IS_ENABLED(CONFIG_RISCV_ISA_ZACAS) &&                       \
+           IS_ENABLED(CONFIG_TOOLCHAIN_HAS_ZACAS) &&                   \
            riscv_has_extension_unlikely(RISCV_ISA_EXT_ZACAS)) {        \
                r = o;                                                  \
                                                                        \
        arch_cmpxchg_release((ptr), (o), (n));                          \
 })
 
-#if defined(CONFIG_64BIT) && defined(CONFIG_RISCV_ISA_ZACAS)
+#if defined(CONFIG_64BIT) && defined(CONFIG_RISCV_ISA_ZACAS) && defined(CONFIG_TOOLCHAIN_HAS_ZACAS)
 
 #define system_has_cmpxchg128()        riscv_has_extension_unlikely(RISCV_ISA_EXT_ZACAS)
 
@@ -351,7 +353,7 @@ union __u128_halves {
 #define arch_cmpxchg128_local(ptr, o, n)                                       \
        __arch_cmpxchg128((ptr), (o), (n), "")
 
-#endif /* CONFIG_64BIT && CONFIG_RISCV_ISA_ZACAS */
+#endif /* CONFIG_64BIT && CONFIG_RISCV_ISA_ZACAS && CONFIG_TOOLCHAIN_HAS_ZACAS */
 
 #ifdef CONFIG_RISCV_ISA_ZAWRS
 /*
index f90cce7a3acea8b011cb90312af98ef8a6732674..14235e58c539cde7565810112e13965500cf5781 100644 (file)
@@ -290,6 +290,7 @@ static void __init riscv_spinlock_init(void)
 
        if (IS_ENABLED(CONFIG_RISCV_ISA_ZABHA) &&
            IS_ENABLED(CONFIG_RISCV_ISA_ZACAS) &&
+           IS_ENABLED(CONFIG_TOOLCHAIN_HAS_ZACAS) &&
            riscv_isa_extension_available(NULL, ZABHA) &&
            riscv_isa_extension_available(NULL, ZACAS)) {
                using_ext = "using Zabha";