Skip to content

[PW_SID:993186] riscv: introduce percpu.h - #803

Closed
linux-riscv-bot wants to merge 2 commits into
workflow__riscv__fixesfrom
pw993186
Closed

[PW_SID:993186] riscv: introduce percpu.h#803
linux-riscv-bot wants to merge 2 commits into
workflow__riscv__fixesfrom
pw993186

Conversation

@linux-riscv-bot

Copy link
Copy Markdown

PR for series 993186 applied to workflow__riscv__fixes

Name: riscv: introduce percpu.h
URL: https://patchwork.kernel.org/project/linux-riscv/list/?series=993186
Version: 1

The arch/riscv/include/asm/bitops.h does not functionally require
including /linux/irqflags.h. Additionally, adding
arch/riscv/include/asm/percpu.h causes a circular inclusion:
kernel/bounds.c
->include/linux/log2.h
->include/linux/bitops.h
->arch/riscv/include/asm/bitops.h
->include/linux/irqflags.h
->include/linux/find.h
->return val ? __ffs(val) : size;
->arch/riscv/include/asm/bitops.h

The compilation log is as follows:
CC      kernel/bounds.s
In file included from ./include/linux/bitmap.h:11,
               from ./include/linux/cpumask.h:12,
               from ./arch/riscv/include/asm/processor.h:55,
               from ./arch/riscv/include/asm/thread_info.h:42,
               from ./include/linux/thread_info.h:60,
               from ./include/asm-generic/preempt.h:5,
               from ./arch/riscv/include/generated/asm/preempt.h:1,
               from ./include/linux/preempt.h:79,
               from ./arch/riscv/include/asm/percpu.h:8,
               from ./include/linux/irqflags.h:19,
               from ./arch/riscv/include/asm/bitops.h:14,
               from ./include/linux/bitops.h:68,
               from ./include/linux/log2.h:12,
               from kernel/bounds.c:13:
./include/linux/find.h: In function 'find_next_bit':
./include/linux/find.h:66:30: error: implicit declaration of function '__ffs' [-Wimplicit-function-declaration]
   66 |                 return val ? __ffs(val) : size;
      |                              ^~~~~

Signed-off-by: Yunhui Cui <cuiyunhui@bytedance.com>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
Current percpu operations rely on generic implementations, where
raw_local_irq_save() introduces substantial overhead. Optimization
is achieved through atomic operations and preemption disabling.

Since RISC-V does not support lr/sc.b/h, when ZABHA is not supported,
we need to use lr/sc.w instead, which requires some additional mask
operations. In fact, 8/16-bit per-CPU operations are very few. The
counts during system startup are as follows:
Reads: 8-bit: 3, 16-bit: 3, 32-bit: 1531, 64-bit: 471
Writes: 8-bit: 4, 16-bit: 3, 32-bit: 32, 64-bit: 238
Adds: 8-bit: 3, 16-bit: 3, 32-bit: 31858, 64-bit: 7656
Add-Returns: 8-bit: 0, 16-bit: 0, 32-bit: 0, 64-bit: 2
ANDs: 8-bit: 0, 16-bit: 0, 32-bit: 0, 64-bit: 0
ANDNOTs: 8-bit: 0, 16-bit: 0, 32-bit: 0, 64-bit: 0
ORs: 8-bit: 0, 16-bit: 0, 32-bit: 70, 64-bit: 0

hackbench -l 1000:
Reads: 8-bit: 3, 16-bit: 3, 32-bit: 1531, 64-bit: 2522158
Writes: 8-bit: 4, 16-bit: 3, 32-bit: 34, 64-bit: 2521522
Adds: 8-bit: 3, 16-bit: 3, 32-bit: 47771, 64-bit: 19911
Add-Returns: 8-bit: 0, 16-bit: 0, 32-bit: 0, 64-bit: 2
ANDs: 8-bit: 0, 16-bit: 0, 32-bit: 0, 64-bit: 0
ANDNOTs: 8-bit: 0, 16-bit: 0, 32-bit: 0, 64-bit: 0
ORs: 8-bit: 0, 16-bit: 0, 32-bit: 70, 64-bit: 0

