[PATCH v3 5/8] drm/panfrost: Split mmu_hw_do_operation into locked and unlocked version
Steven Price
steven.price at arm.com
Wed Aug 28 10:54:59 UTC 2019
On 26/08/2019 23:33, Rob Herring wrote:
> In preparation to call mmu_hw_do_operation with the as_lock already held,
> Add a mmu_hw_do_operation_locked function.
>
> Fixes: 7282f7645d06 ("drm/panfrost: Implement per FD address spaces")
> Cc: Tomeu Vizoso <tomeu.vizoso at collabora.com>
> Cc: Steven Price <steven.price at arm.com>
> Cc: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
> Cc: David Airlie <airlied at linux.ie>
> Cc: Daniel Vetter <daniel at ffwll.ch>
> Signed-off-by: Rob Herring <robh at kernel.org>
Reviewed-by: Steven Price <steven.price at arm.com>
Steve
> ---
> v3:
> - new patch
>
> drivers/gpu/drm/panfrost/panfrost_mmu.c | 26 ++++++++++++-------------
> 1 file changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panfrost/panfrost_mmu.c
> index 2204e60f7808..3407b00d0a3a 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_mmu.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c
> @@ -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);
> @@ -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;
> }
>
> --
> 2.20.1
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
More information about the dri-devel
mailing list