[RFC 27/34] drm/xe: Remove useless mem_access during probe
Matthew Auld
matthew.auld at intel.com
Mon Feb 5 13:18:50 UTC 2024
On 26/01/2024 20:30, Rodrigo Vivi wrote:
> xe_pm_init is the very last thing during the xe_pci_probe(),
> hence these protections are useless from the point of view
> of ensuring that the device is awake.
>
> Let's remove it so we continue towards the goal of killing
> xe_device_mem_access.
>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> ---
> drivers/gpu/drm/xe/xe_ggtt.c | 2 --
> drivers/gpu/drm/xe/xe_gt.c | 6 ------
> drivers/gpu/drm/xe/xe_tile.c | 10 +++-------
> 3 files changed, 3 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
> index 6fdf830678b3..7faf02523b03 100644
> --- a/drivers/gpu/drm/xe/xe_ggtt.c
> +++ b/drivers/gpu/drm/xe/xe_ggtt.c
> @@ -201,14 +201,12 @@ static void xe_ggtt_initial_clear(struct xe_ggtt *ggtt)
> u64 start, end;
>
> /* Display may have allocated inside ggtt, so be careful with clearing here */
> - xe_device_mem_access_get(tile_to_xe(ggtt->tile));
> mutex_lock(&ggtt->lock);
> drm_mm_for_each_hole(hole, &ggtt->mm, start, end)
> xe_ggtt_clear(ggtt, start, end - start);
>
> xe_ggtt_invalidate(ggtt);
> mutex_unlock(&ggtt->lock);
> - xe_device_mem_access_put(tile_to_xe(ggtt->tile));
> }
>
> int xe_ggtt_init(struct xe_ggtt *ggtt)
> diff --git a/drivers/gpu/drm/xe/xe_gt.c b/drivers/gpu/drm/xe/xe_gt.c
> index 675a2927a19e..c6c4292c21f5 100644
> --- a/drivers/gpu/drm/xe/xe_gt.c
> +++ b/drivers/gpu/drm/xe/xe_gt.c
> @@ -349,7 +349,6 @@ static int gt_fw_domain_init(struct xe_gt *gt)
> {
> int err, i;
>
> - xe_device_mem_access_get(gt_to_xe(gt));
> err = xe_force_wake_get(gt_to_fw(gt), XE_FW_GT);
> if (err)
> goto err_hw_fence_irq;
> @@ -407,7 +406,6 @@ static int gt_fw_domain_init(struct xe_gt *gt)
>
> err = xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
> XE_WARN_ON(err);
> - xe_device_mem_access_put(gt_to_xe(gt));
>
> return 0;
>
> @@ -417,7 +415,6 @@ static int gt_fw_domain_init(struct xe_gt *gt)
> err_hw_fence_irq:
> for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i)
> xe_hw_fence_irq_finish(>->fence_irq[i]);
> - xe_device_mem_access_put(gt_to_xe(gt));
>
> return err;
> }
> @@ -426,7 +423,6 @@ static int all_fw_domain_init(struct xe_gt *gt)
> {
> int err, i;
>
> - xe_device_mem_access_get(gt_to_xe(gt));
> err = xe_force_wake_get(gt_to_fw(gt), XE_FORCEWAKE_ALL);
> if (err)
> goto err_hw_fence_irq;
> @@ -489,7 +485,6 @@ static int all_fw_domain_init(struct xe_gt *gt)
>
> err = xe_force_wake_put(gt_to_fw(gt), XE_FORCEWAKE_ALL);
> XE_WARN_ON(err);
> - xe_device_mem_access_put(gt_to_xe(gt));
>
> return 0;
>
> @@ -498,7 +493,6 @@ static int all_fw_domain_init(struct xe_gt *gt)
> err_hw_fence_irq:
> for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i)
> xe_hw_fence_irq_finish(>->fence_irq[i]);
> - xe_device_mem_access_put(gt_to_xe(gt));
>
> return err;
> }
> diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
> index 044c20881de7..74ecb5f39438 100644
> --- a/drivers/gpu/drm/xe/xe_tile.c
> +++ b/drivers/gpu/drm/xe/xe_tile.c
> @@ -160,23 +160,19 @@ int xe_tile_init_noalloc(struct xe_tile *tile)
> {
> int err;
>
> - xe_device_mem_access_get(tile_to_xe(tile));
> -
> err = tile_ttm_mgr_init(tile);
> if (err)
> - goto err_mem_access;
> + return err;
>
> tile->mem.kernel_bb_pool = xe_sa_bo_manager_init(tile, SZ_1M, 16);
> if (IS_ERR(tile->mem.kernel_bb_pool))
> - err = PTR_ERR(tile->mem.kernel_bb_pool);
> + return PTR_ERR(tile->mem.kernel_bb_pool);
Previously this was just falling through with the err. This deserves to
be a separate change, from the other more mechanical stuff here.
>
> xe_wa_apply_tile_workarounds(tile);
>
> xe_tile_sysfs_init(tile);
>
> -err_mem_access:
> - xe_device_mem_access_put(tile_to_xe(tile));
> - return err;
> + return 0;
> }
>
> void xe_tile_migrate_wait(struct xe_tile *tile)
More information about the Intel-xe
mailing list