diff options
-rw-r--r-- | arch/s390/kernel/suspend.c | 4 |
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; |