Based on this, 8bit/16bit per-CPU operations can directly fall back to
the generic implementation.

Signed-off-by: Yunhui Cui <cuiyunhui@bytedance.com>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
build-rv32-defconfig
Desc: Builds riscv32 defconfig
Duration: 104.82 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
build-rv64-clang-allmodconfig
Desc: Builds riscv64 allmodconfig with Clang, and checks for errors and added warnings
Duration: 2231.62 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
build-rv64-gcc-allmodconfig
Desc: Builds riscv64 allmodconfig with GCC, and checks for errors and added warnings
Duration: 2874.55 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
build-rv64-nommu-k210-defconfig
Desc: Builds riscv64 defconfig with NOMMU for K210
Duration: 20.80 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
build-rv64-nommu-k210-virt
Desc: Builds riscv64 defconfig with NOMMU for the virt platform
Duration: 21.95 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
checkpatch
Desc: Runs checkpatch.pl on the patch
Duration: 0.69 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
dtb-warn-rv64
Desc: Checks for Device Tree warnings/errors
Duration: 73.97 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
header-inline
Desc: Detects static functions without inline keyword in header files
Duration: 0.22 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
kdoc
Desc: Detects for kdoc errors
Duration: 0.86 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
module-param
Desc: Detect module_param changes
Duration: 0.23 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
verify-fixes
Desc: Verifies that the Fixes: tags exist
Duration: 0.21 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 1: "[1/2] riscv: remove irqflags.h inclusion in asm/bitops.h"
verify-signedoff
Desc: Verifies that Signed-off-by: tags are correct
Duration: 0.28 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
build-rv32-defconfig
Desc: Builds riscv32 defconfig
Duration: 89.15 seconds
Result: ERROR
Output:

Full log:
W: Support for running offline not available (unshare: unshare failed: Operation not permitted)
tuxmake --download-all-korg-gcc-toolchains --target-arch=riscv --kconfig=rv32_defconfig --toolchain=llvm --wrapper=ccache --environment=KBUILD_BUILD_TIMESTAMP=@1621270510 --environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake --environment=KCFLAGS=-ffile-prefix-map=/build/tmp.BQ6igjeG2Y/build/= --runtime=null --image=docker.io/tuxmake/riscv_clang CROSS_COMPILE=riscv64-linux- config default kernel xipkernel modules dtbs dtbs-legacy debugkernel headers
make --silent --keep-going --jobs=48 O=/build/tmp.BQ6igjeG2Y/build ARCH=riscv CROSS_COMPILE=riscv64-linux- LLVM=1 'CC=ccache clang' 'HOSTCC=ccache clang' rv32_defconfig
make --silent --keep-going --jobs=48 O=/build/tmp.BQ6igjeG2Y/build ARCH=riscv CROSS_COMPILE=riscv64-linux- LLVM=1 'CC=ccache clang' 'HOSTCC=ccache clang'
In file included from /build/tmp3p1jkvrs/net/ipv6/ip6_output.c:28:
In file included from /build/tmp3p1jkvrs/include/linux/socket.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/uio.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/mm_types.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/kref.h:16:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a4, 0(a3)
      |         ^
In file included from /build/tmp3p1jkvrs/net/ipv6/ip6_output.c:28:
In file included from /build/tmp3p1jkvrs/include/linux/socket.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/uio.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/mm_types.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/kref.h:16:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a0, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/net/ipv6/ip6_output.c:28:
In file included from /build/tmp3p1jkvrs/include/linux/socket.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/uio.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/mm_types.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/kref.h:16:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a5, 0(a4)
      |         ^
In file included from /build/tmp3p1jkvrs/net/ipv6/ip6_output.c:28:
In file included from /build/tmp3p1jkvrs/include/linux/socket.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/uio.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/mm_types.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/kref.h:16:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a0, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/net/ipv6/ip6_output.c:28:
In file included from /build/tmp3p1jkvrs/include/linux/socket.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/uio.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/mm_types.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/kref.h:16:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a4, 0(a3)
      |         ^
