~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/admin-guide/kdump/kdump.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/admin-guide/kdump/kdump.rst (Version linux-6.12-rc7) and /Documentation/admin-guide/kdump/kdump.rst (Version linux-5.7.19)


  1 ==============================================      1 ================================================================
  2 Documentation for Kdump - The kexec-based Cras      2 Documentation for Kdump - The kexec-based Crash Dumping Solution
  3 ==============================================      3 ================================================================
  4                                                     4 
  5 This document includes overview, setup, instal !!   5 This document includes overview, setup and installation, and analysis
  6 information.                                        6 information.
  7                                                     7 
  8 Overview                                            8 Overview
  9 ========                                            9 ========
 10                                                    10 
 11 Kdump uses kexec to quickly boot to a dump-cap     11 Kdump uses kexec to quickly boot to a dump-capture kernel whenever a
 12 dump of the system kernel's memory needs to be     12 dump of the system kernel's memory needs to be taken (for example, when
 13 the system panics). The system kernel's memory     13 the system panics). The system kernel's memory image is preserved across
 14 the reboot and is accessible to the dump-captu     14 the reboot and is accessible to the dump-capture kernel.
 15                                                    15 
 16 You can use common commands, such as cp, scp o !!  16 You can use common commands, such as cp and scp, to copy the
 17 the memory image to a dump file on the local d !!  17 memory image to a dump file on the local disk, or across the network to
 18 to a remote system.                            !!  18 a remote system.
 19                                                    19 
 20 Kdump and kexec are currently supported on the !!  20 Kdump and kexec are currently supported on the x86, x86_64, ppc64, ia64,
 21 s390x, arm and arm64 architectures.                21 s390x, arm and arm64 architectures.
 22                                                    22 
 23 When the system kernel boots, it reserves a sm     23 When the system kernel boots, it reserves a small section of memory for
 24 the dump-capture kernel. This ensures that ong     24 the dump-capture kernel. This ensures that ongoing Direct Memory Access
 25 (DMA) from the system kernel does not corrupt      25 (DMA) from the system kernel does not corrupt the dump-capture kernel.
 26 The kexec -p command loads the dump-capture ke     26 The kexec -p command loads the dump-capture kernel into this reserved
 27 memory.                                            27 memory.
 28                                                    28 
 29 On x86 machines, the first 640 KB of physical  !!  29 On x86 machines, the first 640 KB of physical memory is needed to boot,
 30 regardless of where the kernel loads. For simp !!  30 regardless of where the kernel loads. Therefore, kexec backs up this
 31 low 1M is reserved to avoid any later kernel o !!  31 region just before rebooting into the dump-capture kernel.
 32 data into this area. Like this, the low 1M can !!  32 
 33 by kdump kernel without extra handling.        !!  33 Similarly on PPC64 machines first 32KB of physical memory is needed for
 34                                                !!  34 booting regardless of where the kernel is loaded and to support 64K page
 35 On PPC64 machines first 32KB of physical memor !!  35 size kexec backs up the first 64KB memory.
 36 regardless of where the kernel is loaded and t << 
 37 kexec backs up the first 64KB memory.          << 
 38                                                    36 
 39 For s390x, when kdump is triggered, the crashk     37 For s390x, when kdump is triggered, the crashkernel region is exchanged
 40 with the region [0, crashkernel region size] a     38 with the region [0, crashkernel region size] and then the kdump kernel
 41 runs in [0, crashkernel region size]. Therefor     39 runs in [0, crashkernel region size]. Therefore no relocatable kernel is
 42 needed for s390x.                                  40 needed for s390x.
 43                                                    41 
 44 All of the necessary information about the sys     42 All of the necessary information about the system kernel's core image is
 45 encoded in the ELF format, and stored in a res     43 encoded in the ELF format, and stored in a reserved area of memory
 46 before a crash. The physical address of the st     44 before a crash. The physical address of the start of the ELF header is
 47 passed to the dump-capture kernel through the      45 passed to the dump-capture kernel through the elfcorehdr= boot
 48 parameter. Optionally the size of the ELF head     46 parameter. Optionally the size of the ELF header can also be passed
 49 when using the elfcorehdr=[size[KMG]@]offset[K     47 when using the elfcorehdr=[size[KMG]@]offset[KMG] syntax.
 50                                                    48 
                                                   >>  49 
 51 With the dump-capture kernel, you can access t     50 With the dump-capture kernel, you can access the memory image through
 52 /proc/vmcore. This exports the dump as an ELF-     51 /proc/vmcore. This exports the dump as an ELF-format file that you can
 53 write out using file copy commands such as cp  !!  52 write out using file copy commands such as cp or scp. Further, you can
 54 makedumpfile utility to analyze and write out  !!  53 use analysis tools such as the GNU Debugger (GDB) and the Crash tool to
 55 options, e.g with '-d 31' it will only write o !!  54 debug the dump file. This method ensures that the dump pages are correctly
 56 you can use analysis tools such as the GNU Deb !!  55 ordered.
 57 tool to debug the dump file. This method ensur !!  56 
 58 correctly ordered.                             << 
 59                                                    57 
 60 Setup and Installation                             58 Setup and Installation
 61 ======================                             59 ======================
 62                                                    60 
 63 Install kexec-tools                                61 Install kexec-tools
 64 -------------------                                62 -------------------
 65                                                    63 
 66 1) Login as the root user.                         64 1) Login as the root user.
 67                                                    65 
 68 2) Download the kexec-tools user-space package     66 2) Download the kexec-tools user-space package from the following URL:
 69                                                    67 
 70 http://kernel.org/pub/linux/utils/kernel/kexec     68 http://kernel.org/pub/linux/utils/kernel/kexec/kexec-tools.tar.gz
 71                                                    69 
 72 This is a symlink to the latest version.           70 This is a symlink to the latest version.
 73                                                    71 
 74 The latest kexec-tools git tree is available a     72 The latest kexec-tools git tree is available at:
 75                                                    73 
 76 - git://git.kernel.org/pub/scm/utils/kernel/ke     74 - git://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git
 77 - http://www.kernel.org/pub/scm/utils/kernel/k     75 - http://www.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git
 78                                                    76 
 79 There is also a gitweb interface available at      77 There is also a gitweb interface available at
 80 http://www.kernel.org/git/?p=utils/kernel/kexe     78 http://www.kernel.org/git/?p=utils/kernel/kexec/kexec-tools.git
 81                                                    79 
 82 More information about kexec-tools can be foun     80 More information about kexec-tools can be found at
 83 http://horms.net/projects/kexec/                   81 http://horms.net/projects/kexec/
 84                                                    82 
 85 3) Unpack the tarball with the tar command, as     83 3) Unpack the tarball with the tar command, as follows::
 86                                                    84 
 87         tar xvpzf kexec-tools.tar.gz               85         tar xvpzf kexec-tools.tar.gz
 88                                                    86 
 89 4) Change to the kexec-tools directory, as fol     87 4) Change to the kexec-tools directory, as follows::
 90                                                    88 
 91         cd kexec-tools-VERSION                     89         cd kexec-tools-VERSION
 92                                                    90 
 93 5) Configure the package, as follows::             91 5) Configure the package, as follows::
 94                                                    92 
 95         ./configure                                93         ./configure
 96                                                    94 
 97 6) Compile the package, as follows::               95 6) Compile the package, as follows::
 98                                                    96 
 99         make                                       97         make
