PM QoS: Add max online cpus as PM QoS parameter
Alex Frid [Fri, 16 Dec 2011 21:44:23 +0000 (13:44 -0800)]
Bug 894200

Change-Id: Ieb009a13c6ef9bca2388e234eb973d65a4e3a58b
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/71034
Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>

include/linux/pm_qos_params.h
kernel/pm_qos_params.c

index c1f1775..eee55bc 100644 (file)
@@ -13,6 +13,7 @@ enum {
        PM_QOS_CPU_DMA_LATENCY,
        PM_QOS_NETWORK_LATENCY,
        PM_QOS_NETWORK_THROUGHPUT,
+       PM_QOS_MAX_ONLINE_CPUS,
 
        /* insert new class ID */
 
@@ -24,6 +25,7 @@ enum {
 #define PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE       (2000 * USEC_PER_SEC)
 #define PM_QOS_NETWORK_LAT_DEFAULT_VALUE       (2000 * USEC_PER_SEC)
 #define PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE        0
+#define PM_QOS_MAX_ONLINE_CPUS_DEFAULT_VALUE   LONG_MAX
 
 struct pm_qos_request_list {
        struct plist_node list;
index d6a47e4..06e7420 100644 (file)
@@ -103,12 +103,23 @@ static struct pm_qos_object network_throughput_pm_qos = {
        .type = PM_QOS_MAX,
 };
 
+static BLOCKING_NOTIFIER_HEAD(max_online_cpus_notifier);
+static struct pm_qos_object max_online_cpus_pm_qos = {
+       .requests = PLIST_HEAD_INIT(max_online_cpus_pm_qos.requests),
+       .notifiers = &max_online_cpus_notifier,
+       .name = "max_online_cpus",
+       .target_value = PM_QOS_MAX_ONLINE_CPUS_DEFAULT_VALUE,
+       .default_value = PM_QOS_MAX_ONLINE_CPUS_DEFAULT_VALUE,
+       .type = PM_QOS_MIN,
+};
+
 
 static struct pm_qos_object *pm_qos_array[] = {
        &null_pm_qos,
        &cpu_dma_pm_qos,
        &network_lat_pm_qos,
-       &network_throughput_pm_qos
+       &network_throughput_pm_qos,
+       &max_online_cpus_pm_qos
 };
 
 static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf,