2021-10-21 07:12:07

by Mike Rapoport

[permalink] [raw]
Subject: [PATCH v2 0/2] memblock: exclude MEMBLOCK_NOMAP regions from kmemleak

From: Mike Rapoport <[email protected]>

Hi,

This is take 2 to fix interaction between MEMBLOCK_NOMAP and kmemleak.

The previous version caused boot failures Qian Cai reported here:

https://lore.kernel.org/all/[email protected]

The failures happened because calling kmemleak_free_part_phys() (or any
kmemleak phys APIs for that matter) too early means it cannot use __va() on
arm64.

This late in the cycle I can only think of reverting kmemleak wavier from
memblock_mark_nomap() and putting it in the only two callers that set
MEMBLOCK_NOMAP to an allocated chunk rather than marking NOMAP "unusable"
memory reported by firmware.

The first patch here is the revert of v1 and the second patch is actual v2
implementation.

Vladimir and Qian, I'd appreciate if you could verify that v2 works for
you.

v2:
* move kmemleak waiver from memblock_mark_nomap() to callers that need it
* use kmemleak_ignore_phys() rather than kmemleak_free_part_phys() as
Catalin suggested.

v1: https://lore.kernel.org/all/[email protected]

Mike Rapoport (2):
Revert "memblock: exclude NOMAP regions from kmemleak"
memblock: exclude MEMBLOCK_NOMAP regions from kmemleak

drivers/acpi/tables.c | 3 +++
drivers/of/of_reserved_mem.c | 2 ++
mm/memblock.c | 10 ++++------
3 files changed, 9 insertions(+), 6 deletions(-)


base-commit: 519d81956ee277b4419c723adfb154603c2565ba
--
2.28.0


2021-10-21 16:53:35

by Qian Cai

[permalink] [raw]
Subject: Re: [PATCH v2 0/2] memblock: exclude MEMBLOCK_NOMAP regions from kmemleak



On 10/21/21 3:09 AM, Mike Rapoport wrote:
> From: Mike Rapoport <[email protected]>
>
> Hi,
>
> This is take 2 to fix interaction between MEMBLOCK_NOMAP and kmemleak.
>
> The previous version caused boot failures Qian Cai reported here:
>
> https://lore.kernel.org/all/[email protected]
>
> The failures happened because calling kmemleak_free_part_phys() (or any
> kmemleak phys APIs for that matter) too early means it cannot use __va() on
> arm64.
>
> This late in the cycle I can only think of reverting kmemleak wavier from
> memblock_mark_nomap() and putting it in the only two callers that set
> MEMBLOCK_NOMAP to an allocated chunk rather than marking NOMAP "unusable"
> memory reported by firmware.
>
> The first patch here is the revert of v1 and the second patch is actual v2
> implementation.
>
> Vladimir and Qian, I'd appreciate if you could verify that v2 works for
> you.

FYI, this passed the regression tests here.


>
> v2:
> * move kmemleak waiver from memblock_mark_nomap() to callers that need it
> * use kmemleak_ignore_phys() rather than kmemleak_free_part_phys() as
> Catalin suggested.
>
> v1: https://lore.kernel.org/all/[email protected]
>
> Mike Rapoport (2):
> Revert "memblock: exclude NOMAP regions from kmemleak"
> memblock: exclude MEMBLOCK_NOMAP regions from kmemleak
>
> drivers/acpi/tables.c | 3 +++
> drivers/of/of_reserved_mem.c | 2 ++
> mm/memblock.c | 10 ++++------
> 3 files changed, 9 insertions(+), 6 deletions(-)
>
>
> base-commit: 519d81956ee277b4419c723adfb154603c2565ba
>