[PATCH v3 13/14] platform/x86/amd: hfi: Set ITMT priority from ranking data

From: Mario Limonciello
Date: Tue Oct 15 2024 - 17:46:36 EST


The static ranking data that is read at module load should be used
to set up the priorities for the cores relative to the performance
values.

Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx>
---
drivers/platform/x86/amd/hfi/Kconfig | 1 +
drivers/platform/x86/amd/hfi/hfi.c | 10 ++++++++++
2 files changed, 11 insertions(+)

diff --git a/drivers/platform/x86/amd/hfi/Kconfig b/drivers/platform/x86/amd/hfi/Kconfig
index 08051cd4f74d..4dfa7641b35b 100644
--- a/drivers/platform/x86/amd/hfi/Kconfig
+++ b/drivers/platform/x86/amd/hfi/Kconfig
@@ -7,6 +7,7 @@ config AMD_HFI
bool "AMD Hetero Core Hardware Feedback Driver"
depends on ACPI
depends on CPU_SUP_AMD
+ depends on SCHED_MC_PRIO
help
Select this option to enable the AMD Heterogeneous Core Hardware Feedback Interface. If
selected, hardware provides runtime thread classification guidance to the operating system
diff --git a/drivers/platform/x86/amd/hfi/hfi.c b/drivers/platform/x86/amd/hfi/hfi.c
index 79963c423d35..6c90b50f0a40 100644
--- a/drivers/platform/x86/amd/hfi/hfi.c
+++ b/drivers/platform/x86/amd/hfi/hfi.c
@@ -120,6 +120,12 @@ static DEFINE_PER_CPU(struct amd_hfi_cpuinfo, amd_hfi_cpuinfo) = {.class_index =

static DEFINE_MUTEX(hfi_cpuinfo_lock);

+static void amd_hfi_sched_itmt_work(struct work_struct *work)
+{
+ sched_set_itmt_support();
+}
+static DECLARE_WORK(sched_amd_hfi_itmt_work, amd_hfi_sched_itmt_work);
+
static int find_cpu_index_by_apicid(unsigned int target_apicid)
{
int cpu_index;
@@ -246,6 +252,8 @@ static int amd_set_hfi_ipcc_score(struct amd_hfi_cpuinfo *hfi_cpuinfo, int cpu)
WRITE_ONCE(hfi_cpuinfo->ipcc_scores[i],
hfi_cpuinfo->amd_hfi_classes[i].perf);

+ sched_set_itmt_core_prio(hfi_cpuinfo->ipcc_scores[0], cpu);
+
return 0;
}

@@ -463,6 +471,8 @@ static int amd_hfi_probe(struct platform_device *pdev)
if (ret < 0)
return ret;

+ schedule_work(&sched_amd_hfi_itmt_work);
+
return 0;
}

--
2.43.0