6aeadf7896
brings some order to the documentation directory, declutters the top-level directory, and makes the documentation organization more closely match that of the source. -----BEGIN PGP SIGNATURE----- iQFDBAABCAAtFiEEIw+MvkEiF49krdp9F0NaE2wMflgFAmSbDsIPHGNvcmJldEBs d24ubmV0AAoJEBdDWhNsDH5Y+ksH/2Xqun1ipPvu66+bBdPIf8N9AVFatl2q3mt4 tgX3A4RH3Ejklb4GbRLOIP23PmCxt7LRv4P05ttw8VpTP3A+Cw1d1s2RxiXGvfDE j7IW6hrpUmVoDdiDCRGtjdIa7MVI5aAsj8CCTjEFywGi5CQe0Uzq4aTUKoxJDEnu GYVy2CwDNEt4GTQ6ClPpFx2rc4UZf/H2XqXsnod9ef8A5Nkt3EtgoS1hh3o1QZGA Mqx2HAOVS1tb6GUVUbVLCdj40+YjBLjXFlsH4dA+wsFFdUlZLKuTesdiAMg2X6eT E8C/6oRT+OiWbrnXUTJEn8z98Ds8VHn7D4n97O9bIQ+R9AFtmPI= =H/+D -----END PGP SIGNATURE----- Merge tag 'docs-arm64-move' of git://git.lwn.net/linux Pull arm64 documentation move from Jonathan Corbet: "Move the arm64 architecture documentation under Documentation/arch/. This brings some order to the documentation directory, declutters the top-level directory, and makes the documentation organization more closely match that of the source" * tag 'docs-arm64-move' of git://git.lwn.net/linux: perf arm-spe: Fix a dangling Documentation/arm64 reference mm: Fix a dangling Documentation/arm64 reference arm64: Fix dangling references to Documentation/arm64 dt-bindings: fix dangling Documentation/arm64 reference docs: arm64: Move arm64 documentation under Documentation/arch/
93 lines
3.4 KiB
ReStructuredText
93 lines
3.4 KiB
ReStructuredText
=======================================
|
|
crashkernel memory reservation on arm64
|
|
=======================================
|
|
|
|
Author: Baoquan He <bhe@redhat.com>
|
|
|
|
Kdump mechanism is used to capture a corrupted kernel vmcore so that
|
|
it can be subsequently analyzed. In order to do this, a preliminarily
|
|
reserved memory is needed to pre-load the kdump kernel and boot such
|
|
kernel if corruption happens.
|
|
|
|
That reserved memory for kdump is adapted to be able to minimally
|
|
accommodate the kdump kernel and the user space programs needed for the
|
|
vmcore collection.
|
|
|
|
Kernel parameter
|
|
================
|
|
|
|
Through the kernel parameters below, memory can be reserved accordingly
|
|
during the early stage of the first kernel booting so that a continuous
|
|
large chunk of memomy can be found. The low memory reservation needs to
|
|
be considered if the crashkernel is reserved from the high memory area.
|
|
|
|
- crashkernel=size@offset
|
|
- crashkernel=size
|
|
- crashkernel=size,high crashkernel=size,low
|
|
|
|
Low memory and high memory
|
|
==========================
|
|
|
|
For kdump reservations, low memory is the memory area under a specific
|
|
limit, usually decided by the accessible address bits of the DMA-capable
|
|
devices needed by the kdump kernel to run. Those devices not related to
|
|
vmcore dumping can be ignored. On arm64, the low memory upper bound is
|
|
not fixed: it is 1G on the RPi4 platform but 4G on most other systems.
|
|
On special kernels built with CONFIG_ZONE_(DMA|DMA32) disabled, the
|
|
whole system RAM is low memory. Outside of the low memory described
|
|
above, the rest of system RAM is considered high memory.
|
|
|
|
Implementation
|
|
==============
|
|
|
|
1) crashkernel=size@offset
|
|
--------------------------
|
|
|
|
The crashkernel memory must be reserved at the user-specified region or
|
|
fail if already occupied.
|
|
|
|
|
|
2) crashkernel=size
|
|
-------------------
|
|
|
|
The crashkernel memory region will be reserved in any available position
|
|
according to the search order:
|
|
|
|
Firstly, the kernel searches the low memory area for an available region
|
|
with the specified size.
|
|
|
|
If searching for low memory fails, the kernel falls back to searching
|
|
the high memory area for an available region of the specified size. If
|
|
the reservation in high memory succeeds, a default size reservation in
|
|
the low memory will be done. Currently the default size is 128M,
|
|
sufficient for the low memory needs of the kdump kernel.
|
|
|
|
Note: crashkernel=size is the recommended option for crashkernel kernel
|
|
reservations. The user would not need to know the system memory layout
|
|
for a specific platform.
|
|
|
|
3) crashkernel=size,high crashkernel=size,low
|
|
---------------------------------------------
|
|
|
|
crashkernel=size,(high|low) are an important supplement to
|
|
crashkernel=size. They allows the user to specify how much memory needs
|
|
to be allocated from the high memory and low memory respectively. On
|
|
many systems the low memory is precious and crashkernel reservations
|
|
from this area should be kept to a minimum.
|
|
|
|
To reserve memory for crashkernel=size,high, searching is first
|
|
attempted from the high memory region. If the reservation succeeds, the
|
|
low memory reservation will be done subsequently.
|
|
|
|
If reservation from the high memory failed, the kernel falls back to
|
|
searching the low memory with the specified size in crashkernel=,high.
|
|
If it succeeds, no further reservation for low memory is needed.
|
|
|
|
Notes:
|
|
|
|
- If crashkernel=,low is not specified, the default low memory
|
|
reservation will be done automatically.
|
|
|
|
- if crashkernel=0,low is specified, it means that the low memory
|
|
reservation is omitted intentionally.
|