Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/device-tree/Bindings/chosen.txt
48255 views
1
The chosen node
2
---------------
3
4
The chosen node does not represent a real device, but serves as a place
5
for passing data between firmware and the operating system, like boot
6
arguments. Data in the chosen node does not represent the hardware.
7
8
The following properties are recognized:
9
10
11
kaslr-seed
12
-----------
13
14
This property is used when booting with CONFIG_RANDOMIZE_BASE as the
15
entropy used to randomize the kernel image base address location. Since
16
it is used directly, this value is intended only for KASLR, and should
17
not be used for other purposes (as it may leak information about KASLR
18
offsets). It is parsed as a u64 value, e.g.
19
20
/ {
21
chosen {
22
kaslr-seed = <0xfeedbeef 0xc0def00d>;
23
};
24
};
25
26
Note that if this property is set from UEFI (or a bootloader in EFI
27
mode) when EFI_RNG_PROTOCOL is supported, it will be overwritten by
28
the Linux EFI stub (which will populate the property itself, using
29
EFI_RNG_PROTOCOL).
30
31
stdout-path
32
-----------
33
34
Device trees may specify the device to be used for boot console output
35
with a stdout-path property under /chosen, as described in the Devicetree
36
Specification, e.g.
37
38
/ {
39
chosen {
40
stdout-path = "/serial@f00:115200";
41
};
42
43
serial@f00 {
44
compatible = "vendor,some-uart";
45
reg = <0xf00 0x10>;
46
};
47
};
48
49
If the character ":" is present in the value, this terminates the path.
50
The meaning of any characters following the ":" is device-specific, and
51
must be specified in the relevant binding documentation.
52
53
For UART devices, the preferred binding is a string in the form:
54
55
<baud>{<parity>{<bits>{<flow>}}}
56
57
where
58
59
baud - baud rate in decimal
60
parity - 'n' (none), 'o', (odd) or 'e' (even)
61
bits - number of data bits
62
flow - 'r' (rts)
63
64
For example: 115200n8r
65
66
Implementation note: Linux will look for the property "linux,stdout-path" or
67
on PowerPC "stdout" if "stdout-path" is not found. However, the
68
"linux,stdout-path" and "stdout" properties are deprecated. New platforms
69
should only use the "stdout-path" property.
70
71
linux,booted-from-kexec
72
-----------------------
73
74
This property is set (currently only on PowerPC, and only needed on
75
book3e) by some versions of kexec-tools to tell the new kernel that it
76
is being booted by kexec, as the booting environment may differ (e.g.
77
a different secondary CPU release mechanism)
78
79
linux,usable-memory-range
80
-------------------------
81
82
This property holds a base address and size, describing a limited region in
83
which memory may be considered available for use by the kernel. Memory outside
84
of this range is not available for use.
85
86
This property describes a limitation: memory within this range is only
87
valid when also described through another mechanism that the kernel
88
would otherwise use to determine available memory (e.g. memory nodes
89
or the EFI memory map). Valid memory may be sparse within the range.
90
e.g.
91
92
/ {
93
chosen {
94
linux,usable-memory-range = <0x9 0xf0000000 0x0 0x10000000>;
95
};
96
};
97
98
The main usage is for crash dump kernel to identify its own usable
99
memory and exclude, at its boot time, any other memory areas that are
100
part of the panicked kernel's memory.
101
102
While this property does not represent a real hardware, the address
103
and the size are expressed in #address-cells and #size-cells,
104
respectively, of the root node.
105
106
linux,elfcorehdr
107
----------------
108
109
This property holds the memory range, the address and the size, of the elf
110
core header which mainly describes the panicked kernel's memory layout as
111
PT_LOAD segments of elf format.
112
e.g.
113
114
/ {
115
chosen {
116
linux,elfcorehdr = <0x9 0xfffff000 0x0 0x800>;
117
};
118
};
119
120
While this property does not represent a real hardware, the address
121
and the size are expressed in #address-cells and #size-cells,
122
respectively, of the root node.
123
124
linux,initrd-start and linux,initrd-end
125
---------------------------------------
126
127
These properties hold the physical start and end address of an initrd that's
128
loaded by the bootloader. Note that linux,initrd-start is inclusive, but
129
linux,initrd-end is exclusive.
130
e.g.
131
132
/ {
133
chosen {
134
linux,initrd-start = <0x82000000>;
135
linux,initrd-end = <0x82800000>;
136
};
137
};
138
139