All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@linux.ibm.com>
To: George Kennedy <george.kennedy@oracle.com>
Cc: David Hildenbrand <david@redhat.com>,
	Andrey Konovalov <andreyknvl@google.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Dmitry Vyukov <dvyukov@google.com>,
	Konrad Rzeszutek Wilk <konrad@darnok.org>,
	Will Deacon <will.deacon@arm.com>,
	Andrey Ryabinin <aryabinin@virtuozzo.com>,
	Alexander Potapenko <glider@google.com>,
	Marco Elver <elver@google.com>,
	Peter Collingbourne <pcc@google.com>,
	Evgenii Stepanov <eugenis@google.com>,
	Branislav Rankov <Branislav.Rankov@arm.com>,
	Kevin Brodsky <kevin.brodsky@arm.com>,
	Christoph Hellwig <hch@infradead.org>,
	kasan-dev <kasan-dev@googlegroups.com>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	Linux Memory Management List <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Dhaval Giani <dhaval.giani@oracle.com>,
	robert.moore@intel.com, erik.kaneda@intel.com,
	rafael.j.wysocki@intel.com, lenb@kernel.org,
	linux-acpi@vger.kernel.org
Subject: Re: [PATCH] mm, kasan: don't poison boot memory
Date: Tue, 2 Mar 2021 11:57:08 +0200	[thread overview]
Message-ID: <YD4L9DCpsFWhjSlJ@linux.ibm.com> (raw)
In-Reply-To: <a8864397-83e8-61f7-4b9a-33716eca6cf8@oracle.com>

Hi George,

On Mon, Mar 01, 2021 at 08:20:45PM -0500, George Kennedy wrote:
> > > > > 
> > > > There should be no harm in doing the memblock_reserve() for all
> > > > the standard
> > > > tables, right?
> > > It should be ok to memblock_reserve() all the tables very early as
> > > long as
> > > we don't run out of static entries in memblock.reserved.
> > > 
> > > We just need to make sure the tables are reserved before memblock
> > > allocations are possible, so we'd still need to move
> > > acpi_table_init() in
> > > x86::setup_arch() before e820__memblock_setup().
> > > Not sure how early ACPI is initialized on arm64.
> > 
> > Thanks Mike. Will try to move the memblock_reserves() before
> > e820__memblock_setup().
> 
> Hi Mike,
> 
> Moved acpi_table_init() in x86::setup_arch() before e820__memblock_setup()
> as you suggested.
> 
> Ran 10 boots with the following without error.

