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
>>>
>>
>
prev parent reply other threads:[~2026-05-04 16:58 UTC|newest]
Thread overview: 6+ 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-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]
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox