]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
platform/x86/amd: hfi: Set ITMT priority from ranking data
authorMario Limonciello <mario.limonciello@amd.com>
Mon, 9 Jun 2025 20:05:16 +0000 (15:05 -0500)
committerBorislav Petkov (AMD) <bp@alien8.de>
Mon, 7 Jul 2025 20:34:17 +0000 (22:34 +0200)
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@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
Acked-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/20250609200518.3616080-12-superm1@kernel.org
drivers/platform/x86/amd/hfi/Kconfig
drivers/platform/x86/amd/hfi/hfi.c

index 019638047e629b887da9e60215fbf29c29526565..fecef684802344a2b98fab5d2ff2cb1249bc67ed 100644 (file)
@@ -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
index b0a5840b2598a13f58f98a90fb18cf026af50b19..805c03bb56079305a571a64509fa8a4786272076 100644 (file)
@@ -114,6 +114,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;
@@ -238,6 +244,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;
 }
 
@@ -459,6 +467,8 @@ static int amd_hfi_probe(struct platform_device *pdev)
        if (ret < 0)
                return ret;
 
+       schedule_work(&sched_amd_hfi_itmt_work);
+
        return 0;
 }