• Alexandre Ghiti's avatar
    riscv: Fix warning by declaring arch_cpu_idle() as noinstr · 8a48ea87
    Alexandre Ghiti authored
    The following warning appears when using ftrace:
    
    [89855.443413] RCU not on for: arch_cpu_idle+0x0/0x1c
    [89855.445640] WARNING: CPU: 5 PID: 0 at include/linux/trace_recursion.h:162 arch_ftrace_ops_list_func+0x208/0x228
    [89855.445824] Modules linked in: xt_conntrack(E) nft_chain_nat(E) xt_MASQUERADE(E) nf_conntrack_netlink(E) xt_addrtype(E) nft_compat(E) nf_tables(E) nfnetlink(E) br_netfilter(E) cfg80211(E) nls_iso8859_1(E) ofpart(E) redboot(E) cmdlinepart(E) cfi_cmdset_0001(E) virtio_net(E) cfi_probe(E) cfi_util(E) 9pnet_virtio(E) gen_probe(E) net_failover(E) virtio_rng(E) failover(E) 9pnet(E) physmap(E) map_funcs(E) chipreg(E) mtd(E) uio_pdrv_genirq(E) uio(E) dm_multipath(E) scsi_dh_rdac(E) scsi_dh_emc(E) scsi_dh_alua(E) drm(E) efi_pstore(E) backlight(E) ip_tables(E) x_tables(E) raid10(E) raid456(E) async_raid6_recov(E) async_memcpy(E) async_pq(E) async_xor(E) xor(E) async_tx(E) raid6_pq(E) raid1(E) raid0(E) virtio_blk(E)
    [89855.451563] CPU: 5 PID: 0 Comm: swapper/5 Tainted: G            E      6.8.0-rc6ubuntu-defconfig #2
    [89855.451726] Hardware name: riscv-virtio,qemu (DT)
    [89855.451899] epc : arch_ftrace_ops_list_func+0x208/0x228
    [89855.452016]  ra : arch_ftrace_ops_list_func+0x208/0x228
    [89855.452119] epc : ffffffff8016b216 ra : ffffffff8016b216 sp : ffffaf808090fdb0
    [89855.452171]  gp : ffffffff827c7680 tp : ffffaf808089ad40 t0 : ffffffff800c0dd8
    [89855.452216]  t1 : 0000000000000001 t2 : 0000000000000000 s0 : ffffaf808090fe30
    [89855.452306]  s1 : 0000000000000000 a0 : 0000000000000026 a1 : ffffffff82cd6ac8
    [89855.452423]  a2 : ffffffff800458c8 a3 : ffffaf80b1870640 a4 : 0000000000000000
    [89855.452646]  a5 : 0000000000000000 a6 : 00000000ffffffff a7 : ffffffffffffffff
    [89855.452698]  s2 : ffffffff82766872 s3 : ffffffff80004caa s4 : ffffffff80ebea90
    [89855.452743]  s5 : ffffaf808089bd40 s6 : 8000000a00006e00 s7 : 0000000000000008
    [89855.452787]  s8 : 0000000000002000 s9 : 0000000080043700 s10: 0000000000000000
    [89855.452831]  s11: 0000000000000000 t3 : 0000000000100000 t4 : 0000000000000064
    [89855.452874]  t5 : 000000000000000c t6 : ffffaf80b182dbfc
    [89855.452929] status: 0000000200000100 badaddr: 0000000000000000 cause: 0000000000000003
    [89855.453053] [<ffffffff8016b216>] arch_ftrace_ops_list_func+0x208/0x228
    [89855.453191] [<ffffffff8000e082>] ftrace_call+0x8/0x22
    [89855.453265] [<ffffffff800a149c>] do_idle+0x24c/0x2ca
    [89855.453357] [<ffffffff8000da54>] return_to_handler+0x0/0x26
    [89855.453429] [<ffffffff8000b716>] smp_callin+0x92/0xb6
    [89855.453785] ---[ end trace 0000000000000000 ]---
    
    To fix this, mark arch_cpu_idle() as noinstr, like it is done in commit
    a9cbc1b4 ("s390/idle: mark arch_cpu_idle() noinstr").
    Reported-by: default avatarEvgenii Shatokhin <e.shatokhin@yadro.com>
    Closes: https://lore.kernel.org/linux-riscv/51f21b87-ebed-4411-afbc-c00d3dea2bab@yadro.com/
    Fixes: cfbc4f81 ("riscv: Select ARCH_WANTS_NO_INSTR")
    Signed-off-by: default avatarAlexandre Ghiti <alexghiti@rivosinc.com>
    Reviewed-by: default avatarAndy Chiu <andy.chiu@sifive.com>
    Tested-by: default avatarAndy Chiu <andy.chiu@sifive.com>
    Acked-by: default avatarPuranjay Mohan <puranjay12@gmail.com>
    Link: https://lore.kernel.org/r/20240326203017.310422-2-alexghiti@rivosinc.comSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    8a48ea87
process.c 6.3 KB