From: Ma Wupeng <[email protected]>
If system have no mirrored memory or use crashkernel.high while
kernelcore=mirror is enabled in cmdline, during crashkernel,
there will be limited mirrored memory and this usually lead to
OOM.
To solve this problem, disable mirror feature during crashkernel.
Signed-off-by: Ma Wupeng <[email protected]>
---
mm/mm_init.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/mm/mm_init.c b/mm/mm_init.c
index 077bfe393b5e..513bad672708 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -26,6 +26,7 @@
#include <linux/pgtable.h>
#include <linux/swap.h>
#include <linux/cma.h>
+#include <linux/crash_dump.h>
#include "internal.h"
#include "slab.h"
#include "shuffle.h"
@@ -381,6 +382,11 @@ static void __init find_zone_movable_pfns_for_nodes(void)
goto out;
}
+ if (is_kdump_kernel()) {
+ pr_warn("The system is under kdump, ignore kernelcore=mirror.\n");
+ goto out;
+ }
+
for_each_mem_region(r) {
if (memblock_is_mirror(r))
continue;
--
2.25.1
On Tue, Jan 09, 2024 at 12:15:36PM +0800, Wupeng Ma wrote:
> From: Ma Wupeng <[email protected]>
>
> If system have no mirrored memory or use crashkernel.high while
> kernelcore=mirror is enabled in cmdline, during crashkernel,
> there will be limited mirrored memory and this usually lead to
> OOM.
>
> To solve this problem, disable mirror feature during crashkernel.
>
> Signed-off-by: Ma Wupeng <[email protected]>
Acked-by: Mike Rapoport (IBM) <[email protected]>
> ---
> mm/mm_init.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/mm/mm_init.c b/mm/mm_init.c
> index 077bfe393b5e..513bad672708 100644
> --- a/mm/mm_init.c
> +++ b/mm/mm_init.c
> @@ -26,6 +26,7 @@
> #include <linux/pgtable.h>
> #include <linux/swap.h>
> #include <linux/cma.h>
> +#include <linux/crash_dump.h>
> #include "internal.h"
> #include "slab.h"
> #include "shuffle.h"
> @@ -381,6 +382,11 @@ static void __init find_zone_movable_pfns_for_nodes(void)
> goto out;
> }
>
> + if (is_kdump_kernel()) {
> + pr_warn("The system is under kdump, ignore kernelcore=mirror.\n");
> + goto out;
> + }
> +
> for_each_mem_region(r) {
> if (memblock_is_mirror(r))
> continue;
> --
> 2.25.1
>
--
Sincerely yours,
Mike.