* [PATCH v4] of: fdt: Scan /memreserve/ last
@ 2023-04-24 11:38 Lucas Tanure
2023-04-27 21:04 ` Rob Herring
0 siblings, 1 reply; 2+ messages in thread
From: Lucas Tanure @ 2023-04-24 11:38 UTC (permalink / raw)
To: Rob Herring, Frank Rowand, Mike Rapoport, Andrew Morton
Cc: devicetree, linux-kernel, linux-mm, jbrunet, linux-amlogic,
linux-arm-kernel, martin.blumenstingl, narmstrong, stefan,
Lucas Tanure
Change the scanning /memreserve/ and /reserved-memory node order to fix
Kernel panic on Khadas Vim3 Board.
If /memreserve/ goes first, the memory is reserved, but nomap can't be
applied to the region. So the memory won't be used by Linux, but it is
still present in the linear map as normal memory, which allows
speculation. Legitimate access to adjacent pages will cause the CPU
to end up prefetching into them leading to Kernel panic.
So /reserved-memory node should go first, as it has a more updated
description of the memory regions and can apply flags, like nomap.
Signed-off-by: Lucas Tanure <tanure@linux.com>i
---
Previous Threads:
#regzbot link: https://lore.kernel.org/linux-arm-kernel/40ca11f84b7cdbfb9ad2ddd480cb204a@agner.ch/#regzbot
#regzbot link: https://lore.kernel.org/all/CAJX_Q+1Tjc+-TjZ6JW9X0NxEdFe=82a9626yL63j7uVD4LpxEA@mail.gmail.com/
V1: https://lore.kernel.org/all/20230406151429.524591-1-tanure@linux.com/
v2: https://lore.kernel.org/all/20230410120017.41664-1-tanure@linux.com/
v3: https://lore.kernel.org/linux-mm/20230412224620.8909-1-tanure@linux.com/T/
Change from V3:
- Drop cover letter
- Add more information into the patch
Change from V2:
- Remove region overlap and reserved checks
Change from V1:
- Instead of allowing to mark nomap a region already reserved, give
precedence to /reserved-memory node scan.
---
drivers/of/fdt.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index d14735a81301..bf502ba8da95 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -635,6 +635,9 @@ void __init early_init_fdt_scan_reserved_mem(void)
if (!initial_boot_params)
return;
+ fdt_scan_reserved_mem();
+ fdt_reserve_elfcorehdr();
+
/* Process header /memreserve/ fields */
for (n = 0; ; n++) {
fdt_get_mem_rsv(initial_boot_params, n, &base, &size);
@@ -643,8 +646,6 @@ void __init early_init_fdt_scan_reserved_mem(void)
memblock_reserve(base, size);
}
- fdt_scan_reserved_mem();
- fdt_reserve_elfcorehdr();
fdt_init_reserved_mem();
}
--
2.40.0
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH v4] of: fdt: Scan /memreserve/ last
2023-04-24 11:38 [PATCH v4] of: fdt: Scan /memreserve/ last Lucas Tanure
@ 2023-04-27 21:04 ` Rob Herring
0 siblings, 0 replies; 2+ messages in thread
From: Rob Herring @ 2023-04-27 21:04 UTC (permalink / raw)
To: Lucas Tanure
Cc: linux-arm-kernel, narmstrong, devicetree, Mike Rapoport,
martin.blumenstingl, Andrew Morton, linux-mm, linux-amlogic,
Frank Rowand, Rob Herring, jbrunet, stefan, linux-kernel
On Mon, 24 Apr 2023 12:38:46 +0100, Lucas Tanure wrote:
> Change the scanning /memreserve/ and /reserved-memory node order to fix
> Kernel panic on Khadas Vim3 Board.
>
> If /memreserve/ goes first, the memory is reserved, but nomap can't be
> applied to the region. So the memory won't be used by Linux, but it is
> still present in the linear map as normal memory, which allows
> speculation. Legitimate access to adjacent pages will cause the CPU
> to end up prefetching into them leading to Kernel panic.
>
> So /reserved-memory node should go first, as it has a more updated
> description of the memory regions and can apply flags, like nomap.
>
> Signed-off-by: Lucas Tanure <tanure@linux.com>i
> ---
> Previous Threads:
> #regzbot link: https://lore.kernel.org/linux-arm-kernel/40ca11f84b7cdbfb9ad2ddd480cb204a@agner.ch/#regzbot
> #regzbot link: https://lore.kernel.org/all/CAJX_Q+1Tjc+-TjZ6JW9X0NxEdFe=82a9626yL63j7uVD4LpxEA@mail.gmail.com/
Note that this should have been a 'Link:' entry in the commit message
for regzbot. I added it.
>
> V1: https://lore.kernel.org/all/20230406151429.524591-1-tanure@linux.com/
> v2: https://lore.kernel.org/all/20230410120017.41664-1-tanure@linux.com/
> v3: https://lore.kernel.org/linux-mm/20230412224620.8909-1-tanure@linux.com/T/
>
> Change from V3:
> - Drop cover letter
> - Add more information into the patch
>
> Change from V2:
> - Remove region overlap and reserved checks
>
> Change from V1:
> - Instead of allowing to mark nomap a region already reserved, give
> precedence to /reserved-memory node scan.
> ---
> drivers/of/fdt.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
Applied, thanks!
Going to let this sit in linux-next for a bit. I also didn't tag for
stable kernels. I want it to get some exposure in mainline at least for
a few -rc releases rather than getting backported right away. Please
help ensure that happens if you see stable review emails. I'm going to
be offline most of the next month.
Rob
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-04-27 21:04 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-24 11:38 [PATCH v4] of: fdt: Scan /memreserve/ last Lucas Tanure
2023-04-27 21:04 ` Rob Herring
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox