mbox series

[v3,0/8] panfrost: Locking and runtime PM fixes

Message ID 20190826223317.28509-1-robh@kernel.org
Headers show
Series panfrost: Locking and runtime PM fixes | expand

Message

Rob Herring Aug. 26, 2019, 10:33 p.m. UTC
With further testing of recent changes with lockdep identified some
locking issues. Avoiding lockdep issues means we need to avoid some
locks in panfrost_mmu_unmap which in turn means avoiding runtime PM
resume. In the process of re-working runtime PM several runtime PM
and locking clean-ups have been identified.

v3:
 - Applied patches 1, 4, 5, and 6
 - Fix race in job timeout handling with ISR
 - Remove some no longer needed locks
 - Fix panfrost_mmu_unmap when autosuspend delay is > 0
 - Disable AS MMU when freeing page tables

v2:
 - Drop already applied 'drm/panfrost: Fix sleeping while atomic in
   panfrost_gem_open'
 - Runtime PM clean-ups
 - Keep panfrost_gem_purge and use mutex_trylock there
 - Rework panfrost_mmu_unmap runtime PM

Rob

Rob Herring (8):
  drm/panfrost: Rework runtime PM initialization
  drm/panfrost: Hold runtime PM reference until jobs complete
  drm/panfrost: Remove unnecessary mmu->lock mutex
  drm/panfrost: Rework page table flushing and runtime PM interaction
  drm/panfrost: Split mmu_hw_do_operation into locked and unlocked
    version
  drm/panfrost: Add cache/TLB flush before switching address space
  drm/panfrost: Flush and disable address space when freeing page tables
  drm/panfrost: Remove unnecessary hwaccess_lock spin_lock

 drivers/gpu/drm/panfrost/panfrost_device.c | 10 ---
 drivers/gpu/drm/panfrost/panfrost_device.h |  3 -
 drivers/gpu/drm/panfrost/panfrost_drv.c    | 10 ++-
 drivers/gpu/drm/panfrost/panfrost_job.c    | 43 ++++++----
 drivers/gpu/drm/panfrost/panfrost_mmu.c    | 91 ++++++++++------------
 5 files changed, 76 insertions(+), 81 deletions(-)

--
2.20.1

Comments

Alyssa Rosenzweig Aug. 26, 2019, 11:35 p.m. UTC | #1
A-b from me; let's see what others say.

On Mon, Aug 26, 2019 at 05:33:09PM -0500, Rob Herring wrote:
> With further testing of recent changes with lockdep identified some

> locking issues. Avoiding lockdep issues means we need to avoid some

> locks in panfrost_mmu_unmap which in turn means avoiding runtime PM

> resume. In the process of re-working runtime PM several runtime PM

> and locking clean-ups have been identified.

> 

> v3:

>  - Applied patches 1, 4, 5, and 6

>  - Fix race in job timeout handling with ISR

>  - Remove some no longer needed locks

>  - Fix panfrost_mmu_unmap when autosuspend delay is > 0

>  - Disable AS MMU when freeing page tables

> 

> v2:

>  - Drop already applied 'drm/panfrost: Fix sleeping while atomic in

>    panfrost_gem_open'

>  - Runtime PM clean-ups

>  - Keep panfrost_gem_purge and use mutex_trylock there

>  - Rework panfrost_mmu_unmap runtime PM

> 

> Rob

> 

> Rob Herring (8):

>   drm/panfrost: Rework runtime PM initialization

>   drm/panfrost: Hold runtime PM reference until jobs complete

>   drm/panfrost: Remove unnecessary mmu->lock mutex

>   drm/panfrost: Rework page table flushing and runtime PM interaction

>   drm/panfrost: Split mmu_hw_do_operation into locked and unlocked

>     version

>   drm/panfrost: Add cache/TLB flush before switching address space

>   drm/panfrost: Flush and disable address space when freeing page tables

>   drm/panfrost: Remove unnecessary hwaccess_lock spin_lock

> 

>  drivers/gpu/drm/panfrost/panfrost_device.c | 10 ---

>  drivers/gpu/drm/panfrost/panfrost_device.h |  3 -

>  drivers/gpu/drm/panfrost/panfrost_drv.c    | 10 ++-

>  drivers/gpu/drm/panfrost/panfrost_job.c    | 43 ++++++----

>  drivers/gpu/drm/panfrost/panfrost_mmu.c    | 91 ++++++++++------------

>  5 files changed, 76 insertions(+), 81 deletions(-)

> 

> --

> 2.20.1