IBM Power-Management Bindings 
 | 
============================= 
 | 
  
 | 
Linux running on baremetal POWER machines has access to the processor 
 | 
idle states. The description of these idle states is exposed via the 
 | 
node @power-mgt in the device-tree by the firmware. 
 | 
  
 | 
Definitions: 
 | 
---------------- 
 | 
Typically each idle state has the following associated properties: 
 | 
  
 | 
- name: The name of the idle state as defined by the firmware. 
 | 
  
 | 
- flags: indicating some aspects of this idle states such as the 
 | 
         extent of state-loss, whether timebase is stopped on this 
 | 
         idle states and so on. The flag bits are as follows: 
 | 
  
 | 
- exit-latency: The latency involved in transitioning the state of the 
 | 
        CPU from idle to running. 
 | 
  
 | 
- target-residency: The minimum time that the CPU needs to reside in 
 | 
            this idle state in order to accrue power-savings 
 | 
            benefit. 
 | 
  
 | 
Properties 
 | 
---------------- 
 | 
The following properties provide details about the idle states. These 
 | 
properties are exposed as arrays. Each entry in the property array 
 | 
provides the value of that property for the idle state associated with 
 | 
the array index of that entry. 
 | 
  
 | 
If idle-states are defined, then the properties 
 | 
"ibm,cpu-idle-state-names" and "ibm,cpu-idle-state-flags" are 
 | 
required. The other properties are required unless mentioned 
 | 
otherwise. The length of all the property arrays must be the same. 
 | 
  
 | 
- ibm,cpu-idle-state-names: 
 | 
    Array of strings containing the names of the idle states. 
 | 
  
 | 
- ibm,cpu-idle-state-flags: 
 | 
    Array of unsigned 32-bit values containing the values of the 
 | 
    flags associated with the the aforementioned idle-states. The 
 | 
    flag bits are as follows: 
 | 
        0x00000001 /* Decrementer would stop */ 
 | 
        0x00000002 /* Needs timebase restore */ 
 | 
        0x00001000 /* Restore GPRs like nap */ 
 | 
        0x00002000 /* Restore hypervisor resource from PACA pointer */ 
 | 
        0x00004000 /* Program PORE to restore PACA pointer */ 
 | 
        0x00010000 /* This is a nap state (POWER7,POWER8) */ 
 | 
        0x00020000 /* This is a fast-sleep state (POWER8)*/ 
 | 
        0x00040000 /* This is a winkle state (POWER8) */ 
 | 
        0x00080000 /* This is a fast-sleep state which requires a */ 
 | 
               /* software workaround for restoring the */ 
 | 
               /* timebase (POWER8) */ 
 | 
        0x00800000 /* This state uses SPR PMICR instruction */ 
 | 
               /* (POWER8)*/ 
 | 
        0x00100000 /* This is a fast stop state (POWER9) */ 
 | 
        0x00200000 /* This is a deep-stop state (POWER9) */ 
 | 
  
 | 
- ibm,cpu-idle-state-latencies-ns: 
 | 
    Array of unsigned 32-bit values containing the values of the 
 | 
    exit-latencies (in ns) for the idle states in 
 | 
    ibm,cpu-idle-state-names. 
 | 
  
 | 
- ibm,cpu-idle-state-residency-ns: 
 | 
    Array of unsigned 32-bit values containing the values of the 
 | 
    target-residency (in ns) for the idle states in 
 | 
    ibm,cpu-idle-state-names. On POWER8 this is an optional 
 | 
    property. If the property is absent, the target residency for 
 | 
    the "Nap", "FastSleep" are defined to 10000 and 300000000 
 | 
    respectively by the kernel. On POWER9 this property is required. 
 | 
  
 | 
- ibm,cpu-idle-state-psscr: 
 | 
    Array of unsigned 64-bit values containing the values for the 
 | 
    PSSCR for each of the idle states in ibm,cpu-idle-state-names. 
 | 
    This property is required on POWER9 and absent on POWER8. 
 | 
  
 | 
- ibm,cpu-idle-state-psscr-mask: 
 | 
    Array of unsigned 64-bit values containing the masks 
 | 
    indicating which psscr fields are set in the corresponding 
 | 
    entries of ibm,cpu-idle-state-psscr. This property is 
 | 
    required on POWER9 and absent on POWER8. 
 | 
  
 | 
    Whenever the firmware sets an entry in 
 | 
    ibm,cpu-idle-state-psscr-mask value to 0xf, it implies that 
 | 
    only the Requested Level (RL) field of the corresponding entry 
 | 
    in ibm,cpu-idle-state-psscr should be considered by the 
 | 
    kernel. For such idle states, the kernel would set the 
 | 
    remaining fields of the psscr to the following sane-default 
 | 
    values. 
 | 
  
 | 
        - ESL and EC bits are to 1. So wakeup from any stop 
 | 
          state will be at vector 0x100. 
 | 
  
 | 
        - MTL and PSLL are set to the maximum allowed value as 
 | 
          per the ISA, i.e. 15. 
 | 
  
 | 
        - The Transition Rate, TR is set to the Maximum value 
 | 
                  3. 
 | 
  
 | 
    For all the other values of the entry in 
 | 
    ibm,cpu-idle-state-psscr-mask, the kernel expects all the 
 | 
    psscr fields of the corresponding entry in 
 | 
    ibm,cpu-idle-state-psscr to be correctly set by the firmware. 
 | 
  
 | 
- ibm,cpu-idle-state-pmicr: 
 | 
    Array of unsigned 64-bit values containing the pmicr values 
 | 
    for the idle states in ibm,cpu-idle-state-names. This 64-bit 
 | 
    register value is to be set in pmicr for the corresponding 
 | 
    state if the flag indicates that pmicr SPR should be set. This 
 | 
    is an optional property on POWER8 and is absent on 
 | 
    POWER9. 
 | 
  
 | 
- ibm,cpu-idle-state-pmicr-mask: 
 | 
    Array of unsigned 64-bit values containing the mask indicating 
 | 
    which of the fields of the PMICR are set in the corresponding 
 | 
    entries in ibm,cpu-idle-state-pmicr. This is an optional 
 | 
    property on POWER8 and is absent on POWER9. 
 |