100                                                    98 
101 7) Install the package, as follows::               99 7) Install the package, as follows::
102                                                   100 
103         make install                              101         make install
104                                                   102 
105                                                   103 
106 Build the system and dump-capture kernels         104 Build the system and dump-capture kernels
107 -----------------------------------------         105 -----------------------------------------
108 There are two possible methods of using Kdump.    106 There are two possible methods of using Kdump.
109                                                   107 
110 1) Build a separate custom dump-capture kernel    108 1) Build a separate custom dump-capture kernel for capturing the
111    kernel core dump.                              109    kernel core dump.
112                                                   110 
113 2) Or use the system kernel binary itself as d    111 2) Or use the system kernel binary itself as dump-capture kernel and there is
114    no need to build a separate dump-capture ke    112    no need to build a separate dump-capture kernel. This is possible
115    only with the architectures which support a    113    only with the architectures which support a relocatable kernel. As
116    of today, i386, x86_64, ppc64, arm and arm6 !! 114    of today, i386, x86_64, ppc64, ia64, arm and arm64 architectures support
117    relocatable kernel.                            115    relocatable kernel.
118                                                   116 
119 Building a relocatable kernel is advantageous     117 Building a relocatable kernel is advantageous from the point of view that
120 one does not have to build a second kernel for    118 one does not have to build a second kernel for capturing the dump. But
121 at the same time one might want to build a cus    119 at the same time one might want to build a custom dump capture kernel
122 suitable to his needs.                            120 suitable to his needs.
123                                                   121 
124 Following are the configuration setting requir    122 Following are the configuration setting required for system and
125 dump-capture kernels for enabling kdump suppor    123 dump-capture kernels for enabling kdump support.
126                                                   124 
127 System kernel config options                      125 System kernel config options
128 ----------------------------                      126 ----------------------------
129                                                   127 
130 1) Enable "kexec system call" or "kexec file b !! 128 1) Enable "kexec system call" in "Processor type and features."::
131    "Processor type and features."::            << 
132                                                << 
133         CONFIG_KEXEC=y or CONFIG_KEXEC_FILE=y  << 
134                                                   129 
135    And both of them will select KEXEC_CORE::   !! 130         CONFIG_KEXEC=y
136                                                << 
137         CONFIG_KEXEC_CORE=y                    << 
138                                                   131 
139 2) Enable "sysfs file system support" in "File    132 2) Enable "sysfs file system support" in "Filesystem" -> "Pseudo
140    filesystems." This is usually enabled by de    133    filesystems." This is usually enabled by default::
141                                                   134 
142         CONFIG_SYSFS=y                            135         CONFIG_SYSFS=y
143                                                   136 
144    Note that "sysfs file system support" might    137    Note that "sysfs file system support" might not appear in the "Pseudo
145    filesystems" menu if "Configure standard ke !! 138    filesystems" menu if "Configure standard kernel features (for small
146    is not enabled in "General Setup." In this  !! 139    systems)" is not enabled in "General Setup." In this case, check the
147    itself to ensure that sysfs is turned on, a !! 140    .config file itself to ensure that sysfs is turned on, as follows::
148                                                   141 
149         grep 'CONFIG_SYSFS' .config               142         grep 'CONFIG_SYSFS' .config
150                                                   143 
151 3) Enable "Compile the kernel with debug info"    144 3) Enable "Compile the kernel with debug info" in "Kernel hacking."::
152                                                   145 
153         CONFIG_DEBUG_INFO=Y                       146         CONFIG_DEBUG_INFO=Y
154                                                   147 
155    This causes the kernel to be built with deb    148    This causes the kernel to be built with debug symbols. The dump
156    analysis tools require a vmlinux with debug    149    analysis tools require a vmlinux with debug symbols in order to read
157    and analyze a dump file.                       150    and analyze a dump file.
158                                                   151 
159 Dump-capture kernel config options (Arch Indep    152 Dump-capture kernel config options (Arch Independent)
160 ----------------------------------------------    153 -----------------------------------------------------
161                                                   154 
162 1) Enable "kernel crash dumps" support under "    155 1) Enable "kernel crash dumps" support under "Processor type and
163    features"::                                    156    features"::
164                                                   157 
165         CONFIG_CRASH_DUMP=y                       158         CONFIG_CRASH_DUMP=y
166                                                   159 
167    And this will select VMCORE_INFO and CRASH_ << 
168         CONFIG_VMCORE_INFO=y                   << 
169         CONFIG_CRASH_RESERVE=y                 << 
170                                                << 
171 2) Enable "/proc/vmcore support" under "Filesy    160 2) Enable "/proc/vmcore support" under "Filesystems" -> "Pseudo filesystems"::
172                                                   161 
173         CONFIG_PROC_VMCORE=y                      162         CONFIG_PROC_VMCORE=y
174                                                   163 
175    (CONFIG_PROC_VMCORE is set by default when     164    (CONFIG_PROC_VMCORE is set by default when CONFIG_CRASH_DUMP is selected.)
176                                                   165 
177 Dump-capture kernel config options (Arch Depen    166 Dump-capture kernel config options (Arch Dependent, i386 and x86_64)
178 ----------------------------------------------    167 --------------------------------------------------------------------
179                                                   168 
180 1) On i386, enable high memory support under "    169 1) On i386, enable high memory support under "Processor type and
181    features"::                                    170    features"::
182                                                   171 
183         CONFIG_HIGHMEM64G=y                       172         CONFIG_HIGHMEM64G=y
184                                                   173 
185    or::                                           174    or::
186                                                   175 
187         CONFIG_HIGHMEM4G                          176         CONFIG_HIGHMEM4G
188                                                   177 
189 2) With CONFIG_SMP=y, usually nr_cpus=1 need s !! 178 2) On i386 and x86_64, disable symmetric multi-processing support
190    command line when loading the dump-capture  !! 179    under "Processor type and features"::
191    CPU is enough for kdump kernel to dump vmco << 
192                                                   180 
193    However, you can also specify nr_cpus=X to  !! 181         CONFIG_SMP=n
194    in kdump kernel.                            << 
195                                                   182 
196    With CONFIG_SMP=n, the above things are not !! 183    (If CONFIG_SMP=y, then specify maxcpus=1 on the kernel command line
                                                   >> 184    when loading the dump-capture kernel, see section "Load the Dump-capture
                                                   >> 185    Kernel".)
197                                                   186 
198 3) A relocatable kernel is suggested to be bui !! 187 3) If one wants to build and use a relocatable kernel,
199    enable "Build a relocatable kernel" support !! 188    Enable "Build a relocatable kernel" support under "Processor type and
200    features"::                                    189    features"::
201                                                   190 
202         CONFIG_RELOCATABLE=y                      191         CONFIG_RELOCATABLE=y
203                                                   192 
204 4) Use a suitable value for "Physical address     193 4) Use a suitable value for "Physical address where the kernel is
205    loaded" (under "Processor type and features    194    loaded" (under "Processor type and features"). This only appears when
206    "kernel crash dumps" is enabled. A suitable    195    "kernel crash dumps" is enabled. A suitable value depends upon
207    whether kernel is relocatable or not.          196    whether kernel is relocatable or not.
208                                                   197 
209    If you are using a relocatable kernel use C    198    If you are using a relocatable kernel use CONFIG_PHYSICAL_START=0x100000
210    This will compile the kernel for physical a    199    This will compile the kernel for physical address 1MB, but given the fact
211    kernel is relocatable, it can be run from a    200    kernel is relocatable, it can be run from any physical address hence
212    kexec boot loader will load it in memory re    201    kexec boot loader will load it in memory region reserved for dump-capture
213    kernel.                                        202    kernel.
214                                                   203 
215    Otherwise it should be the start of memory     204    Otherwise it should be the start of memory region reserved for
216    second kernel using boot parameter "crashke    205    second kernel using boot parameter "crashkernel=Y@X". Here X is
217    start of memory region reserved for dump-ca    206    start of memory region reserved for dump-capture kernel.
218    Generally X is 16MB (0x1000000). So you can    207    Generally X is 16MB (0x1000000). So you can set
219    CONFIG_PHYSICAL_START=0x1000000                208    CONFIG_PHYSICAL_START=0x1000000
220                                                   209 
221 5) Make and install the kernel and its modules    210 5) Make and install the kernel and its modules. DO NOT add this kernel
222    to the boot loader configuration files.        211    to the boot loader configuration files.
223                                                   212 
224 Dump-capture kernel config options (Arch Depen    213 Dump-capture kernel config options (Arch Dependent, ppc64)
225 ----------------------------------------------    214 ----------------------------------------------------------
226                                                   215 
227 1) Enable "Build a kdump crash kernel" support    216 1) Enable "Build a kdump crash kernel" support under "Kernel" options::
228                                                   217 
229         CONFIG_CRASH_DUMP=y                       218         CONFIG_CRASH_DUMP=y
230                                                   219 
231 2)   Enable "Build a relocatable kernel" suppo    220 2)   Enable "Build a relocatable kernel" support::
232                                                   221 
233         CONFIG_RELOCATABLE=y                      222         CONFIG_RELOCATABLE=y
234                                                   223 
235    Make and install the kernel and its modules    224    Make and install the kernel and its modules.
236                                                   225 
                                                   >> 226 Dump-capture kernel config options (Arch Dependent, ia64)
                                                   >> 227 ----------------------------------------------------------
                                                   >> 228 
                                                   >> 229 - No specific options are required to create a dump-capture kernel
                                                   >> 230   for ia64, other than those specified in the arch independent section
                                                   >> 231   above. This means that it is possible to use the system kernel
                                                   >> 232   as a dump-capture kernel if desired.
                                                   >> 233 
                                                   >> 234   The crashkernel region can be automatically placed by the system
                                                   >> 235   kernel at run time. This is done by specifying the base address as 0,
                                                   >> 236   or omitting it all together::
                                                   >> 237 
                                                   >> 238         crashkernel=256M@0
                                                   >> 239 
                                                   >> 240   or::
                                                   >> 241 
                                                   >> 242         crashkernel=256M
                                                   >> 243 
                                                   >> 244   If the start address is specified, note that the start address of the
                                                   >> 245   kernel will be aligned to 64Mb, so if the start address is not then
                                                   >> 246   any space below the alignment point will be wasted.
                                                   >> 247 
