> From: Oreoluwa Babatunde <quic_obabatun@xxxxxxxxxxx> > Sent: 2024年7月9日 7:06 > > With recent changes made to initialize the cma regions before the page tables > are setup, commit f2a524d9ef5b ("of: reserved_mem: Restructure code to call > reserved mem init functions earlier"), an issue was introduced where the > initialization of the cma regions fail and are initialized as "non-reusable" > regions instead of "reusable". [1], [2] > > This issue occurs because the device_node of the regions are not yet created > by the time the cma regions are being initialized. > > The cma regions need to be initialized before the page tables are setup for > them to be configured correctly as was realized in [3]. > > Hence, since the unflatten_devicetree APIs are not available until after the > page tables have been setup, revert back to using the fdt APIs. This makes it > possible to store a reference to each cma node in the reserved_mem array by > the time it is needed in the init function. > > [1] https://lore.kernel.org/all/DU0PR04MB9299C3EC247E1FE2C373440F80DE2@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ For CMA regressions issue, tested it worked. Tested-by: Dong Aisheng <aisheng.dong@xxxxxxx> Regards Aisheng > > Oreoluwa Babatunde (4): > Revert "of: reserved_mem: Restructure code to call reserved mem init > functions earlier" > Revert "of: reserved_mem: Rename fdt_* functions to refelct the change > from using fdt APIs" > Revert "of: reserved_mem: Use unflatten_devicetree APIs to scan > reserved memory nodes" > of: reserved_mem: Restructure code to call rmem init functions earlier > > drivers/of/fdt.c | 2 +- > drivers/of/of_private.h | 2 +- > drivers/of/of_reserved_mem.c | 103 +++++++++++++++++--------------- > include/linux/of_reserved_mem.h | 2 +- > kernel/dma/coherent.c | 10 ++-- > kernel/dma/contiguous.c | 8 +-- > kernel/dma/swiotlb.c | 10 ++-- > 7 files changed, 72 insertions(+), 65 deletions(-) > > -- > 2.34.1