linux-hardened/drivers/gpu/drm/i915
Chris Wilson 0b466dc238 drm/i915: Mark uneven memory banks on gen4 desktop as unknown swizzling
We have varied reports of swizzling corruption on gen4 desktop, and
confirmation that one at least is triggered by uneven memory banks
(L-shaped memory). The implication is that the swizzling varies between
the paired channels and the remainder of memory on the single channel. As
the object then has unpredictable swizzling (it will vary depending on
exact page allocation and may even change during the object's lifetime as
the pages are replaced), we have to report to userspace that the swizzling
is unknown.

However, some existing userspace is buggy when it meets an unknown
swizzling configuration and so we need to tell another white lie and
mark the swizzling as NONE but report it as UNKNOWN through the extended
get-tiling-ioctl. See

commit 5eb3e5a5e1
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sun Jun 28 09:19:26 2015 +0100

    drm/i915: Declare the swizzling unknown for L-shaped configurations

for the previous example where we found that telling the truth to
userspace just ends up in a world of hurt.

Also since we don't truly know what the swizzling is on the pages, we
need to keep them pinned to prevent swapping as the reports also
suggest that some gen4 devices have previously undetected bit17
swizzling.

v2: Combine unknown + quirk patches to prevent userspace ever seeing
unknown swizzling through the normal get-tiling-ioctl. Also use the same
path for the existing uneven bank detection for mobile gen4.

