[RFC,00/60] DG1 LMEM enabling
mbox series

Message ID 20200710115757.290984-1-matthew.auld@intel.com
Headers show
Series
  • DG1 LMEM enabling
Related show

Message

Matthew Auld July 10, 2020, 11:56 a.m. UTC
This is Lucas' DG1 enabling series[1], plus some of the DG1 specific enablers
for supporting LMEM on top, including some bits of new uAPI.

Posting this series as RFC to get feedback while we continue to work on adapting
the code to use DMA reservation incrementally. This is currently WIP[2][3].

In terms of new uAPI we have gem_create_ext, which offers extensions support for
gem_create, this includes giving userspace the ability to optionally provide a
priority list of potential placements for the object. The other bit of new uAPI
is the query interface for memory regions, which describes the supported memory
regions for the device. What this reports can then be fed into gem_create_ext to
specify where an object might reside, like device local memory.

[1] https://patchwork.freedesktop.org/series/77496/
[2] https://patchwork.freedesktop.org/series/79091/
[3] https://patchwork.freedesktop.org/series/79129/

Abdiel Janulgue (5):
  drm/i915/dg1: add initial DG-1 definitions
  drm/i915/dg1: Add DG1 PCI IDs
  drm/i915/query: Expose memory regions through the query uAPI
  drm/i915: Provide a way to disable PCIe relaxed write ordering
  drm/i915: Reintroduce mem->reserved

Aditya Swarup (4):
  drm/i915/dg1: Add DPLL macros for DG1
  drm/i915/dg1: Add and setup DPLLs for DG1
  drm/i915/dg1: Enable DPLL for DG1
  drm/i915/dg1: Enable first 2 ports for DG1

Animesh Manna (2):
  drm/i915/lmem: reset the lmem buffer created by fbdev
  drm/i915/dsb: Enable lmem for dsb

Anshuman Gupta (1):
  drm/i915/dg1: DG1 does not support DC6

Anusha Srivatsa (2):
  drm/i915/dg1: Remove SHPD_FILTER_CNT register programming
  drm/i915/lmem: Bypass aperture when lmem is available

CQ Tang (5):
  drm/i915: setup GPU device lmem region
  drm/i915: Fix object page offset within a region
  drm/i915: add i915_gem_object_is_devmem() function
  drm/i915: finish memory region support for stolen objects.
  drm/i915: Create stolen memory region from local memory

Clinton A Taylor (1):
  drm/i915/dg1: invert HPD pins

Daniele Ceraolo Spurio (2):
  drm/i915/guc: put all guc objects in lmem when available
  drm/i915: defer pd lmem block put to worker

Imre Deak (1):
  drm/i915/dg1: Reserve first 1MB of local memory

Lucas De Marchi (7):
  drm/i915/dg1: add support for the master unit interrupt
  drm/i915/dg1: Add fake PCH
  drm/i915/dg1: Define MOCS table for DG1
  drm/i915/dg1: add hpd interrupt handling
  drm/i915/dg1: gmbus pin mapping
  drm/i915/dg1: map/unmap pll clocks
  drm/i915/dg1: enable PORT C/D aka D/E

Matt Atwood (1):
  drm/i915/dg1: Load DMC

Matt Roper (7):
  drm/i915/dg1: Initialize RAWCLK properly
  drm/i915/dg1: Wait for pcode/uncore handshake at startup
  drm/i915/dg1: Don't program PHY_MISC for PHY-C and PHY-D
  drm/i915/dg1: Update comp master/slave relationships for PHYs
  drm/i915/dg1: Update voltage swing tables for DP
  drm/i915/dg1: provide port/phy mapping for vbt
  drm/i915/rkl: Add initial workarounds

Matthew Auld (11):
  drm/i915/lmem: support pread
  drm/i915/lmem: support pwrite
  drm/i915: introduce kernel blitter_context
  drm/i915/uapi: introduce drm_i915_gem_create_ext
  drm/i915: setup the LMEM region
  drm/i915: drop fake LMEM
  drm/i915: PPGTT support
  drm/i915: support GGTT LMEM entries
  drm/i915: allocate context from LMEM
  drm/i915: move engine scratch to LMEM
  drm/i915/lmem: support optional CPU clearing for special internal use