237 Dump-capture kernel config options (Arch Depen    248 Dump-capture kernel config options (Arch Dependent, arm)
238 ----------------------------------------------    249 ----------------------------------------------------------
239                                                   250 
240 -   To use a relocatable kernel,                  251 -   To use a relocatable kernel,
241     Enable "AUTO_ZRELADDR" support under "Boot    252     Enable "AUTO_ZRELADDR" support under "Boot" options::
242                                                   253 
243         AUTO_ZRELADDR=y                           254         AUTO_ZRELADDR=y
244                                                   255 
245 Dump-capture kernel config options (Arch Depen    256 Dump-capture kernel config options (Arch Dependent, arm64)
246 ----------------------------------------------    257 ----------------------------------------------------------
247                                                   258 
248 - Please note that kvm of the dump-capture ker    259 - Please note that kvm of the dump-capture kernel will not be enabled
249   on non-VHE systems even if it is configured.    260   on non-VHE systems even if it is configured. This is because the CPU
250   will not be reset to EL2 on panic.              261   will not be reset to EL2 on panic.
251                                                   262 
252 crashkernel syntax                             !! 263 Extended crashkernel syntax
253 ===========================                       264 ===========================
254 1) crashkernel=size@offset                     << 
255                                                << 
256    Here 'size' specifies how much memory to re << 
257    and 'offset' specifies the beginning of thi << 
258    "crashkernel=64M@16M" tells the system kern << 
259    starting at physical address 0x01000000 (16 << 
260                                                << 
261    The crashkernel region can be automatically << 
262    kernel at run time. This is done by specify << 
263    or omitting it all together::               << 
264                                                << 
265          crashkernel=256M@0                    << 
266                                                << 
267    or::                                        << 
268                                                << 
269          crashkernel=256M                      << 
270                                                << 
271    If the start address is specified, note tha << 
272    kernel will be aligned to a value (which is << 
273    start address is not then any space below t << 
274    wasted.                                     << 
275                                                << 
276 2) range1:size1[,range2:size2,...][@offset]    << 
277                                                   265 
278    While the "crashkernel=size[@offset]" synta !! 266 While the "crashkernel=size[@offset]" syntax is sufficient for most
279    configurations, sometimes it's handy to hav !! 267 configurations, sometimes it's handy to have the reserved memory dependent
280    on the value of System RAM -- that's mostly !! 268 on the value of System RAM -- that's mostly for distributors that pre-setup
281    the kernel command line to avoid a unbootab !! 269 the kernel command line to avoid a unbootable system after some memory has
282    been removed from the machine.              !! 270 been removed from the machine.
283                                                   271 
284    The syntax is::                             !! 272 The syntax is::
285                                                   273 
286        crashkernel=<range1>:<size1>[,<range2>: !! 274     crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset]
287        range=start-[end]                       !! 275     range=start-[end]
288                                                   276 
289    For example::                               !! 277 For example::
290                                                   278 
291        crashkernel=512M-2G:64M,2G-:128M        !! 279     crashkernel=512M-2G:64M,2G-:128M
292                                                   280 
293    This would mean:                            !! 281 This would mean:
294                                                   282 
295        1) if the RAM is smaller than 512M, the !! 283     1) if the RAM is smaller than 512M, then don't reserve anything
296           (this is the "rescue" case)          !! 284        (this is the "rescue" case)
297        2) if the RAM size is between 512M and  !! 285     2) if the RAM size is between 512M and 2G (exclusive), then reserve 64M
298        3) if the RAM size is larger than 2G, t !! 286     3) if the RAM size is larger than 2G, then reserve 128M
299                                                   287 
300 3) crashkernel=size,high and crashkernel=size, << 
301                                                   288 
302    If memory above 4G is preferred, crashkerne << 
303    fulfill that. With it, physical memory is a << 
304    so could be above 4G if system has more tha << 
305    memory region will be allocated below 4G if << 
306                                                << 
307    When crashkernel=X,high is passed, kernel c << 
308    region above 4G, low memory under 4G is nee << 
309    three ways to get low memory:               << 
310                                                << 
311       1) Kernel will allocate at least 256M me << 
312          if crashkernel=Y,low is not specified << 
313       2) Let user specify low memory size inst << 
314       3) Specified value 0 will disable low me << 
315                                                << 
316             crashkernel=0,low                  << 
317                                                   289 
318 Boot into System Kernel                           290 Boot into System Kernel
319 -----------------------                        !! 291 =======================
                                                   >> 292 
