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@xxxxxxxxxxxxx> > Cc: Steven Price <steven.price@xxxxxxx> > Cc: Alyssa Rosenzweig <alyssa.rosenzweig@xxxxxxxxxxxxx> > Cc: David Airlie <airlied@xxxxxxxx> > Cc: Daniel Vetter <daniel@xxxxxxxx> > Signed-off-by: Rob Herring <robh@xxxxxxxxxx> Reviewed-by: Steven Price <steven.price@xxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel