diff mbox series

[05/59] drm/vboxvidoe: use managed pci functions

Message ID 20200415074034.175360-6-daniel.vetter@ffwll.ch (mailing list archive)
State New, archived
Headers show
Series devm_drm_dev_alloc, v2 | expand

Commit Message

Daniel Vetter April 15, 2020, 7:39 a.m. UTC
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(-)

Comments

Hans de Goede April 15, 2020, 3:03 p.m. UTC | #1
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);
>   }
>
Thomas Zimmermann April 15, 2020, 5:32 p.m. UTC | #2
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);
>  }
>
Daniel Vetter April 15, 2020, 5:44 p.m. UTC | #3
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);
> >   }
> > 
>
Hans de Goede April 20, 2020, 1:16 p.m. UTC | #4
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 mbox series

Patch

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);
 }