[PULL] drm-intel-next-fixes

Dave Airlie airlied at gmail.com
Mon Aug 10 07:31:06 UTC 2020


On Fri, 31 Jul 2020 at 02:26, Joonas Lahtinen
<joonas.lahtinen at linux.intel.com> wrote:
>
> Hi Dave & Daniel,
>
> (Covering for Jani here for drm-intel-next-fixes)
>
> 5 new commits over drm-intel-next here.
>
> Fix for KASAN detected race condition and linux-next scheduler
> WARNs. Patch to avoid IRQ spinlock and Cc: stable PMU refcount
> update.
>
> CI machinery needed some kicking, so results didn't appear
> at first. BAT now passed, shards should shortly be availabl
>
> CI_DINF_202 at https://intel-gfx-ci.01.org/tree/drm-intel-next-fixes/combined-alt.html?
>

I've been sitting on this, but I really am having trouble convincing
myself to pull it.

I've pulled it 2-3 times now, looked at it a few times, unpulled it.

drm/i915: Be wary of data races when reading the active execlists

To me reads, like we avoided locking, we tried to fly too close to the
sun, it burned us and we fell back to earth. Instead of not flying too
close to the sun, we just stuck some bandaids on the wings.

drm/i915: Remove i915_request.lock requirement for execution callbacks

at least it stops opencoding an __llist_add function that was likely
dubious to begin with, but I'm having trouble convincing myself this
is a "fix" for anything other than we dug a hole, CI maybe coughed a
bit, keep digging.

drm/i915: Filter wake_flags passed to default_wake_function

I replied to elsewhere, but the whole (pos->func ==
autoremove_wake_function) idiom just seems wrong, I'd probably have to
point it out to Linus to ask what is right, but we already do it
elsewhere in the file, makes me wonder who reviewed this in the first
place.

Like this stuff has been getting past me for years but I'm not happy
about it anymore, I'm going to just be grumpy asshole going forward.
If we introduced scheduler races in linux-next, I want to see reverts,
and reverts only until we stopped introducing them.

drm/i915: Copy default modparams to mock i915_device
drm/i915: Provide the perf pmu.module

are probably acceptable.

Dave.





