Skip to content

Commit 3363e0a

Browse files
Xueqin Luorafaeljw
authored andcommitted
PM: hibernate: Complain about memory map mismatches during resume
The system memory map can change over a hibernation-restore cycle due to a defect in the platform firmware, and some of the page frames used by the kernel before hibernation may not be available any more during the subsequent restore which leads to the error below. [ T357] PM: Image loading progress: 0% [ T357] PM: Read 2681596 kbytes in 0.03 seconds (89386.53 MB/s) [ T357] PM: Error -14 resuming [ T357] PM: Failed to load hibernation image, recovering. [ T357] PM: Basic memory bitmaps freed [ T357] OOM killer enabled. [ T357] Restarting tasks ... done. [ T357] PM: resume from hibernation failed (-14) [ T357] PM: Hibernation image not present or could not be loaded. Add an error message to the unpack() function to allow problematic page frames to be identified and the source of the problem to be diagnosed more easily. This can save developers quite a bit of debugging time. Signed-off-by: Xueqin Luo <luoxueqin@kylinos.cn> [ rjw: New subject, edited changelog ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent 6e5d730 commit 3363e0a

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

kernel/power/snapshot.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2259,10 +2259,14 @@ static int unpack_orig_pfns(unsigned long *buf, struct memory_bitmap *bm)
22592259
if (unlikely(buf[j] == BM_END_OF_MAP))
22602260
break;
22612261

2262-
if (pfn_valid(buf[j]) && memory_bm_pfn_present(bm, buf[j]))
2262+
if (pfn_valid(buf[j]) && memory_bm_pfn_present(bm, buf[j])) {
22632263
memory_bm_set_bit(bm, buf[j]);
2264-
else
2264+
} else {
2265+
if (!pfn_valid(buf[j]))
2266+
pr_err(FW_BUG "Memory map mismatch at 0x%llx after hibernation\n",
2267+
(unsigned long long)PFN_PHYS(buf[j]));
22652268
return -EFAULT;
2269+
}
22662270
}
22672271

22682272
return 0;

0 commit comments

Comments
 (0)