aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/s390/kernel/suspend.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/s390/kernel/suspend.c b/arch/s390/kernel/suspend.c
index 1c4c5accd220..d3236c9e226b 100644
--- a/arch/s390/kernel/suspend.c
+++ b/arch/s390/kernel/suspend.c
@@ -138,6 +138,8 @@ int pfn_is_nosave(unsigned long pfn)
138{ 138{
139 unsigned long nosave_begin_pfn = PFN_DOWN(__pa(&__nosave_begin)); 139 unsigned long nosave_begin_pfn = PFN_DOWN(__pa(&__nosave_begin));
140 unsigned long nosave_end_pfn = PFN_DOWN(__pa(&__nosave_end)); 140 unsigned long nosave_end_pfn = PFN_DOWN(__pa(&__nosave_end));
141 unsigned long eshared_pfn = PFN_DOWN(__pa(&_eshared)) - 1;
142 unsigned long stext_pfn = PFN_DOWN(__pa(&_stext));
141 143
142 /* Always save lowcore pages (LC protection might be enabled). */ 144 /* Always save lowcore pages (LC protection might be enabled). */
143 if (pfn <= LC_PAGES) 145 if (pfn <= LC_PAGES)
@@ -145,6 +147,8 @@ int pfn_is_nosave(unsigned long pfn)
145 if (pfn >= nosave_begin_pfn && pfn < nosave_end_pfn) 147 if (pfn >= nosave_begin_pfn && pfn < nosave_end_pfn)
146 return 1; 148 return 1;
147 /* Skip memory holes and read-only pages (NSS, DCSS, ...). */ 149 /* Skip memory holes and read-only pages (NSS, DCSS, ...). */
150 if (pfn >= stext_pfn && pfn <= eshared_pfn)
151 return ipl_info.type == IPL_TYPE_NSS ? 1 : 0;
148 if (tprot(PFN_PHYS(pfn))) 152 if (tprot(PFN_PHYS(pfn)))
149 return 1; 153 return 1;
150 return 0; 154 return 0;