From: Lukas Wunner <lukas@wunner.de>
To: Lowne Onema <lowneonema@gmail.com>
Cc: bhelgaas@google.com, rafael.j.wysocki@intel.com,
alexander.deucher@amd.com, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] PCI: quirks: Prevent D3 for Acer Swift SF515-51T Root Port to fix audio
Date: Mon, 17 Aug 2026 11:23:15 +0200 [thread overview]
Message-ID: <aoLTA0umxhDPGw_4@wunner.de> (raw)
In-Reply-To: <CA+1pjEnxg9nVy79QNGTb0Ea3s+q=Z-we5XH_fDvJbOLpXH8HDA@mail.gmail.com>
On Tue, Aug 04, 2026 at 09:40:03PM +0200, Lowne Onema wrote:
> 3. Amending the power resource structures in drivers/acpi/: I looked
> at this a bit more and noticed RP09 and the SATA port
> (SAT0.PRT1) each have their own separate power resource in the
> ACPI tables, but both end up controlling the same physical GPIO
> pin. I'm not sure if that's something the kernel already knows
> how to handle safely, or if trying to sync RP09's power to audio
> activity could accidentally interfere with the SATA port through
> that shared pin. Still learning this part of the kernel, so
> wanted to ask before attempting it -- is that a real concern, or
> is it fine, and a better approach?
If two devices reference the same PowerResource in the ACPI tables,
then the kernel is aware of the dependency. E.g., when the
PowerResource is turned on, the kernel runtime resumes all "dependents"
of that PowerResource.
However if these are separate PowerResources whose _ON method happens
to toggle the same GPIO, that's opaque to the kernel. I think it is
then the job of the _ON and _OFF methods to track whether another
device still needs the GPIO to be kept on.
But perhaps the ACPI tables are just completely broken and the right
thing to do is modify the PowerResource assignment such that all
3 devices depend on the same PowerResource?
> +++ b/drivers/pci/quirks.c
> +static void quirk_acer_sf515_rp09_no_d3(struct pci_dev *pdev)
> +{
> + if (dmi_check_system(acer_sf515_rp_d3_dmi_table))
> + pdev->dev_flags |= PCI_DEV_FLAGS_NO_D3;
> +}
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x9db0,
> quirk_acer_sf515_rp09_no_d3);
On x86 SoCs introduced in the last about 10 years, keeping a Root Port
in D0 prevents the SoC from entering lower power states. So the
workaround of keeping RP09 in D0 may reduce battery life.
Usually Root Ports can only be put into D3hot, not D3cold. If there's
a PowerResource for the Root Port, that's usually for powering off
a device *below* that Root Port. E.g. if RP09 is an internal,
unoccupied M.2 slot, then the PowerResource allows cutting power
to an NVMe drive or WiFi card in that M.2 slot.
If RP09 isn't exposed physically at all, then it's unclear why the OEM
chose to enable it in the first place, let alone describe a PowerResource
for it in the ACPI tables.
Thanks,
Lukas
prev parent reply other threads:[~2026-08-17 9:23 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-01 18:10 [PATCH] PCI: quirks: Prevent D3 for Acer Swift SF515-51T Root Port to fix audio Lowne Onema
2026-08-02 8:42 ` Lukas Wunner
2026-08-04 19:40 ` Lowne Onema
2026-08-17 9:23 ` Lukas Wunner [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=aoLTA0umxhDPGw_4@wunner.de \
--to=lukas@wunner.de \
--cc=alexander.deucher@amd.com \
--cc=bhelgaas@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lowneonema@gmail.com \
--cc=rafael.j.wysocki@intel.com \
/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