Hi, Lately I have been working on improving the msm8996 platform support. Vendor kernel seems to support domain-like idle (see [1], [2]). However when I tried changing upstream msm8996.dtsi to use PSCI domains, I faced the firmware reporting NOT_SUPPORTED to an attempt to enable OSI (thus rendering PSCI domains useless, as they are now marked with ALWAYS_ON). I noticed that vendor kernel makes a call to cpu_suspend() with power_state following the original format (described in PSCI spec 5.4.2.1). What would be the best way to support this? - Allow DTS forcing the PSCI power domains even if OSI enablement fails? - Add a separate cpuidle driver? - Just forget about it and use plain PSCI as we currently do? Additional topic: for one of idle states the vendor kernel uses a proprietary call into the hypervisor ([3]). Up to now we have ignored this, as 8996 seems to be the only platform using it. I suppose that adding it to cpuidle-psci.c would be frowned upon. Is this assumption correct? Would it add another point for adding a separate cpuidle driver? [1] https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.UM.6.6.c31-02700-89xx.0/arch/arm/boot/dts/qcom/msm8996-pm.dtsi#L32 [2] https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.UM.6.6.c31-02700-89xx.0/drivers/cpuidle/lpm-levels.c#L927 [3] https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.UM.6.6.c31-02700-89xx.0/drivers/cpuidle/lpm-levels.c#L944 -- With best wishes Dmitry