| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 | Tainted kernels | 
|  | 2 | --------------- | 
|  | 3 |  | 
|  | 4 | Some oops reports contain the string **'Tainted: '** after the program | 
|  | 5 | counter. This indicates that the kernel has been tainted by some | 
|  | 6 | mechanism.  The string is followed by a series of position-sensitive | 
|  | 7 | characters, each representing a particular tainted value. | 
|  | 8 |  | 
|  | 9 | 1)  ``G`` if all modules loaded have a GPL or compatible license, ``P`` if | 
|  | 10 | 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 |  | 
|  | 14 | 2)  ``F`` if any module was force loaded by ``insmod -f``, ``' '`` if all | 
|  | 15 | modules were loaded normally. | 
|  | 16 |  | 
|  | 17 | 3)  ``S`` if the oops occurred on an SMP kernel running on hardware that | 
|  | 18 | hasn't been certified as safe to run multiprocessor. | 
|  | 19 | Currently this occurs only on various Athlons that are not | 
|  | 20 | SMP capable. | 
|  | 21 |  | 
|  | 22 | 4)  ``R`` if a module was force unloaded by ``rmmod -f``, ``' '`` if all | 
|  | 23 | modules were unloaded normally. | 
|  | 24 |  | 
|  | 25 | 5)  ``M`` if any processor has reported a Machine Check Exception, | 
|  | 26 | ``' '`` if no Machine Check Exceptions have occurred. | 
|  | 27 |  | 
|  | 28 | 6)  ``B`` if a page-release function has found a bad page reference or | 
|  | 29 | some unexpected page flags. | 
|  | 30 |  | 
|  | 31 | 7)  ``U`` if a user or user application specifically requested that the | 
|  | 32 | Tainted flag be set, ``' '`` otherwise. | 
|  | 33 |  | 
|  | 34 | 8)  ``D`` if the kernel has died recently, i.e. there was an OOPS or BUG. | 
|  | 35 |  | 
|  | 36 | 9)  ``A`` if the ACPI table has been overridden. | 
|  | 37 |  | 
|  | 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 |  | 
|  | 55 | The primary reason for the **'Tainted: '** string is to tell kernel | 
|  | 56 | debuggers if this is a clean kernel or if anything unusual has | 
|  | 57 | occurred.  Tainting is permanent: even if an offending module is | 
|  | 58 | unloaded, the tainted value remains to indicate that the kernel is not | 
|  | 59 | trustworthy. |