Skip to content

Commit

Permalink
drm/panfrost: Split mmu_hw_do_operation into locked and unlocked version
Browse files Browse the repository at this point in the history
In preparation to call mmu_hw_do_operation with the as_lock already held,
Add a mmu_hw_do_operation_locked function.

Fixes: 7282f76 ("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-6-robh@kernel.org
  • Loading branch information
Rob Herring committed Aug 30, 2019
1 parent ec7eba4 commit 86df65f
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions drivers/gpu/drm/panfrost/panfrost_mmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,19 +80,11 @@ static void lock_region(struct panfrost_device *pfdev, u32 as_nr,
}


static int mmu_hw_do_operation(struct panfrost_device *pfdev,
struct panfrost_mmu *mmu,
u64 iova, size_t size, u32 op)
static int mmu_hw_do_operation_locked(struct panfrost_device *pfdev, int as_nr,
u64 iova, size_t size, u32 op)
{
int ret, as_nr;

spin_lock(&pfdev->as_lock);
as_nr = mmu->as;

if (as_nr < 0) {
spin_unlock(&pfdev->as_lock);
if (as_nr < 0)
return 0;
}

if (op != AS_COMMAND_UNLOCK)
lock_region(pfdev, as_nr, iova, size);
Expand All @@ -101,10 +93,18 @@ static int mmu_hw_do_operation(struct panfrost_device *pfdev,
write_cmd(pfdev, as_nr, op);

/* Wait for the flush to complete */
ret = wait_ready(pfdev, as_nr);
return wait_ready(pfdev, as_nr);
}

spin_unlock(&pfdev->as_lock);
static int mmu_hw_do_operation(struct panfrost_device *pfdev,
struct panfrost_mmu *mmu,
u64 iova, size_t size, u32 op)
{
int ret;

spin_lock(&pfdev->as_lock);
ret = mmu_hw_do_operation_locked(pfdev, mmu->as, iova, size, op);
spin_unlock(&pfdev->as_lock);
return ret;
}

Expand Down

0 comments on commit 86df65f

Please sign in to comment.