Re: [ANNOUNCE] v5.12-rc3-rt3
From: Mike Galbraith
Date: Sun Mar 21 2021 - 04:52:09 EST
On Sat, 2021-03-20 at 09:18 +0100, Mike Galbraith wrote:
> On Fri, 2021-03-19 at 23:33 +0100, Sebastian Andrzej Siewior wrote:
> > Dear RT folks!
> >
> > I'm pleased to announce the v5.12-rc3-rt3 patch set.
>
> My little rpi4b is fairly unhappy with 5.12-rt, whereas 5.11-rt works
> fine on it. The below spew is endless, making boot endless. I turned
> it into a WARN_ON_ONCE to see if the thing would finish boot, and
> surprisingly, it seems perfectly fine with that bad idea. Having not
> the foggiest clue what I'm doing down in arm arch-land, bug is in no
> immediate danger :)
Actually, it looks like a defenseless little buglet, and this gripe
simply wants to be disabled for RT.
arm64: disable arch_faults_on_old_pte() preemptible() warning for RT
arch_faults_on_old_pte() was never called in < 5.12-rt, but 5.12 added
arch_wants_old_prefaulted_pte(), which is a wrapper thereof, and thus
finish_fault() -> do_set_pte() -> arch_wants_old_prefaulted_pte() now
calls it, in preemptible context, and a flood of complaints ensues.
Kill it for RT.
Signed-off-by: Mike Galbraith <efault@xxxxxx>
---
arch/arm64/include/asm/pgtable.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -979,7 +979,7 @@ static inline void update_mmu_cache(stru
*/
static inline bool arch_faults_on_old_pte(void)
{
- WARN_ON(preemptible());
+ WARN_ON(!IS_ENABLED(CONFIG_PREEMPT_RT) && preemptible());
return !cpu_has_hw_af();
}
>
> [ 2.216913] WARNING: CPU: 0 PID: 1 at arch/arm64/include/asm/pgtable.h:982 do_set_pte+0x1cc/0x1d4
> [ 2.216949] Modules linked in:
> [ 2.216961] CPU: 0 PID: 1 Comm: init Not tainted 5.12.0.g425ed5a-v8-rt #33
> [ 2.216973] Hardware name: Raspberry Pi 4 Model B Rev 1.4 (DT)
> [ 2.216979] pstate: 20000005 (nzCv daif -PAN -UAO -TCO BTYPE=--)
> [ 2.216990] pc : do_set_pte+0x1cc/0x1d4
> [ 2.217004] lr : filemap_map_pages+0x178/0x380
> [ 2.217016] sp : ffffffc01153bbb0
> [ 2.217020] x29: ffffffc01153bbb0 x28: fffffffe07d93080
> [ 2.217033] x27: 0000000000000000 x26: ffffff8101c9e000
> [ 2.217044] x25: ffffff8101b40fd8 x24: 0000000000000000
> [ 2.217054] x23: ffffff8101674170 x22: 0000007fb1b4b000
> [ 2.217064] x21: fffffffe07d93080 x20: ffffffc01153bcf0
> [ 2.217073] x19: 00200001f64c2fc3 x18: 0000000000000000
> [ 2.217082] x17: 0000000000000000 x16: 0000000000000000
> [ 2.217091] x15: 0000000000000000 x14: 0000000000000000
> [ 2.217100] x13: 0000000000000000 x12: 0000000000000000
> [ 2.217108] x11: 0000000000000000 x10: 0000000000000000
> [ 2.217117] x9 : ffffffc010209068 x8 : 000000000000000f
> [ 2.217126] x7 : ffffff8101e87c68 x6 : fffffffe00000000
> [ 2.217135] x5 : 0000000000101e8b x4 : ffffff8101e880a8
> [ 2.217144] x3 : 0020000000000fc3 x2 : 0000000000000000
> [ 2.217153] x1 : 0000000000000000 x0 : 0000000000000000
> [ 2.217162] Call trace:
> [ 2.217166] do_set_pte+0x1cc/0x1d4
> [ 2.217181] filemap_map_pages+0x178/0x380
> [ 2.217189] __handle_mm_fault+0x75c/0x930
> [ 2.217202] handle_mm_fault+0x178/0x25c
> [ 2.217214] do_page_fault+0x16c/0x470
> [ 2.217233] do_translation_fault+0xbc/0xd8
> [ 2.217244] do_mem_abort+0x4c/0xbc
> [ 2.217259] el0_ia+0x68/0xcc
> [ 2.217272] el0_sync_handler+0x180/0x1b0
> [ 2.217284] el0_sync+0x170/0x180