[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240731185756.1853197-1-srinivas.pandruvada@linux.intel.com>
Date: Wed, 31 Jul 2024 11:57:56 -0700
From: Srinivas Pandruvada <srinivas.pandruvada@...ux.intel.com>
To: hdegoede@...hat.com,
ilpo.jarvinen@...ux.intel.com,
andriy.shevchenko@...ux.intel.com
Cc: platform-driver-x86@...r.kernel.org,
linux-kernel@...r.kernel.org,
Srinivas Pandruvada <srinivas.pandruvada@...ux.intel.com>
Subject: [PATCH] platform/x86/intel-uncore-freq: Do not present separate package-die domain
The scope of uncore control is per power domain in a package and die.
A package-die can have multiple power domains on some processors. In this
case package-die domain (root domain) aggregates all information from
power domains in it.
On some processors, CPUID enumerates the die number same as power domain
ID. In this case there is one to one relationship between package-die and
power domain ID. There is no use of aggregating information from all
power domain IDs as the information will be duplicate and confusing. In
this case do not create separate package-die domain.
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@...ux.intel.com>
---
.../x86/intel/uncore-frequency/uncore-frequency-tpmi.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c
index 9fa3037c03d1..6c2e607968f2 100644
--- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c
+++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c
@@ -427,6 +427,9 @@ static int uncore_probe(struct auxiliary_device *auxdev, const struct auxiliary_
auxiliary_set_drvdata(auxdev, tpmi_uncore);
+ if (topology_max_dies_per_package() > 1)
+ return 0;
+
tpmi_uncore->root_cluster.root_domain = true;
tpmi_uncore->root_cluster.uncore_root = tpmi_uncore;
@@ -450,7 +453,9 @@ static void uncore_remove(struct auxiliary_device *auxdev)
{
struct tpmi_uncore_struct *tpmi_uncore = auxiliary_get_drvdata(auxdev);
- uncore_freq_remove_die_entry(&tpmi_uncore->root_cluster.uncore_data);
+ if (tpmi_uncore->root_cluster.root_domain)
+ uncore_freq_remove_die_entry(&tpmi_uncore->root_cluster.uncore_data);
+
remove_cluster_entries(tpmi_uncore);
uncore_freq_common_exit();
--
2.39.3
Powered by blists - more mailing lists