Re: [PATCH v4 4/4] vfio/pci: Move the unused device into low power state with runtime PM

From: Alex Williamson
Date: Tue May 17 2022 - 16:56:11 EST


On Tue, 17 May 2022 14:42:56 -0600
Alex Williamson <alex.williamson@xxxxxxxxxx> wrote:

> On Tue, 17 May 2022 15:32:19 +0530
> Abhishek Sahu <abhsahu@xxxxxxxxxx> wrote:
> > 5. Since the runtime PM framework will provide the same functionality,
> > so directly writing into PCI PM config register can be replaced with
> > the use of runtime PM routines. Also, the use of runtime PM can help
> > us in more power saving.
> >
> > In the systems which do not support D3cold,
> >
> > With the existing implementation:
> >
> > // PCI device
> > # cat /sys/bus/pci/devices/0000\:01\:00.0/power_state
> > D3hot
> > // upstream bridge
> > # cat /sys/bus/pci/devices/0000\:00\:01.0/power_state
> > D0
> >
> > With runtime PM:
> >
> > // PCI device
> > # cat /sys/bus/pci/devices/0000\:01\:00.0/power_state
> > D3hot
> > // upstream bridge
> > # cat /sys/bus/pci/devices/0000\:00\:01.0/power_state
> > D3hot
>
> I'm not able to reproduce these results. Output below abridged:
>
> # lspci -t
> -[0000:00]-+-00.0
> +-01.0-[01]--+-00.0
> | \-00.1
>
> # grep . /sys/bus/pci/devices/*/power_state
> /sys/bus/pci/devices/0000:00:01.0/power_state:D0
> /sys/bus/pci/devices/0000:01:00.0/power_state:D3hot
> /sys/bus/pci/devices/0000:01:00.1/power_state:D3hot
>
> # lspci -ks $DEV
> 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
> Kernel driver in use: pcieport
> 01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750] (rev a2)
> Subsystem: eVga.com. Corp. Device 2753
> Kernel driver in use: vfio-pci
> 01:00.1 Audio device: NVIDIA Corporation GM107 High Definition Audio Controller [GeForce 940MX] (rev a1)
> Subsystem: eVga.com. Corp. Device 2753
> Kernel driver in use: vfio-pci
> Kernel modules: snd_hda_intel
>
> Any debugging suggestions? Thanks,

Nevermind, I see a whole bunch of reasons in pci_bridge_d3_possible()
that runtime-pm wouldn't support D3hot on this bridge/system. Thanks,

Alex