[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