linux-sg2042/drivers/gpu/drm
Ville Syrjälä 5be6e33400 drm/i915: Do .init_clock_gating() earlier to avoid it clobbering watermarks
Currently ILK-BDW explicitly disable LP1+ watermarks from their
.init_clock_gating() hooks. Unfortunately that hook gets called way too
late since by that time we've already initialized all the watermark
state tracking which then gets out of sync with the hardware state.

We may eventually want to consider killing off the explicit LP1+
disable from .init_clock_gating(). In the meantime however, we can
avoid the problem by reordering the init sequence such that
intel_modeset_init_hw()->intel_init_clock_gating() gets called
prior to the hardware state takeover.

I suppose prior to the two stage watermark programming we were
magically saved by something that forced the watermarks to be
reprogrammed fully after .init_clock_gating() got called. But
now that no longer happens.

Note that the diff might look a bit odd as it kills off one
call of intel_update_cdclk(), but that's fine because
intel_modeset_init_hw() does the exact same thing. Previously
we just did it twice.

Actually even this new init sequence is pretty bogus as
.init_clock_gating() really should be called before any gem
hardware init since it can  configure various clock gating
workarounds and whatnot that affect the GT side as well. Also
intel_modeset_init() really should get split up into better
defined init stages. Another "fun" detail is that
intel_modeset_gem_init() is where RPS/RC6 gets configured.
Why that is done from the display code is beyond me. I've
decided to leave all this be for now, and just try to fix
the init sequence enough for watermarks to work.

