diff mbox series

drm/fb-helper: Add TODO for making drm_fb_helper_alloc_fbi fill apertures

Message ID 20200326151009.102377-1-hdegoede@redhat.com (mailing list archive)
State New, archived
Headers show
Series drm/fb-helper: Add TODO for making drm_fb_helper_alloc_fbi fill apertures | expand

Commit Message

Hans de Goede March 26, 2020, 3:10 p.m. UTC
Currently drivers using drm_fbdev_generic_setup() end up with a single
empty aperture in their fb_info struct.

Not having the proper info in the apertures list causes
register_framebuffer to not remove conflicting framebuffers,
which some drivers currently workaround by manually calling
drm_fb_helper_remove_conflicting_pci_framebuffers().

Add a TODO as a reminder that we need to fix this.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/gpu/drm/drm_fb_helper.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Daniel Vetter March 26, 2020, 5:55 p.m. UTC | #1
On Thu, Mar 26, 2020 at 4:10 PM Hans de Goede <hdegoede@redhat.com> wrote:
>
> Currently drivers using drm_fbdev_generic_setup() end up with a single
> empty aperture in their fb_info struct.
>
> Not having the proper info in the apertures list causes
> register_framebuffer to not remove conflicting framebuffers,
> which some drivers currently workaround by manually calling
> drm_fb_helper_remove_conflicting_pci_framebuffers().
>
> Add a TODO as a reminder that we need to fix this.
>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> ---
>  drivers/gpu/drm/drm_fb_helper.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index 4c7cbce7bae7..16b8dc38d022 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -526,6 +526,14 @@ struct fb_info *drm_fb_helper_alloc_fbi(struct drm_fb_helper *fb_helper)
>         if (ret)
>                 goto err_release;
>
> +       /*
> +        * TODO: We really should be smarter here and alloc an apperture
> +        * for each IORESOURCE_MEM resource helper->dev->dev has and also
> +        * init the ranges of the appertures based on the resources.
> +        * Note some drivers currently count on there being only 1 empty
> +        * aperture and fill this themselves, these will need to be dealt
> +        * with somehow when fixing this.
> +        */

Ah yes this is a bit more involved than first apperances suggest - we
might want to have a dedicated solution for the generic_setup helper
only, so we don't break all the other drivers using this function
directly.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

>         info->apertures = alloc_apertures(1);
>         if (!info->apertures) {
>                 ret = -ENOMEM;
> --
> 2.26.0.rc2
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Hans de Goede March 27, 2020, 10:22 a.m. UTC | #2
Hi,

On 3/26/20 6:55 PM, Daniel Vetter wrote:
> On Thu, Mar 26, 2020 at 4:10 PM Hans de Goede <hdegoede@redhat.com> wrote:
>>
>> Currently drivers using drm_fbdev_generic_setup() end up with a single
>> empty aperture in their fb_info struct.
>>
>> Not having the proper info in the apertures list causes
>> register_framebuffer to not remove conflicting framebuffers,
>> which some drivers currently workaround by manually calling
>> drm_fb_helper_remove_conflicting_pci_framebuffers().
>>
>> Add a TODO as a reminder that we need to fix this.
>>
>> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
>> ---
>>   drivers/gpu/drm/drm_fb_helper.c | 8 ++++++++
>>   1 file changed, 8 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
>> index 4c7cbce7bae7..16b8dc38d022 100644
>> --- a/drivers/gpu/drm/drm_fb_helper.c
>> +++ b/drivers/gpu/drm/drm_fb_helper.c
>> @@ -526,6 +526,14 @@ struct fb_info *drm_fb_helper_alloc_fbi(struct drm_fb_helper *fb_helper)
>>          if (ret)
>>                  goto err_release;
>>
>> +       /*
>> +        * TODO: We really should be smarter here and alloc an apperture
>> +        * for each IORESOURCE_MEM resource helper->dev->dev has and also
>> +        * init the ranges of the appertures based on the resources.
>> +        * Note some drivers currently count on there being only 1 empty
>> +        * aperture and fill this themselves, these will need to be dealt
>> +        * with somehow when fixing this.
>> +        */
> 
> Ah yes this is a bit more involved than first apperances suggest - we
> might want to have a dedicated solution for the generic_setup helper
> only, so we don't break all the other drivers using this function
> directly.
> 
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Thank you, pushed to drm-misc-next.

Any chance you can perhaps take (another) look at:
https://patchwork.freedesktop.org/patch/340140/

? We had an interesting discussion about that which
seems (to me) to end in agreement and you asking for
more documentation. I replied to that that the patch
already added some (but not much) documentation and
then the discussion ended. I would still like to get
this patch upstream, as I have a userspace patch
(for plymouth) pending which depends on it.

Regards,

Hans
diff mbox series

Patch

diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index 4c7cbce7bae7..16b8dc38d022 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -526,6 +526,14 @@  struct fb_info *drm_fb_helper_alloc_fbi(struct drm_fb_helper *fb_helper)
 	if (ret)
 		goto err_release;
 
+	/*
+	 * TODO: We really should be smarter here and alloc an apperture
+	 * for each IORESOURCE_MEM resource helper->dev->dev has and also
+	 * init the ranges of the appertures based on the resources.
+	 * Note some drivers currently count on there being only 1 empty
+	 * aperture and fill this themselves, these will need to be dealt
+	 * with somehow when fixing this.
+	 */
 	info->apertures = alloc_apertures(1);
 	if (!info->apertures) {
 		ret = -ENOMEM;