In file included from /build/tmp3p1jkvrs/net/ipv6/ip6_output.c:28:
In file included from /build/tmp3p1jkvrs/include/linux/socket.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/uio.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/mm_types.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/kref.h:16:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a0, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/net/ipv6/ip6_output.c:28:
In file included from /build/tmp3p1jkvrs/include/linux/socket.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/uio.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/mm_types.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/kref.h:16:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a5, 0(a4)
      |         ^
In file included from /build/tmp3p1jkvrs/net/ipv6/ip6_output.c:28:
In file included from /build/tmp3p1jkvrs/include/linux/socket.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/uio.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/mm_types.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/kref.h:16:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a0, 0(a2)
      |         ^
8 errors generated.
make[5]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:287: net/ipv6/ip6_output.o] Error 1
/build/tmp3p1jkvrs/mm/slub.c:3638:9: warning: variable '__old' is uninitialized when used within its own initialization [-Wuninitialized]
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 3639 |                                              &old.full, new.full);
      |                                              ~~~~~~~~~~~~~~~~~~~~
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:2: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:108:24: note: expanded from macro '__cpu_fallback_try_cmpxchg'
  108 |         __val = _cmpxchg(pcp, __old, nval);                             \
      |                 ~~~~~~~~~~~~~~^~~~~~~~~~~~
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
/build/tmp3p1jkvrs/include/linux/atomic/atomic-instrumented.h:4810:32: note: expanded from macro 'cmpxchg_relaxed'
 4810 |         raw_cmpxchg_relaxed(__ai_ptr, __VA_ARGS__); \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/build/tmp3p1jkvrs/arch/riscv/include/asm/cmpxchg.h:262:24: note: expanded from macro 'arch_cmpxchg_relaxed'
  262 |         _arch_cmpxchg((ptr), (o), (n),                                  \
      |         ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  263 |                       SC_SFX(""), CAS_SFX(""),                          \
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  264 |                       SC_PREPEND(""), SC_APPEND(""),                    \
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  265 |                       CAS_PREPEND(""), CAS_APPEND(""))
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/build/tmp3p1jkvrs/arch/riscv/include/asm/cmpxchg.h:215:32: note: expanded from macro '_arch_cmpxchg'
  215 |         __typeof__(*(__ptr)) __old = (old);                             \
      |                              ~~~~~    ^~~
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:5: note: instantiated into assembly here
    1 |         0:      lr.d a7, 0(a0)
      |                 ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:3:2: note: instantiated into assembly here
    3 |         sc.d a4, a2, 0(a0)
      |         ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:12: note: instantiated into assembly here
    1 |                 amocas.d a7, a2, 0(a0)
      |                          ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:5: note: instantiated into assembly here
    1 |         0:      lr.d a3, 0(a0)
      |                 ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:3:2: note: instantiated into assembly here
    3 |         sc.d s1, a2, 0(a0)
      |         ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:12: note: instantiated into assembly here
    1 |                 amocas.d a3, a2, 0(a0)
      |                          ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:5: note: instantiated into assembly here
    1 |         0:      lr.d a3, 0(a0)
      |                 ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:3:2: note: instantiated into assembly here
    3 |         sc.d s1, a2, 0(a0)
      |         ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:12: note: instantiated into assembly here
    1 |                 amocas.d a3, a2, 0(a0)
      |                          ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:5: note: instantiated into assembly here
    1 |         0:      lr.d a3, 0(a0)
      |                 ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:3:2: note: instantiated into assembly here
    3 |         sc.d s1, a2, 0(a0)
      |         ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:12: note: instantiated into assembly here
    1 |                 amocas.d a3, a2, 0(a0)
      |                          ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:5: note: instantiated into assembly here
    1 |         0:      lr.d a3, 0(a0)
      |                 ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:3:2: note: instantiated into assembly here
    3 |         sc.d s1, a2, 0(a0)
      |         ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:12: note: instantiated into assembly here
    1 |                 amocas.d a3, a2, 0(a0)
      |                          ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:5: note: instantiated into assembly here
    1 |         0:      lr.d a3, 0(a0)
      |                 ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:3:2: note: instantiated into assembly here
    3 |         sc.d s1, a2, 0(a0)
      |         ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:12: note: instantiated into assembly here
    1 |                 amocas.d a3, a2, 0(a0)
      |                          ^
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
 3638 |         return this_cpu_try_cmpxchg_freelist(s->cpu_slab->freelist_tid.full,
      |                ^
/build/tmp3p1jkvrs/mm/slab.h:31:39: note: expanded from macro 'this_cpu_try_cmpxchg_freelist'
   31 | #define this_cpu_try_cmpxchg_freelist   this_cpu_try_cmpxchg64
      |                                         ^
/build/tmp3p1jkvrs/include/asm-generic/percpu.h:518:47: note: expanded from macro 'this_cpu_try_cmpxchg64'
  518 |         __cpu_fallback_try_cmpxchg(pcp, ovalp, nval, this_cpu_cmpxchg64)
      |                                                      ^
<inline asm>:1:5: note: instantiated into assembly here
    1 |         0:      lr.d a3, 0(a0)
      |                 ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
1 warning and 20 errors generated.
make[4]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:287: mm/slub.o] Error 1
make[4]: Target 'mm/' not remade because of errors.
make[3]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:556: mm] Error 2
make[5]: Target 'net/ipv6/' not remade because of errors.
make[4]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:556: net/ipv6] Error 2
In file included from /build/tmp3p1jkvrs/fs/nfs/file.c:20:
In file included from /build/tmp3p1jkvrs/include/linux/module.h:18:
In file included from /build/tmp3p1jkvrs/include/linux/kmod.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/umh.h:4:
In file included from /build/tmp3p1jkvrs/include/linux/gfp.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/mmzone.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a0, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/fs/nfs/file.c:20:
In file included from /build/tmp3p1jkvrs/include/linux/module.h:18:
In file included from /build/tmp3p1jkvrs/include/linux/kmod.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/umh.h:4:
In file included from /build/tmp3p1jkvrs/include/linux/gfp.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/mmzone.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a0, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/fs/nfs/file.c:20:
In file included from /build/tmp3p1jkvrs/include/linux/module.h:18:
In file included from /build/tmp3p1jkvrs/include/linux/kmod.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/umh.h:4:
In file included from /build/tmp3p1jkvrs/include/linux/gfp.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/mmzone.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a0, 0(a2)
      |         ^
