xref: /linux/Documentation/admin-guide/kernel-parameters.rst (revision 778b8ebe5192e7a7f00563a7456517dfa63e1d90)
1.. SPDX-License-Identifier: GPL-2.0
2
3.. _kernelparameters:
4
5The kernel's command-line parameters
6====================================
7
8The following is a consolidated list of the kernel parameters as implemented
9by the __setup(), early_param(), core_param() and module_param() macros
10and sorted into English Dictionary order (defined as ignoring all
11punctuation and sorting digits before letters in a case insensitive
12manner), and with descriptions where known.
13
14The kernel parses parameters from the kernel command line up to "``--``";
15if it doesn't recognize a parameter and it doesn't contain a '.', the
16parameter gets passed to init: parameters with '=' go into init's
17environment, others are passed as command line arguments to init.
18Everything after "``--``" is passed as an argument to init.
19
20Module parameters can be specified in two ways: via the kernel command
21line with a module name prefix, or via modprobe, e.g.::
22
23	(kernel command line) usbcore.blinkenlights=1
24	(modprobe command line) modprobe usbcore blinkenlights=1
25
26Parameters for modules which are built into the kernel need to be
27specified on the kernel command line.  modprobe looks through the
28kernel command line (/proc/cmdline) and collects module parameters
29when it loads a module, so the kernel command line can be used for
30loadable modules too.
31
32This document may not be entirely up to date and comprehensive. The command
33"modinfo -p ${modulename}" shows a current list of all parameters of a loadable
34module. Loadable modules, after being loaded into the running kernel, also
35reveal their parameters in /sys/module/${modulename}/parameters/. Some of these
36parameters may be changed at runtime by the command
37``echo -n ${value} > /sys/module/${modulename}/parameters/${parm}``.
38
39Special handling
40----------------
41
42Hyphens (dashes) and underscores are equivalent in parameter names, so::
43
44	log_buf_len=1M print-fatal-signals=1
45
46can also be entered as::
47
48	log-buf-len=1M print_fatal_signals=1
49
50Double-quotes can be used to protect spaces in values, e.g.::
51
52	param="spaces in here"
53
54cpu lists
55~~~~~~~~~
56
57Some kernel parameters take a list of CPUs as a value, e.g.  isolcpus,
58nohz_full, irqaffinity, rcu_nocbs.  The format of this list is:
59
60	<cpu number>,...,<cpu number>
61
62or
63
64	<cpu number>-<cpu number>
65	(must be a positive range in ascending order)
66
67or a mixture
68
69<cpu number>,...,<cpu number>-<cpu number>
70
71Note that for the special case of a range one can split the range into equal
72sized groups and for each group use some amount from the beginning of that
73group:
74
75	<cpu number>-<cpu number>:<used size>/<group size>
76
77For example one can add to the command line following parameter:
78
79	isolcpus=1,2,10-20,100-2000:2/25
80
81where the final item represents CPUs 100,101,125,126,150,151,...
82
83The value "N" can be used to represent the numerically last CPU on the system,
84i.e "foo_cpus=16-N" would be equivalent to "16-31" on a 32 core system.
85
86Keep in mind that "N" is dynamic, so if system changes cause the bitmap width
87to change, such as less cores in the CPU list, then N and any ranges using N
88will also change.  Use the same on a small 4 core system, and "16-N" becomes
89"16-3" and now the same boot input will be flagged as invalid (start > end).
90
91The special case-tolerant group name "all" has a meaning of selecting all CPUs,
92so that "nohz_full=all" is the equivalent of "nohz_full=0-N".
93
94The semantics of "N" and "all" is supported on a level of bitmaps and holds for
95all users of bitmap_parselist().
96
97Metric suffixes
98~~~~~~~~~~~~~~~
99
100The [KMG] suffix is commonly described after a number of kernel
101parameter values. 'K', 'M', 'G', 'T', 'P', and 'E' suffixes are allowed.
102These letters represent the _binary_ multipliers 'Kilo', 'Mega', 'Giga',
103'Tera', 'Peta', and 'Exa', equaling 2^10, 2^20, 2^30, 2^40, 2^50, and
1042^60 bytes respectively. Such letter suffixes can also be entirely omitted.
105
106Kernel Build Options
107--------------------
108
109The parameters listed below are only valid if certain kernel build options
110were enabled and if respective hardware is present. This list should be kept
111in alphabetical order. The text in square brackets at the beginning
112of each description states the restrictions within which a parameter
113is applicable.
114
115Parameters denoted with BOOT are actually interpreted by the boot
116loader, and have no meaning to the kernel directly.
117Do not modify the syntax of boot loader parameters without extreme
118need or coordination with <Documentation/arch/x86/boot.rst>.
119
120There are also arch-specific kernel-parameters not documented here.
121
122Note that ALL kernel parameters listed below are CASE SENSITIVE, and that
123a trailing = on the name of any parameter states that the parameter will
124be entered as an environment variable, whereas its absence indicates that
125it will appear as a kernel argument readable via /proc/cmdline by programs
126running once the system is up.
127
128The number of kernel parameters is not limited, but the length of the
129complete command line (parameters including spaces etc.) is limited to
130a fixed number of characters. This limit depends on the architecture
131and is between 256 and 4096 characters. It is defined in the file
132./include/uapi/asm-generic/setup.h as COMMAND_LINE_SIZE.
133
134.. include:: kernel-parameters.txt
135   :literal:
136