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.


stdout-path property
--------------------

Device trees may specify the device to be used for boot console output
with a stdout-path property under /chosen, as described in ePAPR, 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,crashkernel-base
linux,crashkernel-size
----------------------

These properties (currently used on PowerPC and arm64) indicates
the base address and the size, respectively, of the reserved memory
range for crash dump kernel.
e.g.

/ {
	chosen {
		linux,crashkernel-base = <0x9 0xf0000000>;
		linux,crashkernel-size = <0x0 0x10000000>;
	};
};

linux,usable-memory-range
-------------------------

This property (currently used only on arm64) holds the memory range,
the base address and the size, which can be used as system ram on
the *current* kernel. Note that, if this property is present, any memory
regions under "memory" nodes in DT blob or ones marked as "conventional
memory" in EFI memory map should be ignored.
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.

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>;
	};
};
