[Intel-gfx] [PULL] drm-intel-gt-next

Joonas Lahtinen
2020-11-12T16:34:28Z

Hi Dave & Daniel,

Here goes the drm-intel-gt-next PR for 5.11.

Most importantly there is a healthy chunk of Tigerlake
related fixes and a fix for user reported issue #2381 where
graphics output would stop at "switching to inteldrmfb from
simple".

Fixes to DMA mapped sg usage in i915 to unblock intel iommu
rework. Fixes to previously introduced WW mutex rework.

We're enabling eLLC for displayable buffers on SKL+. Plenty
of fixes to driver unbind/bind cycle. The GuC firmware
version is being updated (that just loads HuC for now).

The usual amount of fixes for CI found corner cases.

Expect a few conflicts with drm-intel-next (resolved in rerere)
as the platform enabling ones go there. I'll backmerge drm-next
once you've accepted this to pull all the changes to gt-next.

The -next-fixes and -fixes would come from Jani after this is
accepted, too.

Regards, Joonas

***

drm-intel-gt-next-2020-11-12-1:

Cross-subsystem Changes:
- DMA mapped scatterlist fixes in i915 to unblock merging of
https://lkml.org/lkml/2020/9/27/70 (Tvrtko, Tom)

Driver Changes:

- Fix for user reported issue #2381 (Graphical output stops with "switching to inteldrmfb from simple"):
Mark ininitial fb obj as WT on eLLC machines to avoid rcu lockup during fbdev init (Ville, Chris)
- Fix for Tigerlake (and earlier) to avoid spurious empty CSB events leading to hang (Chris, Bruce)
- Delay execlist processing for Tigerlake to avoid hang (Chris)
- Fix for Tigerlake RCS engine health check through heartbeat (Chris)
- Fix for Tigerlake reserved MOCS entries (Ayaz, Chris)
- Fix Media power gate sequence on Tigerlake (Rodrigo)
- Enable eLLC caching of display buffers for SKL+ (Ville)
- Support parsing of oversize batches on Gen9 (Matt, Chris)
- Exclude low pages (128KiB) of stolen from use to avoid thrashing during reset (Chris)
- Flush engines before Tigerlake breadcrumbs (Chris)

- Use the local HWSP offset during submission (Chris)
- Flush coherency domains on first set-domain-ioctl (Chris, Zbigniew)
- Use the active reference on the vma while capturing to avoid use-after-free (Chris)
- Fix MOCS PTE setting for gen9+ (Ville)
- Avoid NULL dereference on IPS driver callback while unbinding i915 (Chris)
- Avoid NULL dereference from PT/PD stash allocation error (Matt)
- Hold request reference for canceling an active context (Chris)
- Avoid infinite loop on x86-32 when mapping a lot of objects (Chris)
- Disallow WC mappings when processor doesn't support them (Chris)
- Return correct error in i915_gem_object_copy_blt() error path (Dan)
- Return correct error in intel_context_create_request() error path (Maarten)
- Tune down GuC communication enabled/disabled messages to debug (Jani)
- Fix rebased commit "Remove i915_request.lock requirement for execution callbacks" (Chris)
- Cancel outstanding work after disabling heartbeats on an engine (Chris)
- Signal cancelled requests (Chris)
- Retire cancelled requests on unload (Chris)
- Scrub HW state on driver remove (Chris)
- Undo forced context restores after trivial preemptions (Chris)
- Handle PCI unbind in PMU code (Tvrtko)
- Fix CPU hotplug with multiple GPUs in PMU code (Trtkko)
- Correctly set SFC capability for video engines (Venkata)

