Thread (30 messages) 30 messages, 5 authors, 2016-02-21
DORMANTno replies

[PATCH v5 15/15] arm64: hibernate: Prevent resume from a different kernel version

From: yu.c.chen@intel.com (Chen, Yu C)
Date: 2016-02-21 09:04:39
Also in: linux-pm

-----Original Message-----
From: Pavel Machek [mailto:pavel at ucw.cz]
Sent: Sunday, February 21, 2016 3:57 AM
To: Chen, Yu C
Cc: James Morse; linux-arm-kernel at lists.infradead.org; Will Deacon; Sudeep
Holla; Geoff Levand; Catalin Marinas; Lorenzo Pieralisi; Mark Rutland; AKASHI
Takahiro; Marc Zyngier; Rafael J . Wysocki; linux-pm at vger.kernel.org
Subject: Re: [PATCH v5 15/15] arm64: hibernate: Prevent resume from a
different kernel version

On Sat 2016-02-20 19:16:59, Chen, Yu C wrote:
quoted
quoted
-----Original Message-----
From: James Morse [mailto:james.morse at arm.com]
Sent: Thursday, February 18, 2016 8:00 PM
To: Chen, Yu C
Cc: Pavel Machek; linux-arm-kernel at lists.infradead.org; Will Deacon;
Sudeep Holla; Geoff Levand; Catalin Marinas; Lorenzo Pieralisi; Mark
Rutland; AKASHI Takahiro; Marc Zyngier; Rafael J . Wysocki;
linux-pm at vger.kernel.org
Subject: Re: [PATCH v5 15/15] arm64: hibernate: Prevent resume from
a different kernel version

On 17/02/16 02:20, Chen, Yu C wrote:
quoted
quoted
On Tue 2016-02-16 15:49:27, James Morse wrote:
This reminds me a similar problem I once encountered on x86 : - )
The efi memory layout should be strictly the same before/after
hibernation,
right?

The kernel hopes it is the same, as the page-tables it uses for
runtime services calls are restored along with the rest of memory,
but there is the risk that these don't match the EFI memory map any
more.
quoted
quoted
Even if the amount of memory is the same, the layout might be different.
(Core hibernate code already has a counter of the number of physical
pages.)
I've encountered this situation before.
quoted
I'm still digging through the efi code (and spec), but it is fairly
easy to cause the memory map to change before entry to linux. This
doesn't seem to be a problem, as linux happily overwrites most of
the allocated areas, so it may not be as fragile as I thought.
If I did some peripherals plug/unplug after suspend to hibernation,
then the next time it boots up there would likely be a slightly different efi
memory map.
quoted
The efi provides a callback of get_memory_map to Linux for retrieving
the initial map, which depends on the bios/bootloader
probing/enumeration IMO. The difference of efi map might lead to kernel
panic during resume sometimes.

md5hash of the efi map, and complain to bios vendors if it happens?
Because iirc it is not supposed to.
Yes, it should not happen, at least for ACPI S4,
however after communicating with some people from bios team, it is said
BIOSen  are designed to  dynamically allocate address space for
resources.  Maybe we can register a panic notifier to check the consistence
of efi map md5hash.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help