Message ID | 20190826223317.28509-6-robh@kernel.org |
---|---|
State | Accepted |
Commit | 86df65f39b009e00cf2826eac72c5a969b878065 |
Headers | show |
Series | panfrost: Locking and runtime PM fixes | expand |
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@collabora.com> > Cc: Steven Price <steven.price@arm.com> > Cc: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> > Cc: David Airlie <airlied@linux.ie> > Cc: Daniel Vetter <daniel@ffwll.ch> > Signed-off-by: Rob Herring <robh@kernel.org> Reviewed-by: Steven Price <steven.price@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel >
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; }
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@collabora.com> Cc: Steven Price <steven.price@arm.com> Cc: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Cc: David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Signed-off-by: Rob Herring <robh@kernel.org> --- v3: - new patch drivers/gpu/drm/panfrost/panfrost_mmu.c | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) -- 2.20.1