Message ID | 1707524971-146908-3-git-send-email-quic_obabatun@quicinc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Restructure init sequence to set aside reserved memory earlier | expand |
On Fri, Feb 09, 2024 at 04:29:30PM -0800, Oreoluwa Babatunde wrote: > The unflatten_and_copy_device_tree() function contains a call to > memblock_alloc(). This means that memblock is allocating memory before > any of the reserved memory regions are set aside in the setup_memory() > function which calls early_init_fdt_scan_reserved_mem(). Therefore, > there is a possibility for memblock to allocate from any of the > reserved memory regions. > > Hence, move the call to setup_memory() to be earlier in the init > sequence so that the reserved memory regions are set aside before any > allocations are done using memblock. > > Signed-off-by: Oreoluwa Babatunde <quic_obabatun@quicinc.com> > --- > arch/openrisc/kernel/setup.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arch/openrisc/kernel/setup.c b/arch/openrisc/kernel/setup.c > index 9cf7fb6..be56eaa 100644 > --- a/arch/openrisc/kernel/setup.c > +++ b/arch/openrisc/kernel/setup.c > @@ -255,6 +255,9 @@ void calibrate_delay(void) > > void __init setup_arch(char **cmdline_p) > { > + /* setup memblock allocator */ > + setup_memory(); > + > unflatten_and_copy_device_tree(); > > setup_cpuinfo(); > @@ -278,9 +281,6 @@ void __init setup_arch(char **cmdline_p) > } > #endif > > - /* setup memblock allocator */ > - setup_memory(); > - > /* paging_init() sets up the MMU and marks all pages as reserved */ > paging_init(); This looks good. I will merge it via the openrisc queue as you requested. -Stafford
diff --git a/arch/openrisc/kernel/setup.c b/arch/openrisc/kernel/setup.c index 9cf7fb6..be56eaa 100644 --- a/arch/openrisc/kernel/setup.c +++ b/arch/openrisc/kernel/setup.c @@ -255,6 +255,9 @@ void calibrate_delay(void) void __init setup_arch(char **cmdline_p) { + /* setup memblock allocator */ + setup_memory(); + unflatten_and_copy_device_tree(); setup_cpuinfo(); @@ -278,9 +281,6 @@ void __init setup_arch(char **cmdline_p) } #endif - /* setup memblock allocator */ - setup_memory(); - /* paging_init() sets up the MMU and marks all pages as reserved */ paging_init();
The unflatten_and_copy_device_tree() function contains a call to memblock_alloc(). This means that memblock is allocating memory before any of the reserved memory regions are set aside in the setup_memory() function which calls early_init_fdt_scan_reserved_mem(). Therefore, there is a possibility for memblock to allocate from any of the reserved memory regions. Hence, move the call to setup_memory() to be earlier in the init sequence so that the reserved memory regions are set aside before any allocations are done using memblock. Signed-off-by: Oreoluwa Babatunde <quic_obabatun@quicinc.com> --- arch/openrisc/kernel/setup.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) --