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: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
0ff70ec88b
commit
77e844b964
@ -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 @@
|
|||||||
#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)
|
|||||||
__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:
|
|||||||
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 {
|
|||||||
|
|
||||||
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);
|
||||||
|
Loading…
Reference in New Issue
Block a user