[PATCH 5/7] drm/panfrost: switch to using drm_exec
Christian König
ckoenig.leichtzumerken at gmail.com
Wed Jul 12 12:47:02 UTC 2023
Just a straightforward conversion without any optimization.
Only compile tested for now.
Signed-off-by: Christian König <christian.koenig at amd.com>
Cc: Rob Herring <robh at kernel.org>
Cc: Tomeu Vizoso <tomeu.vizoso at collabora.com>
Cc: Steven Price <steven.price at arm.com>
Cc: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
---
drivers/gpu/drm/panfrost/Kconfig | 1 +
drivers/gpu/drm/panfrost/panfrost_job.c | 12 +++++++-----
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/panfrost/Kconfig b/drivers/gpu/drm/panfrost/Kconfig
index e6403a9d66ad..e86a1a2fd8e1 100644
--- a/drivers/gpu/drm/panfrost/Kconfig
+++ b/drivers/gpu/drm/panfrost/Kconfig
@@ -7,6 +7,7 @@ config DRM_PANFROST
depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_LPAE
depends on MMU
select DRM_SCHED
+ select DRM_EXEC
select IOMMU_SUPPORT
select IOMMU_IO_PGTABLE_LPAE
select DRM_GEM_SHMEM_HELPER
diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c
index dbc597ab46fb..8b9206e910b5 100644
--- a/drivers/gpu/drm/panfrost/panfrost_job.c
+++ b/drivers/gpu/drm/panfrost/panfrost_job.c
@@ -8,6 +8,7 @@
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/dma-resv.h>
+#include <drm/drm_exec.h>
#include <drm/gpu_scheduler.h>
#include <drm/panfrost_drm.h>
@@ -275,13 +276,14 @@ static void panfrost_attach_object_fences(struct drm_gem_object **bos,
int panfrost_job_push(struct panfrost_job *job)
{
struct panfrost_device *pfdev = job->pfdev;
- struct ww_acquire_ctx acquire_ctx;
+ struct drm_exec exec;
int ret = 0;
- ret = drm_gem_lock_reservations(job->bos, job->bo_count,
- &acquire_ctx);
+ drm_exec_init(&exec, DRM_EXEC_INTERRUPTIBLE_WAIT);
+ drm_exec_until_all_locked(&exec)
+ ret = drm_exec_prepare_array(&exec, job->bos, job->bo_count, 1);
if (ret)
- return ret;
+ goto unlock;
mutex_lock(&pfdev->sched_lock);
drm_sched_job_arm(&job->base);
@@ -305,7 +307,7 @@ int panfrost_job_push(struct panfrost_job *job)
job->render_done_fence);
unlock:
- drm_gem_unlock_reservations(job->bos, job->bo_count, &acquire_ctx);
+ drm_exec_fini(&exec);
return ret;
}
--
2.34.1
More information about the dri-devel
mailing list