From: Mario Limonciello <superm1@kernel.org>
To: "Daniel Gibson" <daniel@gibson.sh>,
"Shyam Sundar S K" <Shyam-sundar.S-k@amd.com>,
"Hans de Goede" <hansg@kernel.org>,
"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
platform-driver-x86@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] platform/x86/amd/pmc: Add delay_suspend module argument
Date: Mon, 4 May 2026 11:58:34 -0500 [thread overview]
Message-ID: <f86d9af4-6415-427a-9f4e-639b2ae6203e@kernel.org> (raw)
In-Reply-To: <d4f718ed-0d9e-4832-b9af-1adb539e0830@gibson.sh>
On 5/4/26 10:38, Daniel Gibson wrote:
> On 04.05.26 16:37, Mario Limonciello wrote:
>> On 4/30/26 22:26, Daniel Gibson wrote:
> (...)
>>> +static int delay_suspend = -1;
>>> +module_param(delay_suspend, int, 0644);
>>> +MODULE_PARM_DESC(delay_suspend,
>>> + "Delays s2idle by 2.5 seconds to work around buggy
>>> ECs, often causing keyboard issues after suspend. 0: don't delay, 1:
>>> do delay, -1 (default): let amd_pmc decide. If you need this please
>>> report this to: platform-driver-x86@vger.kernel.org");
>>> +
>>> static struct amd_pmc_dev pmc;
>>
>> Generally speaking; I don't like new module parameters.
>>
>> Since this is purely for debugging purposes and is going to hopefully
>> lead to a new patch; how about if it's done in debugfs?
>>
>> I have a couple reasons I say this.
>>
>> 1. If you make it "too easy" to make the kernel command line permanent
>> people won't report bugs and they never get fixed.
>
> Sorry, I don't think this makes a difference.
OK. I'd say up to the driver maintainers to decide which way to go.
> Even people using a bleeding-edge distro like Arch Linux will have to
> wait at least a month or so after reporting their device until a stable
> kernel with that quirk is released and that kernel lands in their
> distro. Much longer for users of more traditional distros.
>
> No one wants to have a broken laptop for months if it can be avoided, so
> they'd make that workaround permanent either way, it's just more
> annoying to do when it's in debugfs.
>
> If someone reports the bug it's because they think it's the right thing
> to do (and maybe because the module parameter or dmesg message asked
> them to), not because the workaround requires a systemd unit instead of
> a kernel parameter.
>
>>
>> 2. It needs to become ABI essentially forever, even if we found out some
>> day this was actually something we can fix with other kernel changes
>> instead.
>
> Does it? prefer_microsoft_dsm_guid was removed, did that break anything?
Very good point.
>
>>
>> But then the problem arguing in the direction of a module parameter is
>> discoverability of this debugging knob. And for that; I would suggest
>> to add a bullet here: https://docs.kernel.org/arch/x86/amd-debugging.html
>>
>> Then when people report this problem we can point them to that document
>> indicating they can use it.
>
> So far I've missed that document - it certainly looks like a good place
> to document the issue and workaround.
Yeah; whatever direction is agreed upon (module parameter or debugfs),
please update the document for a section about it.
>
> Side-Note: "18.10. Random reboot issues" sounds interesting, I guess it
> would be helpful to document how that value can be read or identified in
> dmesg ;)
"This information is read by the kernel at bootup and printed into the
syslog".
Do you mean actually outputting the prefix of the message in this document?
This is a sample message from my local machine.
x86/amd: Previous system reset reason [0x00080800]: software wrote 0x6
to reset control register 0xCF9
I have no qualms with this - feel free to send a patch if you're
touching it already anyways.
>
>>
>>>
>>> static inline u32 amd_pmc_reg_read(struct amd_pmc_dev *dev, int
>>> reg_offset)
>>> @@ -634,11 +639,19 @@ static void amd_pmc_s2idle_check(void)
>>> struct amd_pmc_dev *pdev = &pmc;
>>> struct smu_metrics table;
>>> int rc;
>>> - bool ec_needs_sleep = !disable_workarounds &&
>>> amd_pmc_quirk_need_suspend_delay(pdev);
>>> + bool ec_needs_sleep;
>>> +
>>> + if (delay_suspend < 0)
>>> + ec_needs_sleep = !disable_workarounds &&
>>> amd_pmc_quirk_need_suspend_delay(pdev);
>>> + else
>>> + ec_needs_sleep = delay_suspend != 0;
>>>
>>> /* Avoid triggering OVP */
>>> if (ec_needs_sleep || (!get_metrics_table(pdev, &table) &&
>>> table.s0i3_last_entry_status)) {
>>> - dev_info(pdev->dev, "Delaying suspend by 2.5s to avoid
>>> platform bug\n");
>>> + if (delay_suspend > 0)
>>> + dev_info(pdev->dev, "Delaying suspend by 2.5s
>>> because delay_suspend=1\n");
>>
>> Rather than telling them to report to platform-driver-x86@ in the module
>> parameter description I would suggest you should be putting it in this
>> message. I think that's what some other drivers do when they want
>> people to report bugs.
>
> Great idea!
>
>>
>>> + else
>>> + dev_info(pdev->dev, "Delaying suspend by 2.5s
>>> to avoid platform bug\n");
>>> msleep(2500);
>>> }
>>>
>>> --
>>> 2.48.1
>>>
>>
>
next prev parent reply other threads:[~2026-05-04 16:58 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-01 3:26 [PATCH 0/2] amd_pmc: Delay s2idle suspend for some devices Daniel Gibson
2026-05-01 3:26 ` [PATCH 1/2] platform/x86/amd/pmc: Delay suspend for some Lenovo Laptops Daniel Gibson
2026-05-07 13:22 ` Ilpo Järvinen
2026-05-07 20:19 ` Daniel Gibson
2026-05-07 22:43 ` Daniel Gibson
2026-05-07 22:54 ` Mario Limonciello
2026-05-07 23:25 ` Daniel Gibson
2026-05-07 23:48 ` Mario Limonciello
2026-05-07 23:56 ` Daniel Gibson
2026-05-01 3:26 ` [PATCH 2/2] platform/x86/amd/pmc: Add delay_suspend module argument Daniel Gibson
2026-05-04 14:37 ` Mario Limonciello
2026-05-04 15:38 ` Daniel Gibson
2026-05-04 16:58 ` Mario Limonciello [this message]
2026-05-07 13:33 ` Ilpo Järvinen
2026-05-07 20:19 ` Daniel Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f86d9af4-6415-427a-9f4e-639b2ae6203e@kernel.org \
--to=superm1@kernel.org \
--cc=Shyam-sundar.S-k@amd.com \
--cc=daniel@gibson.sh \
--cc=hansg@kernel.org \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.