All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Williams, Dan J" <dan.j.williams@intel.com>
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-tip-commits@vger.kernel.org" 
	<linux-tip-commits@vger.kernel.org>
Cc: "nathan@kernel.org" <nathan@kernel.org>,
	"Gross, Jurgen" <jgross@suse.com>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>,
	"marmarek@invisiblethingslab.com"
	<marmarek@invisiblethingslab.com>,
	"Chagam, Anjaneya" <anjaneya.chagam@intel.com>,
	"bp@suse.de" <bp@suse.de>, "x86@kernel.org" <x86@kernel.org>
Subject: Re: [tip: x86/urgent] x86/setup: Call early_reserve_memory() earlier
Date: Thu, 4 Nov 2021 05:38:54 +0000	[thread overview]
Message-ID: <e8dd8993c38702ee6dd73b3c11f158617e665607.camel@intel.com> (raw)
In-Reply-To: <163233113662.25758.10031107028271701591.tip-bot2@tip-bot2>

On Wed, 2021-09-22 at 17:18 +0000, tip-bot2 for Juergen Gross wrote:
> The following commit has been merged into the x86/urgent branch of
> tip:
> 
> Commit-ID:     8aa83e6395ce047a506f0b16edca45f36c1ae7f8
> Gitweb:       
> https://git.kernel.org/tip/8aa83e6395ce047a506f0b16edca45f36c1ae7f8
> Author:        Juergen Gross <jgross@suse.com>
> AuthorDate:    Mon, 20 Sep 2021 14:04:21 +02:00
> Committer:     Borislav Petkov <bp@suse.de>
> CommitterDate: Tue, 21 Sep 2021 09:52:08 +02:00
> 
> x86/setup: Call early_reserve_memory() earlier

Hi,

I got a report from Anjaneya that starting with the v5.15 kernel he can
no longer use the "efi=nosoftreserve" kernel command line parameter to
suppress "soft reservation" behavior. Recall that "soft reserved" is
the Linux designation for memory that is marked with the EFI "Special
Purpose" attribute.

By inspection, this commit looks like the source of the problem because
early_reserve_memory() now runs before parse_early_param(). I suspect
that this also affects memmap= since it is also an early_param(). I'll
verify that tomorrow when I'm more awake, but wanted to give a heads up
in the meantime.


> 
> Commit in Fixes introduced early_reserve_memory() to do all needed
> initial memblock_reserve() calls in one function. Unfortunately, the call
> of early_reserve_memory() is done too late for Xen dom0, as in some
> cases a Xen hook called by e820__memory_setup() will need those memory
> reservations to have happened already.
> 
> Move the call of early_reserve_memory() before the call of
> e820__memory_setup() in order to avoid such problems.
> 
> Fixes: a799c2bd29d1 ("x86/setup: Consolidate early memory reservations")
> Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Signed-off-by: Borislav Petkov <bp@suse.de>
> Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> Tested-by: Nathan Chancellor <nathan@kernel.org>
> Cc: stable@vger.kernel.org
> Link: https://lkml.kernel.org/r/20210920120421.29276-1-jgross@suse.com
> ---
>  arch/x86/kernel/setup.c | 26 ++++++++++++++------------
>  1 file changed, 14 insertions(+), 12 deletions(-)
> 
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index 79f1641..40ed44e 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -830,6 +830,20 @@ void __init setup_arch(char **cmdline_p)
>  
>         x86_init.oem.arch_setup();
>  
> +       /*
> +        * Do some memory reservations *before* memory is added to memblock, so
> +        * memblock allocations won't overwrite it.
> +        *
> +        * After this point, everything still needed from the boot loader or
> +        * firmware or kernel text should be early reserved or marked not RAM in
> +        * e820. All other memory is free game.
> +        *
> +        * This call needs to happen before e820__memory_setup() which calls the
> +        * xen_memory_setup() on Xen dom0 which relies on the fact that those
> +        * early reservations have happened already.
> +        */
> +       early_reserve_memory();
> +
>         iomem_resource.end = (1ULL << boot_cpu_data.x86_phys_bits) - 1;
>         e820__memory_setup();
>         parse_setup_data();
> @@ -876,18 +890,6 @@ void __init setup_arch(char **cmdline_p)
>  
>         parse_early_param();
>  
> -       /*
> -        * Do some memory reservations *before* memory is added to
> -        * memblock, so memblock allocations won't overwrite it.
> -        * Do it after early param, so we could get (unlikely) panic from
> -        * serial.
> -        *
> -        * After this point everything still needed from the boot loader or
> -        * firmware or kernel text should be early reserved or marked not
> -        * RAM in e820. All other memory is free game.
> -        */
> -       early_reserve_memory();
> -
>  #ifdef CONFIG_MEMORY_HOTPLUG
>         /*
>          * Memory used by the kernel cannot be hot-removed because Linux


  reply	other threads:[~2021-11-04  5:39 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-20 12:04 [PATCH v2] x86/setup: call early_reserve_memory() earlier Juergen Gross
2021-09-21  0:01 ` Marek Marczykowski-Górecki
2021-09-21  3:59 ` Nathan Chancellor
2021-09-22 17:18 ` [tip: x86/urgent] x86/setup: Call " tip-bot2 for Juergen Gross
2021-11-04  5:38   ` Williams, Dan J [this message]
2021-11-04 11:40     ` Borislav Petkov
2021-11-04 17:36       ` Dan Williams
2021-11-15 11:36     ` [tip: x86/urgent] x86/boot: Pull up cmdline preparation and early param parsing tip-bot2 for Borislav Petkov
2021-12-09 14:38       ` John Dorminy
2021-12-09 15:19         ` Borislav Petkov
2021-12-09 15:26           ` Juergen Gross
2021-12-09 15:28             ` Borislav Petkov
2021-12-09 16:29               ` Mike Rapoport
2021-12-09 16:37                 ` Borislav Petkov
2021-12-10 11:28                   ` Borislav Petkov
2021-12-10 20:11                     ` Hugh Dickins
2021-12-11 10:14                       ` Borislav Petkov
2021-12-10 20:32                     ` Patrick J. Volkerding
2021-12-11 10:29                       ` Borislav Petkov
2021-12-11  5:24                     ` John Dorminy
2021-12-11 10:30                       ` Borislav Petkov
2021-12-13  8:20                     ` Mike Rapoport
2021-12-13  9:33                       ` Borislav Petkov
2021-12-13 11:27                         ` [PATCH 0/3] x86: Fix boot ordering issues yet again Borislav Petkov
2021-12-13 11:27                           ` [PATCH 1/3] Revert "x86/boot: Mark prepare_command_line() __init" Borislav Petkov
2021-12-15 13:05                             ` [tip: x86/urgent] " tip-bot2 for Borislav Petkov
2021-12-13 11:27                           ` [PATCH 2/3] Revert "x86/boot: Pull up cmdline preparation and early param parsing" Borislav Petkov
2021-12-15 13:05                             ` [tip: x86/urgent] " tip-bot2 for Borislav Petkov
2021-12-13 11:27                           ` [PATCH 3/3] x86/boot: Move EFI range reservation after cmdline parsing Borislav Petkov
2021-12-15 13:12                             ` [tip: x86/urgent] " tip-bot2 for Mike Rapoport
     [not found]                         ` <CANGBn69pGb-nscv8tXN1UKDEQGEMWRKuPVPLgg+q2m7V_sBvHw@mail.gmail.com>
2021-12-20 18:49                           ` [tip: x86/urgent] x86/boot: Pull up cmdline preparation and early param parsing Patrick J. Volkerding
2021-12-20 18:59                             ` Borislav Petkov
2021-12-20 19:08                               ` Borislav Petkov
2021-12-09 15:49           ` John Dorminy
2021-12-09 16:07             ` Borislav Petkov
2021-12-15 13:05     ` [tip: x86/urgent] x86/boot: Move EFI range reservation after cmdline parsing tip-bot2 for Mike Rapoport
  -- strict thread matches above, loose matches on Subject: below --
2021-09-14  9:41 [PATCH] x86/setup: call early_reserve_memory() earlier Juergen Gross
2021-09-16 10:50 ` [tip: x86/urgent] x86/setup: Call " tip-bot2 for Juergen Gross
2021-09-19 16:55   ` Mike Galbraith
2021-09-19 17:04     ` Mike Rapoport
2021-09-20  0:56       ` Mike Galbraith
2021-09-20  9:26         ` Mike Rapoport
2021-09-20  9:38           ` Borislav Petkov
2021-09-20 11:25           ` Mike Galbraith
2021-09-20 11:33             ` Juergen Gross
2021-09-19 17:15     ` Borislav Petkov
2021-09-20  6:00       ` Juergen Gross
2021-09-20  9:46         ` Mike Rapoport
2021-09-20 22:48       ` Nathan Chancellor
2021-09-21  3:38         ` Borislav Petkov
2021-09-21  3:59           ` Nathan Chancellor
2021-09-21  7:36             ` Borislav Petkov

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=e8dd8993c38702ee6dd73b3c11f158617e665607.camel@intel.com \
    --to=dan.j.williams@intel.com \
    --cc=anjaneya.chagam@intel.com \
    --cc=bp@suse.de \
    --cc=jgross@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=marmarek@invisiblethingslab.com \
    --cc=nathan@kernel.org \
    --cc=stable@vger.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.