[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