FAILED: patch "[PATCH] drm/i915/gen9+: Fix initial readout for Y tiled framebuffers" failed to apply to 4.9-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
d9a515867bdba59ebf196a6ade10faae8e8be36aMon Sep 17 00:00:00 2001
From: Imre Deak <[email protected]>
Date: Tue, 16 Oct 2018 19:00:11 +0300
Subject: [PATCH] drm/i915/gen9+: Fix initial readout for Y tiled framebuffers
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
If BIOS configured a Y tiled FB we failed to set up the backing object tiling accordingly, leading to a lack of GT fence installed and a garbled console.
The problem was bisected to
commit 011f22eb545a ("drm/i915: Do NOT skip the first 4k of stolen memory for pre-allocated buffers v2") but it just revealed a pre-existing issue.
Kudos to Ville who suspected a missing fence looking at the corruption on the screen.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108264
drivers/gpu/drm/i915/intel_display.c +23 -2
@@ -2722,6 +2722,17 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc,if (size_aligned *2 > dev_priv->stolen_usable_size)return false; +switch (fb->modifier) { +case DRM_FORMAT_MOD_LINEAR : +case I915_FORMAT_MOD_X_TILED : +case I915_FORMAT_MOD_Y_TILED : +break ; +default : +DRM_DEBUG_DRIVER ("Unsupported modifier for initial FB: 0x%llx\n" , + fb->modifier); +return false; + } +mutex_lock (&dev->struct_mutex); obj = i915_gem_object_create_stolen_for_preallocated(dev_priv, base_aligned,
@@ -2731,8 +2742,17 @@ intel_alloc_initial_plane_obj(struct intel_crtc *crtc,if (!obj)return false; -if (plane_config->tiling ==I915_TILING_X ) - obj->tiling_and_stride = fb->pitches[0 ] |I915_TILING_X ; +switch (plane_config->tiling) { +case I915_TILING_NONE : +break ; +case I915_TILING_X : +case I915_TILING_Y : + obj->tiling_and_stride = fb->pitches[0 ] | plane_config->tiling; +break ; +default : +MISSING_CASE (plane_config->tiling); +return false; + } mode_cmd.pixel_format = fb->format->format; mode_cmd.width = fb->width;
@@ -8865,6 +8885,7 @@ skylake_get_initial_plane_config(struct intel_crtc *crtc, fb->modifier =I915_FORMAT_MOD_X_TILED ;break ;case PLANE_CTL_TILED_Y : + plane_config->tiling =I915_TILING_Y ;if (val &PLANE_CTL_RENDER_DECOMPRESSION_ENABLE ) fb->modifier =I915_FORMAT_MOD_Y_TILED_CCS ;else