Message ID | 20240416070127.116922-2-Jiqian.Chen@amd.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | S3 support | expand |
Hi, On 2024/4/16 15:01, Jiqian Chen wrote: > Fix bug imported by 27ce0f3afc9dd25d21b43bbce505157afd93d111 > (fix Power Management Control Register for PCI Express virtio devices) > > Only state of PM_CTRL is writable. > Only when flag VIRTIO_PCI_FLAG_INIT_PM is set, need to reset state. > > Signed-off-by: Jiqian Chen <Jiqian.Chen@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); > + } > } > } > Do you have any other doubts about this patch? And another patch of this series?
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.Chen@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
On 2024/5/10 18:18, Michael S. Tsirkin wrote: > 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 ...... . OK, I will modify in next version. How about the other patch of this series? Do you have any doubts? > >> 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.Chen@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 >
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); + } } }
Fix bug imported by 27ce0f3afc9dd25d21b43bbce505157afd93d111 (fix Power Management Control Register for PCI Express virtio devices) Only state of PM_CTRL is writable. Only when flag VIRTIO_PCI_FLAG_INIT_PM is set, need to reset state. Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com> --- hw/virtio/virtio-pci.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)