On Tue, Apr 16, 2024 at 03:01:26PM +0800, Jiqian Chen wrote:
> Fix bug imported by 27ce0f3afc9dd25d21b43bbce505157afd93d111
> (fix Power Management Control Register for PCI Express virtio devices)


should be:

27ce0f3afc9dd ("fix Power Management Control Register for PCI Express virtio 
devices"

Pls include a bit more info about the bug: after this change, we observe ...... 
.

> Only state of PM_CTRL is writable.
> Only when flag VIRTIO_PCI_FLAG_INIT_PM is set, need to reset state.



and here, add:

Fixes: 27ce0f3afc9dd ("fix Power Management Control Register for PCI Express 
virtio devices"

> Signed-off-by: Jiqian Chen <jiqian.c...@amd.com>
> ---
>  hw/virtio/virtio-pci.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
> index cb159fd0785c..a1b61308e7a0 100644
> --- a/hw/virtio/virtio-pci.c
> +++ b/hw/virtio/virtio-pci.c
> @@ -2300,10 +2300,16 @@ static void virtio_pci_bus_reset_hold(Object *obj)
>      virtio_pci_reset(qdev);
>  
>      if (pci_is_express(dev)) {
> +        VirtIOPCIProxy *proxy = VIRTIO_PCI(dev);
> +
>          pcie_cap_deverr_reset(dev);
>          pcie_cap_lnkctl_reset(dev);
>  
> -        pci_set_word(dev->config + dev->exp.pm_cap + PCI_PM_CTRL, 0);
> +        if (proxy->flags & VIRTIO_PCI_FLAG_INIT_PM) {
> +            pci_word_test_and_clear_mask(
> +                dev->config + dev->exp.pm_cap + PCI_PM_CTRL,
> +                PCI_PM_CTRL_STATE_MASK);
> +        }
>      }
>  }
>  
> -- 
> 2.34.1


Reply via email to