320 1) Update the boot loader (such as grub, yaboo    293 1) Update the boot loader (such as grub, yaboot, or lilo) configuration
321    files as necessary.                            294    files as necessary.
322                                                   295 
323 2) Boot the system kernel with the boot parame !! 296 2) Boot the system kernel with the boot parameter "crashkernel=Y@X",
                                                   >> 297    where Y specifies how much memory to reserve for the dump-capture kernel
                                                   >> 298    and X specifies the beginning of this reserved memory. For example,
                                                   >> 299    "crashkernel=64M@16M" tells the system kernel to reserve 64 MB of memory
                                                   >> 300    starting at physical address 0x01000000 (16MB) for the dump-capture kernel.
324                                                   301 
325    On x86 and x86_64, use "crashkernel=Y[@X]". !! 302    On x86 and x86_64, use "crashkernel=64M@16M".
326    start address 'X' is not necessary, kernel  << 
327    area. Unless an explicit start address is e << 
328                                                   303 
329    On ppc64, use "crashkernel=128M@32M".          304    On ppc64, use "crashkernel=128M@32M".
330                                                   305 
                                                   >> 306    On ia64, 256M@256M is a generous value that typically works.
                                                   >> 307    The region may be automatically placed on ia64, see the
                                                   >> 308    dump-capture kernel config option notes above.
                                                   >> 309    If use sparse memory, the size should be rounded to GRANULE boundaries.
                                                   >> 310 
