Message ID | 20240306133441.2351700-22-clg@redhat.com |
---|---|
State | New |
Headers | show |
Series | migration: Improve error reporting | expand |
On 6/3/24 14:34, Cédric Le Goater wrote: > It will simplify the changes coming after. > > Signed-off-by: Cédric Le Goater <clg@redhat.com> > --- > hw/vfio/common.c | 22 +++++++++++++--------- > 1 file changed, 13 insertions(+), 9 deletions(-) > > diff --git a/hw/vfio/common.c b/hw/vfio/common.c > index 5b2e6a179cdd5f8ca5be84b7097661e96b391456..6820d2efe4923d5043da7eb8deecb6ff20e1fd16 100644 > --- a/hw/vfio/common.c > +++ b/hw/vfio/common.c > @@ -1241,16 +1241,20 @@ static void vfio_iommu_map_dirty_notify(IOMMUNotifier *n, IOMMUTLBEntry *iotlb) > } > > rcu_read_lock(); > - if (vfio_get_xlat_addr(iotlb, NULL, &translated_addr, NULL)) { > - ret = vfio_get_dirty_bitmap(bcontainer, iova, iotlb->addr_mask + 1, > - translated_addr); > - if (ret) { > - error_report("vfio_iommu_map_dirty_notify(%p, 0x%"HWADDR_PRIx", " > - "0x%"HWADDR_PRIx") = %d (%s)", > - bcontainer, iova, iotlb->addr_mask + 1, ret, > - strerror(-ret)); > - } > + if (!vfio_get_xlat_addr(iotlb, NULL, &translated_addr, NULL)) { > + goto out_lock; > } > + > + ret = vfio_get_dirty_bitmap(bcontainer, iova, iotlb->addr_mask + 1, > + translated_addr); > + if (ret) { > + error_report("vfio_iommu_map_dirty_notify(%p, 0x%"HWADDR_PRIx", " > + "0x%"HWADDR_PRIx") = %d (%s)", > + bcontainer, iova, iotlb->addr_mask + 1, ret, > + strerror(-ret)); > + } > + > +out_lock: Alternatively use WITH_RCU_READ_LOCK_GUARD() to avoid label. > rcu_read_unlock(); > > out:
On 3/6/24 21:51, Philippe Mathieu-Daudé wrote: > On 6/3/24 14:34, Cédric Le Goater wrote: >> It will simplify the changes coming after. >> >> Signed-off-by: Cédric Le Goater <clg@redhat.com> >> --- >> hw/vfio/common.c | 22 +++++++++++++--------- >> 1 file changed, 13 insertions(+), 9 deletions(-) >> >> diff --git a/hw/vfio/common.c b/hw/vfio/common.c >> index 5b2e6a179cdd5f8ca5be84b7097661e96b391456..6820d2efe4923d5043da7eb8deecb6ff20e1fd16 100644 >> --- a/hw/vfio/common.c >> +++ b/hw/vfio/common.c >> @@ -1241,16 +1241,20 @@ static void vfio_iommu_map_dirty_notify(IOMMUNotifier *n, IOMMUTLBEntry *iotlb) >> } >> rcu_read_lock(); >> - if (vfio_get_xlat_addr(iotlb, NULL, &translated_addr, NULL)) { >> - ret = vfio_get_dirty_bitmap(bcontainer, iova, iotlb->addr_mask + 1, >> - translated_addr); >> - if (ret) { >> - error_report("vfio_iommu_map_dirty_notify(%p, 0x%"HWADDR_PRIx", " >> - "0x%"HWADDR_PRIx") = %d (%s)", >> - bcontainer, iova, iotlb->addr_mask + 1, ret, >> - strerror(-ret)); >> - } >> + if (!vfio_get_xlat_addr(iotlb, NULL, &translated_addr, NULL)) { >> + goto out_lock; >> } >> + >> + ret = vfio_get_dirty_bitmap(bcontainer, iova, iotlb->addr_mask + 1, >> + translated_addr); >> + if (ret) { >> + error_report("vfio_iommu_map_dirty_notify(%p, 0x%"HWADDR_PRIx", " >> + "0x%"HWADDR_PRIx") = %d (%s)", >> + bcontainer, iova, iotlb->addr_mask + 1, ret, >> + strerror(-ret)); >> + } >> + >> +out_lock: > > Alternatively use WITH_RCU_READ_LOCK_GUARD() to avoid label. Sure. I remember your patch. I will resend with your suggestion when the first part of this series is addressed. Thanks, C.
diff --git a/hw/vfio/common.c b/hw/vfio/common.c index 5b2e6a179cdd5f8ca5be84b7097661e96b391456..6820d2efe4923d5043da7eb8deecb6ff20e1fd16 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -1241,16 +1241,20 @@ static void vfio_iommu_map_dirty_notify(IOMMUNotifier *n, IOMMUTLBEntry *iotlb) } rcu_read_lock(); - if (vfio_get_xlat_addr(iotlb, NULL, &translated_addr, NULL)) { - ret = vfio_get_dirty_bitmap(bcontainer, iova, iotlb->addr_mask + 1, - translated_addr); - if (ret) { - error_report("vfio_iommu_map_dirty_notify(%p, 0x%"HWADDR_PRIx", " - "0x%"HWADDR_PRIx") = %d (%s)", - bcontainer, iova, iotlb->addr_mask + 1, ret, - strerror(-ret)); - } + if (!vfio_get_xlat_addr(iotlb, NULL, &translated_addr, NULL)) { + goto out_lock; } + + ret = vfio_get_dirty_bitmap(bcontainer, iova, iotlb->addr_mask + 1, + translated_addr); + if (ret) { + error_report("vfio_iommu_map_dirty_notify(%p, 0x%"HWADDR_PRIx", " + "0x%"HWADDR_PRIx") = %d (%s)", + bcontainer, iova, iotlb->addr_mask + 1, ret, + strerror(-ret)); + } + +out_lock: rcu_read_unlock(); out:
It will simplify the changes coming after. Signed-off-by: Cédric Le Goater <clg@redhat.com> --- hw/vfio/common.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-)