arch/mips/kernel/smp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
rcutree_report_cpu_starting() must be called on secondary CPUs before
allocating memory to avoid the following Lockdep-RCU splat when
CONFIG_PROVE_RCU_LIST=y:
WARNING: suspicious RCU usage
6.6.119-00d46e15c416-fct #1 Not tainted
-----------------------------
/kernel/locking/lockdep.c:3762 RCU-list traversed in non-reader section!!
other info that might help us debug this:
RCU used illegally from offline CPU!
rcu_scheduler_active = 1, debug_locks = 1
no locks held by swapper/1/0.
stack backtrace:
CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.6.119-00d46e15c416-fct #1
Stack : 80000000029e37d8 0000000000000000 0000000000000008 80000000029e37e8
80000000029e37e8 80000000029e3978 0000000000000000 0000000000000000
0000000000000000 0000000000000001 ffffffff80d9df38 ffffffff810e19c0
0000000000000000 0000000000000010 ffffffff80a7d140 0000000000000000
ffffffff81c20814 0000000000000000 ffffffff80da0000 0000000000000000
ffffffff80cadf38 0000000000000000 0000000000000000 80000000029ab680
72f093276415c1f3 ffffffff81c2084f ffffffff80da0000 ffffffffc0149ed8
fffffffffffffffe 80000000029e0000 80000000029e37e0 80000000029abf58
ffffffff80129fb0 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 ffffffff80129fd0 0000000000000000
...
Call Trace:
[<ffffffff80129fd0>] show_stack+0x60/0x158
[<ffffffff80a8cd84>] dump_stack_lvl+0x88/0xbc
[<ffffffff801c78f8>] lockdep_rcu_suspicious+0x1c0/0x240
[<ffffffff801cc80c>] __lock_acquire+0x121c/0x29d8
[<ffffffff801ce14c>] lock_acquire+0x184/0x448
[<ffffffff80a9ba30>] _raw_spin_lock_irqsave+0x50/0x90
[<ffffffff80367038>] ___slab_alloc+0xa08/0x1808
[<ffffffff80367e70>] __slab_alloc.isra.0+0x38/0x78
[<ffffffff8036b7d4>] __kmem_cache_alloc_node+0x35c/0x370
[<ffffffff80308ed8>] __kmalloc+0x58/0xd0
[<ffffffff80a8f064>] r4k_tlb_uniquify+0x7c/0x428
[<ffffffff80143e8c>] tlb_init+0x7c/0x110
[<ffffffff8012bdb4>] per_cpu_trap_init+0x16c/0x1d0
[<ffffffff80133258>] start_secondary+0x28/0x128
See also commit 55702ec9603e ("mips/smp: Call
rcutree_report_cpu_starting() earlier").
Fixes: 231ac951faba ("MIPS: mm: kmalloc tlb_vpn array to avoid stack overflow")
Signed-off-by: Stefan Wiehler <stefan.wiehler@nokia.com>
Cc: stable@vger.kernel.org
---
V1 -> V2: Reorder rcutree_report_cpu_starting() call in
start_secondary(), fix function name
v1: https://patchwork.kernel.org/project/linux-mips/patch/20260407083324.906742-2-stefan.wiehler@nokia.com/
---
arch/mips/kernel/smp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index 4868e79f3b30..bdb47c70d4f5 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -359,8 +359,8 @@ asmlinkage void start_secondary(void)
unsigned int cpu = raw_smp_processor_id();
cpu_probe();
- per_cpu_trap_init(false);
rcutree_report_cpu_starting(cpu);
+ per_cpu_trap_init(false);
mips_clockevent_init();
mp_ops->init_secondary();
cpu_report();
--
2.42.0
Hi, Stefan,
On Fri, Apr 10, 2026 at 12:51 AM Stefan Wiehler
<stefan.wiehler@nokia.com> wrote:
>
> rcutree_report_cpu_starting() must be called on secondary CPUs before
> allocating memory to avoid the following Lockdep-RCU splat when
> CONFIG_PROVE_RCU_LIST=y:
>
> WARNING: suspicious RCU usage
> 6.6.119-00d46e15c416-fct #1 Not tainted
> -----------------------------
> /kernel/locking/lockdep.c:3762 RCU-list traversed in non-reader section!!
>
> other info that might help us debug this:
>
> RCU used illegally from offline CPU!
> rcu_scheduler_active = 1, debug_locks = 1
> no locks held by swapper/1/0.
>
> stack backtrace:
> CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.6.119-00d46e15c416-fct #1
> Stack : 80000000029e37d8 0000000000000000 0000000000000008 80000000029e37e8
> 80000000029e37e8 80000000029e3978 0000000000000000 0000000000000000
> 0000000000000000 0000000000000001 ffffffff80d9df38 ffffffff810e19c0
> 0000000000000000 0000000000000010 ffffffff80a7d140 0000000000000000
> ffffffff81c20814 0000000000000000 ffffffff80da0000 0000000000000000
> ffffffff80cadf38 0000000000000000 0000000000000000 80000000029ab680
> 72f093276415c1f3 ffffffff81c2084f ffffffff80da0000 ffffffffc0149ed8
> fffffffffffffffe 80000000029e0000 80000000029e37e0 80000000029abf58
> ffffffff80129fb0 0000000000000000 0000000000000000 0000000000000000
> 0000000000000000 0000000000000000 ffffffff80129fd0 0000000000000000
> ...
> Call Trace:
> [<ffffffff80129fd0>] show_stack+0x60/0x158
> [<ffffffff80a8cd84>] dump_stack_lvl+0x88/0xbc
> [<ffffffff801c78f8>] lockdep_rcu_suspicious+0x1c0/0x240
> [<ffffffff801cc80c>] __lock_acquire+0x121c/0x29d8
> [<ffffffff801ce14c>] lock_acquire+0x184/0x448
> [<ffffffff80a9ba30>] _raw_spin_lock_irqsave+0x50/0x90
> [<ffffffff80367038>] ___slab_alloc+0xa08/0x1808
> [<ffffffff80367e70>] __slab_alloc.isra.0+0x38/0x78
> [<ffffffff8036b7d4>] __kmem_cache_alloc_node+0x35c/0x370
> [<ffffffff80308ed8>] __kmalloc+0x58/0xd0
> [<ffffffff80a8f064>] r4k_tlb_uniquify+0x7c/0x428
> [<ffffffff80143e8c>] tlb_init+0x7c/0x110
> [<ffffffff8012bdb4>] per_cpu_trap_init+0x16c/0x1d0
> [<ffffffff80133258>] start_secondary+0x28/0x128
>
> See also commit 55702ec9603e ("mips/smp: Call
> rcutree_report_cpu_starting() earlier").
>
> Fixes: 231ac951faba ("MIPS: mm: kmalloc tlb_vpn array to avoid stack overflow")
> Signed-off-by: Stefan Wiehler <stefan.wiehler@nokia.com>
> Cc: stable@vger.kernel.org
> ---
> V1 -> V2: Reorder rcutree_report_cpu_starting() call in
> start_secondary(), fix function name
>
> v1: https://patchwork.kernel.org/project/linux-mips/patch/20260407083324.906742-2-stefan.wiehler@nokia.com/
> ---
> arch/mips/kernel/smp.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
> index 4868e79f3b30..bdb47c70d4f5 100644
> --- a/arch/mips/kernel/smp.c
> +++ b/arch/mips/kernel/smp.c
> @@ -359,8 +359,8 @@ asmlinkage void start_secondary(void)
> unsigned int cpu = raw_smp_processor_id();
>
> cpu_probe();
> - per_cpu_trap_init(false);
> rcutree_report_cpu_starting(cpu);
> + per_cpu_trap_init(false);
Please see 5056c596c3d1848021a4eaa76ee42f4c05c50346 ("LoongArch/smp:
Call rcutree_report_cpu_starting() at tlb_init()"), maybe MIPS will
have similar issues.
Huacai
> mips_clockevent_init();
> mp_ops->init_secondary();
> cpu_report();
> --
> 2.42.0
>
>
On Thu, 9 Apr 2026, Stefan Wiehler wrote:
> rcutree_report_cpu_starting() must be called on secondary CPUs before
> allocating memory to avoid the following Lockdep-RCU splat when
> CONFIG_PROVE_RCU_LIST=y:
>
> WARNING: suspicious RCU usage
> 6.6.119-00d46e15c416-fct #1 Not tainted
> -----------------------------
> /kernel/locking/lockdep.c:3762 RCU-list traversed in non-reader section!!
I have tried to verify your change here, but the warning does not trigger
with 6.19 as released and CONFIG_SIBYTE_SWARM as the platform (2-way SMP).
$ grep CONFIG_PROVE_RCU_LIST .config
CONFIG_PROVE_RCU_LIST=y
$
Am I missing anything here, anything extra to enable?
> See also commit 55702ec9603e ("mips/smp: Call
> rcutree_report_cpu_starting() earlier").
>
> Fixes: 231ac951faba ("MIPS: mm: kmalloc tlb_vpn array to avoid stack overflow")
This does not appear to be a valid commit hash upstream; this is commit
841ecc979b18 AFAICS.
> diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
> index 4868e79f3b30..bdb47c70d4f5 100644
> --- a/arch/mips/kernel/smp.c
> +++ b/arch/mips/kernel/smp.c
> @@ -359,8 +359,8 @@ asmlinkage void start_secondary(void)
> unsigned int cpu = raw_smp_processor_id();
>
> cpu_probe();
> - per_cpu_trap_init(false);
> rcutree_report_cpu_starting(cpu);
> + per_cpu_trap_init(false);
> mips_clockevent_init();
> mp_ops->init_secondary();
> cpu_report();
As I noted in my previous message: is there any reason for cpu_probe() to
precede this call?
Maciej
> I have tried to verify your change here, but the warning does not trigger
> with 6.19 as released and CONFIG_SIBYTE_SWARM as the platform (2-way SMP).
>
> $ grep CONFIG_PROVE_RCU_LIST .config
> CONFIG_PROVE_RCU_LIST=y
> $
>
> Am I missing anything here, anything extra to enable?
I was able to reproduce this splat on latest mainline with the attached
defconfig on QEMU, which I invoked as follows:
$ qemu-system-mips64 -cpu I6400 -smp 2 -kernel vmlinux -nographic
=============================
WARNING: suspicious RCU usage
7.0.0-rc7-dirty #13 Not tainted
-----------------------------
kernel/locking/lockdep.c:3801 RCU-list traversed in non-reader section!!
other info that might help us debug this:
RCU used illegally from offline CPU!
rcu_scheduler_active = 1, debug_locks = 1
no locks held by swapper/1/0.
stack backtrace:
CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Not tainted 7.0.0-rc7-dirty #13 VOLUNTARY
Hardware name: mti,malta
Stack : a8000000021fb938 0000000000000000 0000000000000018 a8000000021fb888
a8000000021fb888 a8000000021fb9b8 0000000000000000 0000000000000000
00f87412b0603bdf 0000000000000001 0000000000000000 0000000000000000
ffffffff80f9e5b0 0000000000000000 ffffffff80abb824 000000000000001b
ffffffffffffffff 0000000000000000 0000000000000000 ffffffff80d2ea28
ffffffff80e10000 ffffffff80ccf9e0 0000000000000001 0000000000000000
0000000000000003 0000000000000000 a8000000021fb680 0000000030400080
0000000000000000 a8000000021f8000 a8000000021fb880 ffffffff80f00000
ffffffff801190dc 0000000000000000 0000000000000000 0000000000000000
0000000000000000 0000000000000000 ffffffff801190f4 00f87412b0603bdf
...
Call Trace:
[<ffffffff801190f4>] show_stack+0x5c/0x150
[<ffffffff8010eeac>] dump_stack_lvl+0xa4/0xe8
[<ffffffff801bd250>] lockdep_rcu_suspicious+0x180/0x228
[<ffffffff801c2020>] __lock_acquire+0x15b0/0x2b00
[<ffffffff801c421c>] lock_acquire+0x144/0x490
[<ffffffff80ac9e9c>] _raw_spin_lock_irqsave+0x54/0x88
[<ffffffff8031ec90>] ___slab_alloc+0x190/0x950
[<ffffffff8032282c>] __kmalloc_noprof+0x344/0x520
[<ffffffff80323d88>] __alloc_empty_sheaf+0x48/0x78
[<ffffffff80321904>] __pcs_replace_empty_main+0x4ec/0x680
[<ffffffff80322944>] __kmalloc_noprof+0x45c/0x520
[<ffffffff80abe770>] r4k_tlb_uniquify+0x58/0x2c8
[<ffffffff8013af6c>] r4k_tlb_configure+0xb4/0xd0
[<ffffffff8013c5fc>] tlb_init+0xc/0x80
[<ffffffff8011b054>] per_cpu_trap_init+0xfc/0x168
[<ffffffff80123a68>] start_secondary+0x28/0x118
[<ffffffff80125864>] mips_cps_core_boot+0x74/0x88
However, on that platform even before that you will see various Lockdep RCU
splats complaining about taking the console lock from an offline CPU
originating from c-r4k.c; one more reason to call rcutree_report_cpu_starting()
earlier.
>> See also commit 55702ec9603e ("mips/smp: Call
>> rcutree_report_cpu_starting() earlier").
>>
>> Fixes: 231ac951faba ("MIPS: mm: kmalloc tlb_vpn array to avoid stack overflow")
>
> This does not appear to be a valid commit hash upstream; this is commit
> 841ecc979b18 AFAICS.
You are right, I accidentally referenced the commit in our internal branch,
fixed in v3.
>> diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
>> index 4868e79f3b30..bdb47c70d4f5 100644
>> --- a/arch/mips/kernel/smp.c
>> +++ b/arch/mips/kernel/smp.c
>> @@ -359,8 +359,8 @@ asmlinkage void start_secondary(void)
>> unsigned int cpu = raw_smp_processor_id();
>>
>> cpu_probe();
>> - per_cpu_trap_init(false);
>> rcutree_report_cpu_starting(cpu);
>> + per_cpu_trap_init(false);
>> mips_clockevent_init();
>> mp_ops->init_secondary();
>> cpu_report();
>
> As I noted in my previous message: is there any reason for cpu_probe() to
> precede this call?
In principal, we can also make the call before cpu_probe(), however as Huacai
pointed out calling rcutree_report_cpu_starting() early is not inherently safe:
> Please see 5056c596c3d1848021a4eaa76ee42f4c05c50346 ("LoongArch/smp:
> Call rcutree_report_cpu_starting() at tlb_init()"), maybe MIPS will
> have similar issues.
I think this specific issue is not relevant for us as MIPS does not use DMW
(please correct me if I am wrong). Given cpu_probe()'s highly SoC-specific
nature, I think it should be excluded unless there is a specific reason for its
inclusion.
Kind regards,
StefanCONFIG_SYSVIPC=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_RCU_EXPERT=y
CONFIG_LOG_BUF_SHIFT=15
CONFIG_NAMESPACES=y
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_EXPERT=y
CONFIG_MIPS_MALTA=y
CONFIG_CPU_MIPS64_R6=y
CONFIG_64BIT=y
CONFIG_MIPS_CPS=y
CONFIG_NR_CPUS=2
CONFIG_HZ_100=y
CONFIG_PAGE_SIZE_16KB=y
CONFIG_COMPAT_32BIT_TIME=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_COMPAT_BRK is not set
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_XFRM_USER=m
CONFIG_NET_KEY=y
CONFIG_NET_KEY_MIGRATE=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_NET_IPIP=m
CONFIG_IP_MROUTE=y
CONFIG_IP_PIMSM_V1=y
CONFIG_IP_PIMSM_V2=y
CONFIG_SYN_COOKIES=y
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
CONFIG_TCP_MD5SIG=y
CONFIG_IPV6_ROUTER_PREF=y
CONFIG_IPV6_ROUTE_INFO=y
CONFIG_IPV6_OPTIMISTIC_DAD=y
CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
CONFIG_IPV6_TUNNEL=m
CONFIG_IPV6_MROUTE=y
CONFIG_IPV6_PIMSM_V2=y
CONFIG_NETWORK_SECMARK=y
CONFIG_NETFILTER=y
CONFIG_NF_CONNTRACK=m
CONFIG_NF_CONNTRACK_SECMARK=y
CONFIG_NF_CONNTRACK_EVENTS=y
CONFIG_NF_CONNTRACK_AMANDA=m
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_CONNTRACK_SANE=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_SECMARK=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_OWNER=m
CONFIG_NETFILTER_XT_MATCH_POLICY=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_RATEEST=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_RECENT=m
CONFIG_NETFILTER_XT_MATCH_SOCKET=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_TIME=m
CONFIG_NETFILTER_XT_MATCH_U32=m
CONFIG_IP_VS=m
CONFIG_IP_VS_IPV6=y
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_BRIDGE_NF_EBTABLES=m
CONFIG_BRIDGE_EBT_802_3=m
CONFIG_BRIDGE_EBT_AMONG=m
CONFIG_BRIDGE_EBT_ARP=m
CONFIG_BRIDGE_EBT_IP=m
CONFIG_BRIDGE_EBT_IP6=m
CONFIG_BRIDGE_EBT_LIMIT=m
CONFIG_BRIDGE_EBT_MARK=m
CONFIG_BRIDGE_EBT_PKTTYPE=m
CONFIG_BRIDGE_EBT_STP=m
CONFIG_BRIDGE_EBT_VLAN=m
CONFIG_BRIDGE_EBT_ARPREPLY=m
CONFIG_BRIDGE_EBT_DNAT=m
CONFIG_BRIDGE_EBT_MARK_T=m
CONFIG_BRIDGE_EBT_REDIRECT=m
CONFIG_BRIDGE_EBT_SNAT=m
CONFIG_BRIDGE_EBT_LOG=m
CONFIG_BRIDGE_EBT_NFLOG=m
CONFIG_IP_SCTP=m
CONFIG_BRIDGE=m
CONFIG_VLAN_8021Q=m
CONFIG_VLAN_8021Q_GVRP=y
CONFIG_ATALK=m
CONFIG_PHONET=m
CONFIG_NET_SCHED=y
CONFIG_NET_SCH_HTB=m
CONFIG_NET_SCH_HFSC=m
CONFIG_NET_SCH_PRIO=m
CONFIG_NET_SCH_RED=m
CONFIG_NET_SCH_SFQ=m
CONFIG_NET_SCH_TEQL=m
CONFIG_NET_SCH_TBF=m
CONFIG_NET_SCH_GRED=m
CONFIG_NET_SCH_NETEM=m
CONFIG_NET_SCH_INGRESS=m
CONFIG_NET_CLS_BASIC=m
CONFIG_NET_CLS_ROUTE4=m
CONFIG_NET_CLS_FW=m
CONFIG_NET_CLS_U32=m
CONFIG_NET_CLS_FLOW=m
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
CONFIG_NET_ACT_GACT=m
CONFIG_GACT_PROB=y
CONFIG_NET_ACT_MIRRED=m
CONFIG_NET_ACT_NAT=m
CONFIG_NET_ACT_PEDIT=m
CONFIG_NET_ACT_SIMP=m
CONFIG_NET_ACT_SKBEDIT=m
CONFIG_CFG80211=m
CONFIG_MAC80211=m
CONFIG_MAC80211_MESH=y
CONFIG_RFKILL=m
CONFIG_PCI=y
CONFIG_DEVTMPFS=y
CONFIG_CONNECTOR=m
CONFIG_MTD=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_OOPS=m
CONFIG_MTD_CFI=y
CONFIG_MTD_CFI_INTELEXT=y
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_CFI_STAA=y
CONFIG_MTD_UBI=m
CONFIG_MTD_UBI_GLUEBI=m
CONFIG_BLK_DEV_FD=m
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_NBD=m
CONFIG_BLK_DEV_RAM=y
CONFIG_ATA_OVER_ETH=m
CONFIG_RAID_ATTRS=m
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_CONSTANTS=y
CONFIG_SCSI_LOGGING=y
CONFIG_SCSI_SCAN_ASYNC=y
CONFIG_SCSI_FC_ATTRS=m
CONFIG_ISCSI_TCP=m
CONFIG_BLK_DEV_3W_XXXX_RAID=m
CONFIG_SCSI_3W_9XXX=m
CONFIG_SCSI_ACARD=m
CONFIG_SCSI_AACRAID=m
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_RESET_DELAY_MS=15000
# CONFIG_AIC7XXX_DEBUG_ENABLE is not set
CONFIG_ATA=y
CONFIG_ATA_PIIX=y
CONFIG_PATA_LEGACY=y
CONFIG_MD=y
CONFIG_BLK_DEV_MD=m
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID456=m
CONFIG_BLK_DEV_DM=m
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_NETDEVICES=y
CONFIG_BONDING=m
CONFIG_DUMMY=m
CONFIG_EQUALIZER=m
CONFIG_IFB=m
CONFIG_MACVLAN=m
CONFIG_TUN=m
CONFIG_VETH=m
# CONFIG_NET_VENDOR_3COM is not set
CONFIG_PCNET32=y
CONFIG_CHELSIO_T3=m
CONFIG_AX88796=m
CONFIG_NETXEN_NIC=m
CONFIG_TC35815=m
CONFIG_BROADCOM_PHY=m
CONFIG_CICADA_PHY=m
CONFIG_DAVICOM_PHY=m
CONFIG_ICPLUS_PHY=m
CONFIG_LXT_PHY=m
CONFIG_MARVELL_PHY=m
CONFIG_QSEMI_PHY=m
CONFIG_REALTEK_PHY=m
CONFIG_SMSC_PHY=m
CONFIG_VITESSE_PHY=m
CONFIG_IPW2100=m
CONFIG_IPW2100_MONITOR=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_MOUSE_PS2_ELANTECH=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_PIIX4_POWEROFF=y
CONFIG_POWER_RESET_SYSCON=y
# CONFIG_HWMON is not set
CONFIG_FB=y
CONFIG_FB_CIRRUS=y
# CONFIG_VGA_CONSOLE is not set
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_HID=m
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_CMOS=y
CONFIG_UIO=m
CONFIG_UIO_CIF=m
CONFIG_EXT2_FS=y
CONFIG_EXT4_FS=y
CONFIG_JFS_FS=m
CONFIG_JFS_POSIX_ACL=y
CONFIG_JFS_SECURITY=y
CONFIG_XFS_FS=m
CONFIG_XFS_QUOTA=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_QUOTA=y
CONFIG_QFMT_V2=y
CONFIG_FUSE_FS=m
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_UDF_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_PROC_KCORE=y
CONFIG_TMPFS=y
CONFIG_AFFS_FS=m
CONFIG_HFS_FS=m
CONFIG_HFSPLUS_FS=m
CONFIG_BEFS_FS=m
CONFIG_BFS_FS=m
CONFIG_EFS_FS=m
CONFIG_JFFS2_FS=m
CONFIG_JFFS2_FS_XATTR=y
CONFIG_JFFS2_COMPRESSION_OPTIONS=y
CONFIG_JFFS2_RUBIN=y
CONFIG_CRAMFS=m
CONFIG_VXFS_FS=m
CONFIG_MINIX_FS=m
CONFIG_ROMFS_FS=m
CONFIG_UFS_FS=m
CONFIG_NFS_FS=y
CONFIG_ROOT_NFS=y
CONFIG_NFSD=y
CONFIG_NLS_CODEPAGE_437=m
CONFIG_NLS_CODEPAGE_737=m
CONFIG_NLS_CODEPAGE_775=m
CONFIG_NLS_CODEPAGE_850=m
CONFIG_NLS_CODEPAGE_852=m
CONFIG_NLS_CODEPAGE_855=m
CONFIG_NLS_CODEPAGE_857=m
CONFIG_NLS_CODEPAGE_860=m
CONFIG_NLS_CODEPAGE_861=m
CONFIG_NLS_CODEPAGE_862=m
CONFIG_NLS_CODEPAGE_863=m
CONFIG_NLS_CODEPAGE_864=m
CONFIG_NLS_CODEPAGE_865=m
CONFIG_NLS_CODEPAGE_866=m
CONFIG_NLS_CODEPAGE_869=m
CONFIG_NLS_CODEPAGE_936=m
CONFIG_NLS_CODEPAGE_950=m
CONFIG_NLS_CODEPAGE_932=m
CONFIG_NLS_CODEPAGE_949=m
CONFIG_NLS_CODEPAGE_874=m
CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=m
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
CONFIG_NLS_ISO8859_5=m
CONFIG_NLS_ISO8859_6=m
CONFIG_NLS_ISO8859_7=m
CONFIG_NLS_ISO8859_9=m
CONFIG_NLS_ISO8859_13=m
CONFIG_NLS_ISO8859_14=m
CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_KOI8_U=m
CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_LRW=m
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_XCBC=m
CONFIG_FRAME_WARN=1280
CONFIG_PROVE_LOCKING=y
CONFIG_PROVE_RCU_LIST=y
Hi Maciej, > I was able to reproduce this splat on latest mainline with the attached > defconfig on QEMU, which I invoked as follows: > > $ qemu-system-mips64 -cpu I6400 -smp 2 -kernel vmlinux -nographic > > ============================= > WARNING: suspicious RCU usage > 7.0.0-rc7-dirty #13 Not tainted > ----------------------------- > kernel/locking/lockdep.c:3801 RCU-list traversed in non-reader section!! > > other info that might help us debug this: > > > RCU used illegally from offline CPU! > rcu_scheduler_active = 1, debug_locks = 1 > no locks held by swapper/1/0. > > stack backtrace: > CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Not tainted 7.0.0-rc7-dirty #13 VOLUNTARY > Hardware name: mti,malta > Stack : a8000000021fb938 0000000000000000 0000000000000018 a8000000021fb888 > a8000000021fb888 a8000000021fb9b8 0000000000000000 0000000000000000 > 00f87412b0603bdf 0000000000000001 0000000000000000 0000000000000000 > ffffffff80f9e5b0 0000000000000000 ffffffff80abb824 000000000000001b > ffffffffffffffff 0000000000000000 0000000000000000 ffffffff80d2ea28 > ffffffff80e10000 ffffffff80ccf9e0 0000000000000001 0000000000000000 > 0000000000000003 0000000000000000 a8000000021fb680 0000000030400080 > 0000000000000000 a8000000021f8000 a8000000021fb880 ffffffff80f00000 > ffffffff801190dc 0000000000000000 0000000000000000 0000000000000000 > 0000000000000000 0000000000000000 ffffffff801190f4 00f87412b0603bdf > ... > Call Trace: > [<ffffffff801190f4>] show_stack+0x5c/0x150 > [<ffffffff8010eeac>] dump_stack_lvl+0xa4/0xe8 > [<ffffffff801bd250>] lockdep_rcu_suspicious+0x180/0x228 > [<ffffffff801c2020>] __lock_acquire+0x15b0/0x2b00 > [<ffffffff801c421c>] lock_acquire+0x144/0x490 > [<ffffffff80ac9e9c>] _raw_spin_lock_irqsave+0x54/0x88 > [<ffffffff8031ec90>] ___slab_alloc+0x190/0x950 > [<ffffffff8032282c>] __kmalloc_noprof+0x344/0x520 > [<ffffffff80323d88>] __alloc_empty_sheaf+0x48/0x78 > [<ffffffff80321904>] __pcs_replace_empty_main+0x4ec/0x680 > [<ffffffff80322944>] __kmalloc_noprof+0x45c/0x520 > [<ffffffff80abe770>] r4k_tlb_uniquify+0x58/0x2c8 > [<ffffffff8013af6c>] r4k_tlb_configure+0xb4/0xd0 > [<ffffffff8013c5fc>] tlb_init+0xc/0x80 > [<ffffffff8011b054>] per_cpu_trap_init+0xfc/0x168 > [<ffffffff80123a68>] start_secondary+0x28/0x118 > [<ffffffff80125864>] mips_cps_core_boot+0x74/0x88 > > However, on that platform even before that you will see various Lockdep RCU > splats complaining about taking the console lock from an offline CPU > originating from c-r4k.c; one more reason to call rcutree_report_cpu_starting() > earlier. Have you been able to reproduce the issue with above hints? Kind regards, Stefan
Hi Maciej, > I was able to reproduce this splat on latest mainline with the attached > defconfig on QEMU, which I invoked as follows: > > $ qemu-system-mips64 -cpu I6400 -smp 2 -kernel vmlinux -nographic > > ============================= > WARNING: suspicious RCU usage > 7.0.0-rc7-dirty #13 Not tainted > ----------------------------- > kernel/locking/lockdep.c:3801 RCU-list traversed in non-reader section!! > > other info that might help us debug this: > > > RCU used illegally from offline CPU! > rcu_scheduler_active = 1, debug_locks = 1 > no locks held by swapper/1/0. > > stack backtrace: > CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Not tainted 7.0.0-rc7-dirty #13 VOLUNTARY > Hardware name: mti,malta > Stack : a8000000021fb938 0000000000000000 0000000000000018 a8000000021fb888 > a8000000021fb888 a8000000021fb9b8 0000000000000000 0000000000000000 > 00f87412b0603bdf 0000000000000001 0000000000000000 0000000000000000 > ffffffff80f9e5b0 0000000000000000 ffffffff80abb824 000000000000001b > ffffffffffffffff 0000000000000000 0000000000000000 ffffffff80d2ea28 > ffffffff80e10000 ffffffff80ccf9e0 0000000000000001 0000000000000000 > 0000000000000003 0000000000000000 a8000000021fb680 0000000030400080 > 0000000000000000 a8000000021f8000 a8000000021fb880 ffffffff80f00000 > ffffffff801190dc 0000000000000000 0000000000000000 0000000000000000 > 0000000000000000 0000000000000000 ffffffff801190f4 00f87412b0603bdf > ... > Call Trace: > [<ffffffff801190f4>] show_stack+0x5c/0x150 > [<ffffffff8010eeac>] dump_stack_lvl+0xa4/0xe8 > [<ffffffff801bd250>] lockdep_rcu_suspicious+0x180/0x228 > [<ffffffff801c2020>] __lock_acquire+0x15b0/0x2b00 > [<ffffffff801c421c>] lock_acquire+0x144/0x490 > [<ffffffff80ac9e9c>] _raw_spin_lock_irqsave+0x54/0x88 > [<ffffffff8031ec90>] ___slab_alloc+0x190/0x950 > [<ffffffff8032282c>] __kmalloc_noprof+0x344/0x520 > [<ffffffff80323d88>] __alloc_empty_sheaf+0x48/0x78 > [<ffffffff80321904>] __pcs_replace_empty_main+0x4ec/0x680 > [<ffffffff80322944>] __kmalloc_noprof+0x45c/0x520 > [<ffffffff80abe770>] r4k_tlb_uniquify+0x58/0x2c8 > [<ffffffff8013af6c>] r4k_tlb_configure+0xb4/0xd0 > [<ffffffff8013c5fc>] tlb_init+0xc/0x80 > [<ffffffff8011b054>] per_cpu_trap_init+0xfc/0x168 > [<ffffffff80123a68>] start_secondary+0x28/0x118 > [<ffffffff80125864>] mips_cps_core_boot+0x74/0x88 > > However, on that platform even before that you will see various Lockdep RCU > splats complaining about taking the console lock from an offline CPU > originating from c-r4k.c; one more reason to call rcutree_report_cpu_starting() > earlier. Any chance we could conclude on this topic? Kind regards, Stefan
Hi Stefan, > > I was able to reproduce this splat on latest mainline with the attached > > defconfig on QEMU, which I invoked as follows: > > > > $ qemu-system-mips64 -cpu I6400 -smp 2 -kernel vmlinux -nographic [...] > > Any chance we could conclude on this topic? I'm afraid I have no QEMU installation ready to use, so I can't reproduce your steps without getting sidetracked. Would you be able to explain why it triggers with QEMU and possibly the I6400 CPU in particular, but not on real SMP hardware I have? From your commit description I infer this isn't supposed to be a heisenbug. Maciej
© 2016 - 2026 Red Hat, Inc.