Hi Arnd, On Tue, May 19, 2020 at 1:28 PM Arnd Bergmann <arnd@xxxxxxxx> wrote: > On Tue, May 19, 2020 at 1:21 PM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > > On Tue, May 19, 2020 at 11:46 AM Russell King - ARM Linux admin > > <linux@xxxxxxxxxxxxxxx> wrote: > > > > > > > > However, something under /chosen should work. > > > > > > Yet another sticky plaster... > > > > IMHO the old masking technique is the hacky solution covered by > > plasters. > > > > DT describes the hardware. In general, where to put the kernel is a > > software policy, and thus doesn't belong in DT, except perhaps under > > /chosen. But that would open another can of worms, as people usually > > have no business in specifying where the kernel should be located. > > In the crashkernel case, there is a clear separation between memory to > > be used by the crashkernel, and memory to be solely inspected by the > > crashkernel. > > > > Devicetree Specification, Release v0.3, Section 3.4 "/memory node" says: > > > > "The client program may access memory not covered by any memory > > reservations (see section 5.3)" > > > > (Section 5.3 "Memory Reservation Block" only talks about structures in > > the FDT, not about DTS) > > > > Hence according to the above, the crashkernel is rightfully allowed to > > do whatever it wants with all memory under the /memory node. > > However, there is also > > Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt. > > This suggests the crashkernel should be passed a DTB that contains a > > /reserved-memory node, describing which memory cannot be used freely. > > Then the decompressor needs to take this into account when deciding > > where the put the kernel. > > > > Yes, the above requires changing code. But at least it provides a > > path forward, getting rid of the fragile old masking technique. > > There is an existing "linux,usable-memory-range" property documented > in Documentation/devicetree/bindings/chosen.txt, which as I understand > is exactly what you are looking for, except that it is currently only > documented for arm64. Thank you, that looks appropriate! It seems this is not really used by the early startup code. Is that because the early startup code always runs in-place, and the kernel image is not even copied? > Would extending this to arm work? Let's see.... Th arm early boot code seems to be more complex than the arm64 code ;-) Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds