blob: 5b3601bd1893542d59771088baa103e250873a37 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * linux/kernel/power/swsusp.c
3 *
Pavel Machek96bc7ae2005-10-30 14:59:58 -08004 * This file provides code to write suspend image to swap and read it back.
Linus Torvalds1da177e2005-04-16 15:20:36 -07005 *
6 * Copyright (C) 1998-2001 Gabor Kuti <seasons@fornax.hu>
Rafael J. Wysocki25761b62005-10-30 14:59:56 -08007 * Copyright (C) 1998,2001-2005 Pavel Machek <pavel@suse.cz>
Linus Torvalds1da177e2005-04-16 15:20:36 -07008 *
9 * This file is released under the GPLv2.
10 *
11 * I'd like to thank the following people for their work:
Pavel Machek2e4d5822005-06-25 14:55:12 -070012 *
Linus Torvalds1da177e2005-04-16 15:20:36 -070013 * Pavel Machek <pavel@ucw.cz>:
14 * Modifications, defectiveness pointing, being with me at the very beginning,
15 * suspend to swap space, stop all tasks. Port to 2.4.18-ac and 2.5.17.
16 *
Pavel Machek2e4d5822005-06-25 14:55:12 -070017 * Steve Doddi <dirk@loth.demon.co.uk>:
Linus Torvalds1da177e2005-04-16 15:20:36 -070018 * Support the possibility of hardware state restoring.
19 *
20 * Raph <grey.havens@earthling.net>:
21 * Support for preserving states of network devices and virtual console
22 * (including X and svgatextmode)
23 *
24 * Kurt Garloff <garloff@suse.de>:
25 * Straightened the critical function in order to prevent compilers from
26 * playing tricks with local variables.
27 *
28 * Andreas Mohr <a.mohr@mailto.de>
29 *
30 * Alex Badea <vampire@go.ro>:
31 * Fixed runaway init
32 *
Rafael J. Wysocki7088a5c2006-01-06 00:13:05 -080033 * Rafael J. Wysocki <rjw@sisk.pl>
Rafael J. Wysocki61159a32006-03-23 03:00:00 -080034 * Reworked the freeing of memory and the handling of swap
Rafael J. Wysocki7088a5c2006-01-06 00:13:05 -080035 *
Linus Torvalds1da177e2005-04-16 15:20:36 -070036 * More state savers are welcome. Especially for the scsi layer...
37 *
38 * For TODOs,FIXMEs also look in Documentation/power/swsusp.txt
39 */
40
Linus Torvalds1da177e2005-04-16 15:20:36 -070041#include <linux/mm.h>
42#include <linux/suspend.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070043#include <linux/spinlock.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070044#include <linux/kernel.h>
45#include <linux/major.h>
46#include <linux/swap.h>
47#include <linux/pm.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070048#include <linux/swapops.h>
49#include <linux/bootmem.h>
50#include <linux/syscalls.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070051#include <linux/highmem.h>
Rafael J. Wysocki0d3a9ab2006-12-06 20:34:32 -080052#include <linux/time.h>
Rafael J. Wysockid1d241c2007-05-06 14:50:47 -070053#include <linux/rbtree.h>
Magnus Damma8af7892009-03-31 15:23:37 -070054#include <linux/io.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070055
56#include "power.h"
57
Rafael J. Wysockif577eb32006-03-23 02:59:59 -080058int in_suspend __nosavedata = 0;