blob: 28a869c509a0c076eec476ad01bc79657441c766 [file] [log] [blame]
Mauro Carvalho Chehab337c1882016-11-07 17:03:18 -02001Tainted kernels
2---------------
3
4Some oops reports contain the string **'Tainted: '** after the program
5counter. This indicates that the kernel has been tainted by some
6mechanism. The string is followed by a series of position-sensitive
7characters, each representing a particular tainted value.
8
Jonathan Neuschäferb57c8472018-02-13 23:36:51 +01009 1) ``G`` if all modules loaded have a GPL or compatible license, ``P`` if
Mauro Carvalho Chehab337c1882016-11-07 17:03:18 -020010 any proprietary module has been loaded. Modules without a
11 MODULE_LICENSE or with a MODULE_LICENSE that is not recognised by
12 insmod as GPL compatible are assumed to be proprietary.
13
Jonathan Neuschäferb57c8472018-02-13 23:36:51 +010014 2) ``F`` if any module was force loaded by ``insmod -f``, ``' '`` if all
Mauro Carvalho Chehab337c1882016-11-07 17:03:18 -020015 modules were loaded normally.
16
Jonathan Neuschäferb57c8472018-02-13 23:36:51 +010017 3) ``S`` if the oops occurred on an SMP kernel running on hardware that
Mauro Carvalho Chehab337c1882016-11-07 17:03:18 -020018 hasn't been certified as safe to run multiprocessor.
19 Currently this occurs only on various Athlons that are not
20 SMP capable.
21
Jonathan Neuschäferb57c8472018-02-13 23:36:51 +010022 4) ``R`` if a module was force unloaded by ``rmmod -f``, ``' '`` if all
Mauro Carvalho Chehab337c1882016-11-07 17:03:18 -020023 modules were unloaded normally.
24
Jonathan Neuschäferb57c8472018-02-13 23:36:51 +010025 5) ``M`` if any processor has reported a Machine Check Exception,
Mauro Carvalho Chehab337c1882016-11-07 17:03:18 -020026 ``' '`` if no Machine Check Exceptions have occurred.
27
Jonathan Neuschäferb57c8472018-02-13 23:36:51 +010028 6) ``B`` if a page-release function has found a bad page reference or
Mauro Carvalho Chehab337c1882016-11-07 17:03:18 -020029 some unexpected page flags.
30
Jonathan Neuschäferb57c8472018-02-13 23:36:51 +010031 7) ``U`` if a user or user application specifically requested that the
Mauro Carvalho Chehab337c1882016-11-07 17:03:18 -020032 Tainted flag be set, ``' '`` otherwise.
33
Jonathan Neuschäferb57c8472018-02-13 23:36:51 +010034 8) ``D`` if the kernel has died recently, i.e. there was an OOPS or BUG.
Mauro Carvalho Chehab337c1882016-11-07 17:03:18 -020035
Jonathan Neuschäferb57c8472018-02-13 23:36:51 +010036 9) ``A`` if the ACPI table has been overridden.
Mauro Carvalho Chehab337c1882016-11-07 17:03:18 -020037
38 10) ``W`` if a warning has previously been issued by the kernel.
39 (Though some warnings may set more specific taint flags.)
40
41 11) ``C`` if a staging driver has been loaded.
42
43 12) ``I`` if the kernel is working around a severe bug in the platform
44 firmware (BIOS or similar).
45
46 13) ``O`` if an externally-built ("out-of-tree") module has been loaded.
47
48 14) ``E`` if an unsigned module has been loaded in a kernel supporting
49 module signature.
50
51 15) ``L`` if a soft lockup has previously occurred on the system.
52
53 16) ``K`` if the kernel has been live patched.
54
55The primary reason for the **'Tainted: '** string is to tell kernel
56debuggers if this is a clean kernel or if anything unusual has
57occurred. Tainting is permanent: even if an offending module is
58unloaded, the tainted value remains to indicate that the kernel is not
59trustworthy.