On Thu, Mar 09, 2023 at 04:12:57PM +0100, Alexandre Ghiti wrote: > 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. Hey Alex, So I ended up being pretty sick & had to take a week off. I gave this an initial spin today & it appears to work. I'll take it for a longer test-drive when you send a "real" patch for it, but I tested both the lookup by name & the situation that was allocating in reserved memory and both were not an issue. Thanks for working on this, Conor.
Attachment:
signature.asc
Description: PGP signature