mirror of
https://abf.rosa.ru/djam/kernel-5.15.git
synced 2025-02-23 18:42:55 +00:00

The following commit seems to cause problems with hibernation on 32-bit systems: commit 92923ca3aacef63c92dc297a75ad0c6dfe4eab37 Author: Nathan Zimmer <nzimmer@sgi.com> Date: Tue Jun 30 14:56:48 2015 -0700 mm: meminit: only set page reserved in the memblock region Without this commit, it takes less than 10-15 seconds on our test system (https://linux-hardware.org/index.php?probe=e6a06c64c7) from "systemctl hibernate" command till the system powers off. With the mainline kernels 4.2-4.7, the system resumes OK. With this commit, it takes more than 2 minutes for that system to hibernate and it usually hangs on resume. Let us revert the main parts of this commit in the 32-bit kernels for now.
47 lines
1.6 KiB
Diff
47 lines
1.6 KiB
Diff
The following commit seems to cause problems with hibernation on 32-bit
|
|
systems:
|
|
|
|
commit 92923ca3aacef63c92dc297a75ad0c6dfe4eab37
|
|
Author: Nathan Zimmer <nzimmer@sgi.com>
|
|
Date: Tue Jun 30 14:56:48 2015 -0700
|
|
|
|
mm: meminit: only set page reserved in the memblock region
|
|
|
|
Without this commit, it takes less than 10-15 seconds on our test system
|
|
(https://linux-hardware.org/index.php?probe=e6a06c64c7) from
|
|
"systemctl hibernate" command till the system powers off. With the mainline
|
|
kernels 4.2-4.7, the system resumes OK.
|
|
|
|
With this commit, it takes more than 2 minutes for that system to hibernate
|
|
and it usually hangs on resume.
|
|
|
|
Let us revert the main parts of this commit in the 32-bit kernels for now.
|
|
|
|
Signed-off-by: Evgenii Shatokhin <eugene.shatokhin@rosalab.ru>
|
|
|
|
diff --git a/mm/nobootmem.c b/mm/nobootmem.c
|
|
index 487dad6..cfd91fa 100644
|
|
--- a/mm/nobootmem.c
|
|
+++ b/mm/nobootmem.c
|
|
@@ -134,9 +134,6 @@ static unsigned long __init free_low_memory_core_early(void)
|
|
|
|
memblock_clear_hotplug(0, -1);
|
|
|
|
- for_each_reserved_mem_region(i, &start, &end)
|
|
- reserve_bootmem_region(start, end);
|
|
-
|
|
/*
|
|
* We need to use NUMA_NO_NODE instead of NODE_DATA(0)->node_id
|
|
* because in some case like Node0 doesn't have RAM installed
|
|
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
|
|
index f3e0c69..ca32c26 100644
|
|
--- a/mm/page_alloc.c
|
|
+++ b/mm/page_alloc.c
|
|
@@ -1168,6 +1168,7 @@ static void __meminit __init_single_page(struct page *page, unsigned long pfn,
|
|
init_page_count(page);
|
|
page_mapcount_reset(page);
|
|
page_cpupid_reset_last(page);
|
|
+ SetPageReserved(page);
|
|
|
|
INIT_LIST_HEAD(&page->lru);
|
|
#ifdef WANT_PAGE_VIRTUAL
|