~ [ 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-2.6.0)


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