- Update GuC code to use firmware v49.0.1 (John, Matthew B., Daniele, Oscar, Michel, Rodrigo, Michal)
- Improve GuC warnings on loading failure (John)
- Avoid ownership race in buffer pool by clearing age (Chris)
- Use MMIO to read CSB in case of failure (Chris, Mika)
- Show engine properties in engine state dump to indicate changes (Chris, Joonas)
- Break up error capture compression loops with cond_resched() (Chris)
- Reduce GPU error capture mutex hold time to avoid khungtaskd (Chris)
- Serialise debugfs i915_gem_objects with ctx->mutex (Chris)
- Always test execution status on closing the context and close if not persistent (Chris)
- Avoid mixing integer types during batch copies (Chris, Jared)
- Skip over MI_NOOP when parsing to avoid overhead (Chris)
- Hold onto an explicit ref to i915_vma_work.pinned (Chris)
- Perform all asynchronous waits prior to marking payload start (Chris)
- Pull phys pread/pwrite implementations to the backend (Matt)

- Improve record of hung engines in error state (Tvrtko)
- Allow backends to override pread implementation (Matt)
- Reinforce LRC poisoning checks to confirm context survives execution (Chris)
- Fix memory region max size calculation (Matt)
- Fix order when adding blocks to memory region (Matt)
- Eliminate unused intel_virtual_engine_get_sibling func (Chris)
- Cleanup kasan warning for on-stack (unsigned long) casting (Chris)
- Onion unwind for scratch page allocation failure (Chris)
- Poison stolen pages before use (Chris)
- Selftest improvements (Chris)
The following changes since commit e0ee152fce25dc9269c7ea5280c98aa4b3682759:

drm/i915: Unlock the shared hwsp_gtt object after pinning (2020-09-07 15:08:11 +0300)

are available in the Git repository at:

git://anongit.freedesktop.org/drm/drm-intel tags/drm-intel-gt-next-2020-11-12-1

for you to fetch changes up to 695dc55b573985569259e18f8e6261a77924342b:

drm/i915/tgl: Fix Media power gate sequence. (2020-11-11 15:07:10 +0000)

----------------------------------------------------------------
Cross-subsystem Changes:
- DMA mapped scatterlist fixes in i915 to unblock merging of
https://lkml.org/lkml/2020/9/27/70 (Tvrtko, Tom)

Driver Changes:

- Fix for user reported issue #2381 (Graphical output stops with "switching to inteldrmfb from simple"):
Mark ininitial fb obj as WT on eLLC machines to avoid rcu lockup during fbdev init (Ville, Chris)
- Fix for Tigerlake (and earlier) to avoid spurious empty CSB events leading to hang (Chris, Bruce)
- Delay execlist processing for Tigerlake to avoid hang (Chris)
- Fix for Tigerlake RCS engine health check through heartbeat (Chris)
- Fix for Tigerlake reserved MOCS entries (Ayaz, Chris)
- Fix Media power gate sequence on Tigerlake (Rodrigo)
- Enable eLLC caching of display buffers for SKL+ (Ville)
- Support parsing of oversize batches on Gen9 (Matt, Chris)
- Exclude low pages (128KiB) of stolen from use to avoid thrashing during reset (Chris)
- Flush engines before Tigerlake breadcrumbs (Chris)

- Use the local HWSP offset during submission (Chris)
- Flush coherency domains on first set-domain-ioctl (Chris, Zbigniew)
- Use the active reference on the vma while capturing to avoid use-after-free (Chris)
- Fix MOCS PTE setting for gen9+ (Ville)
- Avoid NULL dereference on IPS driver callback while unbinding i915 (Chris)
- Avoid NULL dereference from PT/PD stash allocation error (Matt)
- Hold request reference for canceling an active context (Chris)
- Avoid infinite loop on x86-32 when mapping a lot of objects (Chris)
- Disallow WC mappings when processor doesn't support them (Chris)
- Return correct error in i915_gem_object_copy_blt() error path (Dan)
- Return correct error in intel_context_create_request() error path (Maarten)
- Tune down GuC communication enabled/disabled messages to debug (Jani)
- Fix rebased commit "Remove i915_request.lock requirement for execution callbacks" (Chris)
- Cancel outstanding work after disabling heartbeats on an engine (Chris)
- Signal cancelled requests (Chris)
- Retire cancelled requests on unload (Chris)
- Scrub HW state on driver remove (Chris)
- Undo forced context restores after trivial preemptions (Chris)
- Handle PCI unbind in PMU code (Tvrtko)
- Fix CPU hotplug with multiple GPUs in PMU code (Trtkko)
- Correctly set SFC capability for video engines (Venkata)

- Update GuC code to use firmware v49.0.1 (John, Matthew B., Daniele, Oscar, Michel, Rodrigo, Michal)
- Improve GuC warnings on loading failure (John)
- Avoid ownership race in buffer pool by clearing age (Chris)
- Use MMIO to read CSB in case of failure (Chris, Mika)
- Show engine properties in engine state dump to indicate changes (Chris, Joonas)
- Break up error capture compression loops with cond_resched() (Chris)
- Reduce GPU error capture mutex hold time to avoid khungtaskd (Chris)
- Serialise debugfs i915_gem_objects with ctx->mutex (Chris)
- Always test execution status on closing the context and close if not persistent (Chris)
- Avoid mixing integer types during batch copies (Chris, Jared)
- Skip over MI_NOOP when parsing to avoid overhead (Chris)
- Hold onto an explicit ref to i915_vma_work.pinned (Chris)
- Perform all asynchronous waits prior to marking payload start (Chris)
- Pull phys pread/pwrite implementations to the backend (Matt)

- Improve record of hung engines in error state (Tvrtko)
- Allow backends to override pread implementation (Matt)
- Reinforce LRC poisoning checks to confirm context survives execution (Chris)
- Fix memory region max size calculation (Matt)
- Fix order when adding blocks to memory region (Matt)
- Eliminate unused intel_virtual_engine_get_sibling func (Chris)
- Cleanup kasan warning for on-stack (unsigned long) casting (Chris)
- Onion unwind for scratch page allocation failure (Chris)
- Poison stolen pages before use (Chris)
- Selftest improvements (Chris)

----------------------------------------------------------------
Ayaz A Siddiqui (1):
drm/i915/gt: Initialize reserved and unspecified MOCS indices

Chris Wilson (46):
drm/i915/gem: Avoid implicit vmap for highmem on x86-32
drm/i915/gem: Prevent using pgprot_writecombine() if PAT is not supported
drm/i915/gt: Clear the buffer pool age before use
drm/i915/gt: Check for a registered driver with IPS
drm/i915/gt: Widen CSB pointer to u64 for the parsers
drm/i915/gt: Wait for CSB entries on Tigerlake
drm/i915/gt: Apply the CSB w/a for all
drm/i915/gt: Use a mmio read of the CSB in case of failure
drm/i915/gt: Show engine properties in the pretty printer
drm/i915: Break up error capture compression loops with cond_resched()
drm/i915: Reduce GPU error capture mutex hold time
drm/i915/gt: Remove defunct intel_virtual_engine_get_sibling()
drm/i915/gem: Serialise debugfs i915_gem_objects with ctx->mutex
drm/i915: Redo "Remove i915_request.lock requirement for execution callbacks"
drm/i915/gem: Hold request reference for canceling an active context
drm/i915: Cancel outstanding work after disabling heartbeats on an engine
drm/i915/gt: Always send a pulse down the engine after disabling heartbeat
drm/i915/gem: Always test execution status on closing the context
drm/i915: Avoid mixing integer types during batch copies
drm/i915/gt: Signal cancelled requests
drm/i915/selftests: Finish pending mock requests on cancellation.
drm/i915/gt: Retire cancelled requests on unload
drm/i915: Skip over MI_NOOP when parsing
drm/i915/gt: Scrub HW state on remove
drm/i915/gt: Track the most recent pulse for the heartbeat
drm/i915/gt: Fixup tgl mocs for PTE tracking
drm/i915/gem: Support parsing of oversize batches
drm/i915/gt: Delay execlist processing for tgl
drm/i915/gt: Undo forced context restores after trivial preemptions
drm/i915/gt: Cleanup kasan warning for on-stack (unsigned long) casting
drm/i915/gt: Confirm the context survives execution
drm/i915: Use the active reference on the vma while capturing
drm/i915/gt: Onion unwind for scratch page allocation failure
drm/i915/gem: Poison stolen pages before use
drm/i915: Exclude low pages (128KiB) of stolen from use
drm/i915/selftests: Flush the old heartbeat more gently
drm/i915/gem: Flush coherency domains on first set-domain-ioctl
drm/i915/selftests: Skip RPS tests on Ironlake (only IPS)
drm/i915/gt: Use the local HWSP offset during submission
drm/i915/selftests: Exercise intel_timeline_read_hwsp()
drm/i915/gem: Avoid synchronous binds deep within locks
drm/i915/gt: Expose more parameters for emitting writes into the ring
drm/i915/gt: Flush xcs before tgl breadcrumbs
drm/i915: Hold onto an explicit ref to i915_vma_work.pinned
drm/i915/gem: Perform all asynchronous waits prior to marking payload start
drm/i915/gem: Pull phys pread/pwrite implementations to the backend

