config PM
	bool "Power Management support"
	depends on !IA64_HP_SIM
	---help---
	  "Power Management" means that parts of your computer are shut
	  off or put into a power conserving "sleep" mode if they are not
	  being used.  There are two competing standards for doing this: APM
	  and ACPI.  If you want to use either one, say Y here and then also
	  to the requisite support below.

	  Power Management is most important for battery powered laptop
	  computers; if you have a laptop, check out the Linux Laptop home
	  page on the WWW at <http://www.linux-on-laptops.com/> or
	  Tuxmobil - Linux on Mobile Computers at <http://www.tuxmobil.org/>
	  and the Battery Powered Linux mini-HOWTO, available from
	  <http://www.tldp.org/docs.html#howto>.

	  Note that, even if you say N here, Linux on the x86 architecture
	  will issue the hlt instruction if nothing is to be done, thereby
	  sending the processor to sleep and saving power.

config PM_LEGACY
	bool "Legacy Power Management API"
	depends on PM
	default y
	---help---
	   Support for pm_register() and friends.

	   If unsure, say Y.

config PM_DEBUG
	bool "Power Management Debug Support"
	depends on PM
	---help---
	This option enables verbose debugging support in the Power Management
	code. This is helpful when debugging and reporting various PM bugs, 
	like suspend support.

config DISABLE_CONSOLE_SUSPEND
	bool "Keep console(s) enabled during suspend/resume (DANGEROUS)"
	depends on PM && PM_DEBUG
	default n
	---help---
	This option turns off the console suspend mechanism that prevents
	debug messages from reaching the console during the suspend/resume
	operations.  This may be helpful when debugging device drivers'
	suspend/resume routines, but may itself lead to problems, for example
	if netconsole is used.

config PM_TRACE
	bool "Suspend/resume event tracing"
	depends on PM && PM_DEBUG && X86_32 && EXPERIMENTAL
	default n
	---help---
	This enables some cheesy code to save the last PM event point in the
	RTC across reboots, so that you can debug a machine that just hangs
	during suspend (or more commonly, during resume).

	To use this debugging feature you should attempt to suspend the machine,
	then reboot it, then run

		dmesg -s 1000000 | grep 'hash matches'

	CAUTION: this option will cause your machine's real-time clock to be
	set to an invalid time after a resume.

config PM_SYSFS_DEPRECATED
	bool "Driver model /sys/devices/.../power/state files (DEPRECATED)"
	depends on PM && SYSFS
	default n
	help
	  The driver model started out with a sysfs file intended to provide
	  a userspace hook for device power management.  This feature has never
	  worked very well, except for limited testing purposes, and so it will
	  be removed.   It's not clear that a generic mechanism could really
	  handle the wide variability of device power states; any replacements
	  are likely to be bus or driver specific.

config SOFTWARE_SUSPEND
	bool "Software Suspend"
	depends on PM && SWAP && ((X86 && (!SMP || SUSPEND_SMP) && !X86_PAE) || ((FRV || PPC32) && !SMP))
	---help---
	  Enable the possibility of suspending the machine.
	  It doesn't need ACPI or APM.
	  You may suspend your machine by 'swsusp' or 'shutdown -z <time>' 
	  (patch for sysvinit needed). 

	  It creates an image which is saved in your active swap. Upon next
	  boot, pass the 'resume=/dev/swappartition' argument to the kernel to
	  have it detect the saved image, restore memory state from it, and
	  continue to run as before. If you do not want the previous state to
	  be reloaded, then use the 'noresume' kernel argument. However, note
	  that your partitions will be fsck'd and you must re-mkswap your swap
	  partitions. It does not work with swap files.

	  Right now you may boot without resuming and then later resume but
	  in meantime you cannot use those swap partitions/files which were
	  involved in suspending. Also in this case there is a risk that buffers
	  on disk won't match with saved ones.

	  For more information take a look at <file:Documentation/power/swsusp.txt>.

	  (For now, swsusp is incompatible with PAE aka HIGHMEM_64G on i386.
	  we need identity mapping for resume to work, and that is trivial
	  to get with 4MB pages, but less than trivial on PAE).

config PM_STD_PARTITION
	string "Default resume partition"
	depends on SOFTWARE_SUSPEND
	default ""
	---help---
	  The default resume partition is the partition that the suspend-
	  to-disk implementation will look for a suspended disk image. 

	  The partition specified here will be different for almost every user. 
	  It should be a valid swap partition (at least for now) that is turned
	  on before suspending. 

	  The partition specified can be overridden by specifying:

		resume=/dev/<other device> 

	  which will set the resume partition to the device specified. 

	  Note there is currently not a way to specify which device to save the
	  suspended image to. It will simply pick the first available swap 
	  device.

config SUSPEND_SMP
	bool
	depends on HOTPLUG_CPU && X86 && PM
	default y
