Re: RISC-V reserved memory problems

From: Alexandre Ghiti
Date: Thu Mar 09 2023 - 10:15:15 EST


On 3/9/23 13:51, Conor Dooley wrote:
On Thu, Mar 09, 2023 at 01:45:05PM +0100, Alexandre Ghiti wrote:
On 3/7/23 12:35, Mike Rapoport wrote:
Hi Conor,

Sorry for the delay, somehow this slipped between the cracks.

On Thu, Feb 02, 2023 at 10:01:26PM +0000, Conor Dooley wrote:
Hullo Palmer, Mike & whoever else may read this,

Just reviving this thread from a little while ago as I have been in the
area again recently...
TBH, I didn't really dig deep into the issues, but the thought I had was
what if DT was mapped via fixmap until the setup_vm_final() and then it
would be possible to call DT methods early.

Could be I'm shooting in the dark :)

I think I understand the issue now, it's because In riscv, we establish 2
different virtual mappings and we map the device tree at 2 different virtual
addresses, which is the problem.

So to me, the solution is:

- to revert your previous fix, that is calling
early_init_fdt_scan_reserved_mem() before any call to memblock_alloc()
(which could result in an allocation in the area you want to reserve)

- to map the device tree at the same virtual address, because
early_init_fdt_scan_reserved_mem() initializes reserved_mem with the dtb
mapping established in setup_vm() and uses reserved_mem with the new mapping
from setup_vm_final (which is what Mike proposes, we should use the fixmap
region to have the same virtual addresses)

Hope that makes sense: I'll come up with something this afternoon for you to
test!
Sounds good. Please give me some ELI5 commit messages if you can,
explanations for this stuff (which I found took a lot of archaeology to
understand) would be very welcome next time we need to go back looking
at this stuff.


Can you give it a try here: https://github.com/AlexGhiti/riscv-linux/commits/dev/alex/conor_dtb_fixmap_v1 ?

That works for me but I need to carefully explain and check that's correct though, not upstreamable as is.

Thanks,

Alex


Thanks Alex!
Conor.

_______________________________________________
linux-riscv mailing list
linux-riscv@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/linux-riscv