[PATCH] riscv: drop __init from vec_check_unaligned_access_speed_all_cpus

Paul Walmsley pjw at kernel.org
Wed Jul 29 12:23:58 PDT 2026


Hi,

On Fri, 12 Jun 2026, Anirudh Srinivasan wrote:

> This function runs within a kthread and need not necessarily finish
> before system finishes boot and free_initmem() unmaps the .init.text
> section. This function makes calls to SBI for probing unaligned access
> speed, and if this is slow for some reason (say some debug prints were
> added to SBI), the kthread can still be running at this point and result
> in an instruction page fault when trying to fetch from the freed region.
> 
> [   25.642087] Unable to handle kernel paging request at virtual address ffffffff80a04ef8
> [   25.646694] Current vec_check_unali pgtable: 4K pagesize, 48-bit VAs, pgdp=0x00004000316e9000
> [   25.653170] [ffffffff80a04ef8] pgd=000010004be7e401, p4d=000010004be7e401, pud=000010004be7e001, pmd=000010000c3000e3
> [   25.661244] Oops [#1]
> [   25.662997] Modules linked in:
> [   25.665357] CPU: 3 UID: 0 PID: 42 Comm: vec_check_unali Not tainted 7.0.0-tt-blackhole-asrinivasan-00007-g30ff73f18211 #570 PREEMPTLAZY
> [   25.674669] Hardware name: Tenstorrent Blackhole (DT)
> [   25.678545] epc : vec_check_unaligned_access_speed_all_cpus+0x18/0x2c
> [   25.683458]  ra : vec_check_unaligned_access_speed_all_cpus+0x18/0x2c
> [   25.688372] epc : ffffffff80a04ef8 ra : ffffffff80a04ef8 sp : ffff8f8000203e20
> [   25.693874]  gp : ffffffff814dc168 tp : ffffaf8001ad9900 t0 : 0000000000000000
> [   25.699401]  t1 : fffffffffffffff0 t2 : ffffaf8001ad9a10 s0 : ffff8f8000203e30
> [   25.704912]  s1 : ffffaf80018dc780 a0 : 0000000000000000 a1 : 0000000000000002
> [   25.710407]  a2 : 00000000000001f0 a3 : 0000000000000018 a4 : 0000000000000000
> [   25.715917]  a5 : 0000000000000000 a6 : ffffaf8001c03d98 a7 : ffffaf8001c03e30
> [   25.721419]  s2 : ffff8f8000023c98 s3 : ffffaf8001aa1240 s4 : ffffffff80a04ee0
> [   25.726937]  s5 : 0000000000000000 s6 : 0000000000000000 s7 : 0000000000000000
> [   25.732450]  s8 : 0000000000000000 s9 : 0000000000000000 s10: 0000000000000000
> [   25.737944]  s11: 0000000000000000 t3 : 0000000000000002 t4 : 0000000000000402
> [   25.743481]  t5 : 0000000000000040 t6 : 0000000000000004 ssp : 0000000000000000
> [   25.749024] status: 0000000200000120 badaddr: ffffffff80a04ef8 cause: 000000000000000c
> [   25.755060] [<ffffffff80a04ef8>] vec_check_unaligned_access_speed_all_cpus+0x18/0x2c
> [   25.760964] [<ffffffff80047a10>] kthread+0xd8/0xfc
> [   25.764660] [<ffffffff80010c48>] ret_from_fork_kernel+0x18/0x1c4
> [   25.769220] [<ffffffff80895fe6>] ret_from_fork_kernel_asm+0x16/0x18
> [   25.774018] Code: cccc cccc cccc cccc cccc cccc cccc cccc cccc cccc (cccc) cccc
> 
> Drop __init from its signature so that this doesn't happen.

I've queued this one for v7.2-rc, since it is a narrow, targeted fix for a 
specific issue; and will plan to queue Nam's patches for v7.3.


- Paul



More information about the linux-riscv mailing list