diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/power/disk.c | 22 | 
1 files changed, 22 insertions, 0 deletions
diff --git a/kernel/power/disk.c b/kernel/power/disk.c index d79feeb4545..f5079231383 100644 --- a/kernel/power/disk.c +++ b/kernel/power/disk.c @@ -30,6 +30,22 @@ dev_t swsusp_resume_device;  sector_t swsusp_resume_block;  /** + *	platform_prepare - prepare the machine for hibernation using the + *	platform driver if so configured and return an error code if it fails + */ + +static inline int platform_prepare(void) +{ +	int error = 0; + +	if (pm_disk_mode == PM_DISK_PLATFORM) { +		if (pm_ops && pm_ops->prepare) +			error = pm_ops->prepare(PM_SUSPEND_DISK); +	} +	return error; +} + +/**   *	power_down - Shut machine down for hibernate.   *	@mode:		Suspend-to-disk mode   * @@ -91,9 +107,15 @@ static int prepare_processes(void)  		goto thaw;  	} +	error = platform_prepare(); +	if (error) +		goto thaw; +  	/* Free memory before shutting down devices. */  	if (!(error = swsusp_shrink_memory()))  		return 0; + +	platform_finish();  thaw:  	thaw_processes();  enable_cpus:  |