From: Mian Yousaf Kaukab <yousaf.kaukab@suse.com>
To: rjw@rjwysocki.net, lenb@kernel.org, viresh.kumar@linaro.org,
ionela.voinescu@arm.com
Cc: linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-pm@vger.kernel.org, Mian Yousaf Kaukab <ykaukab@suse.de>,
Petr Cervinka <pcervinka@suse.com>
Subject: [PATCH 1/2] acpi: cppc: add cpufreq device
Date: Thu, 10 Dec 2020 15:21:38 +0100 [thread overview]
Message-ID: <20201210142139.20490-1-yousaf.kaukab@suse.com> (raw)
From: Mian Yousaf Kaukab <ykaukab@suse.de>
Since commit 28f06f770454 ("cppc_cpufreq: replace per-cpu structures with
lists"), cppc-cpufreq driver doesn't check availability of PSD data before
registering with cpufreq core. As a result on a ThunderX2 platform when
CPPC is disabled from BIOS, kernel log is spammed with following messages:
[ 180.974166] CPPC Cpufreq: Error in acquiring _CPC/_PSD data for CPUxx
acpi_cppc_processor_probe() never succeed in this case because
acpi_evaluate_object_typed("_CPC") always returns AE_NOT_FOUND. When
cpufreq core calls cppc_cpufreq_cpu_init(), driver fails to obtain PSD data
and print error messages.
Convert cppc-cpufreq driver to a platform driver (done in a separate patch)
and add cppc-cpufreq device when acpi_cppc_processor_probe() succeeds.
Fixes: 28f06f770454 ("cppc_cpufreq: replace per-cpu structures with lists")
Reported-by: Petr Cervinka <pcervinka@suse.com>
Signed-off-by: Mian Yousaf Kaukab <ykaukab@suse.de>
---
drivers/acpi/cppc_acpi.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
index 4e478f751ff7..adf9ca3be9fe 100644
--- a/drivers/acpi/cppc_acpi.c
+++ b/drivers/acpi/cppc_acpi.c
@@ -39,6 +39,7 @@
#include <linux/ktime.h>
#include <linux/rwsem.h>
#include <linux/wait.h>
+#include <linux/platform_device.h>
#include <acpi/cppc_acpi.h>
@@ -606,6 +607,23 @@ static bool is_cppc_supported(int revision, int num_ent)
return true;
}
+static void add_cppc_cpufreq_dev(void)
+{
+ static bool already_added;
+
+ if (!already_added) {
+ struct platform_device *pdev;
+
+ pdev = platform_device_register_simple("cppc-cpufreq", -1,
+ NULL, 0);
+ if (IS_ERR(pdev))
+ pr_err("Couldn't register cppc-cpufreq err=%ld\n",
+ PTR_ERR(pdev));
+ else
+ already_added = true;
+ }
+}
+
/*
* An example CPC table looks like the following.
*
@@ -815,6 +833,9 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)
}
kfree(output.pointer);
+
+ add_cppc_cpufreq_dev();
+
return 0;
out_free:
--
2.26.2
next reply other threads:[~2020-12-10 14:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-10 14:21 Mian Yousaf Kaukab [this message]
2020-12-10 14:21 ` [PATCH 2/2] cpufreq: cppc: convert to a platform driver Mian Yousaf Kaukab
2020-12-10 14:32 ` [PATCH 1/2] acpi: cppc: add cpufreq device Rafael J. Wysocki
2020-12-10 15:02 ` Ionela Voinescu
2020-12-10 15:04 ` Mian Yousaf Kaukab
2020-12-10 16:55 ` Rafael J. Wysocki
2020-12-10 17:23 ` Ionela Voinescu
2020-12-10 18:54 ` Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201210142139.20490-1-yousaf.kaukab@suse.com \
--to=yousaf.kaukab@suse.com \
--cc=ionela.voinescu@arm.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=pcervinka@suse.com \
--cc=rjw@rjwysocki.net \
--cc=viresh.kumar@linaro.org \
--cc=ykaukab@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.