[v4,0/9] drm/panfrost: Add heap and no execute buffer allocation
mbox series

Message ID 20190808222200.13176-1-robh@kernel.org
Headers show
Series
  • drm/panfrost: Add heap and no execute buffer allocation
Related show

Message

Rob Herring Aug. 8, 2019, 10:21 p.m. UTC
This series adds new BO allocation flags PANFROST_BO_HEAP and
PANFROST_BO_NOEXEC. The heap allocations are paged in on GPU page faults.

Hopefully, this is the last version, but I made a few changes after
implementing per FD address spaces on top of this. Primarily, I moved the
GPU VA mapping into GEM open/close functions. This is a bit cleaner and
will work when we need access to per FD objects.

I also found a problem with how the GPU reset is handled with the MMU.
With the move to a threaded irq handler, it's not okay to unmask the MMU
at any time as was possible with panfrost_mmu_enable() calls. The result
was some consolidation of the reset calls.

Tomeu, I don't think there should be any changes in test results, but I
didn't add your tested-by as there are a few too many changes that I felt
comfortable with. I did test this with your series.

This is based on drm-misc-next. An updated branch is here[1].

v4:
 - Move GPU VA mapping/unmapping to GEM open/close
 - Add rework of reset handling.
 - Rebased on top of madvise support

v3:
 - Retain shared irq support, splitting IRQ changes to separate patch (6/8)
 - Stop leaking SG tables
 - Prevent mmap and pinning pages for heap BOs

Rob

[1] git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git panfrost/heap-noexec


Rob Herring (9):
  drm/gem: Allow sparsely populated page arrays in drm_gem_put_pages
  drm/shmem: Put pages independent of a SG table being set
  drm/panfrost: Restructure the GEM object creation
  drm/panfrost: Split panfrost_mmu_map SG list mapping to its own
    function
  drm/panfrost: Add a no execute flag for BO allocations
  drm/panfrost: Consolidate reset handling
  drm/panfrost: Convert MMU IRQ handler to threaded handler
  drm/panfrost: Add support for GPU heap allocations
  drm/panfrost: Bump driver version to 1.1

 drivers/gpu/drm/drm_gem.c                  |   3 +
 drivers/gpu/drm/drm_gem_shmem_helper.c     |   4 +-
 drivers/gpu/drm/panfrost/TODO              |   2 -
 drivers/gpu/drm/panfrost/panfrost_device.c |  16 +-
 drivers/gpu/drm/panfrost/panfrost_device.h |   1 +
 drivers/gpu/drm/panfrost/panfrost_drv.c    |  65 +++++--
 drivers/gpu/drm/panfrost/panfrost_gem.c    | 138 ++++++++++---
 drivers/gpu/drm/panfrost/panfrost_gem.h    |  17 +-
 drivers/gpu/drm/panfrost/panfrost_job.c    |   7 +-
 drivers/gpu/drm/panfrost/panfrost_mmu.c    | 216 +++++++++++++++++----
 drivers/gpu/drm/panfrost/panfrost_mmu.h    |   3 +-
 include/uapi/drm/panfrost_drm.h            |   3 +
 12 files changed, 374 insertions(+), 101 deletions(-)

--
2.20.1