Top Banner
Enable deepest suspend power state on S2I Chunyan Zhang April 2019
12

Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

Jul 22, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

Enable deepest suspend power state on S2I

Chunyan ZhangApril 2019

Page 2: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

About me

● From Unisoc (Spreadtrum)● Worked in KWG● Now in PMWG

Page 3: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

The Goal● Current ● Future

S2R(suspend to ram)

S2I(Suspend to

idle)

S2IS2R

Page 4: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

 Dev environment

● Board○ Unisoc's mobile phone with the

processor SC9863A which has eight cores of Cortex A55 in two clusters.

● Mainline kernel with a few necessary drivers (uart, clock, gpio)

● PSCI 1.0● Power topology

Page 5: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

S2R & S2I in PSCI● Both S2R and S2I would call psci_cpu_suspend_start()● But with different parameters

S2R

target_pwrlvl=1,is_power_down_state=1state_info[0]=ARM_LOCAL_STATE_OFFstate_info[1]=ARM_LOCAL_STATE_OFF

S2I

target_pwrlvl=0,is_power_down_state=1state_info[0]=ARM_LOCAL_STATE_OFFstate_info[1]=ARM_LOCAL_STATE_RUN

Page 6: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

Deepest c-state● "arm,psci-suspend-param" in device tree “idle-state”

○ Set bit[24]=1; ( Its bit[25:24] represents power level in PSCI )

○ Let S2R and S2I have same parameter to call psci_cpu_suspend_start()

Page 7: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

Power consumption on below scenarios

Scenario Normal running S2R S2I

Without deepestc-state

- Eight cores 190 ~ 205mW ~139mW 175 ~ 190mW

- Two clusters, one core in each cluster 190 ~205mW ~139mW 175 ~ 190mW

- One core in DT 181 ~196mW ~139mW 175 ~ 190mW

With deepest c-state

- One core in each cluster; Or- Two core in one cluster; 190 ~205mW ~139mW 175 ~ 190mW

- Only 1 core alive 177 ~194mW ~139mW ~139mW

Page 8: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

Plug cores when suspend

● During S2R, secondary cores would be unplugged

● During S2I, secondary cores would NOT be unplugged

Page 9: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

Switch to using generic power domain

● No much change on power consumption of the scenarios listed previously for now.

Page 10: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

DDR self refresh for S2R and S2I

● Looked on my board:○ DDR device is set “auto self-refresh”○ DDR granule would be set self-refresh for both suspend○ DDR controller seems not in sleep state for both suspend (from

what I’ve known)○ Probably because that some components on the board haven’t

been put into deep sleep state.

Page 11: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

Next to go● To find out which part of components or processors didn’t enter into deep

sleep.● To look at psci_cpu_off() further

● Any suggestions?

Page 12: Enable deepest suspend power state on S2I · 2019-04-24 · Power consumption on below scenarios Scenario Normal running S2R S2I Without deepest c-state - Eight cores 190 ~ 205mW

Thank youJoin Linaro to accelerate deployment of your Arm-based solutions through collaboration

[email protected]