From: Serge Semin <fancer.lancer@gmail.com>
To: Matt Redfearn <matt.redfearn@mips.com>
Cc: ralf@linux-mips.org, miodrag.dinic@mips.com, jhogan@kernel.org,
goran.ferenc@mips.com, david.daney@cavium.com,
paul.gortmaker@windriver.com, paul.burton@mips.com,
alex.belits@cavium.com, Steven.Hill@cavium.com,
alexander.sverdlin@nokia.com, kumba@gentoo.org,
marcin.nowakowski@mips.com, James.hogan@mips.com,
Peter.Wotton@mips.com, Sergey.Semin@t-platforms.ru,
linux-mips@linux-mips.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 02/14] MIPS: memblock: Surely map BSS kernel memory section
Date: Wed, 24 Jan 2018 13:03:58 +0300 [thread overview]
Message-ID: <20180124100358.GA2281@mobilestation> (raw)
In-Reply-To: <884fd904-d439-fe9f-279c-44f4dbbfd096@mips.com>
Hello Matt,
On Wed, Jan 24, 2018 at 09:49:31AM +0000, Matt Redfearn <matt.redfearn@mips.com> wrote:
> Hi Serge,
>
> On 23/01/18 19:27, Serge Semin wrote:
> >Hello Matt,
> >
> >On Tue, Jan 23, 2018 at 11:03:27AM +0000, Matt Redfearn <matt.redfearn@mips.com> wrote:
> >>Hi Serge,
> >>
> >>On 22/01/18 21:47, Serge Semin wrote:
> >>>Hello Matt,
> >>>
> >>>On Mon, Jan 22, 2018 at 04:35:26PM +0000, Matt Redfearn <matt.redfearn@mips.com> wrote:
> >>>>Hi Serge,
> >>>>
> >>>>On 17/01/18 22:23, Serge Semin wrote:
> >>>>>The current MIPS code makes sure the kernel code/data/init
> >>>>>sections are in the maps, but BSS should also be there.
> >>>>
> >>>>Quite right - it should. But this was protected against by reserving all
> >>>>bootmem up to the _end symbol here:
> >>>>http://elixir.free-electrons.com/linux/v4.15-rc8/source/arch/mips/kernel/setup.c#L388
> >>>>Which you remove in the next patch in this series. I'm not sure it is worth
> >>>
> >>>Right. Missed that part. The old code just doesn't set the kernel memory free
> >>>calling the free_bootmem() method for non-reserved parts below reserved_end.
> >>>
> >>>>disentangling the reserved_end stuff from the next patch to make this into a
> >>>>single logical change of reserving just .bss rather than everything below
> >>>>_end.
> >>>
> >>>Good point. I'll move this change into the "[PATCH 05/14] MIPS: memblock:
> >>>Add reserved memory regions to memblock". It logically belongs to that place.
> >>>Since basically by the arch_mem_addpart() calls we reserve all the kernel
> >>
> >>
> >>Actually I was wrong - it's not this sequence of arch_mem_addpart's that
> >>reserves the kernels memory. At least on DT based systems, it's pretty
> >>likely that these regions will overlap with the system memory already added.
> >>of_scan_flat_dt will look for the memory node and add it via
> >>early_init_dt_add_memory_arch.
> >>These calls to add the kernel text, init and bss detect that they overlap
> >>with the already present system memory, so don't get added, here:
> >>http://elixir.free-electrons.com/linux/v4.15-rc9/source/arch/mips/kernel/setup.c#L759
> >>
> >>As such, when we print out the content of boot_mem_map, we only have a
> >>single entry:
> >>
> >>[ 0.000000] Determined physical RAM map:
> >>[ 0.000000] memory: 10000000 @ 00000000 (usable)
> >>
> >>
> >>>memory now I'd also merged them into a single call for the range [_text, _end].
> >>>What do you think?
> >>
> >>
> >>I think that this patch makes sense in case the .bss is for some reason not
> >>covered by an existing entry, but I would leave it as a separate patch.
> >>
> >>Your [PATCH 05/14] MIPS: memblock: Add reserved memory regions to memblock
> >>is actually self-contained since it replaces reserving all memory up to _end
> >>with the single reservation of the kernel's whole size
> >>
> >>+ size = __pa_symbol(&_end) - __pa_symbol(&_text);
> >>+ memblock_reserve(__pa_symbol(&_text), size);
> >>
> >>
> >>Which I think is definitely an improvement since it is much clearer.
> >>
> >
> >Alright lets sum it up. First of all, yeah, you are right, arch_mem_addpart()
> >is created to make sure the kernel memory is added to the memblock/bootmem pool.
> >The previous arch code was leaving such the memory range non-freed since it was
> >higher the reserved_end, so to make sure the early memory allocations wouldn't
> >be made from the pages, where kernel actually resides.
> >
> >In my code I still wanted to make sure the kernel memory is in the memblock pool.
> >But I also noticed, that .bss memory range wouldn't be added to the pool if neither
> >dts nor platform-specific code added any memory to the boot_mem_map pool. So I
> >decided to fix it. The actual kernel memory reservation is performed after all
> >the memory regions are declared by the code you cited. It's essential to do
> >the [_text, _end] memory range reservation there, otherwise memblock may
> >allocate from the memory range occupied by the kernel code/data.
> >
> >Since you agree with leaving it in the separate patch, I'd only suggest to
> >call the arch_mem_addpart() method for just one range [_text, _end] instead of
> >doing it three times for a separate _text, _data and bss sections. What do you
> >think?
>
> I think it's best left as 3 separate reservations, mainly due to the
> different attribute used for the init section. So all in all, I like this
> patch as it is.
>
Alright. I'll leave as is. Lets see what others think about it.
Regards,
-Sergey
> Thanks,
> Matt
>
> >
> >Regards,
> >-Sergey
> >
> >>Thanks,
> >>Matt
> >>
> >>>
> >>>Regards,
> >>>-Sergey
> >>>
> >>>>
> >>>>Reviewed-by: Matt Redfearn <matt.redfearn@mips.com>
> >>>>
> >>>>Thanks,
> >>>>Matt
> >>>>
> >>>>>
> >>>>>Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
> >>>>>---
> >>>>> arch/mips/kernel/setup.c | 3 +++
> >>>>> 1 file changed, 3 insertions(+)
> >>>>>
> >>>>>diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
> >>>>>index 76e9e2075..0d21c9e04 100644
> >>>>>--- a/arch/mips/kernel/setup.c
> >>>>>+++ b/arch/mips/kernel/setup.c
> >>>>>@@ -845,6 +845,9 @@ static void __init arch_mem_init(char **cmdline_p)
> >>>>> arch_mem_addpart(PFN_UP(__pa_symbol(&__init_begin)) << PAGE_SHIFT,
> >>>>> PFN_DOWN(__pa_symbol(&__init_end)) << PAGE_SHIFT,
> >>>>> BOOT_MEM_INIT_RAM);
> >>>>>+ arch_mem_addpart(PFN_DOWN(__pa_symbol(&__bss_start)) << PAGE_SHIFT,
> >>>>>+ PFN_UP(__pa_symbol(&__bss_stop)) << PAGE_SHIFT,
> >>>>>+ BOOT_MEM_RAM);
> >>>>> pr_info("Determined physical RAM map:\n");
> >>>>> print_memory_map();
> >>>>>
next prev parent reply other threads:[~2018-01-24 10:03 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-17 22:22 [PATCH 00/14] MIPS: memblock: Switch arch code to NO_BOOTMEM Serge Semin
2018-01-17 22:22 ` [PATCH 01/14] MIPS: memblock: Add RESERVED_NOMAP memory flag Serge Semin
2018-01-17 22:23 ` [PATCH 02/14] MIPS: memblock: Surely map BSS kernel memory section Serge Semin
2018-01-22 16:35 ` Matt Redfearn
2018-01-22 16:35 ` Matt Redfearn
2018-01-22 21:47 ` Serge Semin
2018-01-23 11:03 ` Matt Redfearn
2018-01-23 11:03 ` Matt Redfearn
2018-01-23 19:27 ` Serge Semin
2018-01-24 9:49 ` Matt Redfearn
2018-01-24 9:49 ` Matt Redfearn
2018-01-24 10:03 ` Serge Semin [this message]
2018-01-17 22:23 ` [PATCH 03/14] MIPS: memblock: Reserve initrd memory in memblock Serge Semin
2018-01-17 22:23 ` [PATCH 04/14] MIPS: memblock: Discard bootmem initialization Serge Semin
2018-01-17 22:23 ` [PATCH 05/14] MIPS: memblock: Add reserved memory regions to memblock Serge Semin
2018-01-17 22:23 ` [PATCH 06/14] MIPS: memblock: Reserve kdump/crash regions in memblock Serge Semin
2018-01-17 22:23 ` [PATCH 07/14] MIPS: memblock: Mark present sparsemem sections Serge Semin
2018-01-24 6:13 ` Marcin Nowakowski
2018-01-24 6:13 ` Marcin Nowakowski
2018-01-24 7:27 ` Serge Semin
2018-01-17 22:23 ` [PATCH 08/14] MIPS: memblock: Simplify DMA contiguous reservation Serge Semin
2018-01-17 22:23 ` [PATCH 09/14] MIPS: memblock: Allow memblock regions resize Serge Semin
2018-01-17 22:23 ` [PATCH 10/14] MIPS: memblock: Perform early low memory test Serge Semin
2018-01-17 22:23 ` [PATCH 11/14] MIPS: memblock: Print out kernel virtual mem layout Serge Semin
2018-01-18 20:03 ` Florian Fainelli
2018-01-18 20:18 ` Serge Semin
2018-01-19 7:59 ` Matt Redfearn
2018-01-19 7:59 ` Matt Redfearn
2018-01-19 14:27 ` Serge Semin
2018-01-23 15:35 ` Matt Redfearn
2018-01-23 15:35 ` Matt Redfearn
2018-01-23 19:10 ` Serge Semin
2018-01-24 9:46 ` Matt Redfearn
2018-01-24 9:46 ` Matt Redfearn
2018-01-24 10:08 ` Serge Semin
2018-01-17 22:23 ` [PATCH 12/14] MIPS: memblock: Discard bootmem from Loongson3 code Serge Semin
2018-01-23 22:28 ` Jiaxun Yang
2018-01-23 19:36 ` Serge Semin
2018-01-17 22:23 ` [PATCH 13/14] MIPS: memblock: Discard bootmem from SGI IP27 code Serge Semin
2018-01-17 22:23 ` [PATCH 14/14] MIPS: memblock: Deactivate bootmem allocator Serge Semin
2018-01-23 23:59 ` James Hogan
2018-01-24 8:28 ` Serge Semin
2018-01-22 16:33 ` [PATCH] MIPS: KASLR: Drop relocatable fixup from reservation_init Matt Redfearn
2018-01-22 16:33 ` Matt Redfearn
2018-01-22 21:54 ` Serge Semin
2018-01-22 16:36 ` [PATCH 00/14] MIPS: memblock: Switch arch code to NO_BOOTMEM Matt Redfearn
2018-01-22 16:36 ` Matt Redfearn
2018-01-22 21:33 ` Serge Semin
2018-01-23 11:29 ` Mathieu Malaterre
2018-01-23 14:01 ` Matt Redfearn
2018-01-23 14:01 ` Matt Redfearn
2018-01-25 17:58 ` Alexander Sverdlin
2018-01-25 17:58 ` Alexander Sverdlin
2018-01-25 20:17 ` Serge Semin
2018-01-31 0:21 ` Serge Semin
2018-02-02 3:54 ` [PATCH v2 00/15] " Serge Semin
2018-02-02 3:54 ` [PATCH v2 01/15] MIPS: memblock: Add RESERVED_NOMAP memory flag Serge Semin
2018-02-13 11:21 ` Matt Redfearn
2018-02-13 11:21 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 02/15] MIPS: memblock: Surely map BSS kernel memory section Serge Semin
2018-02-13 11:22 ` Matt Redfearn
2018-02-13 11:22 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 03/15] MIPS: memblock: Reserve initrd memory in memblock Serge Semin
2018-02-13 11:22 ` Matt Redfearn
2018-02-13 11:22 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 04/15] MIPS: memblock: Discard bootmem initialization Serge Semin
2018-02-13 11:28 ` Matt Redfearn
2018-02-13 11:28 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 05/15] MIPS: KASLR: Drop relocatable fixup from reservation_init Serge Semin
2018-02-13 11:30 ` Matt Redfearn
2018-02-13 11:30 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 06/15] MIPS: memblock: Add reserved memory regions to memblock Serge Semin
2018-02-13 13:44 ` Matt Redfearn
2018-02-13 13:44 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 07/15] MIPS: memblock: Reserve kdump/crash regions in memblock Serge Semin
2018-02-13 13:45 ` Matt Redfearn
2018-02-13 13:45 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 08/15] MIPS: memblock: Mark present sparsemem sections Serge Semin
2018-02-13 13:50 ` Matt Redfearn
2018-02-13 13:50 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 09/15] MIPS: memblock: Simplify DMA contiguous reservation Serge Semin
2018-02-13 13:51 ` Matt Redfearn
2018-02-13 13:51 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 10/15] MIPS: memblock: Allow memblock regions resize Serge Semin
2018-02-13 13:55 ` Matt Redfearn
2018-02-13 13:55 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 11/15] MIPS: memblock: Perform early low memory test Serge Semin
2018-02-13 14:01 ` Matt Redfearn
2018-02-13 14:01 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 12/15] MIPS: memblock: Print out kernel virtual mem layout Serge Semin
2018-02-13 14:05 ` Matt Redfearn
2018-02-13 14:05 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 13/15] MIPS: memblock: Discard bootmem from Loongson3 code Serge Semin
2018-02-13 14:09 ` Matt Redfearn
2018-02-13 14:09 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 14/15] MIPS: memblock: Discard bootmem from SGI IP27 code Serge Semin
2018-02-13 14:17 ` Matt Redfearn
2018-02-13 14:17 ` Matt Redfearn
2018-02-02 3:54 ` [PATCH v2 15/15] MIPS: memblock: Deactivate bootmem allocator Serge Semin
2018-02-13 14:18 ` Matt Redfearn
2018-02-13 14:18 ` Matt Redfearn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180124100358.GA2281@mobilestation \
--to=fancer.lancer@gmail.com \
--cc=James.hogan@mips.com \
--cc=Peter.Wotton@mips.com \
--cc=Sergey.Semin@t-platforms.ru \
--cc=Steven.Hill@cavium.com \
--cc=alex.belits@cavium.com \
--cc=alexander.sverdlin@nokia.com \
--cc=david.daney@cavium.com \
--cc=goran.ferenc@mips.com \
--cc=jhogan@kernel.org \
--cc=kumba@gentoo.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=marcin.nowakowski@mips.com \
--cc=matt.redfearn@mips.com \
--cc=miodrag.dinic@mips.com \
--cc=paul.burton@mips.com \
--cc=paul.gortmaker@windriver.com \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.