3 errors generated.
make[5]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:287: fs/nfs/file.o] Error 1
In file included from /build/tmp3p1jkvrs/fs/nfs/direct.c:43:
In file included from /build/tmp3p1jkvrs/include/linux/sched.h:37:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, s1, 0(a1)
      |         ^
In file included from /build/tmp3p1jkvrs/fs/nfs/direct.c:43:
In file included from /build/tmp3p1jkvrs/include/linux/sched.h:37:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, s3, 0(a1)
      |         ^
2 errors generated.
make[5]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:287: fs/nfs/direct.o] Error 1
In file included from /build/tmp3p1jkvrs/fs/nfs/read.c:16:
In file included from /build/tmp3p1jkvrs/include/linux/mm.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/gfp.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/mmzone.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a1, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/fs/nfs/read.c:16:
In file included from /build/tmp3p1jkvrs/include/linux/mm.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/gfp.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/mmzone.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a1, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/fs/nfs/read.c:16:
In file included from /build/tmp3p1jkvrs/include/linux/mm.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/gfp.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/mmzone.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a1, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/fs/nfs/read.c:16:
In file included from /build/tmp3p1jkvrs/include/linux/mm.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/gfp.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/mmzone.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a3, 0(a2)
      |         ^
4 errors generated.
make[5]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:287: fs/nfs/read.o] Error 1
In file included from /build/tmp3p1jkvrs/fs/nfs/write.c:11:
In file included from /build/tmp3p1jkvrs/include/linux/slab.h:16:
In file included from /build/tmp3p1jkvrs/include/linux/gfp.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/mmzone.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a2, 0(a1)
      |         ^
