Merge tag 'drm-intel-gt-next-2021-08-06-1' of ssh://git.freedesktop.org/git/drm/drm...
authorDave Airlie <airlied@redhat.com>
Wed, 11 Aug 2021 23:43:38 +0000 (09:43 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 11 Aug 2021 23:56:04 +0000 (09:56 +1000)
UAPI Changes:

- Add I915_MMAP_OFFSET_FIXED

  On devices with local memory `I915_MMAP_OFFSET_FIXED` is the only valid
  type. On devices without local memory, this caching mode is invalid.

  As caching mode when specifying `I915_MMAP_OFFSET_FIXED`, WC or WB will
  be used, depending on the object placement on creation. WB will be used
  when the object can only exist in system memory, WC otherwise.

  Userspace: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11888

- Reinstate the mmap ioctl for (already released) integrated Gen12 platforms

  Rationale: Otherwise media driver breaks eg. for ADL-P. Long term goal is
  still to sunset the IOCTL even for integrated and require using mmap_offset.

- Reject caching/set_domain IOCTLs on discrete

  Expected to become immutable property of the BO

- Disallow changing context parameters after first use on Gen12 and earlier
- Require setting context parameters at creation on platforms after Gen12

  Rationale (for both): Allow less dynamic changes to the context to simplify
  the implementation and avoid user shooting theirselves in the foot.

- Drop I915_CONTEXT_PARAM_RINGSIZE

  Userspace PR for compute-driver has not been merged

- Drop I915_CONTEXT_PARAM_NO_ZEROMAP

  Userspace PR for libdrm / Beignet was never landed

- Drop CONTEXT_CLONE API

  Userspace PR for Mesa was never landed

- Drop getparam support for I915_CONTEXT_PARAM_ENGINES

  Only existed for symmetry wrt. setparam, never used.

- Disallow bonding of virtual engines

  Drop the prep work, no hardware has been released needing it.

- (Implicit) Disable gpu relocations

  Media userspace was the last userspace to still use them. They
  have converted so performance can be regained with an update.

Core Changes:

- Merge topic branch 'topic/i915-ttm-2021-06-11' (from Maarten)
- Merge topic branch 'topic/revid_steppings' (from Matt R)
- Merge topic branch 'topic/xehp-dg2-definitions-2021-07-21' (from Matt R)
- Backmerges drm-next (Rodrigo)

Driver Changes:

- Initial workarounds for ADL-P (Clint)
- Preliminary code for XeHP/DG2 (Stuart, Umesh, Matt R, Prathap, Ram,
  Venkata, Akeem, Tvrtko, John, Lucas)
- Fix ADL-S DMA mask size to 39 bits (Tejas)
- Remove code for CNL (Lucas)
- Add ADL-P GuC/HuC firmwares (John)
- Update HuC to 7.9.3 for TGL/ADL-S/RKL (John)
- Fix -EDEADLK handling regression (Ville)
- Implement Wa_1508744258 for DG1 and Gen12 iGFX (Jose)
- Extend Wa_1406941453 to ADL-S (Jose)
- Drop unnecessary workarounds per stepping for SKL/BXT/ICL (Matt R)
- Use fuse info to enable SFC on Gen12 (Venkata)
- Unconditionally flush the pages on acquire on EHL/JSL (Matt A)
- Probe existence of backing struct pages upon userptr creation (Chris, Matt A)

- Add an intermediate GEM proto-context to delay real context creation (Jason)
- Implement SINGLE_TIMELINE with a syncobj (Jason)
- Set the watchdog timeout directly in intel_context_set_gem (Jason)
- Disallow userspace from creating contexts with too many engines (Jason)
- Revert "drm/i915/gem: Asynchronous cmdparser" (Jason)
- Revert "drm/i915: Propagate errors on awaiting already signaled fences" (Jason)
- Revert "drm/i915: Skip over MI_NOOP when parsing" (Jason)
- Revert "drm/i915: Shrink the GEM kmem_caches upon idling" (Daniel)
- Always let TTM handle object migration (Jason)
- Correct the locking and pin pattern for dma-buf (Thomas H, Michael R, Jason)
- Migrate to system at dma-buf attach time (Thomas, Michael R)

- MAJOR refactoring of the GuC backend code to allow for enabling on Gen11+
  (Matt B, John, Michal Wa., Fernando, Daniele, Vinay)
- Update GuC firmware interface to v62.0.0 (John, Michal Wa., Matt B)
- Add GuCRC feature to hand over the control of HW RC6 to the GuC on
  Gen12+ when GuC submission is enabled (Vinay, Sujaritha, Daniele,
  John, Tvrtko)
- Use the correct IRQ during resume and eliminate DRM IRQ midlayer (Thomas Z)
- Add pipelined page migration and clearing (Chris, Thomas H)
- Use TTM for system memory on discrete (Thomas H)
- Implement object migration for display vs. dma-buf (Thomas H)
- Perform execbuffer object locking as a separate step (Thomas H)
- Add support for explicit L3BANK steering (Matt, Daniele)
- Remove duplicated call to ops->pread (Daniel)
- Fix pagefault disabling in the first execbuf slowpath (Daniel)
- Simplify userptr locking (Thomas H)
- Improvements to the GuC CTB code (Matt B, John)
- Make GT workaround upper bounds exclusive (Matt R)
- Check for nomodeset in i915_init() first (Daniel)
- Delete now unused gpu reloc code (Daniel)

- Document RFC plans for GuC submission, DRM scheduler and new parallel
  submit uAPI (Matt B)
- Reintroduce buddy allocator this time with TTM (Matt A)
- Support forcing page size with LMEM (Matt A)
- Add i915_sched_engine to abstract a submission queue between backends (Matt B)
- Use accelerated move in TTM (Ram)
- Fix memory leaks from TTM backend (Thomas H)
- Introduce WW transaction helper (Thomas H)
- Improve debug Kconfig texts a bit (Daniel)
- Unify user object creation code (Jason)
- Use a table for i915_init/exit (Jason)
- Move slabs to module init/exit (Daniel)
- Remove now unused i915_globals (Daniel)
- Extract i915_module.c (Daniel)

- Consistently use adl-p/adl-s in WA comments (Jose)
- Finish INTEL_GEN and friends conversion (Lucas)
- Correct variable/function namings (Lucas)
- Code checker fixes (Wan, Matt A)
- Tracepoint improvements (Matt B)
- Kerneldoc improvements (Tvrtko, Jason, Matt A, Maarten)
- Selftest improvements (Chris, Matt A, Tejas, Thomas H, John, Matt B,
  Rahul, Vinay)

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/YQ0JmYiXhGskNcrI@jlahtine-mobl.ger.corp.intel.com
1  2 
drivers/gpu/drm/i915/display/intel_display.c
drivers/gpu/drm/i915/display/intel_display_power.c
drivers/gpu/drm/i915/display/intel_psr.c
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_pci.c
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_pm.c
drivers/gpu/drm/i915/intel_uncore.c

Simple merge
@@@ -1243,7 -1290,26 +1296,11 @@@ static inline struct drm_i915_private *
  
  #define INTEL_DEVID(dev_priv) (RUNTIME_INFO(dev_priv)->device_id)
  
 -/*
 - * Deprecated: this will be replaced by individual IP checks:
 - * GRAPHICS_VER(), MEDIA_VER() and DISPLAY_VER()
 - */
 -#define INTEL_GEN(dev_priv)           GRAPHICS_VER(dev_priv)
 -/*
 - * Deprecated: use IS_GRAPHICS_VER(), IS_MEDIA_VER() and IS_DISPLAY_VER() as
 - * appropriate.
 - */
 -#define IS_GEN_RANGE(dev_priv, s, e)  IS_GRAPHICS_VER(dev_priv, (s), (e))
 -/*
 - * Deprecated: use GRAPHICS_VER(), MEDIA_VER() and DISPLAY_VER() as appropriate.
 - */
 -#define IS_GEN(dev_priv, n)           (GRAPHICS_VER(dev_priv) == (n))
 -
 -#define IP_VER(ver, rel)              ((ver) << 8 | (rel))
++#define IP_VER(ver, rel)              ((ver) << 8 | (rel))
  #define GRAPHICS_VER(i915)            (INTEL_INFO(i915)->graphics_ver)
+ #define GRAPHICS_VER_FULL(i915)               IP_VER(INTEL_INFO(i915)->graphics_ver, \
+                                              INTEL_INFO(i915)->graphics_rel)
  #define IS_GRAPHICS_VER(i915, from, until) \
        (GRAPHICS_VER(i915) >= (from) && GRAPHICS_VER(i915) <= (until))
  