I'd suggest to send it as a formal patch to see what x86 and ACPI folks
have to say about this.
 
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index 740f3bdb..3b1dd24 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -1047,6 +1047,7 @@ void __init setup_arch(char **cmdline_p)
>      cleanup_highmap();
> 
>      memblock_set_current_limit(ISA_END_ADDRESS);
> +    acpi_boot_table_init();
>      e820__memblock_setup();
> 
>      /*
> @@ -1140,8 +1141,6 @@ void __init setup_arch(char **cmdline_p)
>      /*
>       * Parse the ACPI tables for possible boot-time SMP configuration.
>       */
> -    acpi_boot_table_init();
> -
>      early_acpi_boot_init();
> 
>      initmem_init();
> diff --git a/drivers/acpi/acpica/tbinstal.c b/drivers/acpi/acpica/tbinstal.c
> index 0bb15ad..7830109 100644
> --- a/drivers/acpi/acpica/tbinstal.c
> +++ b/drivers/acpi/acpica/tbinstal.c
> @@ -7,6 +7,7 @@
>   *
> *****************************************************************************/
> 
> +#include <linux/memblock.h>
>  #include <acpi/acpi.h>
>  #include "accommon.h"
>  #include "actables.h"
> @@ -16,6 +17,33 @@
> 
>  /*******************************************************************************
>   *
> + * FUNCTION:    acpi_tb_reserve_standard_table
> + *
> + * PARAMETERS:  address             - Table physical address
> + *              header              - Table header
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: To avoid an acpi table page from being "stolen" by the
> buddy
> + *              allocator run memblock_reserve() on all the standard acpi
> tables.
> + *
> + ******************************************************************************/
> +void
> +acpi_tb_reserve_standard_table(acpi_physical_address address,
> +               struct acpi_table_header *header)
> +{
> +    if ((ACPI_COMPARE_NAMESEG(header->signature, ACPI_SIG_FACS)) ||
> +        (ACPI_VALIDATE_RSDP_SIG(header->signature)))
> +        return;
> +

Why these should be excluded?

> +    if (header->length > PAGE_SIZE) /* same check as in acpi_map() */
> +        return;

I don't think this is required, I believe acpi_map() has this check because
kmap() cannot handle multiple pages.

> +
> +    memblock_reserve(address, PAGE_ALIGN(header->length));
> +}
> +
> +/*******************************************************************************
> + *
>   * FUNCTION:    acpi_tb_install_table_with_override
>   *
>   * PARAMETERS:  new_table_desc          - New table descriptor to install
> @@ -58,6 +86,9 @@
>                        new_table_desc->flags,
>                        new_table_desc->pointer);
> 
> +    acpi_tb_reserve_standard_table(new_table_desc->address,
> +                   new_table_desc->pointer);
> +
>      acpi_tb_print_table_header(new_table_desc->address,
>                     new_table_desc->pointer);
> 
> George

-- 
Sincerely yours,
Mike.

WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@linux.ibm.com>
To: George Kennedy <george.kennedy@oracle.com>
Cc: rafael.j.wysocki@intel.com, David Hildenbrand <david@redhat.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	Linux Memory Management List <linux-mm@kvack.org>,
	Alexander Potapenko <glider@google.com>,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	erik.kaneda@intel.com, robert.moore@intel.com,
	kasan-dev <kasan-dev@googlegroups.com>,
	Christoph Hellwig <hch@infradead.org>,
	linux-acpi@vger.kernel.org,
	Dhaval Giani <dhaval.giani@oracle.com>,
	Andrey Ryabinin <aryabinin@virtuozzo.com>,
	Evgenii Stepanov <eugenis@google.com>,
	lenb@kernel.org, Marco Elver <elver@google.com>,
	Andrey Konovalov <andreyknvl@google.com>,
	Kevin Brodsky <kevin.brodsky@arm.com>,
	Konrad Rzeszutek Wilk <konrad@darnok.org>,
	Peter Collingbourne <pcc@google.com>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	Branislav Rankov <Branislav.Rankov@arm.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Dmitry Vyukov <dvyukov@google.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH] mm, kasan: don't poison boot memory
Date: Tue, 2 Mar 2021 11:57:08 +0200	[thread overview]
Message-ID: <YD4L9DCpsFWhjSlJ@linux.ibm.com> (raw)
In-Reply-To: <a8864397-83e8-61f7-4b9a-33716eca6cf8@oracle.com>

Hi George,

On Mon, Mar 01, 2021 at 08:20:45PM -0500, George Kennedy wrote:
> > > > > 
> > > > There should be no harm in doing the memblock_reserve() for all
> > > > the standard
> > > > tables, right?
> > > It should be ok to memblock_reserve() all the tables very early as
> > > long as
> > > we don't run out of static entries in memblock.reserved.
> > > 
> > > We just need to make sure the tables are reserved before memblock
> > > allocations are possible, so we'd still need to move
> > > acpi_table_init() in
> > > x86::setup_arch() before e820__memblock_setup().
> > > Not sure how early ACPI is initialized on arm64.
> > 
> > Thanks Mike. Will try to move the memblock_reserves() before
> > e820__memblock_setup().
> 
> Hi Mike,
> 
> Moved acpi_table_init() in x86::setup_arch() before e820__memblock_setup()
> as you suggested.
> 
> Ran 10 boots with the following without error.

I'd suggest to send it as a formal patch to see what x86 and ACPI folks
have to say about this.
 
> diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> index 740f3bdb..3b1dd24 100644
> --- a/arch/x86/kernel/setup.c
> +++ b/arch/x86/kernel/setup.c
> @@ -1047,6 +1047,7 @@ void __init setup_arch(char **cmdline_p)
>      cleanup_highmap();
> 
>      memblock_set_current_limit(ISA_END_ADDRESS);
> +    acpi_boot_table_init();
>      e820__memblock_setup();
> 
>      /*
> @@ -1140,8 +1141,6 @@ void __init setup_arch(char **cmdline_p)
>      /*
>       * Parse the ACPI tables for possible boot-time SMP configuration.
>       */
> -    acpi_boot_table_init();
> -
>      early_acpi_boot_init();
> 
>      initmem_init();
> diff --git a/drivers/acpi/acpica/tbinstal.c b/drivers/acpi/acpica/tbinstal.c
> index 0bb15ad..7830109 100644
> --- a/drivers/acpi/acpica/tbinstal.c
> +++ b/drivers/acpi/acpica/tbinstal.c
> @@ -7,6 +7,7 @@
>   *
> *****************************************************************************/
> 
> +#include <linux/memblock.h>
>  #include <acpi/acpi.h>
>  #include "accommon.h"
>  #include "actables.h"
> @@ -16,6 +17,33 @@
> 
>  /*******************************************************************************
>   *
> + * FUNCTION:    acpi_tb_reserve_standard_table
> + *
> + * PARAMETERS:  address             - Table physical address
> + *              header              - Table header
> + *
> + * RETURN:      None
> + *
> + * DESCRIPTION: To avoid an acpi table page from being "stolen" by the
> buddy
> + *              allocator run memblock_reserve() on all the standard acpi
> tables.
> + *
> + ******************************************************************************/
> +void
> +acpi_tb_reserve_standard_table(acpi_physical_address address,
> +               struct acpi_table_header *header)
> +{
> +    if ((ACPI_COMPARE_NAMESEG(header->signature, ACPI_SIG_FACS)) ||
> +        (ACPI_VALIDATE_RSDP_SIG(header->signature)))
> +        return;
> +

Why these should be excluded?

> +    if (header->length > PAGE_SIZE) /* same check as in acpi_map() */
> +        return;

I don't think this is required, I believe acpi_map() has this check because
kmap() cannot handle multiple pages.

> +
> +    memblock_reserve(address, PAGE_ALIGN(header->length));
> +}
> +
> +/*******************************************************************************
> + *
>   * FUNCTION:    acpi_tb_install_table_with_override
>   *
>   * PARAMETERS:  new_table_desc          - New table descriptor to install
> @@ -58,6 +86,9 @@
>                        new_table_desc->flags,
>                        new_table_desc->pointer);
> 
> +    acpi_tb_reserve_standard_table(new_table_desc->address,
> +                   new_table_desc->pointer);
> +
>      acpi_tb_print_table_header(new_table_desc->address,
>                     new_table_desc->pointer);
> 
> George

-- 
Sincerely yours,
Mike.

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

  reply	other threads:[~2021-03-02 11:22 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-17 20:56 [PATCH] mm, kasan: don't poison boot memory Andrey Konovalov
2021-02-17 20:56 ` Andrey Konovalov
2021-02-18  8:55 ` David Hildenbrand
2021-02-18  8:55   ` David Hildenbrand
2021-02-18 19:40   ` Andrey Konovalov
2021-02-18 19:40     ` Andrey Konovalov
2021-02-18 19:46     ` David Hildenbrand
2021-02-18 19:46       ` David Hildenbrand
2021-02-18 20:26       ` Andrey Konovalov
2021-02-18 20:26         ` Andrey Konovalov
2021-02-19  0:06   ` George Kennedy
2021-02-19  0:06     ` George Kennedy
2021-02-19  0:09     ` Andrey Konovalov
2021-02-19  0:09       ` Andrey Konovalov
2021-02-19 16:45       ` George Kennedy
2021-02-19 16:45         ` George Kennedy
2021-02-19 23:04         ` George Kennedy
2021-02-19 23:04           ` George Kennedy
2021-02-22  9:52           ` David Hildenbrand
2021-02-22  9:52             ` David Hildenbrand
2021-02-22 15:13             ` George Kennedy
2021-02-22 15:13               ` George Kennedy
2021-02-22 16:13               ` David Hildenbrand
2021-02-22 16:13                 ` David Hildenbrand
2021-02-22 16:39                 ` David Hildenbrand
2021-02-22 16:39                   ` David Hildenbrand
2021-02-22 17:40                   ` Konrad Rzeszutek Wilk
2021-02-22 17:40                     ` Konrad Rzeszutek Wilk
2021-02-22 18:45                     ` Mike Rapoport
2021-02-22 18:45                       ` Mike Rapoport
2021-02-22 18:42                 ` George Kennedy
2021-02-22 18:42                   ` George Kennedy
2021-02-22 21:55                   ` Mike Rapoport
2021-02-22 21:55                     ` Mike Rapoport
     [not found]                     ` <9773282a-2854-25a4-9faa-9da5dd34e371@oracle.com>
2021-02-23 10:33                       ` Mike Rapoport
2021-02-23 10:33                         ` Mike Rapoport
     [not found]                         ` <3ef9892f-d657-207f-d4cf-111f98dcb55c@oracle.com>
2021-02-23 15:47                           ` Mike Rapoport
2021-02-23 15:47                             ` Mike Rapoport
2021-02-23 18:05                             ` George Kennedy
2021-02-23 18:05                               ` George Kennedy
2021-02-23 20:09                               ` Mike Rapoport
2021-02-23 20:09                                 ` Mike Rapoport
2021-02-23 21:16                                 ` George Kennedy
2021-02-23 21:32                                   ` Mike Rapoport
2021-02-23 21:32                                     ` Mike Rapoport
2021-02-23 21:46                                     ` George Kennedy
2021-02-23 21:46                                       ` George Kennedy
2021-02-24 10:37                                       ` Mike Rapoport
2021-02-24 10:37                                         ` Mike Rapoport
2021-02-24 14:22                                         ` George Kennedy
2021-02-24 14:22                                           ` George Kennedy
2021-02-25  8:53                                           ` Mike Rapoport
2021-02-25  8:53                                             ` Mike Rapoport
2021-02-25 12:38                                             ` George Kennedy
2021-02-25 12:38                                               ` George Kennedy
2021-02-25 14:57                                               ` Mike Rapoport
2021-02-25 14:57                                                 ` Mike Rapoport
2021-02-25 15:22                                                 ` George Kennedy
2021-02-25 15:22                                                   ` George Kennedy
2021-02-25 16:06                                                   ` George Kennedy
2021-02-25 16:06                                                     ` George Kennedy
2021-02-25 16:07                                                   ` Mike Rapoport
2021-02-25 16:07                                                     ` Mike Rapoport
2021-02-25 16:31                                                     ` George Kennedy
2021-02-25 16:31                                                       ` George Kennedy
2021-02-25 17:23                                                       ` David Hildenbrand
2021-02-25 17:23                                                         ` David Hildenbrand
2021-02-25 17:41                                                         ` Mike Rapoport
2021-02-25 17:41                                                           ` Mike Rapoport
2021-02-25 17:50                                                       ` Mike Rapoport
2021-02-25 17:50                                                         ` Mike Rapoport
2021-02-25 17:33                                                     ` George Kennedy
2021-02-25 17:33                                                       ` George Kennedy
2021-02-26  1:19                                                       ` George Kennedy
2021-02-26  1:19                                                         ` George Kennedy
2021-02-26 11:17                                                         ` Mike Rapoport
2021-02-26 11:17                                                           ` Mike Rapoport
2021-02-26 16:16                                                           ` George Kennedy
2021-02-26 16:16                                                             ` George Kennedy
2021-02-28 18:08                                                             ` Mike Rapoport
2021-02-28 18:08                                                               ` Mike Rapoport
2021-03-01 14:29                                                               ` George Kennedy
2021-03-01 14:29                                                                 ` George Kennedy
2021-03-02  1:20                                                                 ` George Kennedy
2021-03-02  1:20                                                                   ` George Kennedy
2021-03-02  9:57                                                                   ` Mike Rapoport [this message]
2021-03-02  9:57                                                                     ` Mike Rapoport
2021-02-23 21:26                                 ` George Kennedy
2021-02-23 21:26                                   ` George Kennedy

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=YD4L9DCpsFWhjSlJ@linux.ibm.com \
    --to=rppt@linux.ibm.com \
    --cc=Branislav.Rankov@arm.com \
    --cc=akpm@linux-foundation.org \
    --cc=andreyknvl@google.com \
    --cc=aryabinin@virtuozzo.com \
    --cc=catalin.marinas@arm.com \
    --cc=david@redhat.com \
    --cc=dhaval.giani@oracle.com \
    --cc=dvyukov@google.com \
    --cc=elver@google.com \
    --cc=erik.kaneda@intel.com \
    --cc=eugenis@google.com \
    --cc=george.kennedy@oracle.com \
    --cc=glider@google.com \
    --cc=hch@infradead.org \
    --cc=kasan-dev@googlegroups.com \
    --cc=kevin.brodsky@arm.com \
    --cc=konrad@darnok.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=pcc@google.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=robert.moore@intel.com \
    --cc=vincenzo.frascino@arm.com \
    --cc=will.deacon@arm.com \
    /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.