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. Would extending this to arm work? Arnd