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