331    On s390x, typically use "crashkernel=xxM".     311    On s390x, typically use "crashkernel=xxM". The value of xx is dependent
332    on the memory consumption of the kdump syst    312    on the memory consumption of the kdump system. In general this is not
333    dependent on the memory size of the product    313    dependent on the memory size of the production system.
334                                                   314 
335    On arm, the use of "crashkernel=Y@X" is no     315    On arm, the use of "crashkernel=Y@X" is no longer necessary; the
336    kernel will automatically locate the crash     316    kernel will automatically locate the crash kernel image within the
337    first 512MB of RAM if X is not given.          317    first 512MB of RAM if X is not given.
338                                                   318 
339    On arm64, use "crashkernel=Y[@X]".  Note th    319    On arm64, use "crashkernel=Y[@X]".  Note that the start address of
340    the kernel, X if explicitly specified, must    320    the kernel, X if explicitly specified, must be aligned to 2MiB (0x200000).
341                                                   321 
342 Load the Dump-capture Kernel                      322 Load the Dump-capture Kernel
343 ============================                      323 ============================
344                                                   324 
345 After booting to the system kernel, dump-captu    325 After booting to the system kernel, dump-capture kernel needs to be
346 loaded.                                           326 loaded.
347                                                   327 
348 Based on the architecture and type of image (r    328 Based on the architecture and type of image (relocatable or not), one
349 can choose to load the uncompressed vmlinux or    329 can choose to load the uncompressed vmlinux or compressed bzImage/vmlinuz
350 of dump-capture kernel. Following is the summa    330 of dump-capture kernel. Following is the summary.
351                                                   331 
352 For i386 and x86_64:                              332 For i386 and x86_64:
353                                                   333 
354         - Use bzImage/vmlinuz if kernel is rel << 
355         - Use vmlinux if kernel is not relocat    334         - Use vmlinux if kernel is not relocatable.
                                                   >> 335         - Use bzImage/vmlinuz if kernel is relocatable.
356                                                   336 
357 For ppc64:                                        337 For ppc64:
358                                                   338 
359         - Use vmlinux                             339         - Use vmlinux
360                                                   340 
                                                   >> 341 For ia64:
                                                   >> 342 
                                                   >> 343         - Use vmlinux or vmlinuz.gz
                                                   >> 344 
361 For s390x:                                        345 For s390x:
362                                                   346 
363         - Use image or bzImage                    347         - Use image or bzImage
364                                                   348 
365 For arm:                                          349 For arm:
366                                                   350 
367         - Use zImage                              351         - Use zImage
368                                                   352 
369 For arm64:                                        353 For arm64:
370                                                   354 
371         - Use vmlinux or Image                    355         - Use vmlinux or Image
372                                                   356 
373 If you are using an uncompressed vmlinux image    357 If you are using an uncompressed vmlinux image then use following command
374 to load dump-capture kernel::                     358 to load dump-capture kernel::
375                                                   359 
376    kexec -p <dump-capture-kernel-vmlinux-image    360    kexec -p <dump-capture-kernel-vmlinux-image> \
377    --initrd=<initrd-for-dump-capture-kernel> -    361    --initrd=<initrd-for-dump-capture-kernel> --args-linux \
378    --append="root=<root-dev> <arch-specific-op    362    --append="root=<root-dev> <arch-specific-options>"
379                                                   363 
380 If you are using a compressed bzImage/vmlinuz,    364 If you are using a compressed bzImage/vmlinuz, then use following command
381 to load dump-capture kernel::                     365 to load dump-capture kernel::
382                                                   366 
383    kexec -p <dump-capture-kernel-bzImage> \       367    kexec -p <dump-capture-kernel-bzImage> \
384    --initrd=<initrd-for-dump-capture-kernel> \    368    --initrd=<initrd-for-dump-capture-kernel> \
385    --append="root=<root-dev> <arch-specific-op    369    --append="root=<root-dev> <arch-specific-options>"
386                                                   370 
387 If you are using a compressed zImage, then use    371 If you are using a compressed zImage, then use following command
388 to load dump-capture kernel::                     372 to load dump-capture kernel::
389                                                   373 
390    kexec --type zImage -p <dump-capture-kernel    374    kexec --type zImage -p <dump-capture-kernel-bzImage> \
391    --initrd=<initrd-for-dump-capture-kernel> \    375    --initrd=<initrd-for-dump-capture-kernel> \
392    --dtb=<dtb-for-dump-capture-kernel> \          376    --dtb=<dtb-for-dump-capture-kernel> \
393    --append="root=<root-dev> <arch-specific-op    377    --append="root=<root-dev> <arch-specific-options>"
394                                                   378 
395 If you are using an uncompressed Image, then u    379 If you are using an uncompressed Image, then use following command
396 to load dump-capture kernel::                     380 to load dump-capture kernel::
397                                                   381 
398    kexec -p <dump-capture-kernel-Image> \         382    kexec -p <dump-capture-kernel-Image> \
399    --initrd=<initrd-for-dump-capture-kernel> \    383    --initrd=<initrd-for-dump-capture-kernel> \
400    --append="root=<root-dev> <arch-specific-op    384    --append="root=<root-dev> <arch-specific-options>"
401                                                   385 
                                                   >> 386 Please note, that --args-linux does not need to be specified for ia64.
                                                   >> 387 It is planned to make this a no-op on that architecture, but for now
                                                   >> 388 it should be omitted
                                                   >> 389 
402 Following are the arch specific command line o    390 Following are the arch specific command line options to be used while
403 loading dump-capture kernel.                      391 loading dump-capture kernel.
404                                                   392 
405 For i386 and x86_64:                           !! 393 For i386, x86_64 and ia64:
406                                                   394 
407         "1 irqpoll nr_cpus=1 reset_devices"    !! 395         "1 irqpoll maxcpus=1 reset_devices"
408                                                   396 
409 For ppc64:                                        397 For ppc64:
410                                                   398 
411         "1 maxcpus=1 noirqdistrib reset_device    399         "1 maxcpus=1 noirqdistrib reset_devices"
412                                                   400 
413 For s390x:                                        401 For s390x:
414                                                   402 
415         "1 nr_cpus=1 cgroup_disable=memory"    !! 403         "1 maxcpus=1 cgroup_disable=memory"
416                                                   404 
417 For arm:                                          405 For arm:
418                                                   406 
419         "1 maxcpus=1 reset_devices"               407         "1 maxcpus=1 reset_devices"
420                                                   408 
421 For arm64:                                        409 For arm64:
422                                                   410 
423         "1 nr_cpus=1 reset_devices"            !! 411         "1 maxcpus=1 reset_devices"
424                                                   412 
425 Notes on loading the dump-capture kernel:         413 Notes on loading the dump-capture kernel:
426                                                   414 
427 * By default, the ELF headers are stored in EL    415 * By default, the ELF headers are stored in ELF64 format to support
428   systems with more than 4GB memory. On i386,     416   systems with more than 4GB memory. On i386, kexec automatically checks if
429   the physical RAM size exceeds the 4 GB limit    417   the physical RAM size exceeds the 4 GB limit and if not, uses ELF32.
430   So, on non-PAE systems, ELF32 is always used    418   So, on non-PAE systems, ELF32 is always used.
431                                                   419 
432   The --elf32-core-headers option can be used     420   The --elf32-core-headers option can be used to force the generation of ELF32
433   headers. This is necessary because GDB curre    421   headers. This is necessary because GDB currently cannot open vmcore files
434   with ELF64 headers on 32-bit systems.           422   with ELF64 headers on 32-bit systems.
435                                                   423 
436 * The "irqpoll" boot parameter reduces driver     424 * The "irqpoll" boot parameter reduces driver initialization failures
437   due to shared interrupts in the dump-capture    425   due to shared interrupts in the dump-capture kernel.
438                                                   426 
439 * You must specify <root-dev> in the format co    427 * You must specify <root-dev> in the format corresponding to the root
440   device name in the output of mount command.     428   device name in the output of mount command.
441                                                   429 
442 * Boot parameter "1" boots the dump-capture ke    430 * Boot parameter "1" boots the dump-capture kernel into single-user
443   mode without networking. If you want network    431   mode without networking. If you want networking, use "3".
444                                                   432 
445 * We generally don't have to bring up a SMP ke    433 * We generally don't have to bring up a SMP kernel just to capture the
446   dump. Hence generally it is useful either to    434   dump. Hence generally it is useful either to build a UP dump-capture
447   kernel or specify maxcpus=1 option while loa    435   kernel or specify maxcpus=1 option while loading dump-capture kernel.
448   Note, though maxcpus always works, you had b    436   Note, though maxcpus always works, you had better replace it with
449   nr_cpus to save memory if supported by the c    437   nr_cpus to save memory if supported by the current ARCH, such as x86.
450                                                   438 
451 * You should enable multi-cpu support in dump-    439 * You should enable multi-cpu support in dump-capture kernel if you intend
452   to use multi-thread programs with it, such a    440   to use multi-thread programs with it, such as parallel dump feature of
453   makedumpfile. Otherwise, the multi-thread pr    441   makedumpfile. Otherwise, the multi-thread program may have a great
454   performance degradation. To enable multi-cpu    442   performance degradation. To enable multi-cpu support, you should bring up an
455   SMP dump-capture kernel and specify maxcpus/ !! 443   SMP dump-capture kernel and specify maxcpus/nr_cpus, disable_cpu_apicid=[X]
                                                   >> 444   options while loading it.
456                                                   445 
457 * For s390x there are two kdump modes: If a EL    446 * For s390x there are two kdump modes: If a ELF header is specified with
458   the elfcorehdr= kernel parameter, it is used    447   the elfcorehdr= kernel parameter, it is used by the kdump kernel as it
459   is done on all other architectures. If no el    448   is done on all other architectures. If no elfcorehdr= kernel parameter is
460   specified, the s390x kdump kernel dynamicall    449   specified, the s390x kdump kernel dynamically creates the header. The
461   second mode has the advantage that for CPU a    450   second mode has the advantage that for CPU and memory hotplug, kdump has
462   not to be reloaded with kexec_load().           451   not to be reloaded with kexec_load().
463                                                   452 
464 * For s390x systems with many attached devices    453 * For s390x systems with many attached devices the "cio_ignore" kernel
465   parameter should be used for the kdump kerne    454   parameter should be used for the kdump kernel in order to prevent allocation
466   of kernel memory for devices that are not re    455   of kernel memory for devices that are not relevant for kdump. The same
467   applies to systems that use SCSI/FCP devices    456   applies to systems that use SCSI/FCP devices. In that case the
468   "allow_lun_scan" zfcp module parameter shoul    457   "allow_lun_scan" zfcp module parameter should be set to zero before
469   setting FCP devices online.                     458   setting FCP devices online.
470                                                   459 
471 Kernel Panic                                      460 Kernel Panic
472 ============                                      461 ============
473                                                   462 
474 After successfully loading the dump-capture ke    463 After successfully loading the dump-capture kernel as previously
475 described, the system will reboot into the dum    464 described, the system will reboot into the dump-capture kernel if a
476 system crash is triggered.  Trigger points are    465 system crash is triggered.  Trigger points are located in panic(),
477 die(), die_nmi() and in the sysrq handler (ALT    466 die(), die_nmi() and in the sysrq handler (ALT-SysRq-c).
478                                                   467 
479 The following conditions will execute a crash     468 The following conditions will execute a crash trigger point:
480                                                   469 
481 If a hard lockup is detected and "NMI watchdog    470 If a hard lockup is detected and "NMI watchdog" is configured, the system
482 will boot into the dump-capture kernel ( die_n    471 will boot into the dump-capture kernel ( die_nmi() ).
483                                                   472 
484 If die() is called, and it happens to be a thr    473 If die() is called, and it happens to be a thread with pid 0 or 1, or die()
485 is called inside interrupt context or die() is    474 is called inside interrupt context or die() is called and panic_on_oops is set,
486 the system will boot into the dump-capture ker    475 the system will boot into the dump-capture kernel.
487                                                   476 
488 On powerpc systems when a soft-reset is genera    477 On powerpc systems when a soft-reset is generated, die() is called by all cpus
489 and the system will boot into the dump-capture    478 and the system will boot into the dump-capture kernel.
490                                                   479 
491 For testing purposes, you can trigger a crash     480 For testing purposes, you can trigger a crash by using "ALT-SysRq-c",
492 "echo c > /proc/sysrq-trigger" or write a modu    481 "echo c > /proc/sysrq-trigger" or write a module to force the panic.
493                                                   482 
494 Write Out the Dump File                           483 Write Out the Dump File
495 =======================                           484 =======================
496                                                   485 
497 After the dump-capture kernel is booted, write    486 After the dump-capture kernel is booted, write out the dump file with
498 the following command::                           487 the following command::
499                                                   488 
500    cp /proc/vmcore <dump-file>                    489    cp /proc/vmcore <dump-file>
501                                                   490 
502 or use scp to write out the dump file between  << 
503                                                << 
504    scp /proc/vmcore remote_username@remote_ip: << 
505                                                << 
506 You can also use makedumpfile utility to write << 
507 with specified options to filter out unwanted  << 
508                                                << 
509    makedumpfile -l --message-level 1 -d 31 /pr << 
510                                                   491 
511 Analysis                                          492 Analysis
512 ========                                          493 ========
513                                                   494 
514 Before analyzing the dump image, you should re    495 Before analyzing the dump image, you should reboot into a stable kernel.
515                                                   496 
516 You can do limited analysis using GDB on the d    497 You can do limited analysis using GDB on the dump file copied out of
517 /proc/vmcore. Use the debug vmlinux built with    498 /proc/vmcore. Use the debug vmlinux built with -g and run the following
518 command::                                         499 command::
519                                                   500 
520    gdb vmlinux <dump-file>                        501    gdb vmlinux <dump-file>
521                                                   502 
522 Stack trace for the task on processor 0, regis    503 Stack trace for the task on processor 0, register display, and memory
523 display work fine.                                504 display work fine.
524                                                   505 
525 Note: GDB cannot analyze core files generated     506 Note: GDB cannot analyze core files generated in ELF64 format for x86.
526 On systems with a maximum of 4GB of memory, yo    507 On systems with a maximum of 4GB of memory, you can generate
527 ELF32-format headers using the --elf32-core-he    508 ELF32-format headers using the --elf32-core-headers kernel option on the
528 dump kernel.                                      509 dump kernel.
529                                                   510 
530 You can also use the Crash utility to analyze     511 You can also use the Crash utility to analyze dump files in Kdump
531 format. Crash is available at the following UR !! 512 format. Crash is available on Dave Anderson's site at the following URL:
532                                                << 
533    https://github.com/crash-utility/crash      << 
534                                                   513 
535 Crash document can be found at:                !! 514    http://people.redhat.com/~anderson/
536    https://crash-utility.github.io/            << 
537                                                   515 
538 Trigger Kdump on WARN()                           516 Trigger Kdump on WARN()
539 =======================                           517 =======================
540                                                   518 
541 The kernel parameter, panic_on_warn, calls pan    519 The kernel parameter, panic_on_warn, calls panic() in all WARN() paths.  This
542 will cause a kdump to occur at the panic() cal    520 will cause a kdump to occur at the panic() call.  In cases where a user wants
543 to specify this during runtime, /proc/sys/kern    521 to specify this during runtime, /proc/sys/kernel/panic_on_warn can be set to 1
544 to achieve the same behaviour.                    522 to achieve the same behaviour.
545                                                   523 
546 Trigger Kdump on add_taint()                   << 
547 ============================                   << 
548                                                << 
549 The kernel parameter panic_on_taint facilitate << 
550 from within add_taint() whenever the value set << 
551 bit flag being set by add_taint().             << 
552 This will cause a kdump to occur at the add_ta << 
553                                                << 
554 Contact                                           524 Contact
555 =======                                           525 =======
556                                                   526 
557 - kexec@lists.infradead.org                    !! 527 - Vivek Goyal (vgoyal@redhat.com)
                                                   >> 528 - Maneesh Soni (maneesh@in.ibm.com)
558                                                   529 
559 GDB macros                                        530 GDB macros
560 ==========                                        531 ==========
561                                                   532 
562 .. include:: gdbmacros.txt                        533 .. include:: gdbmacros.txt
563    :literal:                                      534    :literal:
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php