Thread (30 messages) 30 messages, 4 authors, 2023-07-06

Re: [PATCH 04/10] drm/tegra: Set fbdev flags

flat view

From: Thomas Zimmermann <tzimmermann@suse.de>
Date: 2023-07-05 09:20:27
Also in: dri-devel, linux-arm-kernel, linux-samsung-soc, linux-tegra

Hi Javier

Am 05.07.23 um 10:34 schrieb Javier Martinez Canillas:
Thomas Zimmermann [off-list ref] writes:
quoted
Set fbdev default flags FBNFO_DEFAULT and mark the framebuffer with
FBINFO_VIRTFB. The framebuffer range is in DMA-able memory and should
be accessed with the CPU's regular memory ops.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Thierry Reding <redacted>
Cc: Mikko Perttunen <mperttunen@nvidia.com>
---
  drivers/gpu/drm/tegra/fbdev.c | 3 +++
  1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/tegra/fbdev.c b/drivers/gpu/drm/tegra/fbdev.c
index 82577b7c88da..8074430c52f1 100644
--- a/drivers/gpu/drm/tegra/fbdev.c
+++ b/drivers/gpu/drm/tegra/fbdev.c
@@ -103,6 +103,8 @@ static int tegra_fbdev_probe(struct drm_fb_helper *helper,
  		return PTR_ERR(info);
  	}
  
+	info->flags = FBINFO_DEFAULT;
+
  	fb = tegra_fb_alloc(drm, &cmd, &bo, 1);
  	if (IS_ERR(fb)) {
  		err = PTR_ERR(fb);
@@ -132,6 +134,7 @@ static int tegra_fbdev_probe(struct drm_fb_helper *helper,
  		}
  	}
  
+	info->flags |= FBINFO_VIRTFB;
I see that all fbdev drivers just do: info->flags = FBINFO_FLAG_DEFAULT | FBINFO_VIRTFB

Guess you are doing in two assignments to be consistent with drm_fbdev_dma.c ?
I was just curious about the rationale for setting the flags in two steps.
The _DEFAULT flag is really just a zero. And the other flags describe different aspects of the framebuffer.  I think it makes sense to set the flags together with the respective state. For example, _VIRTFB is set next to ->screen_buffer, because they belong together.

_VIRTFB is currently only used in defio code at

https://elixir.bootlin.com/linux/latest/source/drivers/video/fbdev/core/fb_defio.c#L232

I think the fbdev I/O helpers should also test this flag after all drivers have been annotated correctly. For example, fb_io_read() would WARN_ONCE if the _VIRTFB flag has been set; and fb_sys_read() would warn if it hasn't been set.  For the read helpers, it also makes sense to WARN_ONCE if the _READS_FAST flag has not been set.

Best regards
Thomas
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help