> Regards, Joonas
>
> ***
>
> drm-intel-next-fixes-2020-07-30-1:
>
> - Fixes for linux-next introduced scheduler races
> - Fix for KASAN race in active execlists
> - Fix for previous breadcrumb breadcrumb code to avoid IRQ spinlock
> - Cc: stable patch for PMU refcount
>
> The following changes since commit d524b87f77364db096855d7eb714ffacec974ddf:
>
>   drm/i915: Update DRIVER_DATE to 20200702 (2020-07-02 21:25:28 +0300)
>
> are available in the Git repository at:
>
>   git://anongit.freedesktop.org/drm/drm-intel tags/drm-intel-next-fixes-2020-07-30-1
>
> for you to fetch changes up to 6bd0b413618ffb50f900ec770283d8c2217d069f:
>
>   drm/i915: Filter wake_flags passed to default_wake_function (2020-07-30 15:33:37 +0300)
>
> ----------------------------------------------------------------
> - Fixes for linux-next introduced scheduler races
> - Fix for KASAN race in active execlists
> - Fix for previous breadcrumb breadcrumb code to avoid IRQ spinlock
> - Cc: stable patch for PMU refcount
>
> ----------------------------------------------------------------
> Abdiel Janulgue (2):
>       drm/i915/dg1: add initial DG-1 definitions
>       drm/i915/dg1: Add DG1 PCI IDs
>
> Anshuman Gupta (1):
>       drm/i915/hdcp: Update CP as per the kernel internal state
>
> Anusha Srivatsa (1):
>       drm/i915/dg1: Remove SHPD_FILTER_CNT register programming
>
> Chris Wilson (27):
>       drm/i915/gem: Only revoke the GGTT mmappings on aperture detiling changes
>       drm/i915/gem: Only revoke mmap handlers if active
>       drm/i915/gem: Drop forced struct_mutex from shrinker_taints_mutex
>       drm/i915: Also drop vm.ref along error paths for vma construction
>       drm/i915/gem: Split the context's obj:vma lut into its own mutex
>       drm/i915: Export ppgtt_bind_vma
>       drm/i915/gt: Pin the rings before marking active
>       drm/i915: Update dma-attributes for our sg DMA
>       drm/i915/gem: Unpin idle contexts from kswapd reclaim
>       drm/i915/gt: Replace opencoded i915_gem_object_pin_map()
>       drm/i915: Release shortlived maps of longlived objects
>       drm/i915: Remove i915_gem_object_get_dirty_page()
>       drm/i915/gt: Optimise aliasing-ppgtt allocations
>       drm/i915/selftest: Check that GPR are restored across noa_wait
>       drm/i915/gt: Be defensive in the face of false CS events
>       drm/i915: Pull printing GT capabilities on error to err_print_gt
>       drm/i915/gt: Always reset the engine, even if inactive, on execlists failure
>       drm/i915/gt: Ignore irq enabling on the virtual engines
>       drm/i915/gt: Only swap to a random sibling once upon creation
>       drm/i915: Skip signaling a signaled request
>       drm/i915/gt: Trace placement of timeline HWSP
>       drm/i915/gt: Assert the kernel context is using the HWSP
>       drm/i915: Provide the perf pmu.module
>       drm/i915: Be wary of data races when reading the active execlists
>       drm/i915: Remove i915_request.lock requirement for execution callbacks
>       drm/i915: Copy default modparams to mock i915_device
>       drm/i915: Filter wake_flags passed to default_wake_function
>
> Colin Ian King (1):
>       drm/i915/selftest: fix an error return path where err is not being set
>
> Dan Carpenter (1):
>       drm/i915/selftest: Fix an error code in live_noa_gpr()
>
> Daniele Ceraolo Spurio (8):
>       drm/i915: Convert device_info to uncore/de_read
>       drm/i915: Use the gt in HAS_ENGINE
>       drm/i915: Move engine-related mmio init to engines_init_mmio
>       drm/i915: Move the engine mask to intel_gt_info
>       drm/i915: Introduce gt_init_mmio
>       drm/i915/sseu: Move sseu detection and dump to intel_sseu
>       drm/i915: gt-fy sseu debugfs
>       drm/i915: Move sseu debugfs under gt/
>
> Flavio Suligoi (1):
>       drm/i915: Fix spelling mistake in i915_reg.h
>
> Jani Nikula (1):
>       drm/i915: Update DRIVER_DATE to 20200715
>
> José Roberto de Souza (6):
>       drm/i915/display: Implement new combo phy initialization step
>       drm/i915/ehl: Add new PCI ids
>       drm/i915/tgl: Implement WAs 18011464164 and 22010931296
>       drm/i915/display: Replace drm_i915_private in voltage swing functions by intel_encoder
>       drm/i915/display: Remove port and phy from voltage swing functions
>       drm/i915/bios: Parse HOBL parameter
>
> Lee Shawn C (1):
>       drm/i915/mst: filter out the display mode exceed sink's capability
>
> Lucas De Marchi (4):
>       drm/i915/display: prefer dig_port to reference intel_digital_port
>       drm/i915: do not read swizzle info if unavailable
>       drm/i915/dg1: add support for the master unit interrupt
>       drm/i915/dg1: Add fake PCH
>
> Lyude Paul (1):
>       drm/probe_helper: Add drm_connector_helper_funcs.mode_valid_ctx
>
> Maarten Lankhorst (1):
>       drm/i915: Move cec_notifier to intel_hdmi_connector_unregister, v2.
>
> Manasi Navare (2):
>       drm/i915/dp: Helper for checking DDI_BUF_CTL Idle status
>       drm/i915/dp: Helper to check for DDI BUF status to get active
>
> Matt Atwood (1):
>       Revert "drm/i915/dp: Correctly advertise HBR3 for GEN11+"
>
> Michał Winiarski (6):
>       drm/i915/guc: Expand guc_info debugfs with more information
>       drm/i915: Reboot CI if we get wedged during driver init
>       drm/i915: Print caller when tainting for CI
>       drm/i915: Don't taint when using fault injection
>       drm/i915/uc: Extract uc usage details into separate debugfs
>       drm/i915/huc: Adjust HuC state accordingly after GuC fetch error
>
> Ramalingam C (1):
>       drm/i915/hdcp: Fix the return handling of drm_hdcp_check_ksvs_revoked
>
> Stanislav Lisovskiy (1):
>       drm/i915/tgl: Clamp min_cdclk to max_cdclk_freq to unblock 8K
>
> Stuart Summers (1):
>       drm/i915: Add has_master_unit_irq flag
>
> Sudeep Holla (1):
>       drm/i915/selftests: Fix compare functions provided for sorting
>
> Umesh Nerlige Ramappa (1):
>       drm/i915/perf: Use GTT when saving/restoring engine GPR
>
> Venkata Sandeep Dhanalakota (1):
>       drm/i915/sseu: Move sseu_info under gt_info
>
> Ville Syrjälä (16):
>       drm/i915/fbc: Use the correct plane stride
>       drm/i915/fbc: Fix nuke for pre-snb platforms
>       drm/i915/fbc: Enable fbc on i865
>       drm/i915/fbc: Allow FBC to recompress after a 3D workload on i85x/i865
>       drm/i915/sdvo: Fix SDVO colorimetry bit defines
>       drm/i915/sdvo: Implement limited color range for SDVO HDMI properly
>       drm/i915: Reject DRM_MODE_FLAG_DBLCLK with DVI sinks
>       drm/i915/sdvo: Make SDVO deal with HDMI pixel repeat
>       drm/i915/sdvo: Make .get_modes() return the number of modes
>       drm/i915/dvo: Make .get_modes() return the number of modes
>       drm/i915: Move all FBC w/as to .init_clock_gating()
>       drm/i915: Don't do WaFbcTurnOffFbcWatermark for glk
>       drm/i915: Limit WaFbcHighMemBwCorruptionAvoidance to skl and bxt
>       drm/i915: Document FBC related w/as more thoroughly
>       drm/i915: WARN if max vswing/pre-emphasis violates the DP spec
>       drm/i915: Recalculate FBC w/a stride when needed
>
> YueHaibing (1):
>       drm/i915: Remove unused inline function drain_delayed_work()
>
>  drivers/gpu/drm/drm_crtc_helper_internal.h         |   7 +-
>  drivers/gpu/drm/drm_probe_helper.c                 |  97 +--
>  drivers/gpu/drm/i915/Makefile                      |   1 +
>  drivers/gpu/drm/i915/display/intel_bios.c          |   3 +
>  drivers/gpu/drm/i915/display/intel_cdclk.c         |  11 +-
>  drivers/gpu/drm/i915/display/intel_combo_phy.c     |  25 +
>  drivers/gpu/drm/i915/display/intel_ddi.c           | 348 ++++++-----
>  drivers/gpu/drm/i915/display/intel_display.c       |  12 +-
>  drivers/gpu/drm/i915/display/intel_display.h       |   2 +-
>  .../gpu/drm/i915/display/intel_display_debugfs.c   |  12 +-
>  drivers/gpu/drm/i915/display/intel_display_power.c |   4 +-
>  drivers/gpu/drm/i915/display/intel_display_types.h |  40 +-
>  drivers/gpu/drm/i915/display/intel_dp.c            | 366 ++++++------
>  drivers/gpu/drm/i915/display/intel_dp.h            |   4 +-
>  .../gpu/drm/i915/display/intel_dp_link_training.c  |   9 +
>  drivers/gpu/drm/i915/display/intel_dp_mst.c        | 129 ++--
>  drivers/gpu/drm/i915/display/intel_dp_mst.h        |   6 +-
>  drivers/gpu/drm/i915/display/intel_dpio_phy.c      |  38 +-
>  drivers/gpu/drm/i915/display/intel_dvo.c           |  14 +-
>  drivers/gpu/drm/i915/display/intel_fbc.c           |  98 +++-
>  drivers/gpu/drm/i915/display/intel_hdcp.c          | 153 ++---
>  drivers/gpu/drm/i915/display/intel_hdmi.c          | 277 +++++----
>  drivers/gpu/drm/i915/display/intel_hdmi.h          |   6 +-
>  drivers/gpu/drm/i915/display/intel_lspcon.c        |   8 +-
>  drivers/gpu/drm/i915/display/intel_lspcon.h        |   2 +-
>  drivers/gpu/drm/i915/display/intel_psr.c           |   4 +-
>  drivers/gpu/drm/i915/display/intel_sdvo.c          | 145 +++--
>  drivers/gpu/drm/i915/display/intel_sdvo_regs.h     |   8 +-
>  drivers/gpu/drm/i915/display/intel_vbt_defs.h      |   1 +
>  drivers/gpu/drm/i915/display/intel_vdsc.c          |   8 +-
>  drivers/gpu/drm/i915/gem/i915_gem_client_blt.c     |   9 +-
>  drivers/gpu/drm/i915/gem/i915_gem_context.c        |  18 +-
>  drivers/gpu/drm/i915/gem/i915_gem_context.h        |   2 +-
>  drivers/gpu/drm/i915/gem/i915_gem_context_types.h  |   1 +
>  drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c     |  22 +-
>  drivers/gpu/drm/i915/gem/i915_gem_mman.c           |  15 +-
>  drivers/gpu/drm/i915/gem/i915_gem_mman.h           |   3 +-
>  drivers/gpu/drm/i915/gem/i915_gem_object.c         |  41 +-
>  drivers/gpu/drm/i915/gem/i915_gem_object.h         |   6 +-
>  drivers/gpu/drm/i915/gem/i915_gem_pages.c          |  29 +-
>  drivers/gpu/drm/i915/gem/i915_gem_shrinker.c       |  36 +-
>  drivers/gpu/drm/i915/gem/i915_gem_tiling.c         |   2 +-
>  .../gpu/drm/i915/gem/selftests/i915_gem_context.c  |   5 +-
>  drivers/gpu/drm/i915/gem/selftests/mock_context.c  |   4 +-
>  drivers/gpu/drm/i915/gt/debugfs_gt.c               |   2 +
>  drivers/gpu/drm/i915/gt/gen6_ppgtt.c               |  22 +-
>  drivers/gpu/drm/i915/gt/gen7_renderclear.c         |   2 +-
>  drivers/gpu/drm/i915/gt/intel_breadcrumbs.c        |   7 +-
>  drivers/gpu/drm/i915/gt/intel_context.c            |  12 +-
>  drivers/gpu/drm/i915/gt/intel_context_sseu.c       |   2 +-
>  drivers/gpu/drm/i915/gt/intel_engine_cs.c          |  91 ++-
>  drivers/gpu/drm/i915/gt/intel_engine_pm.c          |   1 +
>  drivers/gpu/drm/i915/gt/intel_engine_types.h       |   4 +
>  drivers/gpu/drm/i915/gt/intel_engine_user.c        |   2 +-
>  drivers/gpu/drm/i915/gt/intel_ggtt.c               |  49 +-
>  drivers/gpu/drm/i915/gt/intel_gt.c                 |  18 +-
>  drivers/gpu/drm/i915/gt/intel_gt.h                 |  17 +-
>  drivers/gpu/drm/i915/gt/intel_gt_irq.c             |   5 +-
>  drivers/gpu/drm/i915/gt/intel_gt_pm.c              |   2 +-
>  drivers/gpu/drm/i915/gt/intel_gt_requests.c        |   9 +-
>  drivers/gpu/drm/i915/gt/intel_gt_types.h           |  11 +
>  drivers/gpu/drm/i915/gt/intel_gtt.h                |  13 +-
>  drivers/gpu/drm/i915/gt/intel_lrc.c                | 107 ++--
>  drivers/gpu/drm/i915/gt/intel_ppgtt.c              |  19 +-
>  drivers/gpu/drm/i915/gt/intel_renderstate.c        |   2 +-
>  drivers/gpu/drm/i915/gt/intel_reset.c              |  23 +-
>  drivers/gpu/drm/i915/gt/intel_reset.h              |  10 +-
>  drivers/gpu/drm/i915/gt/intel_reset_types.h        |   7 +-
>  drivers/gpu/drm/i915/gt/intel_ring_submission.c    |   4 +-
>  drivers/gpu/drm/i915/gt/intel_rps.c                |   3 +-
>  drivers/gpu/drm/i915/gt/intel_sseu.c               | 591 ++++++++++++++++++-
>  drivers/gpu/drm/i915/gt/intel_sseu.h               |  10 +-
>  drivers/gpu/drm/i915/gt/intel_sseu_debugfs.c       | 306 ++++++++++
>  drivers/gpu/drm/i915/gt/intel_sseu_debugfs.h       |  17 +
>  drivers/gpu/drm/i915/gt/intel_timeline.c           |   7 +
>  drivers/gpu/drm/i915/gt/intel_workarounds.c        |  21 +-
>  drivers/gpu/drm/i915/gt/selftest_lrc.c             |   8 +-
>  drivers/gpu/drm/i915/gt/selftest_rc6.c             |   2 +-
>  drivers/gpu/drm/i915/gt/selftest_rps.c             |   8 +-
>  drivers/gpu/drm/i915/gt/selftest_timeline.c        |  13 +-
>  drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c         |  10 +-
>  drivers/gpu/drm/i915/gt/uc/intel_uc.c              |  11 +-
>  drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.c      |  29 +
>  drivers/gpu/drm/i915/gvt/handlers.c                |   4 +-
>  drivers/gpu/drm/i915/gvt/interrupt.c               |   2 +-
>  drivers/gpu/drm/i915/gvt/mmio_context.c            |   2 +-
>  drivers/gpu/drm/i915/i915_debugfs.c                | 286 +--------
>  drivers/gpu/drm/i915/i915_drv.c                    |   9 +-
>  drivers/gpu/drm/i915/i915_drv.h                    |  32 +-
>  drivers/gpu/drm/i915/i915_gem.h                    |   2 +-
>  drivers/gpu/drm/i915/i915_gem_gtt.c                |   2 +
>  drivers/gpu/drm/i915/i915_getparam.c               |   2 +-
>  drivers/gpu/drm/i915/i915_gpu_error.c              |  34 +-
>  drivers/gpu/drm/i915/i915_gpu_error.h              |   3 +
>  drivers/gpu/drm/i915/i915_irq.c                    |  59 +-
>  drivers/gpu/drm/i915/i915_pci.c                    |  55 +-
>  drivers/gpu/drm/i915/i915_perf.c                   |  14 +-
>  drivers/gpu/drm/i915/i915_pmu.c                    |   7 +-
>  drivers/gpu/drm/i915/i915_query.c                  |   2 +-
>  drivers/gpu/drm/i915/i915_reg.h                    |  18 +-
>  drivers/gpu/drm/i915/i915_request.c                | 165 ++++--
>  drivers/gpu/drm/i915/i915_sw_fence.c               |  10 +-
>  drivers/gpu/drm/i915/i915_utils.c                  |  10 +
>  drivers/gpu/drm/i915/i915_utils.h                  |  16 +-
>  drivers/gpu/drm/i915/i915_vma.c                    |  24 +-
>  drivers/gpu/drm/i915/i915_vma_types.h              |   1 -
>  drivers/gpu/drm/i915/intel_device_info.c           | 653 +--------------------
>  drivers/gpu/drm/i915/intel_device_info.h           |  16 +-
>  drivers/gpu/drm/i915/intel_pch.c                   |   6 +
>  drivers/gpu/drm/i915/intel_pch.h                   |   4 +
>  drivers/gpu/drm/i915/intel_pm.c                    | 108 +++-
>  drivers/gpu/drm/i915/intel_uncore.c                |  20 +-
>  drivers/gpu/drm/i915/intel_uncore.h                |   4 +-
>  drivers/gpu/drm/i915/selftests/i915_perf.c         | 133 +++++
>  drivers/gpu/drm/i915/selftests/i915_request.c      |   2 +-
>  drivers/gpu/drm/i915/selftests/mock_gem_device.c   |   6 +-
>  drivers/gpu/drm/i915/selftests/mock_gtt.c          |  12 +-
>  include/drm/drm_modeset_helper_vtables.h           |  42 ++
>  include/drm/i915_pciids.h                          |   8 +
>  119 files changed, 3104 insertions(+), 2177 deletions(-)
>  create mode 100644 drivers/gpu/drm/i915/gt/intel_sseu_debugfs.c
>  create mode 100644 drivers/gpu/drm/i915/gt/intel_sseu_debugfs.h


More information about the dri-devel mailing list