Message ID | 20200415074034.175360-6-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | devm_drm_dev_alloc, v2 | expand |
Hi, On 4/15/20 9:39 AM, Daniel Vetter wrote: > Allows us to drop the cleanup code on the floor. > > Sam noticed in his review: >> With this change we avoid calling pci_disable_device() >> twise in case vbox_mm_init() fails. >> Once in vbox_hw_fini() and once in the error path. > > v2: Include Sam's review remarks > > Acked-by: Sam Ravnborg <sam@ravnborg.org> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > Cc: Hans de Goede <hdegoede@redhat.com> > --- > drivers/gpu/drm/vboxvideo/vbox_drv.c | 6 ++---- > drivers/gpu/drm/vboxvideo/vbox_main.c | 7 +------ > 2 files changed, 3 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c > index cfa4639c5142..cf2e3e6a2388 100644 > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c > @@ -55,13 +55,13 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > pci_set_drvdata(pdev, vbox); > mutex_init(&vbox->hw_mutex); > > - ret = pci_enable_device(pdev); > + ret = pcim_enable_device(pdev); > if (ret) > return ret; > > ret = vbox_hw_init(vbox); > if (ret) > - goto err_pci_disable; > + return ret; > > ret = vbox_mm_init(vbox); > if (ret) > @@ -91,8 +91,6 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > vbox_mm_fini(vbox); > err_hw_fini: > vbox_hw_fini(vbox); > -err_pci_disable: > - pci_disable_device(pdev); > return ret; > } > > diff --git a/drivers/gpu/drm/vboxvideo/vbox_main.c b/drivers/gpu/drm/vboxvideo/vbox_main.c > index 9dcab115a261..1336ab9795fc 100644 > --- a/drivers/gpu/drm/vboxvideo/vbox_main.c > +++ b/drivers/gpu/drm/vboxvideo/vbox_main.c > @@ -71,8 +71,6 @@ static void vbox_accel_fini(struct vbox_private *vbox) > > for (i = 0; i < vbox->num_crtcs; ++i) > vbva_disable(&vbox->vbva_info[i], vbox->guest_pool, i); > - > - pci_iounmap(vbox->ddev.pdev, vbox->vbva_buffers); > } > > /* Do we support the 4.3 plus mode hint reporting interface? */ This seems to be missing the conversion of the iomap_range call to the devm equivalent ? : drivers/gpu/drm/vboxvideo/vbox_main.c 44: vbox->vbva_buffers = pci_iomap_range(vbox->ddev.pdev, 0, ... Regards, Hans > @@ -125,7 +123,7 @@ int vbox_hw_init(struct vbox_private *vbox) > /* Create guest-heap mem-pool use 2^4 = 16 byte chunks */ > vbox->guest_pool = gen_pool_create(4, -1); > if (!vbox->guest_pool) > - goto err_unmap_guest_heap; > + return -ENOMEM; > > ret = gen_pool_add_virt(vbox->guest_pool, > (unsigned long)vbox->guest_heap, > @@ -168,8 +166,6 @@ int vbox_hw_init(struct vbox_private *vbox) > > err_destroy_guest_pool: > gen_pool_destroy(vbox->guest_pool); > -err_unmap_guest_heap: > - pci_iounmap(vbox->ddev.pdev, vbox->guest_heap); > return ret; > } > > @@ -177,5 +173,4 @@ void vbox_hw_fini(struct vbox_private *vbox) > { > vbox_accel_fini(vbox); > gen_pool_destroy(vbox->guest_pool); > - pci_iounmap(vbox->ddev.pdev, vbox->guest_heap); > } >
The commit's headline says 'vboxvidoe'. Am 15.04.20 um 09:39 schrieb Daniel Vetter: > Allows us to drop the cleanup code on the floor. > > Sam noticed in his review: >> With this change we avoid calling pci_disable_device() >> twise in case vbox_mm_init() fails. >> Once in vbox_hw_fini() and once in the error path. > > v2: Include Sam's review remarks > > Acked-by: Sam Ravnborg <sam@ravnborg.org> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > Cc: Hans de Goede <hdegoede@redhat.com> > --- > drivers/gpu/drm/vboxvideo/vbox_drv.c | 6 ++---- > drivers/gpu/drm/vboxvideo/vbox_main.c | 7 +------ > 2 files changed, 3 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c > index cfa4639c5142..cf2e3e6a2388 100644 > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c > @@ -55,13 +55,13 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > pci_set_drvdata(pdev, vbox); > mutex_init(&vbox->hw_mutex); > > - ret = pci_enable_device(pdev); > + ret = pcim_enable_device(pdev); > if (ret) > return ret; > > ret = vbox_hw_init(vbox); > if (ret) > - goto err_pci_disable; > + return ret; > > ret = vbox_mm_init(vbox); > if (ret) > @@ -91,8 +91,6 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > vbox_mm_fini(vbox); > err_hw_fini: > vbox_hw_fini(vbox); > -err_pci_disable: > - pci_disable_device(pdev); > return ret; > } > > diff --git a/drivers/gpu/drm/vboxvideo/vbox_main.c b/drivers/gpu/drm/vboxvideo/vbox_main.c > index 9dcab115a261..1336ab9795fc 100644 > --- a/drivers/gpu/drm/vboxvideo/vbox_main.c > +++ b/drivers/gpu/drm/vboxvideo/vbox_main.c > @@ -71,8 +71,6 @@ static void vbox_accel_fini(struct vbox_private *vbox) > > for (i = 0; i < vbox->num_crtcs; ++i) > vbva_disable(&vbox->vbva_info[i], vbox->guest_pool, i); > - > - pci_iounmap(vbox->ddev.pdev, vbox->vbva_buffers); > } > > /* Do we support the 4.3 plus mode hint reporting interface? */ > @@ -125,7 +123,7 @@ int vbox_hw_init(struct vbox_private *vbox) > /* Create guest-heap mem-pool use 2^4 = 16 byte chunks */ > vbox->guest_pool = gen_pool_create(4, -1); > if (!vbox->guest_pool) > - goto err_unmap_guest_heap; > + return -ENOMEM; > > ret = gen_pool_add_virt(vbox->guest_pool, > (unsigned long)vbox->guest_heap, > @@ -168,8 +166,6 @@ int vbox_hw_init(struct vbox_private *vbox) > > err_destroy_guest_pool: > gen_pool_destroy(vbox->guest_pool); > -err_unmap_guest_heap: > - pci_iounmap(vbox->ddev.pdev, vbox->guest_heap); > return ret; > } > > @@ -177,5 +173,4 @@ void vbox_hw_fini(struct vbox_private *vbox) > { > vbox_accel_fini(vbox); > gen_pool_destroy(vbox->guest_pool); > - pci_iounmap(vbox->ddev.pdev, vbox->guest_heap); > } >
On Wed, Apr 15, 2020 at 05:03:55PM +0200, Hans de Goede wrote: > Hi, > > On 4/15/20 9:39 AM, Daniel Vetter wrote: > > Allows us to drop the cleanup code on the floor. > > > > Sam noticed in his review: > > > With this change we avoid calling pci_disable_device() > > > twise in case vbox_mm_init() fails. > > > Once in vbox_hw_fini() and once in the error path. > > > > v2: Include Sam's review remarks > > > > Acked-by: Sam Ravnborg <sam@ravnborg.org> > > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > > Cc: Hans de Goede <hdegoede@redhat.com> > > --- > > drivers/gpu/drm/vboxvideo/vbox_drv.c | 6 ++---- > > drivers/gpu/drm/vboxvideo/vbox_main.c | 7 +------ > > 2 files changed, 3 insertions(+), 10 deletions(-) > > > > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c > > index cfa4639c5142..cf2e3e6a2388 100644 > > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c > > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c > > @@ -55,13 +55,13 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > > pci_set_drvdata(pdev, vbox); > > mutex_init(&vbox->hw_mutex); > > - ret = pci_enable_device(pdev); > > + ret = pcim_enable_device(pdev); > > if (ret) > > return ret; > > ret = vbox_hw_init(vbox); > > if (ret) > > - goto err_pci_disable; > > + return ret; > > ret = vbox_mm_init(vbox); > > if (ret) > > @@ -91,8 +91,6 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > > vbox_mm_fini(vbox); > > err_hw_fini: > > vbox_hw_fini(vbox); > > -err_pci_disable: > > - pci_disable_device(pdev); > > return ret; > > } > > diff --git a/drivers/gpu/drm/vboxvideo/vbox_main.c b/drivers/gpu/drm/vboxvideo/vbox_main.c > > index 9dcab115a261..1336ab9795fc 100644 > > --- a/drivers/gpu/drm/vboxvideo/vbox_main.c > > +++ b/drivers/gpu/drm/vboxvideo/vbox_main.c > > @@ -71,8 +71,6 @@ static void vbox_accel_fini(struct vbox_private *vbox) > > for (i = 0; i < vbox->num_crtcs; ++i) > > vbva_disable(&vbox->vbva_info[i], vbox->guest_pool, i); > > - > > - pci_iounmap(vbox->ddev.pdev, vbox->vbva_buffers); > > } > > /* Do we support the 4.3 plus mode hint reporting interface? */ > > This seems to be missing the conversion of the iomap_range call to > the devm equivalent ? : > > drivers/gpu/drm/vboxvideo/vbox_main.c > 44: vbox->vbva_buffers = pci_iomap_range(vbox->ddev.pdev, 0, ... pcim_enable_device is pure magic, it converts _all_ pci_ calls on that device to the managed version. There's no other manged pci_ functions (ok 1-2 more, but they're rather special). -Daniel > > Regards, > > Hans > > > > > > > @@ -125,7 +123,7 @@ int vbox_hw_init(struct vbox_private *vbox) > > /* Create guest-heap mem-pool use 2^4 = 16 byte chunks */ > > vbox->guest_pool = gen_pool_create(4, -1); > > if (!vbox->guest_pool) > > - goto err_unmap_guest_heap; > > + return -ENOMEM; > > ret = gen_pool_add_virt(vbox->guest_pool, > > (unsigned long)vbox->guest_heap, > > @@ -168,8 +166,6 @@ int vbox_hw_init(struct vbox_private *vbox) > > err_destroy_guest_pool: > > gen_pool_destroy(vbox->guest_pool); > > -err_unmap_guest_heap: > > - pci_iounmap(vbox->ddev.pdev, vbox->guest_heap); > > return ret; > > } > > @@ -177,5 +173,4 @@ void vbox_hw_fini(struct vbox_private *vbox) > > { > > vbox_accel_fini(vbox); > > gen_pool_destroy(vbox->guest_pool); > > - pci_iounmap(vbox->ddev.pdev, vbox->guest_heap); > > } > > >
Hi, On 4/15/20 7:44 PM, Daniel Vetter wrote: > On Wed, Apr 15, 2020 at 05:03:55PM +0200, Hans de Goede wrote: >> Hi, >> >> On 4/15/20 9:39 AM, Daniel Vetter wrote: >>> Allows us to drop the cleanup code on the floor. >>> >>> Sam noticed in his review: >>>> With this change we avoid calling pci_disable_device() >>>> twise in case vbox_mm_init() fails. >>>> Once in vbox_hw_fini() and once in the error path. >>> >>> v2: Include Sam's review remarks >>> >>> Acked-by: Sam Ravnborg <sam@ravnborg.org> >>> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> >>> Cc: Hans de Goede <hdegoede@redhat.com> >>> --- >>> drivers/gpu/drm/vboxvideo/vbox_drv.c | 6 ++---- >>> drivers/gpu/drm/vboxvideo/vbox_main.c | 7 +------ >>> 2 files changed, 3 insertions(+), 10 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c >>> index cfa4639c5142..cf2e3e6a2388 100644 >>> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c >>> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c >>> @@ -55,13 +55,13 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) >>> pci_set_drvdata(pdev, vbox); >>> mutex_init(&vbox->hw_mutex); >>> - ret = pci_enable_device(pdev); >>> + ret = pcim_enable_device(pdev); >>> if (ret) >>> return ret; >>> ret = vbox_hw_init(vbox); >>> if (ret) >>> - goto err_pci_disable; >>> + return ret; >>> ret = vbox_mm_init(vbox); >>> if (ret) >>> @@ -91,8 +91,6 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) >>> vbox_mm_fini(vbox); >>> err_hw_fini: >>> vbox_hw_fini(vbox); >>> -err_pci_disable: >>> - pci_disable_device(pdev); >>> return ret; >>> } >>> diff --git a/drivers/gpu/drm/vboxvideo/vbox_main.c b/drivers/gpu/drm/vboxvideo/vbox_main.c >>> index 9dcab115a261..1336ab9795fc 100644 >>> --- a/drivers/gpu/drm/vboxvideo/vbox_main.c >>> +++ b/drivers/gpu/drm/vboxvideo/vbox_main.c >>> @@ -71,8 +71,6 @@ static void vbox_accel_fini(struct vbox_private *vbox) >>> for (i = 0; i < vbox->num_crtcs; ++i) >>> vbva_disable(&vbox->vbva_info[i], vbox->guest_pool, i); >>> - >>> - pci_iounmap(vbox->ddev.pdev, vbox->vbva_buffers); >>> } >>> /* Do we support the 4.3 plus mode hint reporting interface? */ >> >> This seems to be missing the conversion of the iomap_range call to >> the devm equivalent ? : >> >> drivers/gpu/drm/vboxvideo/vbox_main.c >> 44: vbox->vbva_buffers = pci_iomap_range(vbox->ddev.pdev, 0, ... > > pcim_enable_device is pure magic, it converts _all_ pci_ calls on that > device to the managed version. There's no other manged pci_ functions (ok > 1-2 more, but they're rather special). Ah I see, magic indeed. Well with that explained, this is: Reviewed-by: Hans de Goede <hdegoede@redhat.com> Regards, Hans >>> @@ -125,7 +123,7 @@ int vbox_hw_init(struct vbox_private *vbox) >>> /* Create guest-heap mem-pool use 2^4 = 16 byte chunks */ >>> vbox->guest_pool = gen_pool_create(4, -1); >>> if (!vbox->guest_pool) >>> - goto err_unmap_guest_heap; >>> + return -ENOMEM; >>> ret = gen_pool_add_virt(vbox->guest_pool, >>> (unsigned long)vbox->guest_heap, >>> @@ -168,8 +166,6 @@ int vbox_hw_init(struct vbox_private *vbox) >>> err_destroy_guest_pool: >>> gen_pool_destroy(vbox->guest_pool); >>> -err_unmap_guest_heap: >>> - pci_iounmap(vbox->ddev.pdev, vbox->guest_heap); >>> return ret; >>> } >>> @@ -177,5 +173,4 @@ void vbox_hw_fini(struct vbox_private *vbox) >>> { >>> vbox_accel_fini(vbox); >>> gen_pool_destroy(vbox->guest_pool); >>> - pci_iounmap(vbox->ddev.pdev, vbox->guest_heap); >>> } >>> >> >
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c index cfa4639c5142..cf2e3e6a2388 100644 --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c @@ -55,13 +55,13 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) pci_set_drvdata(pdev, vbox); mutex_init(&vbox->hw_mutex); - ret = pci_enable_device(pdev); + ret = pcim_enable_device(pdev); if (ret) return ret; ret = vbox_hw_init(vbox); if (ret) - goto err_pci_disable; + return ret; ret = vbox_mm_init(vbox); if (ret) @@ -91,8 +91,6 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) vbox_mm_fini(vbox); err_hw_fini: vbox_hw_fini(vbox); -err_pci_disable: - pci_disable_device(pdev); return ret; } diff --git a/drivers/gpu/drm/vboxvideo/vbox_main.c b/drivers/gpu/drm/vboxvideo/vbox_main.c index 9dcab115a261..1336ab9795fc 100644 --- a/drivers/gpu/drm/vboxvideo/vbox_main.c +++ b/drivers/gpu/drm/vboxvideo/vbox_main.c @@ -71,8 +71,6 @@ static void vbox_accel_fini(struct vbox_private *vbox) for (i = 0; i < vbox->num_crtcs; ++i) vbva_disable(&vbox->vbva_info[i], vbox->guest_pool, i); - - pci_iounmap(vbox->ddev.pdev, vbox->vbva_buffers); } /* Do we support the 4.3 plus mode hint reporting interface? */ @@ -125,7 +123,7 @@ int vbox_hw_init(struct vbox_private *vbox) /* Create guest-heap mem-pool use 2^4 = 16 byte chunks */ vbox->guest_pool = gen_pool_create(4, -1); if (!vbox->guest_pool) - goto err_unmap_guest_heap; + return -ENOMEM; ret = gen_pool_add_virt(vbox->guest_pool, (unsigned long)vbox->guest_heap, @@ -168,8 +166,6 @@ int vbox_hw_init(struct vbox_private *vbox) err_destroy_guest_pool: gen_pool_destroy(vbox->guest_pool); -err_unmap_guest_heap: - pci_iounmap(vbox->ddev.pdev, vbox->guest_heap); return ret; } @@ -177,5 +173,4 @@ void vbox_hw_fini(struct vbox_private *vbox) { vbox_accel_fini(vbox); gen_pool_destroy(vbox->guest_pool); - pci_iounmap(vbox->ddev.pdev, vbox->guest_heap); }