efi: disable mirror feature during crashkernel
authorMa Wupeng <mawupeng1@huawei.com>
Tue, 9 Jan 2024 04:15:36 +0000 (12:15 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 12 Jan 2024 23:20:47 +0000 (15:20 -0800)
If the system has no mirrored memory or uses crashkernel.high while
kernelcore=mirror is enabled on the command line then during crashkernel,
there will be limited mirrored memory and this usually leads to OOM.

To solve this problem, disable the mirror feature during crashkernel.

Link: https://lkml.kernel.org/r/20240109041536.3903042-1-mawupeng1@huawei.com
Signed-off-by: Ma Wupeng <mawupeng1@huawei.com>
Acked-by: Mike Rapoport (IBM) <rppt@kernel.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/mm_init.c

index 89dc29f1e6c6fa3a29da0ff071779f0925c36dbf..2c19f5515e36c47eb3bb23f02d9c7c2c1c646393 100644 (file)
@@ -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;