drm/panfrost: Remove unnecessary hwaccess_lock spin_lock
With the introduction of the as_lock to serialize address space registers,
the hwaccess_lock is only used within the job code and is not protecting
anything. panfrost_job_hw_submit() only accesses registers for 1 job slot
and it's already serialized by drm_sched.
Fixes: 7282f7645d
("drm/panfrost: Implement per FD address spaces")
Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Rob Herring <robh@kernel.org>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Steven Price <steven.price@arm.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190826223317.28509-9-robh@kernel.org
This commit is contained in:
@@ -124,7 +124,6 @@ int panfrost_device_init(struct panfrost_device *pfdev)
|
|||||||
INIT_LIST_HEAD(&pfdev->scheduled_jobs);
|
INIT_LIST_HEAD(&pfdev->scheduled_jobs);
|
||||||
INIT_LIST_HEAD(&pfdev->as_lru_list);
|
INIT_LIST_HEAD(&pfdev->as_lru_list);
|
||||||
|
|
||||||
spin_lock_init(&pfdev->hwaccess_lock);
|
|
||||||
spin_lock_init(&pfdev->as_lock);
|
spin_lock_init(&pfdev->as_lock);
|
||||||
|
|
||||||
err = panfrost_clk_init(pfdev);
|
err = panfrost_clk_init(pfdev);
|
||||||
|
@@ -63,8 +63,6 @@ struct panfrost_device {
|
|||||||
struct drm_device *ddev;
|
struct drm_device *ddev;
|
||||||
struct platform_device *pdev;
|
struct platform_device *pdev;
|
||||||
|
|
||||||
spinlock_t hwaccess_lock;
|
|
||||||
|
|
||||||
void __iomem *iomem;
|
void __iomem *iomem;
|
||||||
struct clk *clock;
|
struct clk *clock;
|
||||||
struct clk *bus_clock;
|
struct clk *bus_clock;
|
||||||
|
@@ -141,7 +141,6 @@ static void panfrost_job_write_affinity(struct panfrost_device *pfdev,
|
|||||||
static void panfrost_job_hw_submit(struct panfrost_job *job, int js)
|
static void panfrost_job_hw_submit(struct panfrost_job *job, int js)
|
||||||
{
|
{
|
||||||
struct panfrost_device *pfdev = job->pfdev;
|
struct panfrost_device *pfdev = job->pfdev;
|
||||||
unsigned long flags;
|
|
||||||
u32 cfg;
|
u32 cfg;
|
||||||
u64 jc_head = job->jc;
|
u64 jc_head = job->jc;
|
||||||
int ret;
|
int ret;
|
||||||
@@ -158,7 +157,6 @@ static void panfrost_job_hw_submit(struct panfrost_job *job, int js)
|
|||||||
cfg = panfrost_mmu_as_get(pfdev, &job->file_priv->mmu);
|
cfg = panfrost_mmu_as_get(pfdev, &job->file_priv->mmu);
|
||||||
|
|
||||||
panfrost_devfreq_record_transition(pfdev, js);
|
panfrost_devfreq_record_transition(pfdev, js);
|
||||||
spin_lock_irqsave(&pfdev->hwaccess_lock, flags);
|
|
||||||
|
|
||||||
job_write(pfdev, JS_HEAD_NEXT_LO(js), jc_head & 0xFFFFFFFF);
|
job_write(pfdev, JS_HEAD_NEXT_LO(js), jc_head & 0xFFFFFFFF);
|
||||||
job_write(pfdev, JS_HEAD_NEXT_HI(js), jc_head >> 32);
|
job_write(pfdev, JS_HEAD_NEXT_HI(js), jc_head >> 32);
|
||||||
@@ -187,8 +185,6 @@ static void panfrost_job_hw_submit(struct panfrost_job *job, int js)
|
|||||||
job, js, jc_head);
|
job, js, jc_head);
|
||||||
|
|
||||||
job_write(pfdev, JS_COMMAND_NEXT(js), JS_COMMAND_START);
|
job_write(pfdev, JS_COMMAND_NEXT(js), JS_COMMAND_START);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&pfdev->hwaccess_lock, flags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void panfrost_acquire_object_fences(struct drm_gem_object **bos,
|
static void panfrost_acquire_object_fences(struct drm_gem_object **bos,
|
||||||
|
Reference in New Issue
Block a user