In file included from /build/tmp3p1jkvrs/fs/nfs/write.c:11:
In file included from /build/tmp3p1jkvrs/include/linux/slab.h:16:
In file included from /build/tmp3p1jkvrs/include/linux/gfp.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/mmzone.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a3, 0(a2)
      |         ^
2 errors generated.
make[5]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:287: fs/nfs/write.o] Error 1
make[4]: Target 'net/' not remade because of errors.
make[3]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:556: net] Error 2
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a2, 0(a1)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a2, 0(a1)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a1, 0(a0)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a2, 0(a1)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a3, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a2, 0(a1)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a5, 0(a4)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a2, 0(a0)
      |         ^
<inline asm>:1:2: error: instruction requires the following: RV64I Base Instruction Set
    1 |         amoadd.d zero, a3, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a2, 0(a1)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a2, 0(a1)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a3, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/kernel/bpf/hashtab.c:5:
In file included from /build/tmp3p1jkvrs/include/linux/bpf.h:10:
In file included from /build/tmp3p1jkvrs/include/linux/workqueue.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/alloc_tag.h:12:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a2, 0(a1)
      |         ^
13 errors generated.
make[5]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:287: kernel/bpf/hashtab.o] Error 1
In file included from /build/tmp3p1jkvrs/fs/ext4/mballoc.c:12:
In file included from /build/tmp3p1jkvrs/fs/ext4/ext4_jbd2.h:15:
In file included from /build/tmp3p1jkvrs/include/linux/fs.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/wait_bit.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/wait.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a3, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/fs/ext4/mballoc.c:12:
In file included from /build/tmp3p1jkvrs/fs/ext4/ext4_jbd2.h:15:
In file included from /build/tmp3p1jkvrs/include/linux/fs.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/wait_bit.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/wait.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, a3, 0(a2)
      |         ^
In file included from /build/tmp3p1jkvrs/fs/ext4/mballoc.c:12:
In file included from /build/tmp3p1jkvrs/fs/ext4/ext4_jbd2.h:15:
In file included from /build/tmp3p1jkvrs/include/linux/fs.h:7:
In file included from /build/tmp3p1jkvrs/include/linux/wait_bit.h:8:
In file included from /build/tmp3p1jkvrs/include/linux/wait.h:9:
In file included from /build/tmp3p1jkvrs/include/linux/spinlock.h:59:
In file included from /build/tmp3p1jkvrs/include/linux/irqflags.h:19:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
   58 | PERCPU_OP(add, add)
      | ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:47:2: note: expanded from macro 'PERCPU_OP'
   47 |         __PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)
      |         ^
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:24:3: note: expanded from macro '__PERCPU_AMO_OP_CASE'
   24 |                 "amo" #amo_insn #sfx " zero, %[val], %[ptr]"            \
      |                 ^
<inline asm>:1:2: note: instantiated into assembly here
    1 |         amoadd.d zero, s7, 0(a0)
      |         ^
