On 12/6/2023 1:31 PM, Rob Herring wrote: > On Mon, Dec 04, 2023 at 10:54:05AM -0800, Oreoluwa Babatunde wrote: >> Switch call to unflatten_device_tree() to after paging_init() on other >> archs to follow new order in which the reserved_mem regions are >> processed. > You did this so that you could allocate memory for the reserved regions. > But unflatten_device_tree() can already do allocations using memblock. > So the same thing should work for you. > > I suspect that moving this will break any arch that called an of_* API > between the original call and the new call location. > > Rob Hi Rob, Thank you for your feedback. You are correct, I see that unflatten_device_tree() is allocating memory from memblock and writing to it before paging_init() is called on these other architectures. This series will still require fdt_init_reserved_mem() to be called after paging_init() on architectures such as arm64 which require paging_init() to run before memblock allocated memory is writable. In light of this, there seems to be no non-architecture-specific universal calling point to stick in fdt_init_reserved_mem() that works for all architectures. Therefore, I propose taking out the call to fdt_init_reserved_mem() from the unflatten_device_tree() function and placing it in the setup_arch() function for each architecture. (similar to the way it was in v1 of this series). Doing this will allow us to place fdt_init_reserved_mem() after paging_init() on architectures that require paging_init() to be called before memblock allocated memory is writable, and place it before paging_init() on architectures that does not require paging_init() to be called before writing to memblock allocated memory. fdt_init_reserved_mem() can also be called after unflatten_device_tree() on all architectures to ensure we get the speed benefits of using the unflattened device tree APIs for the final pass. Regards, Oreoluwa