From patchwork Sun Dec 17 08:44:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Yan X-Patchwork-Id: 13495826 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 A1375C3DA6E for ; Sun, 17 Dec 2023 08:45:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=SQ9wmIytQdhEEIROP8smSRfLilWKGRoDGx9zboSMKmw=; b=CkbXml45dJ0bpU yfIfke7J7Lz/O5RnDZM5Esg2/GCkbyUMCuFgeX0hiC9CPLcuJg7wPz9GqFOceXRtm1Z6pUzG/j3or UzXw04PKrO+saMLo99KpeLZ26AK//vdmipynQMAevRvIFNjnaej+tGUnW+XuUCCfvmktmvLyJGLYc Gboij77MIp2sqLy4o/u2FvZaoc8pjjzVRkXSIIANhgTZEFM1v4LEhO8KluoIG+CTsI67bNIi9AcJD Xn2g2Lymqo02f1cpPLmdsGV3M3HF2ELKnftXvPkGaQFH/kPGaM9Ajw31C66MaB1Zbu86FnRWleFxp QzQKSBlJODHC9x3Ju39A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rEmmJ-007Nij-0C; Sun, 17 Dec 2023 08:45:39 +0000 Received: from m15.mail.163.com ([45.254.50.220]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rEmmB-007Ni0-1R; Sun, 17 Dec 2023 08:45:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=RXftb KMzcDM9VUl+ioiJA0aH78InNYn+q2H+oGz77JE=; b=K49Zp6qU0Dm2Jg10fvv/V eTi1KD05PqIZSnJ6ik4dbvHxVX2Zp3uIbyb1t4b4kjKICma4ZNUI7KTCs8AVCczz aeV3asNRWZfDF/UgxOVBkb55yAGnQD8JIJeO7zoMWrdSi3w8c1UFCJBF5TDavo3g ZZv401PU7sfGNKCAuG8b6Q= Received: from ProDesk.. (unknown [58.22.7.114]) by zwqz-smtp-mta-g0-0 (Coremail) with SMTP id _____wDXf7HhtH5lIrykFw--.56062S2; Sun, 17 Dec 2023 16:44:21 +0800 (CST) From: Andy Yan To: heiko@sntech.de Cc: hjc@rock-chips.com, s.hauer@pengutronix.de, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, m.szyprowski@samsung.com, broonie@kernel.org, Andy Yan Subject: [PATCH] drm/rockchip: vop2: Avoid use regmap_reinit_cache at runtime Date: Sun, 17 Dec 2023 16:44:15 +0800 Message-Id: <20231217084415.2373043-1-andyshrk@163.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-CM-TRANSID: _____wDXf7HhtH5lIrykFw--.56062S2 X-Coremail-Antispam: 1Uf129KBjvAXoWfXr4rWF1rXFW5Gr1fAw17GFg_yoW8ur4Uuo WYqr1aqF18Jr18t34xAF1kK3WfWwn7tasxCFWv9rW5Aa4vy3WUCw13AF1DZFZ3Jr1rAr1a qr4DK3W3KFW0yF1xn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7v73VFW2AGmfu7bjvjm3 AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxU40eHUUUUU X-Originating-IP: [58.22.7.114] X-CM-SenderInfo: 5dqg52xkunqiywtou0bp/xtbBEBtJXmVOA-cdzwABsQ X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231217_004531_963795_2740EC5E X-CRM114-Status: UNSURE ( 5.98 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org From: Andy Yan Marek Report a possible irq lock inversion dependency warning when commit 81a06f1d02e5 ("Revert "drm/rockchip: vop2: Use regcache_sync() to fix suspend/resume"") lands linux-next. I can reproduce this warning with: CONFIG_PROVE_LOCKING=y CONFIG_DEBUG_LOCKDEP=y It seems than when use regmap_reinit_cache at runtime whith Mark's commit 3d59c22bbb8d ("drm/rockchip: vop2: Convert to use maple tree register cache"), it will trigger a possible irq lock inversion dependency warning. One solution is switch back to REGCACHE_RBTREE, but it seems that REGCACHE_MAPLE is the future, so I avoid ues regmap_reinit_cache, and drop all the regcache when vop is disabled, then we get a fresh start at next enbable time. [ 8.425923] dwmmc_rockchip fe2b0000.mmc: IDMAC supports 32-bit address mode. [ 8.427020] dwmmc_rockchip fe2b0000.mmc: Using internal DMA controller. [ 8.428013] dwmmc_rockchip fe2b0000.mmc: Version ID is 270a [ 8.429088] dwmmc_rockchip fe2b0000.mmc: DW MMC controller at irq 78,32 bit host data width,256 deep fifo [ 8.454219] mmc_host mmc0: Bus speed (slot 0) = 375000Hz (slot req 400000Hz, actual 375000HZ div = 0) [ 8.465446] rockchip-drm display-subsystem: bound fe040000.vop (ops vop2_component_ops) [ 8.475586] dwhdmi-rockchip fe0a0000.hdmi: Detected HDMI TX controller v2.11a with HDCP (DWC HDMI 2.0 TX PHY) [ 8.484326] dwhdmi-rockchip fe0a0000.hdmi: registered DesignWare HDMI I2C bus driver [ 8.490505] rockchip-drm display-subsystem: bound fe0a0000.hdmi (ops dw_hdmi_rockchip_ops) [ 8.501151] [drm] Initialized rockchip 1.0.0 20140818 for display-subsystem on minor 0 [ 8.895456] [ 8.895473] ======================================================== [ 8.895480] WARNING: possible irq lock inversion dependency detected [ 8.895486] 6.7.0-rc5-next-20231215 #514 Not tainted [ 8.895496] -------------------------------------------------------- [ 8.895501] swapper/0/0 just changed the state of lock: [ 8.895510] ffff0000070b6018 (rockchip_drm_vop2:3116:(&vop2_regmap_config)->lock){-...}-{2:2}, at: regmap_lock_spinlock +0x14/0x24 [ 8.895560] but this lock took another, HARDIRQ-unsafe lock in the past: [ 8.895566] (&mt->ma_lock){+.+.}-{2:2} [ 8.895580] [ 8.895580] [ 8.895580] and interrupts could create inverse lock ordering between them. [ 8.895580] [ 8.895585] [ 8.895585] other info that might help us debug this: [ 8.895590] Possible interrupt unsafe locking scenario: [ 8.895590] [ 8.895594] CPU0 CPU1 [ 8.895598] ---- ---- [ 8.895602] lock(&mt->ma_lock); [ 8.895614] local_irq_disable(); [ 8.895617] lock(rockchip_drm_vop2:3116:(&vop2_regmap_config)->lock); [ 8.895629] lock(&mt->ma_lock); [ 8.895641] [ 8.895644] lock(rockchip_drm_vop2:3116:(&vop2_regmap_config)->lock); [ 8.895655] [ 8.895655] *** DEADLOCK *** [ 8.895655] [ 8.895659] no locks held by swapper/0/0. [ 8.895664] [ 8.895664] the shortest dependencies between 2nd lock and 1st lock: [ 8.895672] -> (&mt->ma_lock){+.+.}-{2:2} ops: 12 { [ 8.895704] HARDIRQ-ON-W at: [ 8.895713] lock_acquire+0x238/0x354 [ 8.895732] _raw_spin_lock+0x3c/0x50 [ 8.895749] regcache_maple_exit+0x64/0xc4 [ 8.895766] regcache_exit+0x48/0xac [ 8.895780] regmap_reinit_cache+0x18/0x98 [ 8.895793] vop2_crtc_atomic_enable+0xefc/0x1074 [ 8.895810] drm_atomic_helper_commit_modeset_enables+0xac/0x264 [ 8.895826] drm_atomic_helper_commit_tail_rpm+0x2c/0x78 [ 8.895841] commit_tail+0x9c/0x178 [ 8.895855] drm_atomic_helper_commit+0x17c/0x1ac [ 8.895869] drm_atomic_commit+0xac/0xec [ 8.895885] drm_client_modeset_commit_atomic+0x230/0x290 [ 8.895896] drm_client_modeset_commit_locked+0x54/0x1c4 [ 8.895907] drm_client_modeset_commit+0x2c/0x50 [ 8.895917] __drm_fb_helper_restore_fbdev_mode_unlocked+0x88/0xf4 [ 8.895934] drm_fb_helper_set_par+0x30/0x48 [ 8.895948] fbcon_init+0x40c/0x498 [ 8.895961] visual_init+0xb0/0x108 [ 8.895972] do_bind_con_driver+0x1b8/0x38c [ 8.895983] do_take_over_console+0x148/0x1d4 [ 8.895993] do_fbcon_takeover+0x6c/0xe0 [ 8.896003] fbcon_fb_registered+0x1f8/0x1fc [ 8.896014] register_framebuffer+0x158/0x228 [ 8.896029] __drm_fb_helper_initial_config_and_unlock+0x304/0x4f8 [ 8.896045] drm_fb_helper_initial_config+0x3c/0x48 [ 8.896060] drm_fbdev_generic_client_hotplug+0xb8/0xd8 [ 8.896074] drm_client_register+0x58/0xa0 [ 8.896085] drm_fbdev_generic_setup+0xbc/0x144 [ 8.896098] rockchip_drm_bind+0x1ec/0x1f8 [ 8.896110] try_to_bring_up_aggregate_device+0x278/0x2d8 [ 8.896127] __component_add+0xac/0x198 [ 8.896139] component_add+0x10/0x18 [ 8.896151] dw_hdmi_rockchip_probe+0x1c/0x24 [ 8.896163] platform_probe+0x90/0xd8 [ 8.896179] really_probe+0x114/0x3c0 [ 8.896192] __driver_probe_device+0x7c/0x17c [ 8.896204] driver_probe_device+0x38/0x11c [ 8.896218] __device_attach_driver+0xb4/0x164 [ 8.896230] bus_for_each_drv+0x78/0xdc [ 8.896241] __device_attach+0xfc/0x1ac [ 8.896253] device_initial_probe+0x10/0x18 [ 8.896266] bus_probe_device+0xa8/0xac [ 8.896277] deferred_probe_work_func+0x98/0xe8 [ 8.896290] process_scheduled_works+0x23c/0x5b8 [ 8.896306] worker_thread+0x188/0x374 [ 8.896319] kthread+0xe4/0x10c [ 8.896332] ret_from_fork+0x10/0x20 [ 8.896345] SOFTIRQ-ON-W at: [ 8.896355] lock_acquire+0x238/0x354 [ 8.896370] _raw_spin_lock+0x3c/0x50 [ 8.896384] regcache_maple_exit+0x64/0xc4 [ 8.896399] regcache_exit+0x48/0xac [ 8.896411] regmap_reinit_cache+0x18/0x98 [ 8.896423] vop2_crtc_atomic_enable+0xefc/0x1074 [ 8.896437] drm_atomic_helper_commit_modeset_enables+0xac/0x264 [ 8.896453] drm_atomic_helper_commit_tail_rpm+0x2c/0x78 [ 8.896467] commit_tail+0x9c/0x178 [ 8.896480] drm_atomic_helper_commit+0x17c/0x1ac [ 8.896494] drm_atomic_commit+0xac/0xec [ 8.896509] drm_client_modeset_commit_atomic+0x230/0x290 [ 8.896520] drm_client_modeset_commit_locked+0x54/0x1c4 [ 8.896530] drm_client_modeset_commit+0x2c/0x50 [ 8.896540] __drm_fb_helper_restore_fbdev_mode_unlocked+0x88/0xf4 [ 8.896558] drm_fb_helper_set_par+0x30/0x48 [ 8.896572] fbcon_init+0x40c/0x498 [ 8.896582] visual_init+0xb0/0x108 [ 8.896591] do_bind_con_driver+0x1b8/0x38c [ 8.896601] do_take_over_console+0x148/0x1d4 [ 8.896611] do_fbcon_takeover+0x6c/0xe0 [ 8.896620] fbcon_fb_registered+0x1f8/0x1fc [ 8.896630] register_framebuffer+0x158/0x228 [ 8.896645] __drm_fb_helper_initial_config_and_unlock+0x304/0x4f8 [ 8.896660] drm_fb_helper_initial_config+0x3c/0x48 [ 8.896674] drm_fbdev_generic_client_hotplug+0xb8/0xd8 [ 8.896688] drm_client_register+0x58/0xa0 [ 8.896698] drm_fbdev_generic_setup+0xbc/0x144 [ 8.896711] rockchip_drm_bind+0x1ec/0x1f8 [ 8.896724] try_to_bring_up_aggregate_device+0x278/0x2d8 [ 8.896738] __component_add+0xac/0x198 [ 8.896751] component_add+0x10/0x18 [ 8.896763] dw_hdmi_rockchip_probe+0x1c/0x24 [ 8.896773] platform_probe+0x90/0xd8 [ 8.896789] really_probe+0x114/0x3c0 [ 8.896801] __driver_probe_device+0x7c/0x17c [ 8.896814] driver_probe_device+0x38/0x11c [ 8.896827] __device_attach_driver+0xb4/0x164 [ 8.896839] bus_for_each_drv+0x78/0xdc [ 8.896850] __device_attach+0xfc/0x1ac [ 8.896862] device_initial_probe+0x10/0x18 [ 8.896875] bus_probe_device+0xa8/0xac [ 8.896886] deferred_probe_work_func+0x98/0xe8 [ 8.896897] process_scheduled_works+0x23c/0x5b8 [ 8.896911] worker_thread+0x188/0x374 [ 8.896924] kthread+0xe4/0x10c [ 8.896935] ret_from_fork+0x10/0x20 [ 8.896947] INITIAL USE at: [ 8.896955] lock_acquire+0x238/0x354 [ 8.896971] _raw_spin_lock+0x3c/0x50 [ 8.896985] regcache_maple_exit+0x64/0xc4 [ 8.896999] regcache_exit+0x48/0xac [ 8.897011] regmap_reinit_cache+0x18/0x98 [ 8.897022] vop2_crtc_atomic_enable+0xefc/0x1074 [ 8.897036] drm_atomic_helper_commit_modeset_enables+0xac/0x264 [ 8.897051] drm_atomic_helper_commit_tail_rpm+0x2c/0x78 [ 8.897065] commit_tail+0x9c/0x178 [ 8.897079] drm_atomic_helper_commit+0x17c/0x1ac [ 8.897093] drm_atomic_commit+0xac/0xec [ 8.897107] drm_client_modeset_commit_atomic+0x230/0x290 [ 8.897118] drm_client_modeset_commit_locked+0x54/0x1c4 [ 8.897128] drm_client_modeset_commit+0x2c/0x50 [ 8.897138] __drm_fb_helper_restore_fbdev_mode_unlocked+0x88/0xf4 [ 8.897154] drm_fb_helper_set_par+0x30/0x48 [ 8.897168] fbcon_init+0x40c/0x498 [ 8.897179] visual_init+0xb0/0x108 [ 8.897188] do_bind_con_driver+0x1b8/0x38c [ 8.897198] do_take_over_console+0x148/0x1d4 [ 8.897208] do_fbcon_takeover+0x6c/0xe0 [ 8.897218] fbcon_fb_registered+0x1f8/0x1fc [ 8.897228] register_framebuffer+0x158/0x228 [ 8.897241] __drm_fb_helper_initial_config_and_unlock+0x304/0x4f8 [ 8.897257] drm_fb_helper_initial_config+0x3c/0x48 [ 8.897272] drm_fbdev_generic_client_hotplug+0xb8/0xd8 [ 8.897286] drm_client_register+0x58/0xa0 [ 8.897296] drm_fbdev_generic_setup+0xbc/0x144 [ 8.897309] rockchip_drm_bind+0x1ec/0x1f8 [ 8.897321] try_to_bring_up_aggregate_device+0x278/0x2d8 [ 8.897336] __component_add+0xac/0x198 [ 8.897348] component_add+0x10/0x18 [ 8.897360] dw_hdmi_rockchip_probe+0x1c/0x24 [ 8.897370] platform_probe+0x90/0xd8 [ 8.897385] really_probe+0x114/0x3c0 [ 8.897397] __driver_probe_device+0x7c/0x17c [ 8.897410] driver_probe_device+0x38/0x11c [ 8.897422] __device_attach_driver+0xb4/0x164 [ 8.897434] bus_for_each_drv+0x78/0xdc [ 8.897445] __device_attach+0xfc/0x1ac [ 8.897456] device_initial_probe+0x10/0x18 [ 8.897469] bus_probe_device+0xa8/0xac [ 8.897480] deferred_probe_work_func+0x98/0xe8 [ 8.897492] process_scheduled_works+0x23c/0x5b8 [ 8.897506] worker_thread+0x188/0x374 [ 8.897518] kthread+0xe4/0x10c [ 8.897529] ret_from_fork+0x10/0x20 [ 8.897541] } [ 8.897545] ... key at: []__key.20703+0x0/0x10 [ 8.897561] ... acquired at: [ 8.897566] _raw_spin_lock+0x3c/0x50 [ 8.897580] regcache_maple_write+0x268/0x314 [ 8.897595] regcache_write+0x68/0x84 [ 8.897607] _regmap_read+0xd0/0x1f4 [ 8.897619] _regmap_update_bits+0xe0/0x140 [ 8.897631] regmap_update_bits_base+0x60/0x8c [ 8.897643] regmap_field_update_bits_base+0x30/0x38 [ 8.897656] vop2_plane_atomic_update+0x8b0/0x1400 [ 8.897669] drm_atomic_helper_commit_planes+0xdc/0x2a0 [ 8.897683] drm_atomic_helper_commit_tail_rpm+0x3c/0x78 [ 8.897697] commit_tail+0x9c/0x178 [ 8.897709] drm_atomic_helper_commit+0x17c/0x1ac [ 8.897722] drm_atomic_commit+0xac/0xec [ 8.897735] drm_client_modeset_commit_atomic+0x230/0x290 [ 8.897746] drm_client_modeset_commit_locked+0x54/0x1c4 [ 8.897758] drm_client_modeset_commit+0x2c/0x50 [ 8.897767] __drm_fb_helper_restore_fbdev_mode_unlocked+0x88/0xf4 [ 8.897784] drm_fb_helper_set_par+0x30/0x48 [ 8.897797] fbcon_init+0x40c/0x498 [ 8.897807] visual_init+0xb0/0x108 [ 8.897816] do_bind_con_driver+0x1b8/0x38c [ 8.897825] do_take_over_console+0x148/0x1d4 [ 8.897835] do_fbcon_takeover+0x6c/0xe0 [ 8.897844] fbcon_fb_registered+0x1f8/0x1fc [ 8.897854] register_framebuffer+0x158/0x228 [ 8.897866] __drm_fb_helper_initial_config_and_unlock+0x304/0x4f8 [ 8.897882] drm_fb_helper_initial_config+0x3c/0x48 [ 8.897895] drm_fbdev_generic_client_hotplug+0xb8/0xd8 [ 8.897908] drm_client_register+0x58/0xa0 [ 8.897917] drm_fbdev_generic_setup+0xbc/0x144 [ 8.897929] rockchip_drm_bind+0x1ec/0x1f8 [ 8.897941] try_to_bring_up_aggregate_device+0x278/0x2d8 [ 8.897956] __component_add+0xac/0x198 [ 8.897967] component_add+0x10/0x18 [ 8.897979] dw_hdmi_rockchip_probe+0x1c/0x24 [ 8.897988] platform_probe+0x90/0xd8 [ 8.898002] really_probe+0x114/0x3c0 [ 8.898013] __driver_probe_device+0x7c/0x17c [ 8.898026] driver_probe_device+0x38/0x11c [ 8.898038] __device_attach_driver+0xb4/0x164 [ 8.898049] bus_for_each_drv+0x78/0xdc [ 8.898059] __device_attach+0xfc/0x1ac [ 8.898070] device_initial_probe+0x10/0x18 [ 8.898082] bus_probe_device+0xa8/0xac [ 8.898093] deferred_probe_work_func+0x98/0xe8 [ 8.898105] process_scheduled_works+0x23c/0x5b8 [ 8.898118] worker_thread+0x188/0x374 [ 8.898131] kthread+0xe4/0x10c [ 8.898142] ret_from_fork+0x10/0x20 [ 8.898153] [ 8.898157] ->(rockchip_drm_vop2:3116:(&vop2_regmap_config)->lock){-...}-{2:2} ops: 74 { [ 8.898185] IN-HARDIRQ-W at: [ 8.898194] lock_acquire+0x238/0x354 [ 8.898211] _raw_spin_lock_irqsave+0x50/0x6c [ 8.898227] regmap_lock_spinlock+0x14/0x24 [ 8.898238] regmap_read+0x38/0x70 [ 8.898250] vop2_isr+0x88/0x2ac [ 8.898263] __handle_irq_event_percpu+0xa4/0x2bc [ 8.898277] handle_irq_event_percpu+0x14/0x44 [ 8.898290] handle_irq_event+0x44/0x90 [ 8.898300] handle_fasteoi_irq+0xf8/0x1d4 [ 8.898314] generic_handle_domain_irq+0x28/0x3c [ 8.898324] gic_handle_irq+0xb0/0x130 [ 8.898334] call_on_irq_stack+0x24/0x34 [ 8.898345] do_interrupt_handler+0xc4/0xdc [ 8.898359] el1_interrupt+0x3c/0x70 [ 8.898375] el1h_64_irq_handler+0x14/0x1c [ 8.898390] el1h_64_irq+0x64/0x68 [ 8.898398] default_idle_call+0xec/0x118 [ 8.898409] do_idle+0x1c8/0x254 [ 8.898420] cpu_startup_entry+0x30/0x38 [ 8.898430] rest_init+0x13c/0x1cc [ 8.898440] arch_post_acpi_subsys_init+0x0/0x8 [ 8.898455] start_kernel+0x7c0/0x968 [ 8.898465] __primary_switched+0xb0/0xbc [ 8.898481] INITIAL USE at: [ 8.898492] lock_acquire+0x238/0x354 [ 8.898506] _raw_spin_lock_irqsave+0x50/0x6c [ 8.898520] regmap_lock_spinlock+0x14/0x24 [ 8.898531] regmap_write+0x38/0x70 [ 8.898544] vop2_crtc_atomic_enable+0xf64/0x1074 [ 8.898560] drm_atomic_helper_commit_modeset_enables+0xac/0x264 [ 8.898575] drm_atomic_helper_commit_tail_rpm+0x2c/0x78 [ 8.898589] commit_tail+0x9c/0x178 [ 8.898601] drm_atomic_helper_commit+0x17c/0x1ac [ 8.898615] drm_atomic_commit+0xac/0xec [ 8.898628] drm_client_modeset_commit_atomic+0x230/0x290 [ 8.898639] drm_client_modeset_commit_locked+0x54/0x1c4 [ 8.898649] drm_client_modeset_commit+0x2c/0x50 [ 8.898660] __drm_fb_helper_restore_fbdev_mode_unlocked+0x88/0xf4 [ 8.898675] drm_fb_helper_set_par+0x30/0x48 [ 8.898689] fbcon_init+0x40c/0x498 [ 8.898699] visual_init+0xb0/0x108 [ 8.898709] do_bind_con_driver+0x1b8/0x38c [ 8.898719] do_take_over_console+0x148/0x1d4 [ 8.898730] do_fbcon_takeover+0x6c/0xe0 [ 8.898740] fbcon_fb_registered+0x1f8/0x1fc [ 8.898750] register_framebuffer+0x158/0x228 [ 8.898763] __drm_fb_helper_initial_config_and_unlock+0x304/0x4f8 [ 8.898779] drm_fb_helper_initial_config+0x3c/0x48 [ 8.898793] drm_fbdev_generic_client_hotplug+0xb8/0xd8 [ 8.898806] drm_client_register+0x58/0xa0 [ 8.898815] drm_fbdev_generic_setup+0xbc/0x144 [ 8.898830] rockchip_drm_bind+0x1ec/0x1f8 [ 8.898842] try_to_bring_up_aggregate_device+0x278/0x2d8 [ 8.898858] __component_add+0xac/0x198 [ 8.898871] component_add+0x10/0x18 [ 8.898885] dw_hdmi_rockchip_probe+0x1c/0x24 [ 8.898894] platform_probe+0x90/0xd8 [ 8.898909] really_probe+0x114/0x3c0 [ 8.898921] __driver_probe_device+0x7c/0x17c [ 8.898933] driver_probe_device+0x38/0x11c [ 8.898945] __device_attach_driver+0xb4/0x164 [ 8.898958] bus_for_each_drv+0x78/0xdc [ 8.898969] __device_attach+0xfc/0x1ac [ 8.898980] device_initial_probe+0x10/0x18 [ 8.898993] bus_probe_device+0xa8/0xac [ 8.899004] deferred_probe_work_func+0x98/0xe8 [ 8.899015] process_scheduled_works+0x23c/0x5b8 [ 8.899029] worker_thread+0x188/0x374 [ 8.899042] kthread+0xe4/0x10c [ 8.899053] ret_from_fork+0x10/0x20 [ 8.899064] } [ 8.899069] ... key at: []_key.73979+0x0/0x10 [ 8.899086] ... acquired at: [ 8.899091] __lock_acquire+0x9d8/0x1950 [ 8.899104] lock_acquire+0x238/0x354 [ 8.899117] _raw_spin_lock_irqsave+0x50/0x6c [ 8.899131] regmap_lock_spinlock+0x14/0x24 [ 8.899142] regmap_read+0x38/0x70 [ 8.899154] vop2_isr+0x88/0x2ac [ 8.899166] __handle_irq_event_percpu+0xa4/0x2bc [ 8.899178] handle_irq_event_percpu+0x14/0x44 [ 8.899188] handle_irq_event+0x44/0x90 [ 8.899198] handle_fasteoi_irq+0xf8/0x1d4 [ 8.899211] generic_handle_domain_irq+0x28/0x3c [ 8.899221] gic_handle_irq+0xb0/0x130 [ 8.899230] call_on_irq_stack+0x24/0x34 [ 8.899243] do_interrupt_handler+0xc4/0xdc [ 8.899256] el1_interrupt+0x3c/0x70 [ 8.899270] el1h_64_irq_handler+0x14/0x1c [ 8.899285] el1h_64_irq+0x64/0x68 [ 8.899293] default_idle_call+0xec/0x118 [ 8.899304] do_idle+0x1c8/0x254 [ 8.899313] cpu_startup_entry+0x30/0x38 [ 8.899321] rest_init+0x13c/0x1cc [ 8.899331] arch_post_acpi_subsys_init+0x0/0x8 [ 8.899342] start_kernel+0x7c0/0x968 [ 8.899351] __primary_switched+0xb0/0xbc [ 8.899365] [ 8.899368] [ 8.899368] stack backtrace: [ 8.899376] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.7.0-rc5-next-20231215 #514 [ 8.899386] Hardware name: EmbedFire LubanCat 2 (DT) [ 8.899394] Call trace: [ 8.899399] dump_backtrace+0xe4/0x124 [ 8.899410] show_stack+0x14/0x1c [ 8.899419] dump_stack_lvl+0x78/0xd4 [ 8.899430] dump_stack+0x14/0x1c [ 8.899438] print_irq_inversion_bug+0x28c/0x304 [ 8.899453] mark_lock.part.43+0x2c0/0x448 [ 8.899466] __lock_acquire+0x9d8/0x1950 [ 8.899479] lock_acquire+0x238/0x354 [ 8.899492] _raw_spin_lock_irqsave+0x50/0x6c [ 8.899507] regmap_lock_spinlock+0x14/0x24 [ 8.899517] regmap_read+0x38/0x70 [ 8.899528] vop2_isr+0x88/0x2ac [ 8.899540] __handle_irq_event_percpu+0xa4/0x2bc [ 8.899553] handle_irq_event_percpu+0x14/0x44 [ 8.899565] handle_irq_event+0x44/0x90 [ 8.899575] handle_fasteoi_irq+0xf8/0x1d4 [ 8.899589] generic_handle_domain_irq+0x28/0x3c [ 8.899599] gic_handle_irq+0xb0/0x130 [ 8.899608] call_on_irq_stack+0x24/0x34 [ 8.899619] do_interrupt_handler+0xc4/0xdc [ 8.899631] el1_interrupt+0x3c/0x70 [ 8.899645] el1h_64_irq_handler+0x14/0x1c [ 8.899659] el1h_64_irq+0x64/0x68 [ 8.899669] default_idle_call+0xec/0x118 [ 8.899679] do_idle+0x1c8/0x254 [ 8.899689] cpu_startup_entry+0x30/0x38 [ 8.899698] rest_init+0x13c/0x1cc [ 8.899708] arch_post_acpi_subsys_init+0x0/0x8 [ 8.899720] start_kernel+0x7c0/0x968 [ 8.899731] __primary_switched+0xb0/0xbc [ 8.946839] Console: switching to colour frame buffer device 240x67 [ 10.230883] rockchip-drm display-subsystem: [drm] fb0: rockchipdrmfb frame buffer device Fixes: 81a06f1d02e5 ("Revert "drm/rockchip: vop2: Use regcache_sync() to fix suspend/resume"") Reported-by: Marek Szyprowski Closes: https://lore.kernel.org/all/98a9f15d-30ac-47bf-9b93-3aa2c9900f7b@samsung.com/ Signed-off-by: Andy Yan Tested-by: Marek Szyprowski --- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 4beb04c83752..f2edaebfcaf9 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -993,12 +993,6 @@ static void vop2_enable(struct vop2 *vop2) return; } - ret = regmap_reinit_cache(vop2->map, &vop2_regmap_config); - if (ret) { - drm_err(vop2->drm, "failed to reinit cache: %d\n", ret); - return; - } - if (vop2->data->soc_id == 3566) vop2_writel(vop2, RK3568_OTP_WIN_EN, 1); @@ -1030,6 +1024,8 @@ static void vop2_disable(struct vop2 *vop2) pm_runtime_put_sync(vop2->dev); + regcache_drop_region(vop2->map, 0, vop2_regmap_config.max_register); + clk_disable_unprepare(vop2->pclk); clk_disable_unprepare(vop2->aclk); clk_disable_unprepare(vop2->hclk);