Dan Carpenter (1):
drm/i915: Fix an error code i915_gem_object_copy_blt()

Jani Nikula (1):
drm/i915/uc: tune down GuC communication enabled/disabled messages

John Harrison (3):
drm/i915/guc: Update to use firmware v49.0.1
drm/i915/guc: Improved reporting when GuC fails to load
drm/i915/guc: Clear pointers on free

Maarten Lankhorst (1):
drm/i915: Fix uninitialised variable in intel_context_create_request.

Matthew Auld (4):
drm/i915: check i915_vm_alloc_pt_stash for errors
drm/i915/region: fix max size calculation
drm/i915/gem: Allow backends to override pread implementation
drm/i915/region: fix order when adding blocks

Rodrigo Vivi (1):
drm/i915/tgl: Fix Media power gate sequence.

Tvrtko Ursulin (6):
drm/i915: Fix DMA mapped scatterlist walks
drm/i915: Fix DMA mapped scatterlist lookup
drm/i915/pmu: Handle PCI unbind
drm/i915/pmu: Fix CPU hotplug with multiple GPUs
drm/i915: Improve record of hung engines in error state
drm/i915: Use ABI engine class in error state ecode

Venkata Sandeep Dhanalakota (1):
drm/i915: Correctly set SFC capability for video engines

Ville Syrjälä (3):
drm/i915: Mark ininitial fb obj as WT on eLLC machines to avoid rcu lockup during fbdev init
drm/i915: Fix MOCS PTE setting for gen9+
drm/i915: Enable eLLC caching of display buffers for SKL+