3 errors generated.
make[5]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:287: fs/ext4/mballoc.o] Error 1
make[5]: Target 'fs/ext4/' not remade because of errors.
make[4]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:556: fs/ext4] Error 2
make[5]: Target 'fs/nfs/' not remade because of errors.
make[4]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:556: fs/nfs] Error 2
make[5]: Target 'kernel/bpf/' not remade because of errors.
make[4]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:556: kernel/bpf] Error 2
make[4]: Target 'kernel/' not remade because of errors.
make[3]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:556: kernel] Error 2
make[4]: Target 'fs/' not remade because of errors.
make[3]: *** [/build/tmp3p1jkvrs/scripts/Makefile.build:556: fs] Error 2
make[3]: Target './' not remade because of errors.
make[2]: *** [/build/tmp3p1jkvrs/Makefile:2011: .] Error 2
make[2]: Target '__all' not remade because of errors.
make[1]: *** [/build/tmp3p1jkvrs/Makefile:248: __sub-make] Error 2
make[1]: Target '__all' not remade because of errors.
make: *** [Makefile:248: __sub-make] Error 2
make: Target '__all' not remade because of errors.
rm -rf /build/tmp.BQ6igjeG2Y/build/modinstall
make --silent --keep-going --jobs=48 O=/build/tmp.BQ6igjeG2Y/build INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=/build/tmp.BQ6igjeG2Y/build/modinstall ARCH=riscv CROSS_COMPILE=riscv64-linux- LLVM=1 'CC=ccache clang' 'HOSTCC=ccache clang' modules_install
make[3]: *** No rule to make target 'modules.order', needed by '/build/tmp.BQ6igjeG2Y/build/modinstall/lib/modules/6.17.0-rc1-00003-g0058c5119e9d/modules.order'.
make[3]: *** No rule to make target 'modules.builtin', needed by '/build/tmp.BQ6igjeG2Y/build/modinstall/lib/modules/6.17.0-rc1-00003-g0058c5119e9d/modules.builtin'.
make[3]: *** No rule to make target 'modules.builtin.modinfo', needed by '/build/tmp.BQ6igjeG2Y/build/modinstall/lib/modules/6.17.0-rc1-00003-g0058c5119e9d/modules.builtin.modinfo'.
make[3]: Target '__modinst' not remade because of errors.
make[2]: *** [/build/tmp3p1jkvrs/Makefile:1917: modules_install] Error 2
make[1]: *** [/build/tmp3p1jkvrs/Makefile:248: __sub-make] Error 2
make[1]: Target 'modules_install' not remade because of errors.
make: *** [Makefile:248: __sub-make] Error 2
make: Target 'modules_install' not remade because of errors.
make --silent --keep-going --jobs=48 O=/build/tmp.BQ6igjeG2Y/build INSTALL_DTBS_PATH=/build/tmp.BQ6igjeG2Y/build/dtbsinstall/dtbs ARCH=riscv CROSS_COMPILE=riscv64-linux- LLVM=1 'CC=ccache clang' 'HOSTCC=ccache clang' dtbs
I: config: PASS in 0:00:09.981889
I: default: FAIL in 0:01:12.556786
I: kernel: SKIP in 0:00:00.000007
I: xipkernel: SKIP in 0:00:00.000003
I: modules: FAIL in 0:00:00.046011
I: dtbs: PASS in 0:00:01.283162
I: dtbs-legacy: SKIP in 0:00:00.003399
I: debugkernel: SKIP in 0:00:00.000004
I: headers: PASS in 0:00:01.169759
I: build output in /build/tmp.BQ6igjeG2Y
rm -rf /build/tmp.BQ6igjeG2Y/build/dtbsinstall
mkdir -p /build/tmp.BQ6igjeG2Y/build/dtbsinstall/dtbs
make --silent --keep-going --jobs=48 O=/build/tmp.BQ6igjeG2Y/build INSTALL_DTBS_PATH=/build/tmp.BQ6igjeG2Y/build/dtbsinstall/dtbs ARCH=riscv CROSS_COMPILE=riscv64-linux- LLVM=1 'CC=ccache clang' 'HOSTCC=ccache clang' dtbs_install
tar --sort=name --owner=tuxmake:1000 --group=tuxmake:1000 --mtime=@1755627862 --clamp-mtime -caf /build/tmp.BQ6igjeG2Y/build/dtbs.tar -C /build/tmp.BQ6igjeG2Y/build/dtbsinstall dtbs
rm -rf /build/tmp.BQ6igjeG2Y/build/install_hdr
make --silent --keep-going --jobs=48 O=/build/tmp.BQ6igjeG2Y/build INSTALL_HDR_PATH=/build/tmp.BQ6igjeG2Y/build/install_hdr/ ARCH=riscv CROSS_COMPILE=riscv64-linux- LLVM=1 'CC=ccache clang' 'HOSTCC=ccache clang' headers_install
tar --sort=name --owner=tuxmake:1000 --group=tuxmake:1000 --mtime=@1755627862 --clamp-mtime -caf /build/tmp.BQ6igjeG2Y/build/headers.tar -C /build/tmp.BQ6igjeG2Y/build/install_hdr .
warnings/errors:
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: warning: variable '__old' is uninitialized when used within its own initialization [-Wuninitialized]
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: register must be even
/build/tmp3p1jkvrs/mm/slub.c:3638:9: error: instruction requires the following: RV64I Base Instruction Set
fatal error: too many errors emitted, stopping now [-ferror-limit=]
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
<inline asm>:1:2: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set
/build/tmp3p1jkvrs/arch/riscv/include/asm/percpu.h:58:1: error: instruction requires the following: RV64I Base Instruction Set


