Re: [PATCH] platform/x86/amd: pmc: Dump idle mask during "check" stage instead

From: Hans de Goede
Date: Mon Oct 03 2022 - 07:53:07 EST


Hi,

On 9/29/22 23:50, Mario Limonciello wrote:
> The idle mask is dumped during the "prepare" and "restore" stage
> right now, which helps to demonstrate issues only related to the
> first s2idle entry.
>
> If the system has entered s2idle once, but was woken up never
> breaking the s2idle loop but also never went back to sleep we
> might still have another issue to deal with however.
>
> Move the dynamic debugging message here so that we'll catch it on
> each iteration.
>
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=216516
> Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx>

Thank you for your patch, I've applied this patch to my review-hans
branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans

Note it will show up in my review-hans branch once I've pushed my
local branch there, which might take a while.

Once I've run some tests on this branch the patches there will be
added to the platform-drivers-x86/for-next branch and eventually
will be included in the pdx86 pull-request to Linus for the next
merge-window.

Regards,

Hans


> ---
> drivers/platform/x86/amd/pmc.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/platform/x86/amd/pmc.c b/drivers/platform/x86/amd/pmc.c
> index 047e47449ff93..ce859b300712b 100644
> --- a/drivers/platform/x86/amd/pmc.c
> +++ b/drivers/platform/x86/amd/pmc.c
> @@ -719,8 +719,6 @@ static void amd_pmc_s2idle_prepare(void)
> }
> }
>
> - /* Dump the IdleMask before we send hint to SMU */
> - amd_pmc_idlemask_read(pdev, pdev->dev, NULL);
> msg = amd_pmc_get_os_hint(pdev);
> rc = amd_pmc_send_cmd(pdev, arg, NULL, msg, 0);
> if (rc) {
> @@ -738,6 +736,9 @@ static void amd_pmc_s2idle_check(void)
> struct amd_pmc_dev *pdev = &pmc;
> int rc;
>
> + /* Dump the IdleMask before we add to the STB */
> + amd_pmc_idlemask_read(pdev, pdev->dev, NULL);
> +
> rc = amd_pmc_write_stb(pdev, AMD_PMC_STB_S2IDLE_CHECK);
> if (rc)
> dev_err(pdev->dev, "error writing to STB: %d\n", rc);
> @@ -757,9 +758,6 @@ static void amd_pmc_s2idle_restore(void)
> /* Let SMU know that we are looking for stats */
> amd_pmc_send_cmd(pdev, 0, NULL, SMU_MSG_LOG_DUMP_DATA, 0);
>
> - /* Dump the IdleMask to see the blockers */
> - amd_pmc_idlemask_read(pdev, pdev->dev, NULL);
> -
> rc = amd_pmc_write_stb(pdev, AMD_PMC_STB_S2IDLE_RESTORE);
> if (rc)
> dev_err(pdev->dev, "error writing to STB: %d\n", rc);