aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/power/interface.txt
blob: f1f0f59a7c47d594a9753207d713d0834a0e99b1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Power Management Interface


The power management subsystem provides a unified sysfs interface to 
userspace, regardless of what architecture or platform one is
running. The interface exists in /sys/power/ directory (assuming sysfs
is mounted at /sys). 

/sys/power/state controls system power state. Reading from this file
returns what states are supported, which is hard-coded to 'freeze',
'standby' (Power-On Suspend), 'mem' (Suspend-to-RAM), and 'disk'
(Suspend-to-Disk). 

Writing to this file one of those strings causes the system to
transition into that state. Please see the file
Documentation/power/states.txt for a description of each of those
states.


/sys/power/disk controls the operating mode of the suspend-to-disk
mechanism. Suspend-to-disk can be handled in several ways. We have a
few options for putting the system to sleep - using the platform driver
(e.g. ACPI or other suspend_ops), powering off the system or rebooting the
system (for testing).

Additionally, /sys/power/disk can be used to turn on one of the two testing
modes of the suspend-to-disk mechanism: 'testproc' or 'test'.  If the
suspend-to-disk mechanism is in the 'testproc' mode, writing 'disk' to
/sys/power/state will cause the kernel to disable nonboot CPUs and freeze
tasks, wait for 5 seconds, unfreeze tasks and enable nonboot CPUs.  If it is
in the 'test' mode, writing 'disk' to /sys/power/state will cause the kernel
to disable nonboot CPUs and freeze tasks, shrink memory, suspend devices, wait
for 5 seconds, resume devices, unfreeze tasks and enable nonboot CPUs.  Then,
we are able to look in the log messages and work out, for example, which code
is being slow and which device drivers are misbehaving.

Reading from this file will display all supported modes and the currently
selected one in brackets, for example

	[shutdown] reboot test testproc

Writing to this file will accept one of

       'platform' (only if the platform supports it)
       'shutdown'
       'reboot'
       'testproc'
       'test'

/sys/power/image_size controls the size of the image created by
the suspend-to-disk mechanism.  It can be written a string
representing a non-negative integer that will be used as an upper
limit of the image size, in bytes.  The suspend-to-disk mechanism will
do its best to ensure the image size will not exceed that number.  However,
if this turns out to be impossible, it will try to suspend anyway using the
smallest image possible.  In particular, if "0" is written to this file, the
suspend image will be as small as possible.

Reading from this file will display the current image size limit, which
is set to 2/5 of available RAM by default.

/sys/power/pm_trace controls the code which saves 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).  Namely, the RTC is only
used to save the last PM event point if this file contains '1'.  Initially it
contains '0' which may be changed to '1' by writing a string representing a
nonzero integer into it.

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

	dmesg -s 1000000 | grep 'hash matches'

CAUTION: Using it will cause your machine's real-time (CMOS) clock to be
set to a random invalid time after a resume.
ref='#n350'>350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563


















































































































































































































































































































































































































































































































































































                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
ÿØÿà