mirror of
https://abf.rosa.ru/djam/kernel-6.1.git
synced 2025-02-25 00:02:55 +00:00
Partially revert mainline commit 92923ca to fix a regression
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.
This commit is contained in:
parent
3e203e9f79
commit
80c29b9ae6
2 changed files with 50 additions and 0 deletions
|
@ -167,6 +167,9 @@ Patch1: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kve
|
|||
Source10: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kversion}.sign
|
||||
|
||||
# ROSA-specific patches
|
||||
%ifarch %{ix86}
|
||||
Patch10: revert-mm-meminit-only-set-page-reserved-in-the-memblock-re.patch
|
||||
%endif
|
||||
|
||||
# Adds explicit linking of the Perf Python extension with libdl, thus fixing
|
||||
# the build.
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
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
|
Loading…
Add table
Reference in a new issue