@@@ -934,51 -931,18 +929,51 @@@ static const struct intel_device_info a
        .display.has_psr_hw_tracking = 0,
        .platform_engine_mask =
                BIT(RCS0) | BIT(BCS0) | BIT(VECS0) | BIT(VCS0) | BIT(VCS2),
-       .dma_mask_size = 46,
+       .dma_mask_size = 39,
  };
  
 +#define XE_LPD_CURSOR_OFFSETS \
 +      .cursor_offsets = { \
 +              [PIPE_A] = CURSOR_A_OFFSET, \
 +              [PIPE_B] = IVB_CURSOR_B_OFFSET, \
 +              [PIPE_C] = IVB_CURSOR_C_OFFSET, \
 +              [PIPE_D] = TGL_CURSOR_D_OFFSET, \
 +      }
 +
  #define XE_LPD_FEATURES \
 -      .display.ver = 13,                                              \
 -      .display.has_psr_hw_tracking = 0,                               \
 -      .abox_mask = GENMASK(1, 0),                                     \
 -      .pipe_mask = BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C) | BIT(PIPE_D), \
 -      .cpu_transcoder_mask = BIT(TRANSCODER_A) | BIT(TRANSCODER_B) |  \
 -              BIT(TRANSCODER_C) | BIT(TRANSCODER_D),                  \
 -      .dbuf.size = 4096,                                              \
 -      .dbuf.slice_mask = BIT(DBUF_S1) | BIT(DBUF_S2) | BIT(DBUF_S3) | BIT(DBUF_S4)
 +      .abox_mask = GENMASK(1, 0),                                             \
 +      .color = { .degamma_lut_size = 33, .gamma_lut_size = 262145 },          \
 +      .cpu_transcoder_mask = BIT(TRANSCODER_A) | BIT(TRANSCODER_B) |          \
 +              BIT(TRANSCODER_C) | BIT(TRANSCODER_D),                          \
 +      .dbuf.size = 4096,                                                      \
 +      .dbuf.slice_mask = BIT(DBUF_S1) | BIT(DBUF_S2) | BIT(DBUF_S3) |         \
 +              BIT(DBUF_S4),                                                   \
 +      .display.has_ddi = 1,                                                   \
 +      .display.has_dmc = 1,                                                   \
 +      .display.has_dp_mst = 1,                                                \
 +      .display.has_dsb = 1,                                                   \
 +      .display.has_dsc = 1,                                                   \
 +      .display.has_fbc = 1,                                                   \
 +      .display.has_fpga_dbg = 1,                                              \
 +      .display.has_hdcp = 1,                                                  \
 +      .display.has_hotplug = 1,                                               \
 +      .display.has_ipc = 1,                                                   \
 +      .display.has_psr = 1,                                                   \
 +      .display.ver = 13,                                                      \
 +      .pipe_mask = BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C) | BIT(PIPE_D),     \
 +      .pipe_offsets = {                                                       \
 +              [TRANSCODER_A] = PIPE_A_OFFSET,                                 \
 +              [TRANSCODER_B] = PIPE_B_OFFSET,                                 \
 +              [TRANSCODER_C] = PIPE_C_OFFSET,                                 \
 +              [TRANSCODER_D] = PIPE_D_OFFSET,                                 \
 +      },                                                                      \
 +      .trans_offsets = {                                                      \
 +              [TRANSCODER_A] = TRANSCODER_A_OFFSET,                           \
 +              [TRANSCODER_B] = TRANSCODER_B_OFFSET,                           \
 +              [TRANSCODER_C] = TRANSCODER_C_OFFSET,                           \
 +              [TRANSCODER_D] = TRANSCODER_D_OFFSET,                           \
 +      },                                                                      \
 +      XE_LPD_CURSOR_OFFSETS
  
  static const struct intel_device_info adl_p_info = {
        GEN12_FEATURES,
Simple merge
Simple merge
Simple merge