@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
build-rv64-clang-allmodconfig
Desc: Builds riscv64 allmodconfig with Clang, and checks for errors and added warnings
Duration: 2196.08 seconds
Result: ERROR
Output:

Redirect to /build/tmp.pYNjq5rUQY and /build/tmp.0VVpDLqcG8
Tree base:
b000e375023fc ("riscv: remove irqflags.h inclusion in asm/bitops.h")
Building the whole tree with the patch
Building the tree before the patch
Building the tree with the patch
New errors added:
--- /build/tmp.owhvCclh35	2025-08-19 20:35:18.537581462 +0000
+++ /build/tmp.bmk4EgeDtD	2025-08-19 20:35:18.542581445 +0000
@@ -176,0 +177 @@
+     46 /build/tmp3p1jkvrs/fs/bcachefs/buckets.h:322:12: warning: variable '__old' is uninitialized when used within its own initialization [-Wuninitialized]
@@ -220,0 +222 @@
+      1 /build/tmp3p1jkvrs/kernel/fork.c:218:7: warning: variable '__old' is uninitialized when used within its own initialization [-Wuninitialized]
Per-file breakdown
error/warning file pre:
error/warning file post:
pre: 326 post: 373



real	15m16.544s
user	585m2.231s
sys	105m1.415s

real	17m4.840s
user	609m47.116s
sys	108m58.247s

real	4m4.543s
user	34m50.991s
sys	24m50.346s

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
build-rv64-gcc-allmodconfig
Desc: Builds riscv64 allmodconfig with GCC, and checks for errors and added warnings
Duration: 946.05 seconds
Result: ERROR
Output:

Redirect to /build/tmp.WIFAjQQt7v and /build/tmp.9N8cfaL65B
Tree base:
b000e375023fc ("riscv: remove irqflags.h inclusion in asm/bitops.h")
Building the whole tree with the patch
error:
/build/tmp3p1jkvrs/include/linux/atomic/atomic-arch-fallback.h:414:30: error: implicit declaration of function 'arch_cmpxchg128_local'; did you mean 'arch_cmpxchg_local'? [-Wimplicit-function-declaration]



real	15m39.385s
user	619m53.299s
sys	95m33.293s

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
build-rv64-nommu-k210-defconfig
Desc: Builds riscv64 defconfig with NOMMU for K210
Duration: 20.56 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
build-rv64-nommu-k210-virt
Desc: Builds riscv64 defconfig with NOMMU for the virt platform
Duration: 21.82 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
checkpatch
Desc: Runs checkpatch.pl on the patch
Duration: 2.12 seconds
Result: ERROR
Output:

WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#42: 
new file mode 100644

