[Intel-gfx] [PATCH v2] drm/i915: Disregard drm_mode_config.fb_base

Srivatsa, Anusha anusha.srivatsa at intel.com
Tue Aug 13 23:41:15 UTC 2019



> -----Original Message-----
> From: Chris Wilson <chris at chris-wilson.co.uk>
> Sent: Tuesday, August 13, 2019 11:21 AM
> To: intel-gfx at lists.freedesktop.org
> Cc: Chris Wilson <chris at chris-wilson.co.uk>; Daniel Vetter
> <daniel.vetter at ffwll.ch>; Maarten Lankhorst
> <maarten.lankhorst at linux.intel.com>; Srivatsa, Anusha
> <anusha.srivatsa at intel.com>
> Subject: [PATCH v2] drm/i915: Disregard drm_mode_config.fb_base
> 
> The fb_base is only used for communicating the GTT BAR from one piece of the
> display code (kms setup) to another (fbdev). What is required in the fbdev is just
> the aperture address which should be derived from the bo we allocate for the
> framebuffer directly.
> 
> The same appears true for drm/; it is not used by the core or the uAPI, it is
> merely for conveniently passing a device address from bit of display
> management code to another.
> 
> v2: Note that since we only expose enough of a system map to cover our single
> framebuffer, the screen_base/size and the smem are one and the same.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Cc: Anusha Srivatsa <anusha.srivatsa at intel.com>

Reviewed-by: Anusha Srivatsa <anusha.srivatsa at intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 3 ---
>  drivers/gpu/drm/i915/display/intel_fbdev.c   | 9 +++++----
>  2 files changed, 5 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index c9cf4bc7ee10..776d13101156 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -16122,7 +16122,6 @@ static int intel_initial_commit(struct drm_device
> *dev)  int intel_modeset_init(struct drm_device *dev)  {
>  	struct drm_i915_private *dev_priv = to_i915(dev);
> -	struct i915_ggtt *ggtt = &dev_priv->ggtt;
>  	enum pipe pipe;
>  	struct intel_crtc *crtc;
>  	int ret;
> @@ -16202,8 +16201,6 @@ int intel_modeset_init(struct drm_device *dev)
>  		dev->mode_config.cursor_height = 256;
>  	}
> 
> -	dev->mode_config.fb_base = ggtt->gmadr.start;
> -
>  	DRM_DEBUG_KMS("%d display pipe%s available.\n",
>  		      INTEL_INFO(dev_priv)->num_pipes,
>  		      INTEL_INFO(dev_priv)->num_pipes > 1 ? "s" : ""); diff --git
> a/drivers/gpu/drm/i915/display/intel_fbdev.c
> b/drivers/gpu/drm/i915/display/intel_fbdev.c
> index 5e7cc5a6ac7f..d59eee5c5d9c 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
> @@ -232,12 +232,9 @@ static int intelfb_create(struct drm_fb_helper *helper,
>  	info->fbops = &intelfb_ops;
> 
>  	/* setup aperture base/size for vesafb takeover */
> -	info->apertures->ranges[0].base = dev->mode_config.fb_base;
> +	info->apertures->ranges[0].base = ggtt->gmadr.start;
>  	info->apertures->ranges[0].size = ggtt->mappable_end;
> 
> -	info->fix.smem_start = dev->mode_config.fb_base +
> i915_ggtt_offset(vma);
> -	info->fix.smem_len = vma->node.size;
> -
>  	vaddr = i915_vma_pin_iomap(vma);
>  	if (IS_ERR(vaddr)) {
>  		DRM_ERROR("Failed to remap framebuffer into virtual
> memory\n"); @@ -247,6 +244,10 @@ static int intelfb_create(struct
> drm_fb_helper *helper,
>  	info->screen_base = vaddr;
>  	info->screen_size = vma->node.size;
> 
> +	/* Our framebuffer is the entirety of fbdev's system memory */
> +	info->fix.smem_start = (unsigned long)info->screen_base;
> +	info->fix.smem_len = info->screen_size;
> +
>  	drm_fb_helper_fill_info(info, &ifbdev->helper, sizes);
> 
>  	/* If the object is shmemfs backed, it will have given us zeroed pages.
> --
> 2.23.0.rc1



More information about the Intel-gfx mailing list