Re: [RFC PATCH 06/16] arm: topology: Define TC2 sched energy and provide it to scheduler

From: Peter Zijlstra
Date: Fri May 30 2014 - 08:04:42 EST


On Fri, May 23, 2014 at 07:16:33PM +0100, Morten Rasmussen wrote:
> +static struct capacity_state cap_states_cluster_a7[] = {
> + /* Cluster only power */
> + { .cap = 358, .power = 2967, }, /* 350 MHz */
> + { .cap = 410, .power = 2792, }, /* 400 MHz */
> + { .cap = 512, .power = 2810, }, /* 500 MHz */
> + { .cap = 614, .power = 2815, }, /* 600 MHz */
> + { .cap = 717, .power = 2919, }, /* 700 MHz */
> + { .cap = 819, .power = 2847, }, /* 800 MHz */
> + { .cap = 922, .power = 3917, }, /* 900 MHz */
> + { .cap = 1024, .power = 4905, }, /* 1000 MHz */
> + };

> +static struct capacity_state cap_states_core_a7[] = {
> + /* Power per cpu */
> + { .cap = 358, .power = 187, }, /* 350 MHz */
> + { .cap = 410, .power = 275, }, /* 400 MHz */
> + { .cap = 512, .power = 334, }, /* 500 MHz */
> + { .cap = 614, .power = 407, }, /* 600 MHz */
> + { .cap = 717, .power = 447, }, /* 700 MHz */
> + { .cap = 819, .power = 549, }, /* 800 MHz */
> + { .cap = 922, .power = 761, }, /* 900 MHz */
> + { .cap = 1024, .power = 1024, }, /* 1000 MHz */
> + };

Talk to me about this core vs cluster thing.

Why would an architecture have multiple energy domains like this?

That is, if a cpu can set P states per core, why does it need a cluster
wide thing.

Also, in general, why would we need to walk the domain tree all the way
up, typically I would expect to stop walking once we've covered the two
cpu's we're interested in, because above that nothing changes.

Attachment: pgpXDjNjorUsS.pgp
Description: PGP signature