Re: [PATCH] PCI/proc: Avoid spurious runtime PM wakeup on config space accesses

Krzysztof WilczyƄski <[email protected]> Sat, 1 Aug 2026 13:05:32 +0900
Newsgroups org.kernel.vger.linux-pci
Message-ID <20260801040515.GB3183355@rocinante>
Hello,

> Currently, proc_bus_pci_read() and proc_bus_pci_write() do not return
> early for zero-length configuration space accesses at valid offsets.
> 
> Thus, such an access invokes pci_config_pm_runtime_get() and
> pci_config_pm_runtime_put() around transfer blocks that do nothing.
> 
> This is a problem because pci_config_pm_runtime_get() synchronously
> resumes the upstream bridge through pm_runtime_get_sync(), and resumes
> the device itself through pm_runtime_resume() when it is in D3cold,
> only for the handler to return zero immediately afterwards.  Such a
> spurious wakeup wastes power and adds needless resume latency.
> 
> The sysfs core already returns early for in-range zero-length binary
> attribute accesses before pci_read_config() or pci_write_config() is
> invoked.  In contrast, the VFS forwards zero-length requests to the
> procfs callbacks, where they continue into runtime PM handling.
> 
> Therefore, return early from proc_bus_pci_read() and proc_bus_pci_write()
> when nbytes is zero, before any runtime PM involvement.
> 
> The value returned to userspace at these offsets remains zero,
> so the change is not visible to userspace.

Applied to the procfs branch.

Thank you!

	Krzysztof