linux/drivers/gpu/drm/i915
Ville Syrjälä 0f8839f5f3 drm/i915: Force state->modeset=true when distrust_bios_wm==true
Currently when we load the driver we set distrust_bios_wm=true, which
will cause active_pipe_changes to get flagged even when we're not
toggling any pipes on/off. The reason being that we want to fully
redistribute the dbuf among the active pipes and ignore whatever
state the firmware left behind.

Unfortunately when the code flags active_pipe_changes it doesn't
set state->modeset to true, which means the hardware dbuf state
won't actually get updated. Hence the hardware and software
states go out of sync, which can result in planes trying to use a
disabled dbuf slice. Suprisingly that only seems to corrupt the
display rather than making the whole display engine keel over.

Let's fix this for now by flagging state->modeset whenever
distrust_bios_wm is set.

Eventually we'll likely want to rip out all of this mess and
introduce proper statye tracking for dbuf. But that requires
more work. Toss in a FIXME to that effect.

Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Fixes: ff2cd8635e ("drm/i915: Correctly map DBUF slices to pipes")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200213140412.32697-4-stanislav.lisovskiy@intel.com
2020-02-15 19:20:41 +02:00
..
display drm/i915: Force state->modeset=true when distrust_bios_wm==true 2020-02-15 19:20:41 +02:00
gem drm/i915/selftests: Avoid choosing zero for phys_sz 2020-02-12 10:14:06 +00:00
gt drm/i915/selftests: Check for the error interrupt before we wait! 2020-02-14 15:47:24 +00:00
gvt Merge drm/drm-next into drm-intel-next-queued 2020-02-07 17:47:43 -08:00
oa drm/i915: reimplement header test feature 2020-01-02 12:24:10 +02:00
selftests drm/i915/gt: Rename i915_gem_restore_ggtt_mappings() for its new placement 2020-01-30 21:35:37 +00:00
.gitignore drm/i915: reimplement header test feature 2020-01-02 12:24:10 +02:00
i915_active_types.h drm/i915: Serialise i915_active_fence_set() with itself 2019-11-27 17:02:14 +00:00
i915_active.c drm/i915: Hold reference to previous active fence as we queue 2020-02-03 11:25:39 +00:00
i915_active.h drm/i915: Use the async worker to avoid reclaim tainting the ggtt->mutex 2020-01-30 21:35:43 +00:00
i915_buddy.c drn/i915: Break up long i915_buddy_free_list() with a cond_resched() 2019-12-30 12:10:38 +00:00
i915_buddy.h
i915_cmd_parser.c drm/i915/cmd_parser: conversion to struct drm_device logging macros. 2020-02-04 11:29:40 +02:00
i915_debugfs_params.c drm/i915: Include the debugfs params header for its own definition 2020-01-17 13:00:16 +00:00
i915_debugfs_params.h drm/i915/params: add i915 parameters to debugfs 2020-01-15 15:10:16 +02:00
i915_debugfs.c drm/i915: split out display debugfs to a separate file 2020-02-14 13:26:51 +02:00
i915_debugfs.h drm/i915: split out display debugfs to a separate file 2020-02-14 13:26:51 +02:00
i915_drv.c drm/i915: split out display debugfs to a separate file 2020-02-14 13:26:51 +02:00
i915_drv.h drm/i915/dc3co: Add description of how it works 2020-02-10 09:15:54 -08:00
i915_fixed.h
i915_gem_evict.c drm/i915: Ignore most failures during evict-vm 2019-12-05 13:50:39 +00:00
i915_gem_fence_reg.c drm/i915: conversion to drm_device logging macros when drm_i915_private is present. 2020-02-04 11:29:27 +02:00
i915_gem_fence_reg.h
i915_gem_gtt.c drm/i915: conversion to drm_device logging macros when drm_i915_private is present. 2020-02-04 11:29:27 +02:00
i915_gem_gtt.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
i915_gem.c drm/i915: Never allow userptr into the new mapping types 2020-02-08 11:26:03 +00:00
i915_gem.h i915 features for v5.6: 2019-12-27 15:25:04 +10:00
i915_getparam.c drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET 2019-12-04 15:11:44 +00:00
i915_globals.c drm/i915: Ratelimit i915_globals_park 2019-12-18 17:38:56 +00:00
i915_globals.h
i915_gpu_error.c drm/i915: move intel_csr.[ch] under display/ 2020-02-14 08:48:12 +02:00
i915_gpu_error.h drm/i915/gt: Hook up CS_MASTER_ERROR_INTERRUPT 2020-01-29 15:16:52 +00:00
i915_ioc32.c
i915_irq.c drm/i915: Sprinkle missing commas 2020-02-04 23:33:39 +02:00
i915_irq.h
i915_memcpy.c drm/i915: Align start for memcpy_from_wc 2019-12-11 22:40:41 +00:00
i915_memcpy.h drm/i915: Align start for memcpy_from_wc 2019-12-11 22:40:41 +00:00
i915_mm.c drm/i915/gem: Extend mmap support for lmem 2020-01-04 17:57:46 +00:00
i915_params.c drm/i915: Remove 'prefault_disable' modparam 2020-01-27 11:45:35 +00:00
i915_params.h drm/i915: Mark i915.reset as unsigned 2020-02-05 18:51:52 +00:00
i915_pci.c drm/i915: Fix force-probe failure message 2020-02-07 17:12:21 +00:00
i915_perf_types.h drm/i915/perf: Register sysctl path globally 2019-12-13 20:16:23 +00:00
i915_perf.c drm/i915: conversion to drm_device logging macros when drm_i915_private is present. 2020-02-04 11:29:27 +02:00
i915_perf.h drm/i915/perf: Register sysctl path globally 2019-12-13 20:16:23 +00:00
i915_pmu.c drm/i915: Make WARN* drm specific where drm_priv ptr is available 2020-01-22 17:54:33 +02:00
i915_pmu.h drm/i915/pmu: Ensure monotonic rc6 2019-12-23 14:17:22 +02:00
i915_priolist_types.h
i915_pvinfo.h
i915_query.c drm/i915/query: Align flavour of engine data lookup 2019-11-25 15:08:24 +02:00
i915_query.h
i915_reg.h drm/i915/debugfs: Remove i915_energy_uJ 2020-02-08 11:26:03 +00:00
i915_request.c drm/i915: Poison rings after use 2020-02-12 10:07:13 +00:00
i915_request.h drm/i915: Fix typo in kerneldoc function name 2020-01-17 13:20:18 +00:00
i915_scatterlist.c
i915_scatterlist.h
i915_scheduler_types.h
i915_scheduler.c drm/i915/gt: Protect execlists_hold/unhold from new waiters 2020-02-07 13:07:28 +00:00
i915_scheduler.h drm/i915: Use a ctor for TYPESAFE_BY_RCU i915_request 2019-11-22 10:47:38 +00:00
i915_selftest.h
i915_suspend.c
i915_suspend.h
i915_sw_fence_work.c drm/i915: Unpin vma->obj on early error 2019-12-18 10:13:03 +00:00
i915_sw_fence_work.h
i915_sw_fence.c drm/i915/gem: Don't leak non-persistent requests on changing engines 2020-02-11 21:58:39 +00:00
i915_sw_fence.h drm/i915/gem: Don't leak non-persistent requests on changing engines 2020-02-11 21:58:39 +00:00
i915_switcheroo.c
i915_switcheroo.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c drm/i915: conversion to drm_device logging macros when drm_i915_private is present. 2020-02-04 11:29:27 +02:00
i915_sysfs.h
i915_trace_points.c
i915_trace.h drm/i915/trace: i915_request.prio is a signed value 2020-01-28 15:53:36 +00:00
i915_user_extensions.c
i915_user_extensions.h
i915_utils.c drm-misc-next for v5.6: 2019-12-17 13:57:54 +01:00
i915_utils.h drm/i915: Improve i915_inject_probe_error macro 2019-12-12 12:35:17 +00:00
i915_vgpu.c drm/i915: conversion to new logging macros in i915/i915_vgpu.c 2020-01-17 17:41:33 +02:00
i915_vgpu.h
i915_vma_types.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
i915_vma.c drm/i915: Hold reference to previous active fence as we queue 2020-02-03 11:25:39 +00:00
i915_vma.h drm/i915: Use the async worker to avoid reclaim tainting the ggtt->mutex 2020-01-30 21:35:43 +00:00
intel_device_info.c drm/i915: conversion to new logging macros in i915/intel_device_info.c 2020-01-17 17:41:33 +02:00
intel_device_info.h drm/i915: Manipulate DBuf slices properly 2020-02-05 19:19:23 +02:00
intel_gvt.c drm/i915: convert to new logging macros in i915/intel_gvt.c 2020-01-17 17:44:19 +02:00
intel_gvt.h
intel_memory_region.c drm/i915: convert to new logging macros in i915/intel_memory_region.c 2020-01-17 17:44:19 +02:00
intel_memory_region.h drm/i915: lookup for mem_region of a mem_type 2020-01-05 01:08:09 +00:00
intel_pch.c drm/i915: Make WARN* drm specific where drm_priv ptr is available 2020-01-22 17:54:33 +02:00
intel_pch.h drm/i915: Fix detection for a CMP-V PCH 2019-11-18 16:36:03 +02:00
intel_pm.c drm/i915: Correctly map DBUF slices to pipes 2020-02-05 19:22:11 +02:00
intel_pm.h drm/i915: Manipulate DBuf slices properly 2020-02-05 19:19:23 +02:00
intel_region_lmem.c drm/i915/lmem: use new struct drm_device based logging macros. 2020-01-10 16:11:04 +02:00
intel_region_lmem.h
intel_runtime_pm.c
intel_runtime_pm.h
intel_sideband.c drm/i915: Make WARN* drm specific where drm_priv ptr is available 2020-01-22 17:54:33 +02:00
intel_sideband.h
intel_uncore.c drm/i915: Make WARN* drm specific where uncore or stream ptr is available 2020-01-22 17:57:39 +02:00
intel_uncore.h
intel_wakeref.c drm/i915/gt: Flush ongoing retires during wait_for_idle 2020-01-03 00:33:07 +00:00
intel_wakeref.h drm/i915/gt: Flush ongoing retires during wait_for_idle 2020-01-03 00:33:07 +00:00
intel_wopcm.c
intel_wopcm.h
Kconfig drm/i915: drop alpha_support for good in favour of force_probe 2020-01-22 10:51:32 +02:00
Kconfig.debug Merge drm/drm-next into drm-intel-next-queued 2019-12-11 11:13:50 +02:00
Kconfig.profile drm/i915: Default to a more lenient forced preemption timeout 2019-11-27 10:12:14 +02:00
Kconfig.unstable
Makefile drm/i915: split out display debugfs to a separate file 2020-02-14 13:26:51 +02:00