[PATCH v2 2/3] drm/ast: Map fbdev framebuffer while it's being displayed

Gerd Hoffmann kraxel at redhat.com
Thu Sep 5 06:25:36 UTC 2019


On Wed, Sep 04, 2019 at 01:56:43PM +0200, Thomas Zimmermann wrote:
> The generic fbdev emulation will map and unmap the framebuffer's memory
> if required. As consoles are most often updated while being on screen,
> we map the fbdev buffer while it's being displayed. This avoids frequent
> map/unmap operations in the fbdev code. The original fbdev code in ast
> used the same trick to improve performance.
> 
> v2:
> 	* fix typo in comment
> 
> Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
> Cc: Noralf Trønnes <noralf at tronnes.org>
> Cc: Dave Airlie <airlied at redhat.com>
> Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> Cc: Thomas Gleixner <tglx at linutronix.de>
> Cc: Sam Ravnborg <sam at ravnborg.org>
> Cc: Gerd Hoffmann <kraxel at redhat.com>
> Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko at epam.com>
> Cc: CK Hu <ck.hu at mediatek.com>
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Cc: Alex Deucher <alexander.deucher at amd.com>
> Cc: "Christian König" <christian.koenig at amd.com>
> Cc: YueHaibing <yuehaibing at huawei.com>
> Cc: Sam Bobroff <sbobroff at linux.ibm.com>
> Cc: Huang Rui <ray.huang at amd.com>
> Cc: "Y.C. Chen" <yc_chen at aspeedtech.com>
> Cc: Rong Chen <rong.a.chen at intel.com>
> Cc: Feng Tang <feng.tang at intel.com>
> Cc: Huang Ying <ying.huang at intel.com>
> Cc: Davidlohr Bueso <dave at stgolabs.net>
> ---
>  drivers/gpu/drm/ast/ast_mode.c | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
> 
> diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
> index d349c721501c..c10fff652228 100644
> --- a/drivers/gpu/drm/ast/ast_mode.c
> +++ b/drivers/gpu/drm/ast/ast_mode.c
> @@ -529,13 +529,20 @@ static int ast_crtc_do_set_base(struct drm_crtc *crtc,
>  				struct drm_framebuffer *fb,
>  				int x, int y, int atomic)
>  {
> +	struct drm_fb_helper *fb_helper = crtc->dev->fb_helper;

struct drm_framebuffer *fbcon = crtc->dev->fb_helper->buffer->fb ?

makes clear what is going on without excessive commenting ;)

>  	struct drm_gem_vram_object *gbo;
>  	int ret;
>  	s64 gpu_addr;
> +	void *base;
>  
>  	if (!atomic && fb) {
>  		gbo = drm_gem_vram_of_gem(fb->obj[0]);
>  		drm_gem_vram_unpin(gbo);
> +
> +		// Unmap fbdev FB if it's not being displayed
> +		// any longer.

I'd drop the comment.  It says *what* the comment is doing.  You should
be able to figure by just reading the code.  Comments should explain
*why* the code does something ...

> +		if (fb == fb_helper->buffer->fb)
> +			drm_gem_vram_kunmap(gbo);
>  	}
>  
>  	gbo = drm_gem_vram_of_gem(crtc->primary->fb->obj[0]);
> @@ -552,6 +559,14 @@ static int ast_crtc_do_set_base(struct drm_crtc *crtc,
>  	ast_set_offset_reg(crtc);
>  	ast_set_start_address_crt1(crtc, (u32)gpu_addr);
>  
> +	// Map fbdev FB while it's being displayed. This avoids frequent
> +	// mapping and unmapping within the fbdev code.

... like this one (avoid frequent map/unmap).

Comments should use /* */ style, especially multi line comments.
See also the comment section in
	Documentation/process/coding-style.rst

cheers,
  Gerd



More information about the dri-devel mailing list