Message ID | 20221013172123.1448288-1-peter.maydell@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | hw/s390x/s390-pci-inst.c: Use device_cold_reset() to reset PCI devices | expand |
On 10/13/22 1:21 PM, Peter Maydell wrote: > The semantic difference between the deprecated device_legacy_reset() > function and the newer device_cold_reset() function is that the new > function resets both the device itself and any qbuses it owns, > whereas the legacy function resets just the device itself and nothing > else. > > In s390-pci-inst.c we use device_legacy_reset() to reset an > S390PCIBusDevice. This device doesn't have any child qbuses, so the > functions do the same thing and we can stop using the deprecated one. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > NB: tested only with 'make check' and 'make check-avocado', which > probably don't exercise this codepath. > I exercised the codepath by triggering the associated clp using both virtio and vfio pci devices on s390x; looks good to me. Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com> > hw/s390x/s390-pci-inst.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c > index 20a9bcc7afb..16f5a3e81b4 100644 > --- a/hw/s390x/s390-pci-inst.c > +++ b/hw/s390x/s390-pci-inst.c > @@ -272,7 +272,7 @@ int clp_service_call(S390CPU *cpu, uint8_t r2, uintptr_t ra) > stw_p(&ressetpci->hdr.rsp, CLP_RC_SETPCIFN_FHOP); > goto out; > } > - device_legacy_reset(DEVICE(pbdev)); > + device_cold_reset(DEVICE(pbdev)); > pbdev->fh &= ~FH_MASK_ENABLE; > pbdev->state = ZPCI_FS_DISABLED; > stl_p(&ressetpci->fh, pbdev->fh);
diff --git a/hw/s390x/s390-pci-inst.c b/hw/s390x/s390-pci-inst.c index 20a9bcc7afb..16f5a3e81b4 100644 --- a/hw/s390x/s390-pci-inst.c +++ b/hw/s390x/s390-pci-inst.c @@ -272,7 +272,7 @@ int clp_service_call(S390CPU *cpu, uint8_t r2, uintptr_t ra) stw_p(&ressetpci->hdr.rsp, CLP_RC_SETPCIFN_FHOP); goto out; } - device_legacy_reset(DEVICE(pbdev)); + device_cold_reset(DEVICE(pbdev)); pbdev->fh &= ~FH_MASK_ENABLE; pbdev->state = ZPCI_FS_DISABLED; stl_p(&ressetpci->fh, pbdev->fh);
The semantic difference between the deprecated device_legacy_reset() function and the newer device_cold_reset() function is that the new function resets both the device itself and any qbuses it owns, whereas the legacy function resets just the device itself and nothing else. In s390-pci-inst.c we use device_legacy_reset() to reset an S390PCIBusDevice. This device doesn't have any child qbuses, so the functions do the same thing and we can stop using the deprecated one. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- NB: tested only with 'make check' and 'make check-avocado', which probably don't exercise this codepath. hw/s390x/s390-pci-inst.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)