On Mon, Nov 11, 2013 at 06:18:05PM +0000, Catalin Marinas wrote:
On Mon, Nov 11, 2013 at 04:39:45PM +0000, Arjan van de Ven wrote:
having a hardware driver give a prefered CPU ordering for wakes can indeed be useful. (I'm doubtful that changing the recommendation for each idle is going to pay off, but proof is in the pudding; there are certainly long term effects where this can help)
The ordering is based on the actual C-state, so a simple way is to wake up the CPU in the shallowest C-state. With asymmetric configurations (big.LITTLE) we have different costs for the same C-state, so this would come in handy.
Asymmetric configurations add a bit of extra fun to deal with as you don't want to pick the cpu in the shallowest C-state if it is the wrong type of cpu for the task waking up. That goes for both big and little cpus in big.LITTLE.
So the hardware driver would need to know which cpus that are suitable targets for the task, or we need to somehow limit the driver query to suitable cpus, or the driver should return a list of cpus guaranteed to include cpus of all types (big, little, whatever...).
Morten