Wind River Support Network


LIN5-19698 : 'empty IPI mask' reported from kernel/apic/ipi.c:109 default_send_IPI_mask_logical

Created: Nov 12, 2014    Updated: Dec 19, 2017
Resolved Date: Dec 3, 2014
Found In Version:
Fix Version:
Severity: Standard
Applicable for: Wind River Linux 5
Component/s: Kernel


Customer observed the IPI kernel warning shortly after EMGD driver initialize.
They have tracked down this kernel warning message and found that an upstream kernel addition has been added to remove the warning.

WARNING: at /opt/workspace5/Platforms/PlatformATOM_prj/bitbake_build/tmp/work/atom-wrs-linux/linux-windriver-3.4-r0.
13.1/linux/arch/x86/kernel/apic/ipi.c:109 default_send_IPI_mask_logical+0xf4/0x100()
Hardware name: Catalyst TC
empty IPI mask
Modules linked in:
Pid: 0, comm: swapper/0 Not tainted 3.4.88-rt56-WR5.0.1.17_preempt-rt #1
Call Trace:
[<c10302b3>] warn_slowpath_common+0x73/0xa0
[<c101e9d4>] ? default_send_IPI_mask_logical+0xf4/0x100

It looks like it started in 2.6 kernel (See  In addition, this was in RedHat’s database as 862560
Originally this was causing kernel crashes. I believe the WARN_ON and return came out of these efforts.

In 2013, and effort to eliminate the warning was made that resulted in a fix for 3.4.104. This is the IPI mask copy solution. (See
Linus expresses his concern about cpu mask copy here. There appears to be an issue with a corner case of the cpu mask does not get its bit array allocated.

Also in 2013, the Fedora Project made changes to ipi.c to eliminate the warnings all together. ( This is a 2.6 fix but it makes its way into 3.10.59

Official releases at 3.10.59 and above ignore empty ipi cpu masks.

diff --git a/silence-empty-ipi-mask-warning.patch b/silence-empty-ipi-mask-warning.patch
new file mode 100644
index 0000000..65a637c
--- /dev/null
+++ b/silence-empty-ipi-mask-warning.patch
@@ -0,0 +1,11 @@
+--- linux-3.6.noarch/arch/x86/kernel/apic/ipi.c~	2013-01-23 10:48:14.716069615 -0500
++++ linux-3.6.noarch/arch/x86/kernel/apic/ipi.c	2013-01-23 10:48:26.217046545 -0500
+@@ -106,7 +106,7 @@ void default_send_IPI_mask_logical(const
+ 	unsigned long mask = cpumask_bits(cpumask)[0];
+ 	unsigned long flags;
+-	if (WARN_ONCE(!mask, "empty IPI mask"))
++	if (!mask)
+ 		return;
+ 	local_irq_save(flags);

Customer's hardware is based on Eurotech Catalyst TC (IA32E->E6xx), which is very similar to the intel_atom_eg20t_pch and somewhat similar to the intel_atom_z530 target/bsp .

Other Downloads

Live chat