PM: remove s390 specific callbacks

ARCH_SAVE_PAGE_KEYS has been introduced in order to be able to save
and restore s390 specific storage keys into a hibernation image.
With hibernation support removed from s390 there is no point in
keeping the callbacks.

Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Acked-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
Heiko Carstens 2020-03-18 20:55:20 +01:00 committed by Vasily Gorbik
parent 394216275c
commit 086b2d7837
3 changed files with 0 additions and 55 deletions

View File

@ -566,38 +566,4 @@ static inline void queue_up_suspend_work(void) {}
#endif /* !CONFIG_PM_AUTOSLEEP */ #endif /* !CONFIG_PM_AUTOSLEEP */
#ifdef CONFIG_ARCH_SAVE_PAGE_KEYS
/*
* The ARCH_SAVE_PAGE_KEYS functions can be used by an architecture
* to save/restore additional information to/from the array of page
* frame numbers in the hibernation image. For s390 this is used to
* save and restore the storage key for each page that is included
* in the hibernation image.
*/
unsigned long page_key_additional_pages(unsigned long pages);
int page_key_alloc(unsigned long pages);
void page_key_free(void);
void page_key_read(unsigned long *pfn);
void page_key_memorize(unsigned long *pfn);
void page_key_write(void *address);
#else /* !CONFIG_ARCH_SAVE_PAGE_KEYS */
static inline unsigned long page_key_additional_pages(unsigned long pages)
{
return 0;
}
static inline int page_key_alloc(unsigned long pages)
{
return 0;
}
static inline void page_key_free(void) {}
static inline void page_key_read(unsigned long *pfn) {}
static inline void page_key_memorize(unsigned long *pfn) {}
static inline void page_key_write(void *address) {}
#endif /* !CONFIG_ARCH_SAVE_PAGE_KEYS */
#endif /* _LINUX_SUSPEND_H */ #endif /* _LINUX_SUSPEND_H */

View File

@ -80,9 +80,6 @@ config HIBERNATION
For more information take a look at <file:Documentation/power/swsusp.rst>. For more information take a look at <file:Documentation/power/swsusp.rst>.
config ARCH_SAVE_PAGE_KEYS
bool
config PM_STD_PARTITION config PM_STD_PARTITION
string "Default resume partition" string "Default resume partition"
depends on HIBERNATION depends on HIBERNATION

View File

@ -1744,9 +1744,6 @@ int hibernate_preallocate_memory(void)
count += highmem; count += highmem;
count -= totalreserve_pages; count -= totalreserve_pages;
/* Add number of pages required for page keys (s390 only). */
size += page_key_additional_pages(saveable);
/* Compute the maximum number of saveable pages to leave in memory. */ /* Compute the maximum number of saveable pages to leave in memory. */
max_size = (count - (size + PAGES_FOR_IO)) / 2 max_size = (count - (size + PAGES_FOR_IO)) / 2
- 2 * DIV_ROUND_UP(reserved_size, PAGE_SIZE); - 2 * DIV_ROUND_UP(reserved_size, PAGE_SIZE);
@ -2075,8 +2072,6 @@ static inline void pack_pfns(unsigned long *buf, struct memory_bitmap *bm)
buf[j] = memory_bm_next_pfn(bm); buf[j] = memory_bm_next_pfn(bm);
if (unlikely(buf[j] == BM_END_OF_MAP)) if (unlikely(buf[j] == BM_END_OF_MAP))
break; break;
/* Save page key for data page (s390 only). */
page_key_read(buf + j);
} }
} }
@ -2226,9 +2221,6 @@ static int unpack_orig_pfns(unsigned long *buf, struct memory_bitmap *bm)
if (unlikely(buf[j] == BM_END_OF_MAP)) if (unlikely(buf[j] == BM_END_OF_MAP))
break; break;
/* Extract and buffer page key for data page (s390 only). */
page_key_memorize(buf + j);
if (pfn_valid(buf[j]) && memory_bm_pfn_present(bm, buf[j])) if (pfn_valid(buf[j]) && memory_bm_pfn_present(bm, buf[j]))
memory_bm_set_bit(bm, buf[j]); memory_bm_set_bit(bm, buf[j]);
else else
@ -2623,11 +2615,6 @@ int snapshot_write_next(struct snapshot_handle *handle)
if (error) if (error)
return error; return error;
/* Allocate buffer for page keys. */
error = page_key_alloc(nr_copy_pages);
if (error)
return error;
hibernate_restore_protection_begin(); hibernate_restore_protection_begin();
} else if (handle->cur <= nr_meta_pages + 1) { } else if (handle->cur <= nr_meta_pages + 1) {
error = unpack_orig_pfns(buffer, &copy_bm); error = unpack_orig_pfns(buffer, &copy_bm);
@ -2649,8 +2636,6 @@ int snapshot_write_next(struct snapshot_handle *handle)
} }
} else { } else {
copy_last_highmem_page(); copy_last_highmem_page();
/* Restore page key for data page (s390 only). */
page_key_write(handle->buffer);
hibernate_restore_protect_page(handle->buffer); hibernate_restore_protect_page(handle->buffer);
handle->buffer = get_buffer(&orig_bm, &ca); handle->buffer = get_buffer(&orig_bm, &ca);
if (IS_ERR(handle->buffer)) if (IS_ERR(handle->buffer))
@ -2673,9 +2658,6 @@ int snapshot_write_next(struct snapshot_handle *handle)
void snapshot_write_finalize(struct snapshot_handle *handle) void snapshot_write_finalize(struct snapshot_handle *handle)
{ {
copy_last_highmem_page(); copy_last_highmem_page();
/* Restore page key for data page (s390 only). */
page_key_write(handle->buffer);
page_key_free();
hibernate_restore_protect_page(handle->buffer); hibernate_restore_protect_page(handle->buffer);
/* Do that only if we have loaded the image entirely */ /* Do that only if we have loaded the image entirely */
if (handle->cur > 1 && handle->cur > nr_meta_pages + nr_copy_pages) { if (handle->cur > 1 && handle->cur > nr_meta_pages + nr_copy_pages) {