From patchwork Mon Sep 9 14:50:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 173382 Delivered-To: patch@linaro.org Received: by 2002:a05:6e02:8f:0:0:0:0 with SMTP id l15csp4399419ilm; Mon, 9 Sep 2019 07:50:50 -0700 (PDT) X-Google-Smtp-Source: APXvYqwDIwFRSuZtU+FnigkvlJiLKR44F3GG/e9My4c85pGOlwT//gAlz2mC2yc8jPRhNkddYYEi X-Received: by 2002:a50:d552:: with SMTP id f18mr25195151edj.36.1568040647074; Mon, 09 Sep 2019 07:50:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568040647; cv=none; d=google.com; s=arc-20160816; b=Sta1/w0EHdzToaPl+XegnOMOTGAeXEF3Vb62IO1WwOczjHjYYm8ptGr42JVp3e9ybV 76grjzU7sklOU6BSAQ3tT0OW2fKMHRdxmuzFQ2YE6F4ke4h83QRXr3T/pTwjQOyW2Pj5 hxuyidmqe9B8ma/CTA/FcBWZVLcCP0Wzk8dqtZsUmLByqpF4uCEsh0TSF4o79CbI6Lis SpGyoAGWpZd2nfehmqbUxEOtNeJ4DWAiJbHKa6un2SKdO58NEOlgcIue2DMpjSTennoi D91V3llOscn+LM+71LDEqcwBoOErMYS3DBVOk49WIFg1EH9cfHY/dpQbsnViIbccnDdM rHeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=QWTOc9pzhOZfgZC7q4BsqP5nZGvuPUC3FrVHOgCj9sE=; b=gMtA+tGhm5eaNiQCVfBAc5thAd8DwhsTkifMyCEPLpVObPp36grJ/2PTgvts+mw3R+ Z+FtB7Y4Q6hvH8wY5zfpAQbzQTLiDkU0FbpGEbdFuQeOXv/s3HMrHr2p/sW9hnOyFDzX 328zePC58rSLl+7b1cRAoIYu4LqhH+ixtGybpr1FXwPkTJsdLh/xJ/TZ6/a22ZjYsXM3 KRG29gvYav1CwmWEixW/tU9Qmio0PHST2gXoW8nqRkJpAaN0RdwdK6Zz0q/uq84NvHwQ cuiRCkfJGlPFd0zPbygnhXG4lUpdH52+9TJX3ZSYTcIPfljdfm3gYpeBIVzIlqOum7xp O/GA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Qh900W4W; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q28si8306286eda.322.2019.09.09.07.50.46; Mon, 09 Sep 2019 07:50:47 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Qh900W4W; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732707AbfIIOup (ORCPT + 28 others); Mon, 9 Sep 2019 10:50:45 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:52788 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726561AbfIIOup (ORCPT ); Mon, 9 Sep 2019 10:50:45 -0400 Received: by mail-wm1-f68.google.com with SMTP id t17so14253346wmi.2 for ; Mon, 09 Sep 2019 07:50:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=QWTOc9pzhOZfgZC7q4BsqP5nZGvuPUC3FrVHOgCj9sE=; b=Qh900W4WCA/saKFC7Jgj35zRRdwzkHDtcm8hsjyS3aBg7t/sfTw1+RJ85PhNMA8Pyg C4g4c6c70EmSjEGdswpILDeyJUb3qEOFGQCDFA7x0lcH650oB9E5BO1jEfcSf50seLv+ 3nW7oN2zl2PrP7aOaYHU/EZo7uVkA4FRlWCrAv43la1CTyj0KIkt/uGSDlnE5zBlbroO zraFW9eln2tSZqy0I0/VGKBgDv6VsqIZUZN4+9dYp6CPwpDk9h3uEJuZJ1sYrY+e2wZd aYj6RO3Z7liTmDZOHNGREw3Q0X5HSWXlnYa2l8O3dWrMO6eZNc2s5Adi+rMknTjSRzUc deGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=QWTOc9pzhOZfgZC7q4BsqP5nZGvuPUC3FrVHOgCj9sE=; b=AB+U6od1ihYSCR9lexY2PYIhPJei2SbGsLI0E9JP3vOJ74z9SSUop9ZQoNmbUzF9VC Yc9jQ0sz48MHGduNTLVp0YMGSZH0dymrQ9eAVLVMuUMRNE7Kd4Bq+2Mc7yF4wM7dyDYD KtBN/0NkiH1VharpRWxgX5qfBDrtGTA5J0dR819KfzyFySw1LZTaAQPME1Ta3Whiqd9K L0DU7Kfd/+SE2Ia4hYCNk0uGYkRs/KrUvLHvsCKzsKUpuBq9FPZiPceD4QN9tdBLN6vG j1K6qulQstgYKFz17z6mvTVWWetZ209W8LZQbCfwEY6OTSAaFuA9eRJ1tjDtnHNH8vYm Gmaw== X-Gm-Message-State: APjAAAWtUlDrMch98QKUHGnM0SDwXlcj8ay4WZafc59NNK1JpEpYlSHg +EkcycAQkyI3hibbXzbG6oaiQQ== X-Received: by 2002:a05:600c:307:: with SMTP id q7mr13157988wmd.6.1568040643849; Mon, 09 Sep 2019 07:50:43 -0700 (PDT) Received: from localhost.localdomain ([2a01:e34:ed2f:f020:a060:80d2:1467:e511]) by smtp.gmail.com with ESMTPSA id v2sm31921147wmf.18.2019.09.09.07.50.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Sep 2019 07:50:43 -0700 (PDT) From: Daniel Lezcano To: rafael@kernel.org Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, "Rafael J. Wysocki" Subject: [PATCH 3/3] powercap/drivers/idle_inject: Specify the idle state to inject Date: Mon, 9 Sep 2019 16:50:15 +0200 Message-Id: <20190909145015.26317-3-daniel.lezcano@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190909145015.26317-1-daniel.lezcano@linaro.org> References: <20190909145015.26317-1-daniel.lezcano@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently the idle injection framework only allows to inject the deepest idle state available on the system. Give the opportunity to specify which idle state we want to inject by adding a new function helper to set the state and use it when calling play_idle(). There is no functional changes, the cpuidle state is the deepest one. Signed-off-by: Daniel Lezcano --- drivers/powercap/idle_inject.c | 15 ++++++++++++++- include/linux/idle_inject.h | 3 +++ 2 files changed, 17 insertions(+), 1 deletion(-) -- 2.17.1 Acked-by: Mathieu Poirier diff --git a/drivers/powercap/idle_inject.c b/drivers/powercap/idle_inject.c index 9b18667b9f26..a612c425d74c 100644 --- a/drivers/powercap/idle_inject.c +++ b/drivers/powercap/idle_inject.c @@ -38,6 +38,7 @@ #define pr_fmt(fmt) "ii_dev: " fmt #include +#include #include #include #include @@ -65,6 +66,7 @@ struct idle_inject_thread { */ struct idle_inject_device { struct hrtimer timer; + int state; unsigned int idle_duration_us; unsigned int run_duration_us; unsigned long int cpumask[0]; @@ -139,7 +141,7 @@ static void idle_inject_fn(unsigned int cpu) iit->should_run = 0; play_idle(READ_ONCE(ii_dev->idle_duration_us), - cpuidle_find_deepest_state()); + READ_ONCE(ii_dev->state)); } /** @@ -170,6 +172,16 @@ void idle_inject_get_duration(struct idle_inject_device *ii_dev, *idle_duration_us = READ_ONCE(ii_dev->idle_duration_us); } +/** + * idle_inject_set_state - set the idle state to inject + * @state: an integer for the idle state to inject + */ +void idle_inject_set_state(struct idle_inject_device *ii_dev, int state) +{ + if (state >= CPUIDLE_STATE_NOUSE && state < CPUIDLE_STATE_MAX) + WRITE_ONCE(ii_dev->state, state); +} + /** * idle_inject_start - start idle injections * @ii_dev: idle injection control device structure @@ -298,6 +310,7 @@ struct idle_inject_device *idle_inject_register(struct cpumask *cpumask) cpumask_copy(to_cpumask(ii_dev->cpumask), cpumask); hrtimer_init(&ii_dev->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ii_dev->timer.function = idle_inject_timer_fn; + ii_dev->state = cpuidle_find_deepest_state(); for_each_cpu(cpu, to_cpumask(ii_dev->cpumask)) { diff --git a/include/linux/idle_inject.h b/include/linux/idle_inject.h index a445cd1a36c5..e2b26b9ccd34 100644 --- a/include/linux/idle_inject.h +++ b/include/linux/idle_inject.h @@ -26,4 +26,7 @@ void idle_inject_set_duration(struct idle_inject_device *ii_dev, void idle_inject_get_duration(struct idle_inject_device *ii_dev, unsigned int *run_duration_us, unsigned int *idle_duration_us); + +void idle_inject_set_state(struct idle_inject_device *ii_dev, int state); + #endif /* __IDLE_INJECT_H__ */