Commit 77e844b9 authored by Sebastian Ott's avatar Sebastian Ott Committed by Martin Schwidefsky

s390/hibernate: add early resume function

Some functions that do arch specific resume actions are called
directly from swsusp_asm64.S . Before we add another function call
provide a generic s390_early_resume function which can be used
for this purpose.
Signed-off-by: default avatarSebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 0ff70ec8
...@@ -296,6 +296,7 @@ static inline int ccw_dev_id_is_equal(struct ccw_dev_id *dev_id1, ...@@ -296,6 +296,7 @@ static inline int ccw_dev_id_is_equal(struct ccw_dev_id *dev_id1,
return 0; return 0;
} }
void channel_subsystem_reinit(void);
extern void css_schedule_reprobe(void); extern void css_schedule_reprobe(void);
extern void reipl_ccw_dev(struct ccw_dev_id *id); extern void reipl_ccw_dev(struct ccw_dev_id *id);
......
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
#include <linux/suspend.h> #include <linux/suspend.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <asm/ctl_reg.h> #include <asm/ctl_reg.h>
#include <asm/ipl.h>
#include <asm/cio.h>
/* /*
* References to section boundaries * References to section boundaries
...@@ -211,3 +213,10 @@ void restore_processor_state(void) ...@@ -211,3 +213,10 @@ void restore_processor_state(void)
__ctl_set_bit(0,28); __ctl_set_bit(0,28);
local_mcck_enable(); local_mcck_enable();
} }
/* Called at the end of swsusp_arch_resume */
void s390_early_resume(void)
{
lgr_info_log();
channel_subsystem_reinit();
}
...@@ -281,11 +281,8 @@ restore_registers: ...@@ -281,11 +281,8 @@ restore_registers:
lghi %r2,0 lghi %r2,0
brasl %r14,arch_set_page_states brasl %r14,arch_set_page_states
/* Log potential guest relocation */ /* Call arch specific early resume code */
brasl %r14,lgr_info_log brasl %r14,s390_early_resume
/* Reinitialize the channel subsystem */
brasl %r14,channel_subsystem_reinit
/* Return 0 */ /* Return 0 */
lmg %r6,%r15,STACK_FRAME_OVERHEAD + __SF_GPRS(%r15) lmg %r6,%r15,STACK_FRAME_OVERHEAD + __SF_GPRS(%r15)
......
...@@ -130,8 +130,6 @@ struct channel_subsystem { ...@@ -130,8 +130,6 @@ struct channel_subsystem {
extern struct channel_subsystem *channel_subsystems[]; extern struct channel_subsystem *channel_subsystems[];
void channel_subsystem_reinit(void);
/* Helper functions to build lists for the slow path. */ /* Helper functions to build lists for the slow path. */
void css_schedule_eval(struct subchannel_id schid); void css_schedule_eval(struct subchannel_id schid);
void css_schedule_eval_all(void); void css_schedule_eval_all(void);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment