arm: lockdep complaining about locks allocations in static memory

From: Jan Kardell
Date: Wed Mar 10 2021 - 08:55:10 EST


Hi,

During work lift the software and kernel versions on our custom TI am3352 board I started to see lockdep warnings after enabling CONFIG_PREEMT. Lockdep seems to think the memory that previously was initmem is static memory. I'm using linux 5.4, as that is what is used in the next OpenWrt version.

[ 92.198989] WARNING: CPU: 0 PID: 2015 at kernel/locking/lockdep.c:1119 alloc_netdev_mqs+0xb4/0x3b0

I guess CONFIG_PREEMT just changes the timing of allocations, and is otherwise irrelevant.

This was fixed for s390 in linux 5.2 commit 7a5da02de8d6eafba99556f8c98e5313edebb449 by adding the function arch_is_kernel_initmem_freed(). Later a very similar change was made for powerpc, and a different solution for x86. I now believe that is needed for arm as well. Though I don't know the inner workings of arm memory management so I don't know if an identical solution to s390 will do for arm, but my experiments suggests it works for am335x. The commit message for s390 says "virt == phys", but that seems not to be the case for my arm system.

//Jan