platform/x86: amd-pmc: Avoid reading SMU version at probe time
authorMario Limonciello <mario.limonciello@amd.com>
Mon, 11 Apr 2022 14:38:20 +0000 (09:38 -0500)
committerHans de Goede <hdegoede@redhat.com>
Wed, 13 Apr 2022 11:49:48 +0000 (13:49 +0200)
Currently the SMU version only used to determine whether the SMU supports
reading the idle mask. To speed up startup, move it to the first time
the idle mask is read.

This decreases the startup time from ~28500us to 100us.

Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20220411143820.13971-3-mario.limonciello@amd.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/amd-pmc.c

index 73275e6b21e0e417a09316916be47cc137e5d07a..668a1d6c11ee8988ecf4d5f607bccde20d613c0b 100644 (file)
@@ -422,6 +422,13 @@ static int amd_pmc_idlemask_show(struct seq_file *s, void *unused)
        struct amd_pmc_dev *dev = s->private;
        int rc;
 
+       /* we haven't yet read SMU version */
+       if (!dev->major) {
+               rc = amd_pmc_get_smu_version(dev);
+               if (rc)
+                       return rc;
+       }
+
        if (dev->major > 56 || (dev->major >= 55 && dev->minor >= 37)) {
                rc = amd_pmc_idlemask_read(dev, NULL, s);
                if (rc)
@@ -875,7 +882,6 @@ static int amd_pmc_probe(struct platform_device *pdev)
                        return err;
        }
 
-       amd_pmc_get_smu_version(dev);
        platform_set_drvdata(pdev, dev);
 #ifdef CONFIG_SUSPEND
        err = acpi_register_lps0_dev(&amd_pmc_s2idle_dev_ops);