From mboxrd@z Thu Jan 1 00:00:00 1970 From: lina.iyer@linaro.org (Lina Iyer) Date: Wed, 12 Aug 2015 14:43:26 -0600 Subject: [PATCH 9/9] ARM: smp: Add runtime PM support for CPU hotplug In-Reply-To: <7hoaicmeuh.fsf@deeprootsystems.com> References: <1438731339-58317-1-git-send-email-lina.iyer@linaro.org> <1438731339-58317-10-git-send-email-lina.iyer@linaro.org> <7hoaicmeuh.fsf@deeprootsystems.com> Message-ID: <20150812204326.GM52339@linaro.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, Aug 12 2015 at 14:28 -0600, Kevin Hilman wrote: >Lina Iyer writes: > >> Enable runtime PM for CPU devices. Do a runtime get of the CPU device >> when the CPU is hotplugged in and a runtime put of the CPU device when >> the CPU is hotplugged off. When all the CPUs in a domain are hotplugged >> off, the domain may also be powered off and cluster_pm_enter/exit() >> notifications are be sent out. >> >> Cc: Catalin Marinas >> Cc: Mark Rutland >> Cc: Lorenzo Pieralisi >> Signed-off-by: Lina Iyer > >How does the runtiem PM usage with hotplug work with the runtime PM >usage in idle? > >IIUC, when a CPU is hotplugged in, it will always have a usecount of at >least 1, right? and if it's not idle, it will have done a _get() so it >will have a usecount of at least 2. So I'm not quite seeing how the >usecount will ever go to zero in idle and allow the domain to power_off. > When the CPU is online and running, it would have a ref count of 1. Then cpuidle would do a _put and the ref count would go to 0 and when coming out of idle, cpuidle would get a _get and the ref count will be back at 1. Ref count is not incremented when cpuidle is initialized on the CPU. So whenever the CPU is running, it would have a ref count of 1. As of today, atleast my understanding is hotplug does not go back into cpuidle, so the ref count would go to 0 when the core is hotplugged off. This may change, if the CPU hotplug is routed to cpuidle. Am I wrong in my understanding? Thanks, Lina