Michael J. Ruhl (1):
  drm/i915/dg1: Introduce dmabuf mmap to LMEM

Michel Thierry (3):
  drm/i915/dgfx: define llc and snooping behaviour
  drm/i915/lmem: allocate cmd ring in lmem
  drm/i915/lmem: allocate HWSP in lmem

Stuart Summers (2):
  drm/i915: Add has_master_unit_irq flag
  drm/i915/dg1: Add initial DG1 workarounds

Uma Shankar (1):
  drm/i915/dg1: Add DG1 power wells

Venkata Sandeep Dhanalakota (2):
  drm/i915/dg1: Increase mmio size to 4MB
  drm/i915/lmem: Limit block size to 4G

Wen, Kui (1):
  drm/i915/lmem: Do not check r->sgt.pfn for NULL

Zbigniew Kempczyński (1):
  drm/i915: Distinction of memory regions

 drivers/gpu/drm/i915/Kconfig.debug            |  11 +
 drivers/gpu/drm/i915/Makefile                 |   1 +
 drivers/gpu/drm/i915/display/intel_bios.c     |  12 +-
 drivers/gpu/drm/i915/display/intel_cdclk.c    |  16 +-
 .../gpu/drm/i915/display/intel_combo_phy.c    |   7 +-
 drivers/gpu/drm/i915/display/intel_csr.c      |  19 +-
 drivers/gpu/drm/i915/display/intel_ddi.c      | 126 +++++-
 drivers/gpu/drm/i915/display/intel_display.c  |  50 ++-
 .../drm/i915/display/intel_display_power.c    | 211 +++++++++-
 drivers/gpu/drm/i915/display/intel_dpll_mgr.c |  71 +++-
 drivers/gpu/drm/i915/display/intel_dpll_mgr.h |  17 +
 drivers/gpu/drm/i915/display/intel_dsb.c      |   7 +-
 drivers/gpu/drm/i915/display/intel_fbc.c      |  20 +-
 drivers/gpu/drm/i915/display/intel_fbdev.c    |  25 +-
 drivers/gpu/drm/i915/display/intel_gmbus.c    |  15 +-
 drivers/gpu/drm/i915/display/intel_hdmi.c     |   9 +-
 drivers/gpu/drm/i915/display/intel_hotplug.c  |   3 +-
 drivers/gpu/drm/i915/display/intel_sprite.c   |   5 +-
 drivers/gpu/drm/i915/gem/i915_gem_create.c    | 379 ++++++++++++++++++
 drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c    |  58 ++-
 drivers/gpu/drm/i915/gem/i915_gem_lmem.c      | 250 +++++++++++-
 drivers/gpu/drm/i915/gem/i915_gem_lmem.h      |  22 +
 drivers/gpu/drm/i915/gem/i915_gem_mman.c      | 103 ++---
 drivers/gpu/drm/i915/gem/i915_gem_mman.h      |   8 +
 drivers/gpu/drm/i915/gem/i915_gem_object.c    |   2 +
 .../gpu/drm/i915/gem/i915_gem_object_types.h  |  19 +-
 drivers/gpu/drm/i915/gem/i915_gem_pages.c     |  14 +-
 drivers/gpu/drm/i915/gem/i915_gem_region.c    |  24 ++
 drivers/gpu/drm/i915/gem/i915_gem_stolen.c    | 241 +++++++----
 drivers/gpu/drm/i915/gem/i915_gem_stolen.h    |  10 +-
 .../drm/i915/gem/selftests/i915_gem_mman.c    |  12 +-
 drivers/gpu/drm/i915/gt/gen6_ppgtt.c          |   2 +
 drivers/gpu/drm/i915/gt/gen8_ppgtt.c          |  83 +++-
 drivers/gpu/drm/i915/gt/intel_engine_cs.c     |  40 +-
 drivers/gpu/drm/i915/gt/intel_engine_types.h  |   1 +
 drivers/gpu/drm/i915/gt/intel_ggtt.c          |  24 +-
 drivers/gpu/drm/i915/gt/intel_gt.c            |  14 +-
 drivers/gpu/drm/i915/gt/intel_gtt.c           |  74 +++-
 drivers/gpu/drm/i915/gt/intel_gtt.h           |  11 +-
 drivers/gpu/drm/i915/gt/intel_lrc.c           |  31 +-
 drivers/gpu/drm/i915/gt/intel_mocs.c          |  39 +-
 drivers/gpu/drm/i915/gt/intel_ppgtt.c         |  10 +-
 drivers/gpu/drm/i915/gt/intel_ring.c          |  15 +-
 drivers/gpu/drm/i915/gt/intel_timeline.c      |   8 +-
 drivers/gpu/drm/i915/gt/intel_workarounds.c   | 159 ++++++--
 drivers/gpu/drm/i915/gt/uc/intel_guc.c        |   9 +-
 drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c     |  11 +-
 drivers/gpu/drm/i915/gt/uc/intel_huc.c        |  14 +-
 drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c      |  35 +-
 drivers/gpu/drm/i915/i915_buddy.h             |  10 +
 drivers/gpu/drm/i915/i915_debugfs.c           |   4 +
 drivers/gpu/drm/i915/i915_drv.c               |  22 +-
 drivers/gpu/drm/i915/i915_drv.h               |  15 +-
 drivers/gpu/drm/i915/i915_gem.c               | 109 +----
 drivers/gpu/drm/i915/i915_gem_gtt.c           |   2 +
 drivers/gpu/drm/i915/i915_gpu_error.c         |   4 +-
 drivers/gpu/drm/i915/i915_irq.c               | 120 +++++-
 drivers/gpu/drm/i915/i915_mm.c                |   2 +-
 drivers/gpu/drm/i915/i915_params.c            |   5 -
 drivers/gpu/drm/i915/i915_params.h            |   1 -
 drivers/gpu/drm/i915/i915_pci.c               |  18 +-
 drivers/gpu/drm/i915/i915_query.c             |  62 +++
 drivers/gpu/drm/i915/i915_reg.h               |  71 +++-
 drivers/gpu/drm/i915/i915_vma.c               |  19 +-
 drivers/gpu/drm/i915/intel_device_info.c      |   1 +
 drivers/gpu/drm/i915/intel_device_info.h      |   2 +
 drivers/gpu/drm/i915/intel_memory_region.c    | 119 +++++-
 drivers/gpu/drm/i915/intel_memory_region.h    |  55 ++-
 drivers/gpu/drm/i915/intel_pch.c              |   6 +
 drivers/gpu/drm/i915/intel_pch.h              |   4 +
 drivers/gpu/drm/i915/intel_pm.c               |  17 +-
 drivers/gpu/drm/i915/intel_region_lmem.c      | 164 ++++----
 drivers/gpu/drm/i915/intel_region_lmem.h      |   3 +-
 drivers/gpu/drm/i915/intel_sideband.c         |  15 +
 drivers/gpu/drm/i915/intel_sideband.h         |   2 +
 drivers/gpu/drm/i915/intel_uncore.c           |   4 +
 .../drm/i915/selftests/intel_memory_region.c  | 172 ++++++++
 .../gpu/drm/i915/selftests/mock_gem_device.c  |   3 +-
 include/drm/i915_pciids.h                     |   4 +
 include/uapi/drm/i915_drm.h                   | 118 ++++++
 80 files changed, 2902 insertions(+), 598 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_create.c

