Skip to content

Commit

Permalink
s390/hibernate: add early resume function
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Sebastian Ott authored and Martin Schwidefsky committed Aug 30, 2013
1 parent 0ff70ec commit 77e844b
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 7 deletions.
1 change: 1 addition & 0 deletions arch/s390/include/asm/cio.h
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ static inline int ccw_dev_id_is_equal(struct ccw_dev_id *dev_id1,
return 0;
}

void channel_subsystem_reinit(void);
extern void css_schedule_reprobe(void);

extern void reipl_ccw_dev(struct ccw_dev_id *id);
Expand Down
9 changes: 9 additions & 0 deletions arch/s390/kernel/suspend.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
#include <linux/suspend.h>
#include <linux/mm.h>
#include <asm/ctl_reg.h>
#include <asm/ipl.h>
#include <asm/cio.h>

/*
* References to section boundaries
Expand Down Expand Up @@ -211,3 +213,10 @@ void restore_processor_state(void)
__ctl_set_bit(0,28);
local_mcck_enable();
}

/* Called at the end of swsusp_arch_resume */
void s390_early_resume(void)
{
lgr_info_log();
channel_subsystem_reinit();
}
7 changes: 2 additions & 5 deletions arch/s390/kernel/swsusp_asm64.S
Original file line number Diff line number Diff line change
Expand Up @@ -281,11 +281,8 @@ restore_registers:
lghi %r2,0
brasl %r14,arch_set_page_states

/* Log potential guest relocation */
brasl %r14,lgr_info_log

/* Reinitialize the channel subsystem */
brasl %r14,channel_subsystem_reinit
/* Call arch specific early resume code */
brasl %r14,s390_early_resume

/* Return 0 */
lmg %r6,%r15,STACK_FRAME_OVERHEAD + __SF_GPRS(%r15)
Expand Down
2 changes: 0 additions & 2 deletions drivers/s390/cio/css.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,6 @@ struct channel_subsystem {

extern struct channel_subsystem *channel_subsystems[];

void channel_subsystem_reinit(void);

/* Helper functions to build lists for the slow path. */
void css_schedule_eval(struct subchannel_id schid);
void css_schedule_eval_all(void);
Expand Down

0 comments on commit 77e844b

Please sign in to comment.