[PATCH v4/RFC 0/4] per-cpu PM QoS

From: Lina Iyer
Date: Tue Nov 18 2014 - 02:33:06 EST

PM QoS constraints like the CPU_DMA_LATENCY, when set, apply to all cpus. The
QoS guarantees performance, at the expense of power. There is an opportunity to
save power on the cpus, if a subset of cpus need not participate in honoring
the QoS request.

The patches do the following -

- Add "type" member to the QoS request data structure. Drivers requesting PM
QoS, can qualify the type of the QoS request. Request could be either of
all-cpus (default) or a cpumask or the cpus associated by smp-affinity to a
device IRQ.

- QoS requests can supply an cpumask or an IRQ.

- Each constraint has a per-cpu target variable, to hold the QoS value for the

- When updating the QoS constraint target value, update the per-cpu target
value of the constraint.

- Export the IRQ smp-affinity information from the IRQ framework.

- When the IRQ smp-affinity changes, notify PM QoS framework, which would update
the target value for each of the constraint affected by the change in the
smp-affinity of the IRQ.


- Update the QoS constraint, when the IRQ is enabled/disabled.

- The IRQ affinity is an expected affinity, but the actual affinity is
architecture dependent. Explore possibility of optimizations.

- Update cpuidle to use the per-cpu PM QoS to query the QoS value of the cpus


Lina Iyer (4):
QoS: Modify data structures and function arguments for scalability.
QoS: Enhance PM QoS framework to support per-cpu QoS request
irq: Add irq_get_affinity() api
QoS: Enable PM QoS requests to apply only on smp_affinity of an IRQ

Documentation/power/pm_qos_interface.txt | 18 +++
drivers/base/power/qos.c | 14 +--
include/linux/interrupt.h | 8 ++
include/linux/pm_qos.h | 22 +++-
kernel/irq/manage.c | 21 ++++
kernel/power/qos.c | 183 +++++++++++++++++++++++++++++--
6 files changed, 249 insertions(+), 17 deletions(-)


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/