mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
Merge tag 'drm-intel-next-fixes-2026-06-25-1' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next
- Fix corrupted display output on GLK, #16209 (Ville) - Add missing Spectre mitigation for parallel submit IOCTL (Joonas) Signed-off-by: Dave Airlie <airlied@redhat.com> From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Link: https://patch.msgid.link/ajzIhInnHnGCwMlu@jlahtine-mobl
This commit is contained in:
commit
b41df707b6
|
|
@ -1256,9 +1256,22 @@ static void skl_sanitize_cdclk(struct intel_display *display)
|
|||
cdctl = intel_de_read(display, CDCLK_CTL);
|
||||
expected = (cdctl & CDCLK_FREQ_SEL_MASK) |
|
||||
skl_cdclk_decimal(display->cdclk.hw.cdclk);
|
||||
if (cdctl == expected)
|
||||
/* All well; nothing to sanitize */
|
||||
return;
|
||||
|
||||
if (cdctl != expected) {
|
||||
cdctl &= ~CDCLK_FREQ_DECIMAL_MASK;
|
||||
cdctl |= expected & CDCLK_FREQ_DECIMAL_MASK;
|
||||
|
||||
if (cdctl != expected)
|
||||
goto sanitize;
|
||||
|
||||
drm_dbg_kms(display->drm, "Sanitizing CDCLK decimal divider (CDCLK_CTL 0x%x, expected 0x%x)\n",
|
||||
intel_de_read(display, CDCLK_CTL), expected);
|
||||
|
||||
intel_de_write(display, CDCLK_CTL, expected);
|
||||
}
|
||||
|
||||
/* All well; nothing to sanitize */
|
||||
return;
|
||||
|
||||
sanitize:
|
||||
drm_dbg_kms(display->drm, "Sanitizing cdclk programmed by pre-os\n");
|
||||
|
|
@ -2354,11 +2367,25 @@ static void bxt_sanitize_cdclk(struct intel_display *display)
|
|||
* (PIPE_NONE).
|
||||
*/
|
||||
cdctl &= ~bxt_cdclk_cd2x_pipe(display, INVALID_PIPE);
|
||||
expected &= ~bxt_cdclk_cd2x_pipe(display, INVALID_PIPE);
|
||||
cdctl |= bxt_cdclk_cd2x_pipe(display, INVALID_PIPE);
|
||||
|
||||
if (cdctl == expected)
|
||||
/* All well; nothing to sanitize */
|
||||
return;
|
||||
if (cdctl != expected) {
|
||||
if (DISPLAY_VER(display) < 20) {
|
||||
cdctl &= ~CDCLK_FREQ_DECIMAL_MASK;
|
||||
cdctl |= expected & CDCLK_FREQ_DECIMAL_MASK;
|
||||
}
|
||||
|
||||
if (cdctl != expected)
|
||||
goto sanitize;
|
||||
|
||||
drm_dbg_kms(display->drm, "Sanitizing CDCLK decimal divider (CDCLK_CTL 0x%x, expected 0x%x)\n",
|
||||
intel_de_read(display, CDCLK_CTL), expected);
|
||||
|
||||
intel_de_write(display, CDCLK_CTL, expected);
|
||||
}
|
||||
|
||||
/* All well; nothing to sanitize */
|
||||
return;
|
||||
|
||||
sanitize:
|
||||
drm_dbg_kms(display->drm, "Sanitizing cdclk programmed by pre-os\n");
|
||||
|
|
|
|||
|
|
@ -613,6 +613,7 @@ set_proto_ctx_engines_parallel_submit(struct i915_user_extension __user *base,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
slot = array_index_nospec(slot, set->num_engines);
|
||||
if (set->engines[slot].type != I915_GEM_ENGINE_TYPE_INVALID) {
|
||||
drm_dbg(&i915->drm,
|
||||
"Invalid placement[%d], already occupied\n", slot);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user