bab9bb6b69
Create new directories: ceph config config-files filesystem kernel kernel/kernel-modules ldap logging strorage-drivers tools utilities virt Retire directories: connectivity core devtools support extended Delete two packages: tgt irqbalance Relocated packages: base/ dhcp initscripts libevent lighttpd linuxptp memcached net-snmp novnc ntp openssh pam procps sanlock shadow sudo systemd util-linux vim watchdog ceph/ python-cephclient config/ facter puppet-4.8.2 puppet-modules filesystem/ e2fsprogs nfs-utils nfscheck kernel/ kernel-std kernel-rt kernel/kernel-modules/ mlnx-ofa_kernel ldap/ nss-pam-ldapd openldap logging/ syslog-ng logrotate networking/ lldpd iproute mellanox python-ryu mlx4-config python/ python-2.7.5 python-django python-gunicorn python-setuptools python-smartpm python-voluptuous security/ shim-signed shim-unsigned tboot strorage-drivers/ python-3parclient python-lefthandclient virt/ cloud-init libvirt libvirt-python qemu tools/ storage-topology vm-topology utilities/ tis-extensions namespace-utils nova-utils update-motd Change-Id: I37ade764d873c701b35eac5881eb40412ba64a86 Story: 2002801 Task: 22687 Signed-off-by: Scott Little <scott.little@windriver.com>
72 lines
2.6 KiB
Diff
72 lines
2.6 KiB
Diff
From f5020c58583d04f0c6f8df1cbbd7d2e747fcb537 Mon Sep 17 00:00:00 2001
|
|
Message-Id: <f5020c58583d04f0c6f8df1cbbd7d2e747fcb537.1528226387.git.Jim.Somerville@windriver.com>
|
|
In-Reply-To: <c8270e79f6b7008fde44b8d5aa6314d8cf89d3ed.1528226387.git.Jim.Somerville@windriver.com>
|
|
References: <c8270e79f6b7008fde44b8d5aa6314d8cf89d3ed.1528226387.git.Jim.Somerville@windriver.com>
|
|
From: Alex Shi <alex.shi@linaro.org>
|
|
Date: Thu, 12 Jan 2017 21:27:04 +0800
|
|
Subject: [PATCH 22/32] cpuidle/menu: add per CPU PM QoS resume latency
|
|
consideration
|
|
|
|
[ commit 9908859acaa95640d4a07991a93f7cd5bfc18e02 from linux-stable ]
|
|
|
|
There may be special requirements on CPU response time, like if
|
|
a interrupt is pinned to a CPU, that CPU should not go into excessively deep
|
|
idle states. For this reason, add a mechanism for adding PM QoS resume
|
|
latency constraints for individual CPUs and modify the menu governor to take
|
|
them into account.
|
|
|
|
To that end, extend the device PM QoS pm_qos_resume_latency attribute
|
|
to CPUs, which is possible, because the exit latency for CPUs is
|
|
effectively equivalent to the resume latency for devices.
|
|
|
|
Signed-off-by: Alex Shi <alex.shi@linaro.org>
|
|
Acked-by: Rik van Riel <riel@redhat.com>
|
|
[ rjw : Subject & changelog ]
|
|
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
|
Signed-off-by: Alex Kozyrev <alex.kozyrev@windriver.com>
|
|
|
|
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
|
|
---
|
|
drivers/cpuidle/governors/menu.c | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
|
|
index eb9fb0e..fe2dcb8 100644
|
|
--- a/drivers/cpuidle/governors/menu.c
|
|
+++ b/drivers/cpuidle/governors/menu.c
|
|
@@ -19,6 +19,7 @@
|
|
#include <linux/tick.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/math64.h>
|
|
+#include <linux/cpu.h>
|
|
#include <linux/module.h>
|
|
|
|
#define BUCKETS 12
|
|
@@ -259,10 +260,12 @@ again:
|
|
static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
|
|
{
|
|
struct menu_device *data = &__get_cpu_var(menu_devices);
|
|
+ struct device *device = get_cpu_device(dev->cpu);
|
|
int latency_req = pm_qos_request(PM_QOS_CPU_DMA_LATENCY);
|
|
int i;
|
|
int multiplier;
|
|
struct timespec t;
|
|
+ int resume_latency = dev_pm_qos_read_value(device);
|
|
|
|
if (data->needs_update) {
|
|
menu_update(drv, dev);
|
|
@@ -271,6 +274,10 @@ static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
|
|
|
|
data->exit_us = 0;
|
|
|
|
+ /* resume_latency is 0 means no restriction */
|
|
+ if (resume_latency && resume_latency < latency_req)
|
|
+ latency_req = resume_latency;
|
|
+
|
|
/* Special case when user has set very strict latency requirement */
|
|
if (unlikely(latency_req == 0))
|
|
return 0;
|
|
--
|
|
1.8.3.1
|
|
|