Comments

Dave Airlie Aug. 11, 2020, 3:23 a.m. UTC | #1
Hi Matthew,

do you have a rebase of these or a git tree with them, once I hit the
PPGTT support applying started to get messy.

Dave.

On Fri, 10 Jul 2020 at 21:58, Matthew Auld <matthew.auld@intel.com> wrote:
>
> This is Lucas' DG1 enabling series[1], plus some of the DG1 specific enablers
> for supporting LMEM on top, including some bits of new uAPI.
>
> Posting this series as RFC to get feedback while we continue to work on adapting
> the code to use DMA reservation incrementally. This is currently WIP[2][3].
>
> In terms of new uAPI we have gem_create_ext, which offers extensions support for
> gem_create, this includes giving userspace the ability to optionally provide a
> priority list of potential placements for the object. The other bit of new uAPI
> is the query interface for memory regions, which describes the supported memory
> regions for the device. What this reports can then be fed into gem_create_ext to
> specify where an object might reside, like device local memory.
>
> [1] https://patchwork.freedesktop.org/series/77496/
> [2] https://patchwork.freedesktop.org/series/79091/
> [3] https://patchwork.freedesktop.org/series/79129/
>
> Abdiel Janulgue (5):
>   drm/i915/dg1: add initial DG-1 definitions
>   drm/i915/dg1: Add DG1 PCI IDs
>   drm/i915/query: Expose memory regions through the query uAPI
>   drm/i915: Provide a way to disable PCIe relaxed write ordering
>   drm/i915: Reintroduce mem->reserved
>
> Aditya Swarup (4):
>   drm/i915/dg1: Add DPLL macros for DG1
>   drm/i915/dg1: Add and setup DPLLs for DG1
>   drm/i915/dg1: Enable DPLL for DG1
>   drm/i915/dg1: Enable first 2 ports for DG1
>
> Animesh Manna (2):
>   drm/i915/lmem: reset the lmem buffer created by fbdev
>   drm/i915/dsb: Enable lmem for dsb
>
> Anshuman Gupta (1):
>   drm/i915/dg1: DG1 does not support DC6
>
> Anusha Srivatsa (2):
>   drm/i915/dg1: Remove SHPD_FILTER_CNT register programming
>   drm/i915/lmem: Bypass aperture when lmem is available
>
> CQ Tang (5):
>   drm/i915: setup GPU device lmem region
>   drm/i915: Fix object page offset within a region
>   drm/i915: add i915_gem_object_is_devmem() function
>   drm/i915: finish memory region support for stolen objects.
>   drm/i915: Create stolen memory region from local memory
>
> Clinton A Taylor (1):
>   drm/i915/dg1: invert HPD pins
>
> Daniele Ceraolo Spurio (2):
>   drm/i915/guc: put all guc objects in lmem when available
>   drm/i915: defer pd lmem block put to worker
>
> Imre Deak (1):
>   drm/i915/dg1: Reserve first 1MB of local memory
>
> Lucas De Marchi (7):
>   drm/i915/dg1: add support for the master unit interrupt
>   drm/i915/dg1: Add fake PCH
>   drm/i915/dg1: Define MOCS table for DG1
>   drm/i915/dg1: add hpd interrupt handling
>   drm/i915/dg1: gmbus pin mapping
>   drm/i915/dg1: map/unmap pll clocks
>   drm/i915/dg1: enable PORT C/D aka D/E
>
> Matt Atwood (1):
>   drm/i915/dg1: Load DMC
>
> Matt Roper (7):
>   drm/i915/dg1: Initialize RAWCLK properly
>   drm/i915/dg1: Wait for pcode/uncore handshake at startup
>   drm/i915/dg1: Don't program PHY_MISC for PHY-C and PHY-D
>   drm/i915/dg1: Update comp master/slave relationships for PHYs
>   drm/i915/dg1: Update voltage swing tables for DP
>   drm/i915/dg1: provide port/phy mapping for vbt
>   drm/i915/rkl: Add initial workarounds
>
> Matthew Auld (11):
>   drm/i915/lmem: support pread
>   drm/i915/lmem: support pwrite
>   drm/i915: introduce kernel blitter_context
>   drm/i915/uapi: introduce drm_i915_gem_create_ext
>   drm/i915: setup the LMEM region
>   drm/i915: drop fake LMEM
>   drm/i915: PPGTT support
>   drm/i915: support GGTT LMEM entries
>   drm/i915: allocate context from LMEM
>   drm/i915: move engine scratch to LMEM
>   drm/i915/lmem: support optional CPU clearing for special internal use
>
> Michael J. Ruhl (1):
>   drm/i915/dg1: Introduce dmabuf mmap to LMEM
>
> Michel Thierry (3):
>   drm/i915/dgfx: define llc and snooping behaviour
>   drm/i915/lmem: allocate cmd ring in lmem
>   drm/i915/lmem: allocate HWSP in lmem
>
> Stuart Summers (2):
>   drm/i915: Add has_master_unit_irq flag
>   drm/i915/dg1: Add initial DG1 workarounds
>
> Uma Shankar (1):
>   drm/i915/dg1: Add DG1 power wells
>
> Venkata Sandeep Dhanalakota (2):
>   drm/i915/dg1: Increase mmio size to 4MB
>   drm/i915/lmem: Limit block size to 4G
>
> Wen, Kui (1):
>   drm/i915/lmem: Do not check r->sgt.pfn for NULL
>
> Zbigniew Kempczyński (1):
>   drm/i915: Distinction of memory regions
>
>  drivers/gpu/drm/i915/Kconfig.debug            |  11 +
>  drivers/gpu/drm/i915/Makefile                 |   1 +
>  drivers/gpu/drm/i915/display/intel_bios.c     |  12 +-
>  drivers/gpu/drm/i915/display/intel_cdclk.c    |  16 +-
>  .../gpu/drm/i915/display/intel_combo_phy.c    |   7 +-
>  drivers/gpu/drm/i915/display/intel_csr.c      |  19 +-
>  drivers/gpu/drm/i915/display/intel_ddi.c      | 126 +++++-
>  drivers/gpu/drm/i915/display/intel_display.c  |  50 ++-
>  .../drm/i915/display/intel_display_power.c    | 211 +++++++++-
>  drivers/gpu/drm/i915/display/intel_dpll_mgr.c |  71 +++-
>  drivers/gpu/drm/i915/display/intel_dpll_mgr.h |  17 +
>  drivers/gpu/drm/i915/display/intel_dsb.c      |   7 +-
>  drivers/gpu/drm/i915/display/intel_fbc.c      |  20 +-
>  drivers/gpu/drm/i915/display/intel_fbdev.c    |  25 +-
>  drivers/gpu/drm/i915/display/intel_gmbus.c    |  15 +-
>  drivers/gpu/drm/i915/display/intel_hdmi.c     |   9 +-
>  drivers/gpu/drm/i915/display/intel_hotplug.c  |   3 +-
>  drivers/gpu/drm/i915/display/intel_sprite.c   |   5 +-
>  drivers/gpu/drm/i915/gem/i915_gem_create.c    | 379 ++++++++++++++++++
>  drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c    |  58 ++-
>  drivers/gpu/drm/i915/gem/i915_gem_lmem.c      | 250 +++++++++++-
>  drivers/gpu/drm/i915/gem/i915_gem_lmem.h      |  22 +
>  drivers/gpu/drm/i915/gem/i915_gem_mman.c      | 103 ++---
>  drivers/gpu/drm/i915/gem/i915_gem_mman.h      |   8 +
>  drivers/gpu/drm/i915/gem/i915_gem_object.c    |   2 +
>  .../gpu/drm/i915/gem/i915_gem_object_types.h  |  19 +-
>  drivers/gpu/drm/i915/gem/i915_gem_pages.c     |  14 +-
>  drivers/gpu/drm/i915/gem/i915_gem_region.c    |  24 ++
>  drivers/gpu/drm/i915/gem/i915_gem_stolen.c    | 241 +++++++----
>  drivers/gpu/drm/i915/gem/i915_gem_stolen.h    |  10 +-
>  .../drm/i915/gem/selftests/i915_gem_mman.c    |  12 +-
>  drivers/gpu/drm/i915/gt/gen6_ppgtt.c          |   2 +
>  drivers/gpu/drm/i915/gt/gen8_ppgtt.c          |  83 +++-
>  drivers/gpu/drm/i915/gt/intel_engine_cs.c     |  40 +-
>  drivers/gpu/drm/i915/gt/intel_engine_types.h  |   1 +
>  drivers/gpu/drm/i915/gt/intel_ggtt.c          |  24 +-
>  drivers/gpu/drm/i915/gt/intel_gt.c            |  14 +-
>  drivers/gpu/drm/i915/gt/intel_gtt.c           |  74 +++-
>  drivers/gpu/drm/i915/gt/intel_gtt.h           |  11 +-
>  drivers/gpu/drm/i915/gt/intel_lrc.c           |  31 +-
>  drivers/gpu/drm/i915/gt/intel_mocs.c          |  39 +-
>  drivers/gpu/drm/i915/gt/intel_ppgtt.c         |  10 +-
>  drivers/gpu/drm/i915/gt/intel_ring.c          |  15 +-
>  drivers/gpu/drm/i915/gt/intel_timeline.c      |   8 +-
>  drivers/gpu/drm/i915/gt/intel_workarounds.c   | 159 ++++++--
>  drivers/gpu/drm/i915/gt/uc/intel_guc.c        |   9 +-
>  drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c     |  11 +-
>  drivers/gpu/drm/i915/gt/uc/intel_huc.c        |  14 +-
>  drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c      |  35 +-
>  drivers/gpu/drm/i915/i915_buddy.h             |  10 +
>  drivers/gpu/drm/i915/i915_debugfs.c           |   4 +
>  drivers/gpu/drm/i915/i915_drv.c               |  22 +-
>  drivers/gpu/drm/i915/i915_drv.h               |  15 +-
>  drivers/gpu/drm/i915/i915_gem.c               | 109 +----
>  drivers/gpu/drm/i915/i915_gem_gtt.c           |   2 +
>  drivers/gpu/drm/i915/i915_gpu_error.c         |   4 +-
>  drivers/gpu/drm/i915/i915_irq.c               | 120 +++++-
>  drivers/gpu/drm/i915/i915_mm.c                |   2 +-
>  drivers/gpu/drm/i915/i915_params.c            |   5 -
>  drivers/gpu/drm/i915/i915_params.h            |   1 -
>  drivers/gpu/drm/i915/i915_pci.c               |  18 +-
>  drivers/gpu/drm/i915/i915_query.c             |  62 +++
>  drivers/gpu/drm/i915/i915_reg.h               |  71 +++-
>  drivers/gpu/drm/i915/i915_vma.c               |  19 +-
>  drivers/gpu/drm/i915/intel_device_info.c      |   1 +
>  drivers/gpu/drm/i915/intel_device_info.h      |   2 +
>  drivers/gpu/drm/i915/intel_memory_region.c    | 119 +++++-
>  drivers/gpu/drm/i915/intel_memory_region.h    |  55 ++-
>  drivers/gpu/drm/i915/intel_pch.c              |   6 +
>  drivers/gpu/drm/i915/intel_pch.h              |   4 +
>  drivers/gpu/drm/i915/intel_pm.c               |  17 +-
>  drivers/gpu/drm/i915/intel_region_lmem.c      | 164 ++++----
>  drivers/gpu/drm/i915/intel_region_lmem.h      |   3 +-
>  drivers/gpu/drm/i915/intel_sideband.c         |  15 +
>  drivers/gpu/drm/i915/intel_sideband.h         |   2 +
>  drivers/gpu/drm/i915/intel_uncore.c           |   4 +
>  .../drm/i915/selftests/intel_memory_region.c  | 172 ++++++++
>  .../gpu/drm/i915/selftests/mock_gem_device.c  |   3 +-
>  include/drm/i915_pciids.h                     |   4 +
>  include/uapi/drm/i915_drm.h                   | 118 ++++++
>  80 files changed, 2902 insertions(+), 598 deletions(-)
>  create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_create.c
>
> --
> 2.26.2
>
Matthew Auld Aug. 11, 2020, 10:48 a.m. UTC | #2
On Tue, 11 Aug 2020 at 04:23, Dave Airlie <airlied@gmail.com> wrote:
>
> Hi Matthew,
>
> do you have a rebase of these or a git tree with them, once I hit the
> PPGTT support applying started to get messy.

Yeah, that stuff pretty much needed a rewrite.

https://github.com/matt-auld/linux/tree/drm-tip-lmem-dg1