Skip to content

Commit 547f574

Browse files
Mathieu Chouquet-StringerJonathan Corbet
authored andcommitted
docs: Update documentation to reflect what TAINT_CPU_OUT_OF_SPEC means
Here's a patch updating the meaning of TAINT_CPU_OUT_OF_SPEC after Borislav introduced changes in a7e1f67 and upcoming patches in tip. TAINT_CPU_OUT_OF_SPEC now means a bit more what it implies as the flag isn't set just because of a CPU misconfiguration or mismatch. Historically it was for SMP kernel oops on an officially SMP incapable processor but now it also covers CPUs whose MSRs have been incorrectly poked at from userspace, drivers being used on non supported architectures, broken firmware, mismatched CPUs, ... Update documentation and script to reflect that. Signed-off-by: Mathieu Chouquet-Stringer <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jonathan Corbet <[email protected]>
1 parent 907d1f1 commit 547f574

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

Documentation/admin-guide/sysctl/kernel.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1336,7 +1336,7 @@ ORed together. The letters are seen in "Tainted" line of Oops reports.
13361336
====== ===== ==============================================================
13371337
1 `(P)` proprietary module was loaded
13381338
2 `(F)` module was force loaded
1339-
4 `(S)` SMP kernel oops on an officially SMP incapable processor
1339+
4 `(S)` kernel running on an out of specification system
13401340
8 `(R)` module was force unloaded
13411341
16 `(M)` processor reported a Machine Check Exception (MCE)
13421342
32 `(B)` bad page referenced or some unexpected page flags

Documentation/admin-guide/tainted-kernels.rst

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ Bit Log Number Reason that got the kernel tainted
8484
=== === ====== ========================================================
8585
0 G/P 1 proprietary module was loaded
8686
1 _/F 2 module was force loaded
87-
2 _/S 4 SMP kernel oops on an officially SMP incapable processor
87+
2 _/S 4 kernel running on an out of specification system
8888
3 _/R 8 module was force unloaded
8989
4 _/M 16 processor reported a Machine Check Exception (MCE)
9090
5 _/B 32 bad page referenced or some unexpected page flags
@@ -116,10 +116,23 @@ More detailed explanation for tainting
116116
1) ``F`` if any module was force loaded by ``insmod -f``, ``' '`` if all
117117
modules were loaded normally.
118118

119-
2) ``S`` if the oops occurred on an SMP kernel running on hardware that
120-
hasn't been certified as safe to run multiprocessor.
121-
Currently this occurs only on various Athlons that are not
122-
SMP capable.
119+
2) ``S`` if the kernel is running on a processor or system that is out of
120+
specification: hardware has been put into an unsupported configuration,
121+
therefore proper execution cannot be guaranteed.
122+
Kernel will be tainted if, for example:
123+
124+
- on x86: PAE is forced through forcepae on intel CPUs (such as Pentium M)
125+
which do not report PAE but may have a functional implementation, an SMP
126+
kernel is running on non officially capable SMP Athlon CPUs, MSRs are
127+
being poked at from userspace.
128+
- on arm: kernel running on certain CPUs (such as Keystone 2) without
129+
having certain kernel features enabled.
130+
- on arm64: there are mismatched hardware features between CPUs, the
131+
bootloader has booted CPUs in different modes.
132+
- certain drivers are being used on non supported architectures (such as
133+
scsi/snic on something else than x86_64, scsi/ips on non
134+
x86/x86_64/itanium, have broken firmware settings for the
135+
irqchip/irq-gic on arm64 ...).
123136

124137
3) ``R`` if a module was force unloaded by ``rmmod -f``, ``' '`` if all
125138
modules were unloaded normally.

tools/debugging/kernel-chktaint

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ if [ `expr $T % 2` -eq 0 ]; then
7272
addout " "
7373
else
7474
addout "S"
75-
echo " * SMP kernel oops on an officially SMP incapable processor (#2)"
75+
echo " * kernel running on an out of specification system (#2)"
7676
fi
7777

7878
T=`expr $T / 2`

0 commit comments

Comments
 (0)