Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Suspend to RAM and FPD off

  1. Power off all 3 secondary APUs and set frequency of primary APU0 to minimum using above commands for minimum latency measurement.

  2. Run following command from Linux terminal to release unnecessary nodes and signal the RPU_0:

    • (For v2017.1-4)

      Code Block
      root@plnx_aarch64:~# echo request_wakeup 8 1 0 1 > /sys/kernel/debug/zynqmp_pm/power
      root@plnx_aarch64:~# echo force_powerdown 8 >  /sys/kernel/debug/zynqmp_pm/power
      root@plnx_aarch64:~# echo release_node 69 > /sys/kernel/debug/zynqmp_pm/power
      root@plnx_aarch64:~# echo 0 > /sys/module/printk/parameters/console_suspend
      root@plnx_aarch64:~# echo MMIO_WRITE 0xFFD80064 1 1 > /sys/kernel/debug/zynqmp_pm/power
    • (For v2018.2)

      Code Block
      root@plnx_aarch64:~# echo pm_request_wakeup 8 1 0 1 > /sys/kernel/debug/zynqmp-firmware/pm
      root@plnx_aarch64:~# echo pm_force_powerdown 8 >  /sys/kernel/debug/zynqmp-firmware/pm
      root@plnx_aarch64:~# echo pm_release_node 69 > /sys/kernel/debug/zynqmp-firmware/pm
      root@plnx_aarch64:~# echo 0 > /sys/module/printk/parameters/console_suspend
      root@plnx_aarch64:~# echo 0x1 0x1 > /sys/firmware/zynqmp/pggs3
    • (For v2018.3)

      Code Block
      root@plnx_aarch64:~# echo disabled > /sys/devices/platform/amba/ffa60000.rtc/power/wakeup
      root@plnx_aarch64:~# echo disabled > /sys/devices/platform/amba/ff000000.serial/power/wakeup
      root@plnx_aarch64:~# echo disabled > /sys/devices/platform/amba/ff010000.serial/power/wakeup
      root@plnx_aarch64:~# echo pm_release_node 69 > /sys/kernel/debug/zynqmp-firmware/pm
      root@plnx_aarch64:~# echo 0 > /sys/module/printk/parameters/console_suspend
      root@plnx_aarch64:~# echo 0x1 0x1 > /sys/firmware/zynqmp/pggs3
    • (For v2019.1 - Later)

      Code Block
      root@plnx_aarch64:~# echo disabled > /sys/devices/platform/amba/ffa60000.rtc/power/wakeup
      root@plnx_aarch64:~# echo disabled > /sys/devices/platform/amba/ff000000.serial/power/wakeup
      root@plnx_aarch64:~# echo disabled > /sys/devices/platform/amba/ff010000.serial/power/wakeup
      root@plnx_aarch64:~# echo disabled > /sys/devices/platform/amba/ff0a0000.gpio/power/wakeup
      root@plnx_aarch64:~# echo pm_release_node 69 > /sys/kernel/debug/zynqmp-firmware/pm
      root@plnx_aarch64:~# echo 0 > /sys/module/printk/parameters/console_suspend
      root@plnx_aarch64:~# echo 0x1 0x1 > /sys/firmware/zynqmp/pggs3
  3. Now, Linux will be suspended and it will be resumed by RPU after suspend. RPU has requested NODE_SATA from FPD, so Linux will be suspended with FPD on.

  4. After 10 second of Linux suspend, RPU application will release NODE_SATA. Once NODE_SATA is released, FPD will be off. Use Power Advantage Tool in these 10 seconds to get power value for Suspend to RAM.
    Following are

...

  1. print messages to identify these 10 second window.

    Code Block
    RPU0: ******************** RPU ON, APU suspend with FPD ON ******************
    RPU0: (10 seconds delay)
    RPU0: Release NODE_SATA, FPD will be off after releasing NODE_SATA
  2. Once FPD is off, RPU will resume APU after 10 second of FPD off. To measure power with FPD off, Use Power Advantage Tool in these 10 seconds.
    Following are two print messages to identify these 10 second window.

    Code Block
    RPU0: ******************** RPU ON, APU suspend with FPD OFF ******************
    RPU0: Suspended.
    RPU0: (10 seconds delay)
    RPU0: Resuming APU.
  3. Above loop will run for 3 times and print minimum, maximum and average values for latency. On console, you should able to see suspend/wakeup latency of APU from RPU print message as shown below.

    Code Block
    RPU0: Request Suspend Latency in useconds of Node NODE_APU_0:  Min: 42701, Max: 45728, Avg: 45058
    RPU0: FPD off Latency in useconds of Node NODE_APU_0:  Min: 5902, Max: 5902, Avg: 5902
    RPU0: FPD on Latency in useconds of Node NODE_APU_0:  Min: 121025, Max: 121251, Avg: 121116
    RPU0: APU0 Wakeup Latency in useconds of Node NODE_APU_0:  Min: 8061, Max: 8067, Avg: 8063
    RPU0: Wakeup Latency in useconds of Node NODE_APU_0:  Min: 14062, Max: 14088, Avg: 14080
    • Here,
      RPU0: Request Suspend Latency in useconds of Node NODE_APU_0: Latency for power state transition from "3 APU off (min frequency)" to "Suspend to RAM".
      RPU0: FPD off Latency in useconds of Node NODE_APU_0:                  Latency for power state transition from "Suspend to RAM" to "FPD off".
      RPU0: FPD on Latency in useconds of Node NODE_APU_0:                  Latency for power state transition from FPD off to "Suspend to RAM".
      RPU0: APU0 Wakeup Latency in useconds of Node NODE_APU_0:       Time require to wakeup APU_0 after RequestWakeup call.
      RPU0: Wakeup Latency in useconds of Node NODE_APU_0:                 Latency for power state transition from "Suspend to RAM" to "3 APU off (min frequency).

  4. R5 Sleep and Deep-Sleep mode

  5. Once above measurements are done, RPU puts FPD in off state and goes to idle mode (wfi state) for 10 seconds.

  6. To measure power with R5 sleep mode, Use Power Advantage Tool in these 10 seconds.
    Following are two print messages to identify these 10 second window.

    Code Block
    RPU0: ******************** RPU idle, APU suspend with FPD OFF ******************
    RPU0: Go to RPU Sleep mode
    RPU0: (10 seconds timer)
  7. After 10 seconds RPU gets timer interrupt after that it suspend itself and goes to deep sleep mode for 10 seconds.

  8. After RPU goes to deep sleep, Use Power Advantage tool for measuring power values within these 10 seconds.
    Following are

...

  1. print messages to identify these 10 second window.

    Code Block
    RPU0: *************************** Deep Sleep Mode *********************
  2. After 10 seconds timer will generate interrupt and Resumes RPU. Then RPU resumes APU. This state is same as 3 APU off with minimum frequency

...

  1. .

    Code Block
    RPU0: Resume APU
    RPU0: **************** Demo executed successfully ********************
    RPU0: ******** Executing Typical power state demo again **************
  2. Now to measure latency/power from left to right of dimmer mode table, use below commands:

    1. Set max APU0 frequency using frequency scaling.

    2. Power on all 3 secondary APUs.

    3. Power on PL.

  3. To re-run demo execute from step 1 (This will work in 2019.2 and higher versions only).

Measure transition time of RPU

...