mirror of
https://github.com/torvalds/linux.git
synced 2024-11-20 02:51:44 +00:00
e5bc0c37c9
Document the /chosen/kaslr-seed property (and its interaction with the EFI_RNG_PROTOCOL API). Thanks to Ard for clarifications. Signed-off-by: Kees Cook <keescook@chromium.org> Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Rob Herring <robh@kernel.org>
123 lines
3.6 KiB
Plaintext
123 lines
3.6 KiB
Plaintext
The chosen node
|
|
---------------
|
|
|
|
The chosen node does not represent a real device, but serves as a place
|
|
for passing data between firmware and the operating system, like boot
|
|
arguments. Data in the chosen node does not represent the hardware.
|
|
|
|
The following properties are recognized:
|
|
|
|
|
|
kaslr-seed
|
|
-----------
|
|
|
|
This property is used when booting with CONFIG_RANDOMIZE_BASE as the
|
|
entropy used to randomize the kernel image base address location. Since
|
|
it is used directly, this value is intended only for KASLR, and should
|
|
not be used for other purposes (as it may leak information about KASLR
|
|
offsets). It is parsed as a u64 value, e.g.
|
|
|
|
/ {
|
|
chosen {
|
|
kaslr-seed = <0xfeedbeef 0xc0def00d>;
|
|
};
|
|
};
|
|
|
|
Note that if this property is set from UEFI (or a bootloader in EFI
|
|
mode) when EFI_RNG_PROTOCOL is supported, it will be overwritten by
|
|
the Linux EFI stub (which will populate the property itself, using
|
|
EFI_RNG_PROTOCOL).
|
|
|
|
stdout-path
|
|
-----------
|
|
|
|
Device trees may specify the device to be used for boot console output
|
|
with a stdout-path property under /chosen, as described in the Devicetree
|
|
Specification, e.g.
|
|
|
|
/ {
|
|
chosen {
|
|
stdout-path = "/serial@f00:115200";
|
|
};
|
|
|
|
serial@f00 {
|
|
compatible = "vendor,some-uart";
|
|
reg = <0xf00 0x10>;
|
|
};
|
|
};
|
|
|
|
If the character ":" is present in the value, this terminates the path.
|
|
The meaning of any characters following the ":" is device-specific, and
|
|
must be specified in the relevant binding documentation.
|
|
|
|
For UART devices, the preferred binding is a string in the form:
|
|
|
|
<baud>{<parity>{<bits>{<flow>}}}
|
|
|
|
where
|
|
|
|
baud - baud rate in decimal
|
|
parity - 'n' (none), 'o', (odd) or 'e' (even)
|
|
bits - number of data bits
|
|
flow - 'r' (rts)
|
|
|
|
For example: 115200n8r
|
|
|
|
Implementation note: Linux will look for the property "linux,stdout-path" or
|
|
on PowerPC "stdout" if "stdout-path" is not found. However, the
|
|
"linux,stdout-path" and "stdout" properties are deprecated. New platforms
|
|
should only use the "stdout-path" property.
|
|
|
|
linux,booted-from-kexec
|
|
-----------------------
|
|
|
|
This property is set (currently only on PowerPC, and only needed on
|
|
book3e) by some versions of kexec-tools to tell the new kernel that it
|
|
is being booted by kexec, as the booting environment may differ (e.g.
|
|
a different secondary CPU release mechanism)
|
|
|
|
linux,usable-memory-range
|
|
-------------------------
|
|
|
|
This property (arm64 only) holds a base address and size, describing a
|
|
limited region in which memory may be considered available for use by
|
|
the kernel. Memory outside of this range is not available for use.
|
|
|
|
This property describes a limitation: memory within this range is only
|
|
valid when also described through another mechanism that the kernel
|
|
would otherwise use to determine available memory (e.g. memory nodes
|
|
or the EFI memory map). Valid memory may be sparse within the range.
|
|
e.g.
|
|
|
|
/ {
|
|
chosen {
|
|
linux,usable-memory-range = <0x9 0xf0000000 0x0 0x10000000>;
|
|
};
|
|
};
|
|
|
|
The main usage is for crash dump kernel to identify its own usable
|
|
memory and exclude, at its boot time, any other memory areas that are
|
|
part of the panicked kernel's memory.
|
|
|
|
While this property does not represent a real hardware, the address
|
|
and the size are expressed in #address-cells and #size-cells,
|
|
respectively, of the root node.
|
|
|
|
linux,elfcorehdr
|
|
----------------
|
|
|
|
This property (currently used only on arm64) holds the memory range,
|
|
the address and the size, of the elf core header which mainly describes
|
|
the panicked kernel's memory layout as PT_LOAD segments of elf format.
|
|
e.g.
|
|
|
|
/ {
|
|
chosen {
|
|
linux,elfcorehdr = <0x9 0xfffff000 0x0 0x800>;
|
|
};
|
|
};
|
|
|
|
While this property does not represent a real hardware, the address
|
|
and the size are expressed in #address-cells and #size-cells,
|
|
respectively, of the root node.
|