Message ID | 20200329105752.GA8804@duo.ucw.cz (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | 4.4-rt: Need testing on arm32 | expand |
Hi! > I tried to prepare next 4.4-rt release. I have code ready, but while > running tests I realized that only two targets are used to run them. > > We 4.19-rt has known bugs breaking boot on de0-nano (and probably > other) boards, and according to code inspection, same bug is present > in 4.4-rt. Fix is not complex, but I'm not comfortable applying it > without _any_ testing. > > If I'm right, 4.4-rt should be broken on socfpga boards (arm32) in > non-realtime configuration; it should panic on boot in cca 50% of > cases. Patch below should fix it. And I pushed code _without_ the patch to kernel.org, To gitolite.kernel.org:pub/scm/linux/kernel/git/cip/linux-cip.git 924af895a033..fbc533f445d2 linux-4.4.y-cip-rt -> linux-4.4.y-cip-rt Best regards, Pavel
diff --git a/kernel/irq_work.c b/kernel/irq_work.c index 2899ba0d23d1..19896e6f1b2a 100644 --- a/kernel/irq_work.c +++ b/kernel/irq_work.c @@ -78,7 +78,8 @@ bool irq_work_queue_on(struct irq_work *work, int cpu) if (!irq_work_claim(work)) return false; - if (IS_ENABLED(CONFIG_PREEMPT_RT_FULL) && !(work->flags & IRQ_WORK_HARD_IRQ)) + if ((IS_ENABLED(CONFIG_PREEMPT_RT_FULL) && !(work->flags & IRQ_WORK_HARD_IRQ)) + || (work->flags & IRQ_WORK_LAZY)) list = &per_cpu(lazy_list, cpu); else list = &per_cpu(raised_list, cpu);
Hi! I tried to prepare next 4.4-rt release. I have code ready, but while running tests I realized that only two targets are used to run them. We 4.19-rt has known bugs breaking boot on de0-nano (and probably other) boards, and according to code inspection, same bug is present in 4.4-rt. Fix is not complex, but I'm not comfortable applying it without _any_ testing. If I'm right, 4.4-rt should be broken on socfpga boards (arm32) in non-realtime configuration; it should panic on boot in cca 50% of cases. Patch below should fix it. Best regards, Pavel commit 20124aef8572b764ffd90d836253153102c763c5 Author: Pavel Machek <pavel@ucw.cz> Date: Sat Mar 21 22:58:43 2020 +0100 With -rt tree but prempt-rt not enabled, de0-nano was getting failures during boot, such as this: https://lava.ciplatform.org/scheduler/job/13037 [ 6.813352] Freeing unused kernel memory: 1024K [ 6.817927] Unable to handle kernel paging request at virtual address e7fddef0 [ 6.825121] pgd = (ptrval) [ 6.827816] [e7fddef0] *pgd=27e1141e(bad) [ 6.831818] Internal error: Oops: 8000000d [#1] SMP ARM [ 6.837019] Modules linked in: [ 6.840067] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.19.106-cip21-gc82fe0af5 #1 [ 6.847601] Hardware name: Altera SOCFPGA [ 6.851596] PC is at 0xe7fddef0 [ 6.854733] LR is at irq_work_run_list+0x84/0xc0 Bisect revealed fc9f4631a290 is the problematic commit, and some code auditing revealed that it is working with wrong list. Fix it. Signed-off-by: Pavel Machek <pavel@denx.de> Fixes: fc9f4631a290 ("irqwork: push most work into softirq context")