Reported-by: Matti Hämäläinen <ccr@tnsp.org>
Tested-by: Matti Hämäläinen <ccr@tnsp.org>
References: https://bugs.freedesktop.org/show_bug.cgi?id=90725
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matti Hämäläinen <ccr@tnsp.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: stable@vger.kernel.org
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1447927085-31726-1-git-send-email-chris@chris-wilson.co.uk
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2015-11-23 16:42:33 +02:00
..
dvo.h drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_ch7xxx.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_ch7017.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_ivch.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_ns2501.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_sil164.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
dvo_tfp410.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
i915_cmd_parser.c drm/i915: Add GEN7_GPGPU_DISPATCHDIMX/Y/Z to the register whitelist 2015-10-06 10:40:22 +02:00
i915_debugfs.c Merge tag 'drm-intel-next-fixes-2015-10-22' of git://anongit.freedesktop.org/drm-intel into drm-next 2015-10-30 09:45:33 +10:00
i915_dma.c drm/i915: Fix locking around GuC firmware load 2015-11-04 13:23:15 +10:00
i915_drv.c drm/i915/guc: Add host2guc notification for suspend and resume 2015-10-06 10:32:22 +02:00
i915_drv.h Revert "drm/i915: skip modeset if compatible for everyone." 2015-11-19 10:38:09 +02:00
i915_gem.c drm/i915: get runtime PM reference around GEM set_caching IOCTL 2015-11-16 15:32:08 +02:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Remove wrong warning from i915_gem_context_clean 2015-10-09 10:19:48 +02:00
i915_gem_debug.c drm/i915: Implement inter-engine read-read optimisations 2015-05-21 15:11:42 +02:00
i915_gem_dmabuf.c drm/i915: remove unused has_dma_mapping flag 2015-07-13 22:42:41 +02:00
i915_gem_evict.c drm/i915: Remove dead i915_gem_evict_everything() 2015-10-07 16:05:40 +02:00
i915_gem_execbuffer.c drm/i915: Kill DRI1 cliprects 2015-10-07 16:05:41 +02:00
i915_gem_fence.c drm/i915: Mark uneven memory banks on gen4 desktop as unknown swizzling 2015-11-23 16:42:33 +02:00
i915_gem_gtt.c drm/i915: restore ggtt double-bind avoidance 2015-10-15 15:28:11 +02:00
i915_gem_gtt.h drm/i915: prevent out of range pt in the PDE macros (take 3) 2015-10-06 14:15:29 +02:00
i915_gem_render_state.c drm/i915: Add provision to extend Golden context batch 2015-07-21 09:30:57 +02:00
i915_gem_render_state.h drm/i915: Add provision to extend Golden context batch 2015-07-21 09:30:57 +02:00
i915_gem_shrinker.c drm/i915: Fix kerneldoc for i915_gem_shrink_all 2015-10-13 16:21:03 +03:00
i915_gem_stolen.c drm/i915: Determine the stolen memory base address on gen2 2015-10-09 10:14:43 +02:00
i915_gem_tiling.c Merge tag 'drm-intel-fixes-2015-08-14' into drm-intel-next-fixes 2015-08-14 18:11:30 +02:00
i915_gem_userptr.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
i915_gpu_error.c drm/i915: rename INSTDONE1 to GEN4_INSTDONE1 2015-10-02 14:25:19 +02:00
i915_guc_reg.h drm/i915: Parametrize UOS_RSA_SCRATCH 2015-09-30 10:20:13 +02:00
i915_guc_submission.c drm/i915/guc: Add host2guc notification for suspend and resume 2015-10-06 10:32:22 +02:00
i915_ioc32.c Merge tag 'drm-intel-fixes-2015-07-15' into drm-intel-next-queued 2015-07-15 16:36:50 +02:00
i915_irq.c Merge tag 'drm-intel-next-fixes-2015-11-06' of git://anongit.freedesktop.org/drm-intel into drm-next 2015-11-07 17:16:59 +10:00
i915_params.c Revert "drm/i915: skip modeset if compatible for everyone." 2015-11-19 10:38:09 +02:00
i915_reg.h drm/i915: Parametrize and fix SWF registers 2015-10-13 13:20:38 +02:00
i915_suspend.c drm/i915: Parametrize and fix SWF registers 2015-10-13 13:20:38 +02:00
i915_sysfs.c drm/i915/bxt: fix RC6 residency time calculation 2015-09-30 17:15:13 +02:00
i915_trace.h drm/i915: Add a tracepoint for the shrinker 2015-10-07 16:05:38 +02:00
i915_trace_points.c
i915_vgpu.c
i915_vgpu.h drm/i915: Update PV INFO page definition for Intel GVT-g 2015-09-02 11:46:12 +02:00
intel_acpi.c drm/i915: Drop unnecessary #include <linux/vga_switcheroo.h> 2015-10-13 10:18:38 +02:00
intel_atomic.c drm/i915: revert a few more watermark commits 2015-10-13 13:59:55 +02:00
intel_atomic_plane.c drm/i915: Do not handle a null plane state. 2015-09-10 18:27:17 +02:00
intel_audio.c drm/i915: Use round to closest when computing the CEA 1.001 pixel clocks 2015-10-19 17:56:02 +02:00
intel_bios.c i915: switch from acpi_os_ioremap to memremap 2015-10-13 10:22:45 +02:00
intel_bios.h drm/i915: Ignore "digital output" and "not HDMI output" bits for eDP detection 2015-09-23 16:58:29 +02:00
intel_crt.c drm/i915: Consider SPLL as another shared pll, v2. 2015-11-18 15:08:31 +02:00
intel_csr.c drm/i915/skl: Added a check for the hardware status of csr fw before loading. 2015-09-30 10:14:22 +02:00
intel_ddi.c drm/i915: Consider SPLL as another shared pll, v2. 2015-11-18 15:08:31 +02:00
intel_display.c Revert "drm/i915: skip modeset if compatible for everyone." 2015-11-19 10:38:09 +02:00
intel_dp.c drm/i915: Throw out some useless variables 2015-10-13 13:20:50 +02:00
intel_dp_mst.c Merge tag 'drm-intel-next-2015-10-10' of git://anongit.freedesktop.org/drm-intel into drm-next 2015-10-20 09:00:01 +10:00
intel_drv.h drm/i915: revert a few more watermark commits 2015-10-13 13:59:55 +02:00
intel_dsi.c drm/i915/bxt: get DSI pixelclock 2015-10-02 14:45:51 +02:00
intel_dsi.h drm/i915/bxt: get DSI pixelclock 2015-10-02 14:45:51 +02:00
intel_dsi_panel_vbt.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
intel_dsi_pll.c drm/i915/bxt: vlv_dsi_reset_clocks() can be static 2015-10-06 10:57:06 +02:00
intel_dvo.c drm/i915: Constify adjusted_mode 2015-09-30 10:20:11 +02:00
intel_fbc.c drm/i915: fix FBC buffer size checks 2015-10-09 09:35:50 +02:00
intel_fbdev.c drm/i915: don't allocate fbcon from stolen memory if it's too big 2015-10-09 09:31:58 +02:00
intel_fifo_underrun.c
intel_frontbuffer.c drm/i915: fix FBC frontbuffer tracking flushing code 2015-08-05 09:59:44 +02:00
intel_guc.h drm/i915/guc: Add host2guc notification for suspend and resume 2015-10-06 10:32:22 +02:00
intel_guc_fwif.h drm/i915/guc: Add host2guc notification for suspend and resume 2015-10-06 10:32:22 +02:00
intel_guc_loader.c drm/i915: Fix locking around GuC firmware load 2015-11-04 13:23:15 +10:00
intel_hdmi.c drm/i915: Parametrize HSW video DIP data registers 2015-10-13 13:15:50 +02:00
intel_hotplug.c Revert "drm/i915: Call encoder hotplug for init and resume cases" 2015-10-08 21:51:57 +02:00
intel_i2c.c drm/i915: Include gpio_mmio_base in GMBUS reg defines 2015-10-13 13:16:09 +02:00
intel_lrc.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
intel_lrc.h Merge commit '06d1ee32a4d25356a710b49d5e95dbdd68bdf505' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into drm-next 2015-10-16 10:25:28 +10:00
intel_lvds.c drm/i915: Clean up LVDS register handling 2015-10-13 13:21:15 +02:00
intel_mocs.c drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
intel_mocs.h drm/i915: Added Programming of the MOCS 2015-07-14 17:13:14 +02:00
intel_modes.c drm/i915: Add HDMI aspect ratio property for SDVO 2015-09-30 10:20:12 +02:00
intel_opregion.c i915: switch from acpi_os_ioremap to memremap 2015-10-13 10:22:45 +02:00
intel_overlay.c drm/i915: Update intel_ring_begin() to take a request structure 2015-06-23 14:02:29 +02:00
intel_panel.c drm/i915: disable CPU PWM also on LPT/SPT backlight disable 2015-10-28 19:10:37 +02:00
intel_pm.c drm/i915: Fix gpu frequency change tracing 2015-11-18 11:22:07 +02:00
intel_psr.c drm/i915: Parametrize HSW video DIP data registers 2015-10-13 13:15:50 +02:00
intel_renderstate.h
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_ringbuffer.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-11-10 09:33:06 -08:00
intel_ringbuffer.h drm/i915: Refactor common ringbuffer allocation code 2015-09-04 10:17:00 +02:00
intel_runtime_pm.c Merge tag 'drm-intel-next-fixes-2015-11-06' of git://anongit.freedesktop.org/drm-intel into drm-next 2015-11-07 17:16:59 +10:00
intel_sdvo.c Revert "drm/i915: Call encoder hotplug for init and resume cases" 2015-10-08 21:51:57 +02:00
intel_sdvo_regs.h
intel_sideband.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
intel_sprite.c drm/i915: Kill the leftover RMW from ivb_sprite_disable() 2015-10-15 18:45:52 +02:00
intel_tv.c Merge remote-tracking branch 'airlied/drm-next' into drm-intel-next 2015-09-30 08:47:41 +02:00
intel_uncore.c drm/i915: Do graphics device reset under forcewake 2015-11-05 15:31:07 +02:00
Kconfig drm/i915: Use CONFIG_DRM_FBDEV_EMULATION 2015-08-11 14:00:29 +02:00
Makefile Merge tag 'drm-intel-next-fixes-2015-09-02' into drm-intel-next-queued 2015-09-02 14:33:42 +02:00