ERROR: Macros with complex values should be enclosed in parentheses
#76: FILE: arch/riscv/include/asm/percpu.h:30:
+#define __PERCPU_AMO_RET_OP_CASE(sfx, name, sz, amo_insn)		\
+static inline u##sz							\
+__percpu_##name##_return_amo_case_##sz(void *ptr, unsigned long val)	\
+{									\
+	register u##sz ret;						\
+									\
+	asm volatile (							\
+		"amo" #amo_insn #sfx " %[ret], %[val], %[ptr]"		\
+		: [ptr] "+A" (*(u##sz *)ptr), [ret] "=r" (ret)		\
+		: [val] "r" ((u##sz)(val))				\
+		: "memory");						\
+									\
+	return ret + val;						\
+}

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

ERROR: Macros with complex values should be enclosed in parentheses
#91: FILE: arch/riscv/include/asm/percpu.h:45:
+#define PERCPU_OP(name, amo_insn)					\
+	__PERCPU_AMO_OP_CASE(.w, name, 32, amo_insn)			\
+	__PERCPU_AMO_OP_CASE(.d, name, 64, amo_insn)

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

ERROR: Macros with complex values should be enclosed in parentheses
#95: FILE: arch/riscv/include/asm/percpu.h:49:
+#define PERCPU_RET_OP(name, amo_insn)					\
+	__PERCPU_AMO_RET_OP_CASE(.w, name, 32, amo_insn)		\
+	__PERCPU_AMO_RET_OP_CASE(.d, name, 64, amo_insn)

BUT SEE:

   do {} while (0) advice is over-stated in a few situations:

   The more obvious case is macros, like MODULE_PARM_DESC, invoked at
   file-scope, where C disallows code (it must be in functions).  See
   $exceptions if you have one to add by name.

   More troublesome is declarative macros used at top of new scope,
   like DECLARE_PER_CPU.  These might just compile with a do-while-0
   wrapper, but would be incorrect.  Most of these are handled by
   detecting struct,union,etc declaration primitives in $exceptions.

   Theres also macros called inside an if (block), which "return" an
   expression.  These cannot do-while, and need a ({}) wrapper.

   Enjoy this qualification while we work to improve our heuristics.

CHECK: Macro argument 'val' may be better as '(val)' to avoid precedence issues
#150: FILE: arch/riscv/include/asm/percpu.h:104:
+#define this_cpu_and_4(pcp, val)	_pcp_protect(__percpu_andnot_amo_case_32, pcp, ~val)

CHECK: Macro argument 'val' may be better as '(val)' to avoid precedence issues
#151: FILE: arch/riscv/include/asm/percpu.h:105:
+#define this_cpu_and_8(pcp, val)	_pcp_protect(__percpu_andnot_amo_case_64, pcp, ~val)

WARNING: do not add new typedefs
#170: FILE: arch/riscv/include/asm/percpu.h:124:
+	typedef typeof(pcp) pcp_op_T__;					\

total: 3 errors, 2 warnings, 2 checks, 138 lines checked

NOTE: For some of the reported defects, checkpatch may be able to
      mechanically convert to the typical style using --fix or --fix-inplace.

Commit 0058c5119e9d ("riscv: introduce percpu.h into include/asm") has style problems, please review.

NOTE: Ignored message types: ALLOC_SIZEOF_STRUCT CAMELCASE COMMIT_LOG_LONG_LINE GIT_COMMIT_ID MACRO_ARG_REUSE NO_AUTHOR_SIGN_OFF

NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.
CHECK: Macro argument 'val' may be better as '(val)' to avoid precedence issues
ERROR: Macros with complex values should be enclosed in parentheses
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
WARNING: do not add new typedefs


@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
dtb-warn-rv64
Desc: Checks for Device Tree warnings/errors
Duration: 74.64 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
header-inline
Desc: Detects static functions without inline keyword in header files
Duration: 0.23 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
kdoc
Desc: Detects for kdoc errors
Duration: 0.92 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
module-param
Desc: Detect module_param changes
Duration: 0.24 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
verify-fixes
Desc: Verifies that the Fixes: tags exist
Duration: 0.22 seconds
Result: PASS

@linux-riscv-bot

Copy link
Copy Markdown
Author

Patch 2: "[2/2] riscv: introduce percpu.h into include/asm"
verify-signedoff
Desc: Verifies that Signed-off-by: tags are correct
Duration: 0.56 seconds
Result: PASS

@linux-riscv-bot
linux-riscv-bot deleted the pw993186 branch August 27, 2025 01:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants