All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ardb@kernel.org>
To: David Hildenbrand <david@redhat.com>
Cc: Wupeng Ma <mawupeng1@huawei.com>,
	corbet@lwn.net, will@kernel.org, catalin.marinas@arm.com,
	tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
	dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
	dvhart@infradead.org, andy@infradead.org, rppt@kernel.org,
	akpm@linux-foundation.org, paul.walmsley@sifive.com,
	palmer@dabbelt.com, aou@eecs.berkeley.edu, paulmck@kernel.org,
	keescook@chromium.org, songmuchun@bytedance.com,
	rdunlap@infradead.org, damien.lemoal@opensource.wdc.com,
	swboyd@chromium.org, wei.liu@kernel.org, robin.murphy@arm.com,
	anshuman.khandual@arm.com, thunder.leizhen@huawei.com,
	wangkefeng.wang@huawei.com, gpiccoli@igalia.com,
	chenhuacai@kernel.org, geert@linux-m68k.org,
	chenzhou10@huawei.com, vijayb@linux.microsoft.com,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, linux-efi@vger.kernel.org,
	platform-driver-x86@vger.kernel.org, linux-mm@kvack.org,
	linux-riscv@lists.infradead.org
Subject: Re: [PATCH v3 5/6] mm: Add mirror flag back on initrd memory
Date: Tue, 7 Jun 2022 16:49:24 +0200	[thread overview]
Message-ID: <CAMj1kXGkzjq3koW_sgO4uzrdtwqSqzsJfT5ABYyvodf+ggXT2w@mail.gmail.com> (raw)
In-Reply-To: <99900b31-2605-2c85-a1b7-9ef2666b58da@redhat.com>

On Tue, 7 Jun 2022 at 14:22, David Hildenbrand <david@redhat.com> wrote:
>
> On 07.06.22 11:38, Wupeng Ma wrote:
> > From: Ma Wupeng <mawupeng1@huawei.com>
> >
> > Initrd memory will be removed and then added in arm64_memblock_init() and this
> > will cause it to lose all of its memblock flags. The lost of MEMBLOCK_MIRROR
> > flag will lead to error log printed by find_zone_movable_pfns_for_nodes if
> > the lower 4G range has some non-mirrored memory.
> >
> > In order to solve this problem, the lost MEMBLOCK_MIRROR flag will be
> > reinstalled if the origin memblock has this flag.
> >
> > Signed-off-by: Ma Wupeng <mawupeng1@huawei.com>
> > ---
> >  arch/arm64/mm/init.c     |  9 +++++++++
> >  include/linux/memblock.h |  1 +
> >  mm/memblock.c            | 20 ++++++++++++++++++++
> >  3 files changed, 30 insertions(+)
> >
> > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> > index 339ee84e5a61..11641f924d08 100644
> > --- a/arch/arm64/mm/init.c
> > +++ b/arch/arm64/mm/init.c
> > @@ -350,9 +350,18 @@ void __init arm64_memblock_init(void)
> >                       "initrd not fully accessible via the linear mapping -- please check your bootloader ...\n")) {
> >                       phys_initrd_size = 0;
> >               } else {
> > +                     int flags, ret;
> > +
> > +                     ret = memblock_get_flags(base, &flags);
> > +                     if (ret)
> > +                             flags = 0;
> > +
> >                       memblock_remove(base, size); /* clear MEMBLOCK_ flags */
> >                       memblock_add(base, size);
> >                       memblock_reserve(base, size);
>
> Can you explain why we're removing+re-adding here exactly? Is it just to
> clear flags as the comment indicates?
>

This should only happen if the placement of the initrd conflicts with
a mem= command line parameter or it is not covered by memblock for
some other reason.

IOW, this should never happen, and if re-memblock_add'ing this memory
unconditionally is causing problems, we should fix that instead of
working around it.

> If it's really just about clearing flags, I wonder if we rather want to
> have an interface that does exactly that, and hides the way this is
> actually implemented (obtain flags, remove, re-add ...), internally.
>
> But most probably there is more magic in the code and clearing flags
> isn't all it ends up doing.
>

I don't remember exactly why we needed to clear the flags, but I think
it had to do with some corner case we hit when the initrd was
partially covered.

WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ardb@kernel.org>
To: David Hildenbrand <david@redhat.com>
Cc: Wupeng Ma <mawupeng1@huawei.com>,
	corbet@lwn.net, will@kernel.org,  catalin.marinas@arm.com,
	tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
	 dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
	 dvhart@infradead.org, andy@infradead.org, rppt@kernel.org,
	 akpm@linux-foundation.org, paul.walmsley@sifive.com,
	palmer@dabbelt.com,  aou@eecs.berkeley.edu, paulmck@kernel.org,
	keescook@chromium.org,  songmuchun@bytedance.com,
	rdunlap@infradead.org,  damien.lemoal@opensource.wdc.com,
	swboyd@chromium.org, wei.liu@kernel.org,  robin.murphy@arm.com,
	anshuman.khandual@arm.com, thunder.leizhen@huawei.com,
	 wangkefeng.wang@huawei.com, gpiccoli@igalia.com,
	chenhuacai@kernel.org,  geert@linux-m68k.org,
	chenzhou10@huawei.com, vijayb@linux.microsoft.com,
	 linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	 linux-arm-kernel@lists.infradead.org, linux-efi@vger.kernel.org,
	 platform-driver-x86@vger.kernel.org, linux-mm@kvack.org,
	 linux-riscv@lists.infradead.org
Subject: Re: [PATCH v3 5/6] mm: Add mirror flag back on initrd memory
Date: Tue, 7 Jun 2022 16:49:24 +0200	[thread overview]
Message-ID: <CAMj1kXGkzjq3koW_sgO4uzrdtwqSqzsJfT5ABYyvodf+ggXT2w@mail.gmail.com> (raw)
In-Reply-To: <99900b31-2605-2c85-a1b7-9ef2666b58da@redhat.com>

On Tue, 7 Jun 2022 at 14:22, David Hildenbrand <david@redhat.com> wrote:
>
> On 07.06.22 11:38, Wupeng Ma wrote:
> > From: Ma Wupeng <mawupeng1@huawei.com>
> >
> > Initrd memory will be removed and then added in arm64_memblock_init() and this
> > will cause it to lose all of its memblock flags. The lost of MEMBLOCK_MIRROR
> > flag will lead to error log printed by find_zone_movable_pfns_for_nodes if
> > the lower 4G range has some non-mirrored memory.
> >
> > In order to solve this problem, the lost MEMBLOCK_MIRROR flag will be
> > reinstalled if the origin memblock has this flag.
> >
> > Signed-off-by: Ma Wupeng <mawupeng1@huawei.com>
> > ---
> >  arch/arm64/mm/init.c     |  9 +++++++++
> >  include/linux/memblock.h |  1 +
> >  mm/memblock.c            | 20 ++++++++++++++++++++
> >  3 files changed, 30 insertions(+)
> >
> > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> > index 339ee84e5a61..11641f924d08 100644
> > --- a/arch/arm64/mm/init.c
> > +++ b/arch/arm64/mm/init.c
> > @@ -350,9 +350,18 @@ void __init arm64_memblock_init(void)
> >                       "initrd not fully accessible via the linear mapping -- please check your bootloader ...\n")) {
> >                       phys_initrd_size = 0;
> >               } else {
> > +                     int flags, ret;
> > +
> > +                     ret = memblock_get_flags(base, &flags);
> > +                     if (ret)
> > +                             flags = 0;
> > +
> >                       memblock_remove(base, size); /* clear MEMBLOCK_ flags */
> >                       memblock_add(base, size);
> >                       memblock_reserve(base, size);
>
> Can you explain why we're removing+re-adding here exactly? Is it just to
> clear flags as the comment indicates?
>

This should only happen if the placement of the initrd conflicts with
a mem= command line parameter or it is not covered by memblock for
some other reason.

IOW, this should never happen, and if re-memblock_add'ing this memory
unconditionally is causing problems, we should fix that instead of
working around it.

> If it's really just about clearing flags, I wonder if we rather want to
> have an interface that does exactly that, and hides the way this is
> actually implemented (obtain flags, remove, re-add ...), internally.
>
> But most probably there is more magic in the code and clearing flags
> isn't all it ends up doing.
>

I don't remember exactly why we needed to clear the flags, but I think
it had to do with some corner case we hit when the initrd was
partially covered.

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ardb@kernel.org>
To: David Hildenbrand <david@redhat.com>
Cc: Wupeng Ma <mawupeng1@huawei.com>,
	corbet@lwn.net, will@kernel.org,  catalin.marinas@arm.com,
	tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
	 dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
	 dvhart@infradead.org, andy@infradead.org, rppt@kernel.org,
	 akpm@linux-foundation.org, paul.walmsley@sifive.com,
	palmer@dabbelt.com,  aou@eecs.berkeley.edu, paulmck@kernel.org,
	keescook@chromium.org,  songmuchun@bytedance.com,
	rdunlap@infradead.org,  damien.lemoal@opensource.wdc.com,
	swboyd@chromium.org, wei.liu@kernel.org,  robin.murphy@arm.com,
	anshuman.khandual@arm.com, thunder.leizhen@huawei.com,
	 wangkefeng.wang@huawei.com, gpiccoli@igalia.com,
	chenhuacai@kernel.org,  geert@linux-m68k.org,
	chenzhou10@huawei.com, vijayb@linux.microsoft.com,
	 linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	 linux-arm-kernel@lists.infradead.org, linux-efi@vger.kernel.org,
	 platform-driver-x86@vger.kernel.org, linux-mm@kvack.org,
	 linux-riscv@lists.infradead.org
Subject: Re: [PATCH v3 5/6] mm: Add mirror flag back on initrd memory
Date: Tue, 7 Jun 2022 16:49:24 +0200	[thread overview]
Message-ID: <CAMj1kXGkzjq3koW_sgO4uzrdtwqSqzsJfT5ABYyvodf+ggXT2w@mail.gmail.com> (raw)
In-Reply-To: <99900b31-2605-2c85-a1b7-9ef2666b58da@redhat.com>

On Tue, 7 Jun 2022 at 14:22, David Hildenbrand <david@redhat.com> wrote:
>
> On 07.06.22 11:38, Wupeng Ma wrote:
> > From: Ma Wupeng <mawupeng1@huawei.com>
> >
> > Initrd memory will be removed and then added in arm64_memblock_init() and this
> > will cause it to lose all of its memblock flags. The lost of MEMBLOCK_MIRROR
> > flag will lead to error log printed by find_zone_movable_pfns_for_nodes if
> > the lower 4G range has some non-mirrored memory.
> >
> > In order to solve this problem, the lost MEMBLOCK_MIRROR flag will be
> > reinstalled if the origin memblock has this flag.
> >
> > Signed-off-by: Ma Wupeng <mawupeng1@huawei.com>
> > ---
> >  arch/arm64/mm/init.c     |  9 +++++++++
> >  include/linux/memblock.h |  1 +
> >  mm/memblock.c            | 20 ++++++++++++++++++++
> >  3 files changed, 30 insertions(+)
> >
> > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
> > index 339ee84e5a61..11641f924d08 100644
> > --- a/arch/arm64/mm/init.c
> > +++ b/arch/arm64/mm/init.c
> > @@ -350,9 +350,18 @@ void __init arm64_memblock_init(void)
> >                       "initrd not fully accessible via the linear mapping -- please check your bootloader ...\n")) {
> >                       phys_initrd_size = 0;
> >               } else {
> > +                     int flags, ret;
> > +
> > +                     ret = memblock_get_flags(base, &flags);
> > +                     if (ret)
> > +                             flags = 0;
> > +
> >                       memblock_remove(base, size); /* clear MEMBLOCK_ flags */
> >                       memblock_add(base, size);
> >                       memblock_reserve(base, size);
>
> Can you explain why we're removing+re-adding here exactly? Is it just to
> clear flags as the comment indicates?
>

This should only happen if the placement of the initrd conflicts with
a mem= command line parameter or it is not covered by memblock for
some other reason.

IOW, this should never happen, and if re-memblock_add'ing this memory
unconditionally is causing problems, we should fix that instead of
working around it.

> If it's really just about clearing flags, I wonder if we rather want to
> have an interface that does exactly that, and hides the way this is
> actually implemented (obtain flags, remove, re-add ...), internally.
>
> But most probably there is more magic in the code and clearing flags
> isn't all it ends up doing.
>

I don't remember exactly why we needed to clear the flags, but I think
it had to do with some corner case we hit when the initrd was
partially covered.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-06-07 14:50 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-07  9:37 [PATCH v3 0/6] introduce mirrored memory support for arm64 Wupeng Ma
2022-06-07  9:37 ` Wupeng Ma
2022-06-07  9:37 ` Wupeng Ma
2022-06-07  9:38 ` [PATCH v3 1/6] efi: Make efi_find_mirror() public Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-10  9:22   ` Kefeng Wang
2022-06-10  9:22     ` Kefeng Wang
2022-06-10  9:22     ` Kefeng Wang
2022-06-07  9:38 ` [PATCH v3 2/6] arm64/mirror: arm64 enabling - find mirrored memory ranges Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-10  9:27   ` Kefeng Wang
2022-06-10  9:27     ` Kefeng Wang
2022-06-10  9:27     ` Kefeng Wang
2022-06-10  9:34     ` Ard Biesheuvel
2022-06-10  9:34       ` Ard Biesheuvel
2022-06-10  9:34       ` Ard Biesheuvel
2022-06-10 10:24       ` Kefeng Wang
2022-06-10 10:24         ` Kefeng Wang
2022-06-10 10:24         ` Kefeng Wang
2022-06-10 11:17         ` Ard Biesheuvel
2022-06-10 11:17           ` Ard Biesheuvel
2022-06-10 11:17           ` Ard Biesheuvel
2022-06-07  9:38 ` [PATCH v3 3/6] mm: Ratelimited mirrored memory related warning messages Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07 12:24   ` David Hildenbrand
2022-06-07 12:24     ` David Hildenbrand
2022-06-07 12:24     ` David Hildenbrand
2022-06-08  9:44   ` Mike Rapoport
2022-06-08  9:44     ` Mike Rapoport
2022-06-08  9:44     ` Mike Rapoport
2022-06-08 10:02   ` Anshuman Khandual
2022-06-08 10:02     ` Anshuman Khandual
2022-06-08 10:02     ` Anshuman Khandual
2022-06-10  9:29   ` Kefeng Wang
2022-06-10  9:29     ` Kefeng Wang
2022-06-10  9:29     ` Kefeng Wang
2022-06-07  9:38 ` [PATCH v3 4/6] mm: Demote warning message in vmemmap_verify() to debug level Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07 12:25   ` David Hildenbrand
2022-06-07 12:25     ` David Hildenbrand
2022-06-07 12:25     ` David Hildenbrand
2022-06-08  1:26     ` mawupeng
2022-06-08  1:26       ` mawupeng
2022-06-08  1:26       ` mawupeng
2022-06-08 10:00       ` Anshuman Khandual
2022-06-08 10:00         ` Anshuman Khandual
2022-06-08 10:00         ` Anshuman Khandual
2022-06-09  8:13         ` mawupeng
2022-06-09  8:13           ` mawupeng
2022-06-09  8:13           ` mawupeng
2022-06-10  9:35           ` Kefeng Wang
2022-06-10  9:35             ` Kefeng Wang
2022-06-10  9:35             ` Kefeng Wang
2022-06-07  9:38 ` [PATCH v3 5/6] mm: Add mirror flag back on initrd memory Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07 12:21   ` David Hildenbrand
2022-06-07 12:21     ` David Hildenbrand
2022-06-07 12:21     ` David Hildenbrand
2022-06-07 14:49     ` Ard Biesheuvel [this message]
2022-06-07 14:49       ` Ard Biesheuvel
2022-06-07 14:49       ` Ard Biesheuvel
2022-06-08  7:27       ` mawupeng
2022-06-08  7:27         ` mawupeng
2022-06-08  7:27         ` mawupeng
2022-06-08 10:02         ` Mike Rapoport
2022-06-08 10:02           ` Mike Rapoport
2022-06-08 10:02           ` Mike Rapoport
2022-06-08 10:08           ` David Hildenbrand
2022-06-08 10:08             ` David Hildenbrand
2022-06-08 10:08             ` David Hildenbrand
2022-06-08 10:12             ` Ard Biesheuvel
2022-06-08 10:12               ` Ard Biesheuvel
2022-06-08 10:12               ` Ard Biesheuvel
2022-06-09  8:15               ` mawupeng
2022-06-09  8:15                 ` mawupeng
2022-06-09  8:15                 ` mawupeng
2022-06-10 11:06                 ` Ard Biesheuvel
2022-06-10 11:06                   ` Ard Biesheuvel
2022-06-10 11:06                   ` Ard Biesheuvel
2022-06-07  9:38 ` [PATCH v3 6/6] efi: Disable mirror feature if kernelcore is not specified Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-07  9:38   ` Wupeng Ma
2022-06-10 11:20   ` Ard Biesheuvel
2022-06-10 11:20     ` Ard Biesheuvel
2022-06-10 11:20     ` Ard Biesheuvel
2022-06-10 12:15     ` Kefeng Wang
2022-06-10 12:15       ` Kefeng Wang
2022-06-10 12:15       ` Kefeng Wang
2022-06-10 11:23 ` [PATCH v3 0/6] introduce mirrored memory support for arm64 Ard Biesheuvel
2022-06-10 11:23   ` Ard Biesheuvel
2022-06-10 11:23   ` Ard Biesheuvel
2022-06-10 11:24   ` Ard Biesheuvel
2022-06-10 11:24     ` Ard Biesheuvel
2022-06-10 11:24     ` Ard Biesheuvel
2022-06-11  9:56   ` Mike Rapoport
2022-06-11  9:56     ` Mike Rapoport
2022-06-11  9:56     ` Mike Rapoport

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=CAMj1kXGkzjq3koW_sgO4uzrdtwqSqzsJfT5ABYyvodf+ggXT2w@mail.gmail.com \
    --to=ardb@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=andy@infradead.org \
    --cc=anshuman.khandual@arm.com \
    --cc=aou@eecs.berkeley.edu \
    --cc=bp@alien8.de \
    --cc=catalin.marinas@arm.com \
    --cc=chenhuacai@kernel.org \
    --cc=chenzhou10@huawei.com \
    --cc=corbet@lwn.net \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=dvhart@infradead.org \
    --cc=geert@linux-m68k.org \
    --cc=gpiccoli@igalia.com \
    --cc=hpa@zytor.com \
    --cc=keescook@chromium.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=mawupeng1@huawei.com \
    --cc=mingo@redhat.com \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=paulmck@kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rdunlap@infradead.org \
    --cc=robin.murphy@arm.com \
    --cc=rppt@kernel.org \
    --cc=songmuchun@bytedance.com \
    --cc=swboyd@chromium.org \
    --cc=tglx@linutronix.de \
    --cc=thunder.leizhen@huawei.com \
    --cc=vijayb@linux.microsoft.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=wei.liu@kernel.org \
    --cc=will@kernel.org \
    --cc=x86@kernel.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.