Cc: stable@vger.kernel.org
Cc: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Cc: David Purton <dcpurton@marshwiggle.net>
Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reported-by: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Reported-by: David Purton <dcpurton@marshwiggle.net>
Tested-by: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96645
Fixes: ed4a6a7ca8 ("drm/i915: Add two-stage ILK-style watermark programming (v11)")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170220140443.30891-1-ville.syrjala@linux.intel.com
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2017-03-02 21:24:39 +02:00
..
amd Merge branch 'drm-next-4.11' of git://people.freedesktop.org/~agd5f/linux into drm-next 2017-02-24 08:35:23 +10:00
arc drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
arm drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
armada drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
ast Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
atmel-hlcdc drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
bochs drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
bridge drm/bridge/sii8620: enable interlace modes 2017-02-02 15:15:31 +05:30
cirrus drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
etnaviv drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
exynos Merge branch 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-next 2017-02-08 11:34:56 +10:00
fsl-dcu drm/fsl-dcu: check for clk_prepare_enable() error 2017-02-07 20:28:04 -08:00
gma500 drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
hisilicon drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
i2c drm/i2c: tda998x: fix spelling mistake 2016-11-18 00:00:40 +00:00
i810 drm/i810: drop device_is_agp callback 2017-01-26 10:44:43 +01:00
i915 drm/i915: Do .init_clock_gating() earlier to avoid it clobbering watermarks 2017-03-02 21:24:39 +02:00
imx imx-drm: TVE regulator, fb size limit, and ipu-v3 module fixes 2017-02-23 12:10:42 +10:00
lib drm: Add a simple generator of random permutations 2016-12-27 12:34:00 +01:00
mediatek drm: mediatek: use crtc helper drm_crtc_from_index() 2017-01-18 09:21:06 -05:00
meson drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
mga drm/mga: remove device_is_agp callback 2017-01-26 10:45:03 +01:00
mgag200 drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
msm Merge branch 'msm-next' of git://people.freedesktop.org/~robclark/linux into drm-next 2017-02-07 11:05:42 +10:00
mxsfb drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
nouveau Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
omapdrm drm/omapdrm: dispc: Refuse x-decimation above 4 for all but 8-bit formats 2017-02-16 14:11:08 +02:00
panel drm/panel: simple: Specify bus width and flags for EDT displays 2017-01-26 10:57:18 +01:00
qxl drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
r128
radeon Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
rcar-du drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
rockchip drm/rockchip: Use common IOMMU API to attach devices 2017-02-15 08:52:13 +08:00
savage drm: Change the return type of the unload hook to void 2017-01-09 11:25:22 +01:00
selftests drm: kselftest for drm_mm and bottom-up allocation 2017-02-03 11:36:49 +01:00
shmobile drm: Change the return type of the unload hook to void 2017-01-09 11:25:22 +01:00
sis drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
sti drm/sti: fix build warnings in sti_drv.c and sti_vtg.c files 2017-02-23 12:54:54 +10:00
sun4i drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
tdfx drm: define drm_compat_ioctl NULL on CONFIG_COMPAT=n and reduce #ifdefs 2016-11-02 11:33:47 -04:00
tegra drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
tilcdc drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
tinydrm drm/tinydrm: mipi-dbi: Fix field width specifier warning 2017-02-24 12:08:59 +10:00
ttm drm/ttm: fix use-after-free races in vm fault handling 2017-02-21 16:48:45 -05:00
udl drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
vc4 Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
vgem drm/vgem: Switch to reservation_object_lock() helpers 2017-01-24 11:00:23 +01:00
via drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
virtio drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
vmwgfx drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
zte drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
Kconfig drm: Add DRM support for tiny LCD displays 2017-02-18 18:04:58 +01:00
Makefile drm: Add DRM support for tiny LCD displays 2017-02-18 18:04:58 +01:00
ati_pcigart.c
drm_agpsupport.c drm/i810: drop device_is_agp callback 2017-01-26 10:44:43 +01:00
drm_atomic.c Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
drm_atomic_helper.c drm/atomic: fix an error code in mode_fixup() 2017-02-08 16:15:42 +01:00
drm_auth.c drm/core: Use recommened kerneldoc for struct member refs 2017-01-25 16:22:42 +01:00
drm_blend.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_bridge.c drm/bridge: Use recommened kerneldoc for struct member refs 2017-01-02 09:17:26 +01:00
drm_bufs.c
drm_cache.c drm: Update drm_cache.c to pull in the new drm_cache.h 2017-01-24 11:00:22 +01:00
drm_color_mgmt.c drm/color: un-inline drm_color_lut_extract() 2017-01-31 15:31:58 +02:00
drm_connector.c Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
drm_context.c
drm_crtc.c drm: s/drm_crtc_get_hv_timings/drm_mode_get_hv_timings/ 2017-01-26 10:46:28 +01:00
drm_crtc_helper.c drm/kms-helpers: Use recommened kerneldoc for struct member refs 2017-01-25 16:18:57 +01:00
drm_crtc_helper_internal.h
drm_crtc_internal.h Revert "drm: Resurrect atomic rmfb code, v3" 2017-02-17 12:39:04 +10:00
drm_debugfs.c drm/atomic: Remove drm_atomic_debugfs_cleanup() 2017-01-27 09:02:03 +01:00
drm_debugfs_crc.c drm: crc: Call wake_up_interruptible() each time there is a new CRC entry 2017-01-06 15:23:19 +01:00
drm_dma.c
drm_dp_aux_dev.c
drm_dp_dual_mode_helper.c
drm_dp_helper.c drm/kms-helpers: Use recommened kerneldoc for struct member refs 2017-01-25 16:18:57 +01:00
drm_dp_mst_topology.c drm/dp: Store drm_device in MST topology manager 2017-01-25 06:01:48 +01:00
drm_drv.c Linux 4.10-rc8 2017-02-23 12:10:12 +10:00
drm_dumb_buffers.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_edid.c drm: Clean up the 1366x768 fixup codes 2017-02-01 19:01:47 +02:00
drm_edid_load.c
drm_encoder.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_encoder_slave.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_fb_cma_helper.c drm: Rely on mode_config data for fb_helper initialization 2017-02-02 19:12:00 +01:00
drm_fb_helper.c drm: Cancel drm_fb_helper_resume_work on unload 2017-02-08 16:15:42 +01:00
drm_flip_work.c
drm_fops.c drm/core: Use recommened kerneldoc for struct member refs 2017-01-25 16:22:42 +01:00
drm_fourcc.c drm: move allocation out of drm_get_format_name() 2016-11-12 14:19:38 +01:00
drm_framebuffer.c Revert "drm: Resurrect atomic rmfb code, v3" 2017-02-17 12:39:04 +10:00
drm_gem.c drm/gem|prime|mm: Use recommened kerneldoc for struct member refs 2017-01-25 16:20:21 +01:00
drm_gem_cma_helper.c drm: allow to use mmuless SoC 2017-01-06 11:04:54 +01:00
drm_global.c drm: Update TTM initialization documentation 2016-12-30 12:52:10 +01:00
drm_hashtab.c
drm_info.c
drm_internal.h drm: remove device_is_agp callback 2017-01-26 10:45:14 +01:00
drm_ioc32.c
drm_ioctl.c drm: Export drm_ioctl_permit to kernel-doc 2016-12-30 12:40:48 +01:00
drm_irq.c drm: Nuke ums vgaarb support 2017-01-26 10:45:31 +01:00
drm_kms_helper_common.c
drm_legacy.h drm: compile drm_vm.c only when needed 2017-01-06 11:03:07 +01:00
drm_lock.c drm: Avoid NULL dereference for DRM_LEGACY debug message 2016-11-28 08:39:41 +01:00
drm_memory.c
drm_mipi_dsi.c
drm_mm.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00
drm_mode_config.c drm: Show leaked connectors upon unload 2017-01-23 09:26:22 +01:00
drm_mode_object.c drm: Get atomic property value even if DRIVER_ATOMIC is not set 2016-12-27 10:44:33 +01:00
drm_modes.c drm: Clean up the 1366x768 fixup codes 2017-02-01 19:01:47 +02:00
drm_modeset_helper.c drm: Convert all helpers to drm_connector_list_iter 2016-12-18 14:33:22 +01:00
drm_modeset_lock.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_of.c drm: Don't include <drm/drm_encoder.h> in <drm/drm_crtc.h> 2016-12-18 16:29:29 +05:30
drm_panel.c drm/panel: Constify device node argument to of_drm_find_panel() 2017-01-04 08:30:37 +01:00
drm_pci.c drm: remove device_is_agp callback 2017-01-26 10:45:14 +01:00
drm_plane.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_plane_helper.c drm/kms-helpers: Use recommened kerneldoc for struct member refs 2017-01-25 16:18:57 +01:00
drm_platform.c drm/core: Use recommened kerneldoc for struct member refs 2017-01-25 16:22:42 +01:00
drm_prime.c drm/prime: Clarify DMA-BUF/GEM Object lifetime 2017-01-27 15:00:26 +01:00
drm_print.c drm/printer: add debug printer 2016-12-30 11:43:40 +01:00
drm_probe_helper.c Merge tag 'drm-misc-next-2017-01-30' of git://anongit.freedesktop.org/git/drm-misc into drm-next 2017-02-01 08:31:09 +10:00
drm_property.c drm/kms-core: Use recommened kerneldoc for struct member refs 2017-01-25 16:30:34 +01:00
drm_rect.c drm/rect: Fix formatting of example code 2016-12-30 13:35:54 +01:00
drm_scatter.c
drm_simple_kms_helper.c drm/doc: use preferred struct reference in kernel-doc 2016-12-30 13:34:59 +01:00
drm_sysfs.c drm/core: Use recommened kerneldoc for struct member refs 2017-01-25 16:22:42 +01:00
drm_trace.h
drm_trace_points.c
drm_vm.c mm: use vmf->address instead of of vmf->virtual_address 2016-12-14 16:04:09 -08:00
drm_vma_manager.c drm: Improve drm_mm search (and fix topdown allocation) with rbtrees 2017-02-03 11:10:32 +01:00