On 2025-03-15, Ryo Takakura <ryotkkr98@xxxxxxxxx> wrote: > Is the thread still active? Yes. It is one of the open issues that needs to be resolved before I repost the 8250 atomic console series. > I got the same softlockup during the test regardless of the presence > of the commits. > > [ 60.222013] watchdog: BUG: soft lockup - CPU#2 stuck for 22s! [swapper/0:1] > [ 60.222023] Modules linked in: > [ 60.222032] CPU: 2 UID: 0 PID: 1 Comm: swapper/0 Tainted: G L 6.14.0-rc6-v14-rc6-voluntary+ #4 > [ 60.222047] Tainted: [L]=SOFTLOCKUP > [ 60.222051] Hardware name: Raspberry Pi 4 Model B Rev 1.5 (DT) > [ 60.222055] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) > [ 60.222066] pc : get_random_u32+0xac/0x118 > [ 60.222081] lr : __get_random_u32_below+0x20/0x78 > [ 60.222094] sp : ffffffc08002bb80 > [ 60.222098] x29: ffffffc08002bb80 x28: 0000000000000003 x27: 0000000000000001 > [ 60.222114] x26: ffffff804112e6a4 x25: ffffffd33ed21820 x24: ffffff804112e69c > [ 60.222128] x23: 0000000000000000 x22: ffffff804112e64e x21: 0000000000000000 > [ 60.222142] x20: 000000000000000d x19: ffffff80fb7aebb8 x18: 0000000000000002 > [ 60.222156] x17: 0000000000000004 x16: ffffff804112e584 x15: ffffff8041126796 > [ 60.222169] x14: ffffff80411267c0 x13: 0000000000000006 x12: ffffff804112e5c0 > [ 60.222183] x11: ffffff804112e64c x10: 0000000000000007 x9 : ffffffd33dccdd10 > [ 60.222196] x8 : ffffff804112e6a8 x7 : 0000000000000000 x6 : 0005000400060005 > [ 60.222210] x5 : ffffff804112e65a x4 : 0000000000000000 x3 : 0000000000000010 > [ 60.222223] x2 : 0000000000000014 x1 : 000000002c7d0b7a x0 : 0000000000000013 > [ 60.222237] Call trace: > [ 60.222241] get_random_u32+0xac/0x118 (P) > [ 60.222256] __get_random_u32_below+0x20/0x78 > [ 60.222268] get_rcw_we+0x180/0x208 > [ 60.222278] test_rslib_init+0x2c8/0xba0 > [ 60.222292] do_one_initcall+0x4c/0x210 > [ 60.222303] kernel_init_freeable+0x1fc/0x3a0 > [ 60.222317] kernel_init+0x28/0x1f8 > [ 60.222327] ret_from_fork+0x10/0x20 > >> I wonder if a cond_resched() in some loop would help. Or using a > > I wasn't sure which loop would be the appropriate one but adding > cond_resched() as below worked as suggested. > > ----- BEGIN ----- > diff --git a/lib/reed_solomon/test_rslib.c b/lib/reed_solomon/test_rslib.c > index 75cb1adac..322d7b0a8 100644 > --- a/lib/reed_solomon/test_rslib.c > +++ b/lib/reed_solomon/test_rslib.c > @@ -306,6 +306,8 @@ static void test_uc(struct rs_control *rs, int len, int errs, > > if (memcmp(r, c, len * sizeof(*r))) > stat->dwrong++; > + > + cond_resched(); > } > stat->nwords += trials; > } > @@ -400,6 +402,8 @@ static void test_bc(struct rs_control *rs, int len, int errs, > } else { > stat->rfail++; > } > + > + cond_resched(); > } > stat->nwords += trials; > } > ----- END ----- > >> pseudorandom generator. I remember the problems related to much >> slower random generator, for example, see the commit >> f900fde28883602b6 ("crypto: testmgr - fix RNG performance in fuzz >> tests"). > > I haven't tested this but I'll look into it! > >> That said, I did not dig deep into the code. And I did not try to >> reproduce the softlockup. I am pretty busy at the moment with some >> other stuff. I just wanted to give it a look and share my opinion. > > I think the softlockup is rather a problem of test itself, > not the two commits. Thanks Ryo for looking into this! I think we need to have a technical explanation/understanding of the problem so that it is clear how my series triggers or exaggerates the issue. John