s390: removal of hibernate support
Subsystems (3)
Hi Rafael,
we are going to remove hibernate support on s390, since it is
- broken since many years
- there is no real use case which justifies keeping and maintaining the code
This in turn allows also to remove s390 specific hooks in generic power management code (see patch below). The patch below is currently also on the same features branch.
I silently assume(d) that you don't mind to get rid of otherwise dead code, or do you have any objections?
From 086b2d78375cffe58f5341359bebec0650793811 Mon Sep 17 00:00:00 2001
From: Heiko Carstens <[email protected]>
Date: Wed, 18 Mar 2020 20:55:20 +0100
Subject: [PATCH] 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.
--- include/linux/suspend.h | 34 ---------------------------------- kernel/power/Kconfig | 3 --- kernel/power/snapshot.c | 18 ------------------ 3 files changed, 55 deletions(-)
include/linux/suspend.h +0 -34
@@ -566,38 +566,4 @@ static inline void queue_up_suspend_work(void) {}#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 */
kernel/power/Kconfig +0 -3
@@ -80,9 +80,6 @@ config HIBERNATION For more information take a look at <file:Documentation/power/swsusp.rst>. -config ARCH_SAVE_PAGE_KEYS - bool - config PM_STD_PARTITION string "Default resume partition" depends on HIBERNATION
kernel/power/snapshot.c +0 -18
@@ -1744,9 +1744,6 @@ int hibernate_preallocate_memory(void) count += highmem; 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. */ max_size = (count - (size +PAGES_FOR_IO )) /2 -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);if (unlikely (buf[j] ==BM_END_OF_MAP ))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 ))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]))memory_bm_set_bit (bm, buf[j]);else
@@ -2623,11 +2615,6 @@ int snapshot_write_next(struct snapshot_handle *handle)if (error)return error; -/* Allocate buffer for page keys. */ - error =page_key_alloc (nr_copy_pages); -if (error) -return error; -hibernate_restore_protection_begin (); }else if (handle->cur <= nr_meta_pages +1 ) { error =unpack_orig_pfns (buffer, ©_bm);
@@ -2649,8 +2636,6 @@ int snapshot_write_next(struct snapshot_handle *handle) } }else {copy_last_highmem_page (); -/* Restore page key for data page (s390 only). */ -page_key_write (handle->buffer);hibernate_restore_protect_page (handle->buffer); handle->buffer =get_buffer (&orig_bm, &ca);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) {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);/* Do that only if we have loaded the image entirely */ if (handle->cur >1 && handle->cur > nr_meta_pages + nr_copy_pages) {
Signature · 1 line
2.17.1
Rafael J. Wysocki
maintainerHi,
Quoted 26 lines · Heiko Carstens
Hi Rafael,
we are going to remove hibernate support on s390, since it is
- broken since many years
- there is no real use case which justifies keeping and maintaining the codeThis in turn allows also to remove s390 specific hooks in generic power management code (see patch below). The patch below is currently also on the same features branch.
I silently assume(d) that you don't mind to get rid of otherwise dead code, or do you have any objections?From
086b2d78375cffe58f5341359bebec0650793811Mon Sep 17 00:00:00 2001
From: Heiko Carstens <[email protected]>
Date: Wed, 18 Mar 2020 20:55:20 +0100
Subject: [PATCH] PM: remove s390 specific callbacks
ARCH_SAVE_PAGE_KEYShas 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.
Quoted 4 lines
Signed-off-by Heiko Carstens <[email protected]>Signed-off-by Vasily Gorbik <[email protected]>
Can I take this patch or would it be better to route it differently?
Quoted 130 lines
--- include/linux/suspend.h | 34 ---------------------------------- kernel/power/Kconfig | 3 --- kernel/power/snapshot.c | 18 ------------------ 3 files changed, 55 deletions(-)include/linux/suspend.h +0
-34@@ -566,38 +566,4 @@ static inline void queue_up_suspend_work(void) {}#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 */ kernel/power/Kconfig +0
-3@@ -80,9 +80,6 @@ config HIBERNATION For more information take a look at <file:Documentation/power/swsusp.rst>. -config ARCH_SAVE_PAGE_KEYS - bool - config PM_STD_PARTITION string "Default resume partition" depends on HIBERNATIONkernel/power/snapshot.c +0
-19@@ -1744,9 +1744,6 @@ int hibernate_preallocate_memory(void) count += highmem; 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. */ max_size = (count - (size +PAGES_FOR_IO )) /2 -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);if (unlikely (buf[j] ==BM_END_OF_MAP ))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 ))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]))memory_bm_set_bit (bm, buf[j]);else @@ -2623,11 +2615,6 @@ int snapshot_write_next(struct snapshot_handle *handle)if (error)return error; -/* Allocate buffer for page keys. */ - error =page_key_alloc (nr_copy_pages); -if (error) -return error; -hibernate_restore_protection_begin (); }else if (handle->cur <= nr_meta_pages +1 ) { error =unpack_orig_pfns (buffer, ©_bm);@@ -2649,8 +2636,6 @@ int snapshot_write_next(struct snapshot_handle *handle) } }else {copy_last_highmem_page (); -/* Restore page key for data page (s390 only). */ -page_key_write (handle->buffer);hibernate_restore_protect_page (handle->buffer); handle->buffer =get_buffer (&orig_bm, &ca);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) {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);/* Do that only if we have loaded the image entirely */ if (handle->cur >1 && handle->cur > nr_meta_pages + nr_copy_pages) { --2.17.1
Hi Rafael,
Quoted 25 lines
Quoted 23 lines · Heiko Carstens
we are going to remove hibernate support on s390, since it is
- broken since many years
- there is no real use case which justifies keeping and maintaining the codeThis in turn allows also to remove s390 specific hooks in generic power management code (see patch below). The patch below is currently also on the same features branch.
I silently assume(d) that you don't mind to get rid of otherwise dead code, or do you have any objections?From
086b2d78375cffe58f5341359bebec0650793811Mon Sep 17 00:00:00 2001
From: Heiko Carstens <[email protected]>
Date: Wed, 18 Mar 2020 20:55:20 +0100
Subject: [PATCH] PM: remove s390 specific callbacks
ARCH_SAVE_PAGE_KEYShas 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.
Quoted 6 lines
Quoted 4 lines
Signed-off-by Heiko Carstens <[email protected]>Signed-off-by Vasily Gorbik <[email protected]>Can I take this patch or would it be better to route it differently?
The patch is already on the s390 features branch and is supposed to be part of the first pull request for the next merge window (actually the patch is already in linux-next).
So I'd say the easiest thing would be to route it through the s390 tree.
Rafael J. Wysocki
maintainerQuoted 33 lines · Heiko Carstens
Hi Rafael,
Quoted 30 lines
Quoted 27 lines · Heiko Carstens
we are going to remove hibernate support on s390, since it is
- broken since many years
- there is no real use case which justifies keeping and maintaining the codeThis in turn allows also to remove s390 specific hooks in generic power management code (see patch below). The patch below is currently also on the same features branch.
I silently assume(d) that you don't mind to get rid of otherwise dead code, or do you have any objections?From
086b2d78375cffe58f5341359bebec0650793811Mon Sep 17 00:00:00 2001
From: Heiko Carstens <[email protected]>
Date: Wed, 18 Mar 2020 20:55:20 +0100
Subject: [PATCH] PM: remove s390 specific callbacks
ARCH_SAVE_PAGE_KEYShas 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.Signed-off-by Heiko Carstens <[email protected]>Signed-off-by Vasily Gorbik <[email protected]>
Quoted 6 lines
Quoted 1 line
Can I take this patch or would it be better to route it differently?
The patch is already on the s390 features branch and is supposed to be part of the first pull request for the next merge window (actually the patch is already in linux-next).
So I'd say the easiest thing would be to route it through the s390 tree.
OK