[Intel-xe] [3/9] drm/i915/display: Revert all before remaining changes to make xe compile

Hogander, Jouni jouni.hogander at intel.com
Fri Nov 10 11:41:50 UTC 2023


On Thu, 2023-11-09 at 16:07 +0100, Maarten Lankhorst wrote:
> From: Maarten Lankhorst <dev at lankhorst.se>
> 
>     drm/xe/display: Allow scanout of bos that can be migrated to lmem
>     drm/i915/display: Use intel_bo_to_drm_bo instead of obj->base
> 
> Can probably be slightly ignored by squashing with next patch, at
> least
> for intel_bo_to_drm_bo part.

I don't understand what this patch is about. I think you should improve
commit message. Commit message is mentioning revert but it is not clear
what are the commits that are reverted? 

BR,

Jouni Högander

> 
> Signed-off-by: Maarten Lankhorst <dev at lankhorst.se>
> ---
>  drivers/gpu/drm/i915/display/intel_fb.c    |  9 ++--
>  drivers/gpu/drm/i915/display/intel_fbdev.c | 48 ++++++++------------
> --
>  2 files changed, 22 insertions(+), 35 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_fb.c
> b/drivers/gpu/drm/i915/display/intel_fb.c
> index 1ce61245728a7..bf275b2692b8f 100644
> --- a/drivers/gpu/drm/i915/display/intel_fb.c
> +++ b/drivers/gpu/drm/i915/display/intel_fb.c
> @@ -1964,10 +1964,10 @@ static int
> intel_user_framebuffer_dirty(struct drm_framebuffer *fb,
>         if (!atomic_read(&front->bits))
>                 return 0;
>  
> -       if (dma_resv_test_signaled(intel_bo_to_drm_bo(obj)->resv,
> dma_resv_usage_rw(false)))
> +       if (dma_resv_test_signaled(obj->base.resv,
> dma_resv_usage_rw(false)))
>                 goto flush;
>  
> -       ret = dma_resv_get_singleton(intel_bo_to_drm_bo(obj)->resv,
> dma_resv_usage_rw(false),
> +       ret = dma_resv_get_singleton(obj->base.resv,
> dma_resv_usage_rw(false),
>                                      &fence);
>         if (ret || !fence)
>                 goto flush;
> @@ -2227,9 +2227,8 @@ intel_user_framebuffer_create(struct drm_device
> *dev,
>                 return ERR_PTR(-ENOENT);
>  
>         obj = gem_to_xe_bo(gem);
> -       /* Require vram placement or dma-buf import */
> -       if (IS_DGFX(i915) &&
> -           !xe_bo_can_migrate(gem_to_xe_bo(gem), XE_PL_VRAM0) &&
> +       /* Require vram exclusive objects, but allow dma-buf imports
> */
> +       if (IS_DGFX(i915) && obj->flags & XE_BO_CREATE_SYSTEM_BIT &&
>             obj->ttm.type != ttm_bo_type_sg) {
>                 drm_gem_object_put(gem);
>                 return ERR_PTR(-EREMOTE);
> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c
> b/drivers/gpu/drm/i915/display/intel_fbdev.c
> index b7976706bc681..28b9aa9d52c26 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
> @@ -48,7 +48,6 @@
>  #include "gem/i915_gem_mman.h"
>  #else
>  #include "xe_gt.h"
> -#include "xe_ttm_stolen_mgr.h"
>  #endif
>  
>  #include "i915_drv.h"
> @@ -193,8 +192,8 @@ static int intelfb_alloc(struct drm_fb_helper
> *helper,
>  
>         size = mode_cmd.pitches[0] * mode_cmd.height;
>         size = PAGE_ALIGN(size);
> -       obj = ERR_PTR(-ENODEV);
>  #ifdef I915
> +       obj = ERR_PTR(-ENODEV);
>         if (HAS_LMEM(dev_priv)) {
>                 obj = i915_gem_object_create_lmem(dev_priv, size,
>                                                  
> I915_BO_ALLOC_CONTIGUOUS |
> @@ -213,23 +212,11 @@ static int intelfb_alloc(struct drm_fb_helper
> *helper,
>                         obj = i915_gem_object_create_shmem(dev_priv,
> size);
>         }
>  #else
> -       if (!IS_DGFX(dev_priv)) {
> -               obj = xe_bo_create_pin_map(dev_priv,
> xe_device_get_root_tile(dev_priv),
> -                                          NULL, size,
> -                                          ttm_bo_type_kernel,
> XE_BO_SCANOUT_BIT |
> -                                          XE_BO_CREATE_STOLEN_BIT |
> -                                          XE_BO_CREATE_PINNED_BIT);
> -               if (!IS_ERR(obj))
> -                       drm_info(&dev_priv->drm, "Allocated fbdev
> into stolen\n");
> -               else
> -                       drm_info(&dev_priv->drm, "Allocated fbdev
> into stolen failed: %li\n", PTR_ERR(obj));
> -       }
> -       if (IS_ERR(obj)) {
> -               obj = xe_bo_create_pin_map(dev_priv,
> xe_device_get_root_tile(dev_priv), NULL, size,
> -                                         ttm_bo_type_kernel,
> XE_BO_SCANOUT_BIT |
> -                                        
> XE_BO_CREATE_VRAM_IF_DGFX(xe_device_get_root_tile(dev_priv)) |
> -                                         XE_BO_CREATE_PINNED_BIT);
> -       }
> +       /* XXX: Care about stolen? */
> +       obj = xe_bo_create_pin_map(dev_priv, to_gt(dev_priv), NULL,
> size,
> +                                  ttm_bo_type_kernel,
> +                                 
> XE_BO_CREATE_VRAM_IF_DGFX(to_gt(dev_priv)) |
> +                                  XE_BO_CREATE_PINNED_BIT |
> XE_BO_SCANOUT_BIT);
>  #endif
>  
>         if (IS_ERR(obj)) {
> @@ -365,23 +352,24 @@ static int intelfb_create(struct drm_fb_helper
> *helper,
>         }
>  
>  #else
> -       if (!(obj->flags & XE_BO_CREATE_SYSTEM_BIT)) {
> -               if (obj->flags & XE_BO_CREATE_STOLEN_BIT)
> -                       info->fix.smem_start =
> xe_ttm_stolen_io_offset(obj, 0);
> -               else
> -                       info->fix.smem_start =
> -                               pci_resource_start(pdev, 2) +
> -                               xe_bo_addr(obj, 0, XE_PAGE_SIZE);
> +       /* XXX: Could be pure fiction.. */
> +       if (obj->flags & XE_BO_CREATE_VRAM0_BIT) {
> +               struct xe_gt *gt = to_gt(dev_priv);
> +               bool lmem;
>  
> +               info->fix.smem_start =
> +                       (unsigned long)(gt->mem.vram.io_start +
> xe_bo_addr(obj, 0, 4096, &lmem));
>                 info->fix.smem_len = obj->ttm.base.size;
> +
>         } else {
> -               /* XXX: Pure fiction, as the BO may not be physically
> accessible.. */
> -               info->fix.smem_start = 0;
> +               struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
> +
> +               info->fix.smem_start = pci_resource_start(pdev, 2) +
> xe_bo_ggtt_addr(obj);
>                 info->fix.smem_len = obj->ttm.base.size;
>         }
>  
> -       XE_WARN_ON(iosys_map_is_null(&obj->vmap));
> -       vaddr = obj->vmap.vaddr_iomem;
> +       /* TODO: ttm_bo_kmap? */
> +       vaddr = obj->vmap.vaddr;
>  #endif
>         if (IS_ERR(vaddr)) {
>                 drm_err(&dev_priv->drm,



More information about the Intel-xe mailing list