]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
platform/x86/amd: pmc: Clear metrics table at start of cycle
authorMario Limonciello <mario.limonciello@amd.com>
Tue, 3 Jun 2025 13:24:08 +0000 (08:24 -0500)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Mon, 9 Jun 2025 07:48:17 +0000 (10:48 +0300)
The area of memory that contains the metrics table may contain garbage
when the cycle starts.  This normally doesn't matter because the cycle
itself will populate it with valid data, however commit 9f5595d5f03fd
("platform/x86/amd: pmc: Require at least 2.5 seconds between HW sleep
cycles") started to use it during the check() phase.  Depending upon
what garbage is in the table it's possible that the system will wait
2.5 seconds for even the first cycle, which will be visible to a user.

To prevent this from happening explicitly clear the table when logging
is started.

Fixes: 9f5595d5f03fd ("platform/x86/amd: pmc: Require at least 2.5 seconds between HW sleep cycles")
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20250603132412.3555302-1-superm1@kernel.org
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/amd/pmc/pmc.c

index 37c7a57afee5c1c5e3d90727e901ee38df5b2b3b..0b9b23eb7c2c300645601316d3caabcf28483656 100644 (file)
@@ -157,6 +157,8 @@ static int amd_pmc_setup_smu_logging(struct amd_pmc_dev *dev)
                        return -ENOMEM;
        }
 
+       memset_io(dev->smu_virt_addr, 0, sizeof(struct smu_metrics));
+
        /* Start the logging */
        amd_pmc_send_cmd(dev, 0, NULL, SMU_MSG_LOG_RESET, false);
        amd_pmc_send_cmd(dev, 0, NULL, SMU_MSG_LOG_START, false);