From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 192F6C4453A for ; Wed, 21 Jan 2026 13:53:36 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D433010E7D7; Wed, 21 Jan 2026 13:53:35 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=lankhorst.se header.i=@lankhorst.se header.b="aYxtRKnL"; dkim-atps=neutral Received: from lankhorst.se (lankhorst.se [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1770310E7D0; Wed, 21 Jan 2026 13:53:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lankhorst.se; s=default; t=1769003611; bh=2CX/bY9B5IXiQohEjMx7ljL+EYyLBY+Aatq7bPWJYAU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aYxtRKnLr991ZS1gjkOidz6fLMlnnrzAEpWbdsCWQxsR3O6bB9QizkeZm92z6fuDX +Q2v0EhQvhhcx4yEp/ozJDSE8TVX0LbU3C3K4gnZwuhsAGbOHYeZ9yixSmFr67iJr4 f4jzjZvkpXCQysrDHQ/ynSOmMYIvG9Jm//5W1Io85gHAoW+2YIM5Z1KDhztvvnsuDC 0p/3edAdm55DwzDK2r3S4StMJ778f9uju6LrVeea6KpLv0jxyqNiQoiPHWfszGSWKi HIaU2u3qISw7F/bOljx/B89+OR1muhzKgryMeuJBlExn9pS9I91f4RiySUk29vQYX3 dQT3BzVvCkz2g== From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org Cc: Maarten Lankhorst , Sebastian Andrzej Siewior Subject: [i915-rt v5 04/21] drm/i915/display: Make set_pipeconf use the fw variants Date: Wed, 21 Jan 2026 14:53:00 +0100 Message-ID: <20260121135318.651622-5-dev@lankhorst.se> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260121135318.651622-1-dev@lankhorst.se> References: <20260121135318.651622-1-dev@lankhorst.se> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" The calls are used inside the critical section when updating the gamma mode, and thus should use the _fw variants to prevent locks. Fixes following splat: | BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48 | in_atomic(): 0, irqs_disabled(): 1, non_block: 0, pid: 2115, name: modprobe | preempt_count: 0, expected: 0 | RCU nest depth: 0, expected: 0 | 4 locks held by modprobe/2115: | #0: ffff99b9425161a0 (&dev->mutex){....}-{4:4}, at: __driver_attach+0xaf/0x1c0 | #1: ffffaa224810f6c0 (crtc_ww_class_acquire){+.+.}-{0:0}, at: intel_initial_commit+0x4c/0x200 [i915] | #2: ffffaa224810f6e8 (crtc_ww_class_mutex){+.+.}-{4:4}, at: intel_initial_commit+0x4c/0x200 [i915] | #3: ffff99b94a6c9030 (&uncore->lock){+.+.}-{3:3}, at: gen6_write32+0x50/0x290 [i915] | irq event stamp: 513344 | hardirqs last enabled at (513343): [] _raw_spin_unlock_irqrestore+0x4c/0x60 | hardirqs last disabled at (513344): [] intel_pipe_update_start+0x216/0x2c0 [i915] | softirqs last enabled at (512766): [] __local_bh_enable_ip+0x10f/0x170 | softirqs last disabled at (512712): [] __i915_request_queue+0x3a/0x70 [i915] | CPU: 3 UID: 0 PID: 2115 Comm: modprobe Tainted: G W 6.18.0-rc1+ #17 PREEMPT_{RT,(lazy)} | Tainted: [W]=WARN | Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./Z68 Pro3-M, BIOS P2.30 06/29/2012 | Call Trace: | | dump_stack_lvl+0x68/0x90 | __might_resched.cold+0xf0/0x12b | rt_spin_lock+0x5f/0x200 | gen6_write32+0x50/0x290 [i915] | ilk_set_pipeconf+0x12d/0x230 [i915] | ilk_color_commit_arm+0x2d/0x70 [i915] | intel_update_crtc+0x15b/0x690 [i915] | intel_commit_modeset_enables+0xa6/0xd0 [i915] | intel_atomic_commit_tail+0xd55/0x19a0 [i915] | intel_atomic_commit+0x25d/0x2a0 [i915] | drm_atomic_commit+0xad/0xe0 [drm] | intel_initial_commit+0x16c/0x200 [i915] | intel_display_driver_probe+0x2e/0x80 [i915] | i915_driver_probe+0x791/0xc10 [i915] | i915_pci_probe+0xd7/0x190 [i915] Reported-by: Sebastian Andrzej Siewior Signed-off-by: Maarten Lankhorst --- drivers/gpu/drm/i915/display/intel_display.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index d721a72072300..bf37511f9ab21 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -3013,8 +3013,9 @@ void i9xx_set_pipeconf(const struct intel_crtc_state *crtc_state) val |= TRANSCONF_FRAME_START_DELAY(crtc_state->framestart_delay - 1); - intel_de_write(display, TRANSCONF(display, cpu_transcoder), val); - intel_de_posting_read(display, TRANSCONF(display, cpu_transcoder)); + intel_de_write_fw(display, TRANSCONF(display, cpu_transcoder), val); + /* posting read */ + intel_de_read_fw(display, TRANSCONF(display, cpu_transcoder)); } static enum intel_output_format @@ -3209,8 +3210,9 @@ void ilk_set_pipeconf(const struct intel_crtc_state *crtc_state) val |= TRANSCONF_FRAME_START_DELAY(crtc_state->framestart_delay - 1); val |= TRANSCONF_MSA_TIMING_DELAY(crtc_state->msa_timing_delay); - intel_de_write(display, TRANSCONF(display, cpu_transcoder), val); - intel_de_posting_read(display, TRANSCONF(display, cpu_transcoder)); + intel_de_write_fw(display, TRANSCONF(display, cpu_transcoder), val); + /* posting read */ + intel_de_read_fw(display, TRANSCONF(display, cpu_transcoder)); } static void hsw_set_transconf(const struct intel_crtc_state *crtc_state) -- 2.51.0