drivers/gpu/drm/i915/Kconfig.debug | 1 +
drivers/gpu/drm/i915/display/intel_display.c | 8 +
drivers/gpu/drm/i915/gem/i915_gem_client_blt.c | 18 +-
drivers/gpu/drm/i915/gem/i915_gem_context.c | 73 ++--
drivers/gpu/drm/i915/gem/i915_gem_domain.c | 28 +-
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 17 +-
drivers/gpu/drm/i915/gem/i915_gem_object.c | 2 +
drivers/gpu/drm/i915/gem/i915_gem_object.h | 20 +-
drivers/gpu/drm/i915/gem/i915_gem_object_blt.c | 2 +-
drivers/gpu/drm/i915/gem/i915_gem_object_types.h | 19 +-
drivers/gpu/drm/i915/gem/i915_gem_pages.c | 51 ++-
drivers/gpu/drm/i915/gem/i915_gem_phys.c | 55 +++
drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 54 ++-
drivers/gpu/drm/i915/gem/i915_gem_stolen.h | 2 +
drivers/gpu/drm/i915/gt/gen6_ppgtt.c | 24 +-
drivers/gpu/drm/i915/gt/gen8_ppgtt.c | 20 +-
drivers/gpu/drm/i915/gt/intel_context.c | 1 +
drivers/gpu/drm/i915/gt/intel_engine.h | 64 ++--
drivers/gpu/drm/i915/gt/intel_engine_cs.c | 42 ++-
drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c | 112 +++---
drivers/gpu/drm/i915/gt/intel_engine_pm.c | 37 +-
drivers/gpu/drm/i915/gt/intel_engine_types.h | 2 +-
drivers/gpu/drm/i915/gt/intel_ggtt.c | 4 +-
drivers/gpu/drm/i915/gt/intel_gt.c | 11 +-
drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.c | 2 +
drivers/gpu/drm/i915/gt/intel_gtt.c | 10 +-
drivers/gpu/drm/i915/gt/intel_gtt.h | 2 +-
drivers/gpu/drm/i915/gt/intel_lrc.c | 162 ++++++---
drivers/gpu/drm/i915/gt/intel_lrc.h | 4 -
drivers/gpu/drm/i915/gt/intel_lrc_reg.h | 3 +
drivers/gpu/drm/i915/gt/intel_mocs.c | 21 +-
drivers/gpu/drm/i915/gt/intel_rc6.c | 22 +-
drivers/gpu/drm/i915/gt/intel_reset.c | 4 +-
drivers/gpu/drm/i915/gt/intel_ring_submission.c | 1 +
drivers/gpu/drm/i915/gt/intel_rps.c | 2 +-
drivers/gpu/drm/i915/gt/intel_timeline.c | 18 +-
drivers/gpu/drm/i915/gt/intel_timeline_types.h | 2 +
drivers/gpu/drm/i915/gt/mock_engine.c | 29 +-
.../gpu/drm/i915/gt/selftest_engine_heartbeat.c | 13 +-
drivers/gpu/drm/i915/gt/selftest_reset.c | 196 +++++++++++
drivers/gpu/drm/i915/gt/selftest_rps.c | 8 +-
drivers/gpu/drm/i915/gt/selftest_timeline.c | 378 ++++++++++++++++++++-
drivers/gpu/drm/i915/gt/sysfs_engines.c | 10 +-
drivers/gpu/drm/i915/gt/uc/intel_guc.c | 18 -
drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c | 132 +++++--
drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c | 1 +
drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c | 31 +-
drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h | 80 +++--
drivers/gpu/drm/i915/gt/uc/intel_guc_reg.h | 5 +
drivers/gpu/drm/i915/gt/uc/intel_uc.c | 6 +-
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 27 +-
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.h | 2 +
drivers/gpu/drm/i915/gt/uc/intel_uc_fw_abi.h | 6 +-
drivers/gpu/drm/i915/i915_cmd_parser.c | 77 +++--
drivers/gpu/drm/i915/i915_debugfs.c | 4 +-
drivers/gpu/drm/i915/i915_drv.h | 7 +-
drivers/gpu/drm/i915/i915_gem.c | 32 +-
drivers/gpu/drm/i915/i915_gpu_error.c | 74 ++--
drivers/gpu/drm/i915/i915_gpu_error.h | 10 +-
drivers/gpu/drm/i915/i915_pci.c | 7 +-
drivers/gpu/drm/i915/i915_pmu.c | 96 ++++--
drivers/gpu/drm/i915/i915_pmu.h | 10 +-
drivers/gpu/drm/i915/i915_reg.h | 12 +-
drivers/gpu/drm/i915/i915_request.c | 17 +-
drivers/gpu/drm/i915/i915_scatterlist.h | 17 +-
drivers/gpu/drm/i915/i915_vma.c | 14 +-
drivers/gpu/drm/i915/intel_memory_region.c | 4 +-
drivers/gpu/drm/i915/intel_pm.c | 13 -
.../gpu/drm/i915/selftests/intel_memory_region.c | 77 +++++
drivers/gpu/drm/i915/selftests/mock_region.c | 2 +-
70 files changed, 1759 insertions(+), 576 deletions(-)
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org