OSDN Git Service

PM / Hibernate: Call flush_icache_range() on pages restored in-place
authorJames Morse <james.morse@arm.com>
Wed, 27 Apr 2016 16:47:11 +0000 (17:47 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Apr 2019 04:23:24 +0000 (06:23 +0200)
commitfbfaa26fa9e77f4b8b141f650340195f23cd7029
tree6ecf90d0138f52274abc4df7411bc1f722a80b35
parent60e4a50d332bbbb3cc62acee58fd04236f9d57a1
PM / Hibernate: Call flush_icache_range() on pages restored in-place

[ Upstream commit f6cf0545ec697ddc278b7457b7d0c0d86a2ea88e ]

Some architectures require code written to memory as if it were data to be
'cleaned' from any data caches before the processor can fetch them as new
instructions.

During resume from hibernate, the snapshot code copies some pages directly,
meaning these architectures do not get a chance to perform their cache
maintenance. Modify the read and decompress code to call
flush_icache_range() on all pages that are restored, so that the restored
in-place pages are guaranteed to be executable on these architectures.

Signed-off-by: James Morse <james.morse@arm.com>
Acked-by: Pavel Machek <pavel@ucw.cz>
Acked-by: Rafael J. Wysocki <rjw@rjwysocki.net>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
[will: make clean_pages_on_* static and remove initialisers]
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
kernel/power/swap.c