From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>, Laurent Pinchart <laurent.pinchart@ideasonboard.com>, Sasha Levin <sashal@kernel.org>, dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 5.8 28/42] drm/omap: fix incorrect lock state Date: Mon, 31 Aug 2020 11:29:20 -0400 [thread overview] Message-ID: <20200831152934.1023912-28-sashal@kernel.org> (raw) In-Reply-To: <20200831152934.1023912-1-sashal@kernel.org> From: Tomi Valkeinen <tomi.valkeinen@ti.com> [ Upstream commit 7fd5b25499bcec157dd4de9a713425efcf4571cd ] After commit 92cc68e35863c1c61c449efa2b2daef6e9926048 ("drm/vblank: Use spin_(un)lock_irq() in drm_crtc_vblank_on()") omapdrm locking is broken: WARNING: inconsistent lock state 5.8.0-rc2-00483-g92cc68e35863 #13 Tainted: G W -------------------------------- inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage. swapper/0/0 [HC1[1]:SC0[0]:HE0:SE1] takes: ea98222c (&dev->event_lock#2){?.+.}-{2:2}, at: drm_handle_vblank+0x4c/0x520 [drm] {HARDIRQ-ON-W} state was registered at: trace_hardirqs_on+0x9c/0x1ec _raw_spin_unlock_irq+0x20/0x58 omap_crtc_atomic_enable+0x54/0xa0 [omapdrm] drm_atomic_helper_commit_modeset_enables+0x218/0x270 [drm_kms_helper] omap_atomic_commit_tail+0x48/0xc4 [omapdrm] commit_tail+0x9c/0x190 [drm_kms_helper] drm_atomic_helper_commit+0x154/0x188 [drm_kms_helper] drm_client_modeset_commit_atomic+0x228/0x268 [drm] drm_client_modeset_commit_locked+0x60/0x1d0 [drm] drm_client_modeset_commit+0x24/0x40 [drm] drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa8 [drm_kms_helper] drm_fb_helper_set_par+0x2c/0x5c [drm_kms_helper] drm_fb_helper_hotplug_event.part.0+0xa0/0xbc [drm_kms_helper] drm_kms_helper_hotplug_event+0x24/0x30 [drm_kms_helper] output_poll_execute+0x1a8/0x1c0 [drm_kms_helper] process_one_work+0x268/0x800 worker_thread+0x30/0x4e0 kthread+0x164/0x190 ret_from_fork+0x14/0x20 The reason for this is that omapdrm calls drm_crtc_vblank_on() while holding event_lock taken with spin_lock_irq(). It is not clear why drm_crtc_vblank_on() and drm_crtc_vblank_get() are called while holding event_lock. I don't see any problem with moving those calls outside the lock, which is what this patch does. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200819103021.440288-1-tomi.valkeinen@ti.com Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/gpu/drm/omapdrm/omap_crtc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c index fce7e944a280b..dbf91b3fd6f08 100644 --- a/drivers/gpu/drm/omapdrm/omap_crtc.c +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c @@ -451,11 +451,12 @@ static void omap_crtc_atomic_enable(struct drm_crtc *crtc, if (omap_state->manually_updated) return; - spin_lock_irq(&crtc->dev->event_lock); drm_crtc_vblank_on(crtc); + ret = drm_crtc_vblank_get(crtc); WARN_ON(ret != 0); + spin_lock_irq(&crtc->dev->event_lock); omap_crtc_arm_event(crtc); spin_unlock_irq(&crtc->dev->event_lock); } -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sasha Levin <sashal@kernel.org>, Tomi Valkeinen <tomi.valkeinen@ti.com>, Laurent Pinchart <laurent.pinchart@ideasonboard.com>, dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 5.8 28/42] drm/omap: fix incorrect lock state Date: Mon, 31 Aug 2020 11:29:20 -0400 [thread overview] Message-ID: <20200831152934.1023912-28-sashal@kernel.org> (raw) In-Reply-To: <20200831152934.1023912-1-sashal@kernel.org> From: Tomi Valkeinen <tomi.valkeinen@ti.com> [ Upstream commit 7fd5b25499bcec157dd4de9a713425efcf4571cd ] After commit 92cc68e35863c1c61c449efa2b2daef6e9926048 ("drm/vblank: Use spin_(un)lock_irq() in drm_crtc_vblank_on()") omapdrm locking is broken: WARNING: inconsistent lock state 5.8.0-rc2-00483-g92cc68e35863 #13 Tainted: G W -------------------------------- inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage. swapper/0/0 [HC1[1]:SC0[0]:HE0:SE1] takes: ea98222c (&dev->event_lock#2){?.+.}-{2:2}, at: drm_handle_vblank+0x4c/0x520 [drm] {HARDIRQ-ON-W} state was registered at: trace_hardirqs_on+0x9c/0x1ec _raw_spin_unlock_irq+0x20/0x58 omap_crtc_atomic_enable+0x54/0xa0 [omapdrm] drm_atomic_helper_commit_modeset_enables+0x218/0x270 [drm_kms_helper] omap_atomic_commit_tail+0x48/0xc4 [omapdrm] commit_tail+0x9c/0x190 [drm_kms_helper] drm_atomic_helper_commit+0x154/0x188 [drm_kms_helper] drm_client_modeset_commit_atomic+0x228/0x268 [drm] drm_client_modeset_commit_locked+0x60/0x1d0 [drm] drm_client_modeset_commit+0x24/0x40 [drm] drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0xa8 [drm_kms_helper] drm_fb_helper_set_par+0x2c/0x5c [drm_kms_helper] drm_fb_helper_hotplug_event.part.0+0xa0/0xbc [drm_kms_helper] drm_kms_helper_hotplug_event+0x24/0x30 [drm_kms_helper] output_poll_execute+0x1a8/0x1c0 [drm_kms_helper] process_one_work+0x268/0x800 worker_thread+0x30/0x4e0 kthread+0x164/0x190 ret_from_fork+0x14/0x20 The reason for this is that omapdrm calls drm_crtc_vblank_on() while holding event_lock taken with spin_lock_irq(). It is not clear why drm_crtc_vblank_on() and drm_crtc_vblank_get() are called while holding event_lock. I don't see any problem with moving those calls outside the lock, which is what this patch does. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200819103021.440288-1-tomi.valkeinen@ti.com Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/gpu/drm/omapdrm/omap_crtc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c index fce7e944a280b..dbf91b3fd6f08 100644 --- a/drivers/gpu/drm/omapdrm/omap_crtc.c +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c @@ -451,11 +451,12 @@ static void omap_crtc_atomic_enable(struct drm_crtc *crtc, if (omap_state->manually_updated) return; - spin_lock_irq(&crtc->dev->event_lock); drm_crtc_vblank_on(crtc); + ret = drm_crtc_vblank_get(crtc); WARN_ON(ret != 0); + spin_lock_irq(&crtc->dev->event_lock); omap_crtc_arm_event(crtc); spin_unlock_irq(&crtc->dev->event_lock); } -- 2.25.1 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-08-31 15:30 UTC|newest] Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-08-31 15:28 [PATCH AUTOSEL 5.8 01/42] hwmon: (pmbus/isl68137) remove READ_TEMPERATURE_1 telemetry for RAA228228 Sasha Levin 2020-08-31 15:28 ` [PATCH AUTOSEL 5.8 02/42] HID: quirks: Always poll three more Lenovo PixArt mice Sasha Levin 2020-08-31 15:28 ` [PATCH AUTOSEL 5.8 03/42] HID: hiddev: Fix slab-out-of-bounds write in hiddev_ioctl_usage() Sasha Levin 2020-08-31 15:28 ` [PATCH AUTOSEL 5.8 04/42] drm/msm/dpu: Fix reservation failures in modeset Sasha Levin 2020-08-31 15:28 ` Sasha Levin 2020-08-31 15:28 ` [PATCH AUTOSEL 5.8 05/42] drm/msm/dpu: Fix scale params in plane validation Sasha Levin 2020-08-31 15:28 ` Sasha Levin 2020-08-31 15:28 ` [PATCH AUTOSEL 5.8 06/42] drm/msm/dpu: fix unitialized variable error Sasha Levin 2020-08-31 15:28 ` Sasha Levin 2020-08-31 15:28 ` [PATCH AUTOSEL 5.8 07/42] speakup: Fix wait_for_xmitr for ttyio case Sasha Levin 2020-08-31 15:28 ` Sasha Levin 2020-08-31 15:33 ` Greg Kroah-Hartman 2020-08-31 15:33 ` Greg Kroah-Hartman 2020-09-05 12:02 ` Sasha Levin 2020-09-05 12:02 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 08/42] tty: serial: qcom_geni_serial: Drop __init from qcom_geni_console_setup Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 09/42] drm/msm: add shutdown support for display platform_driver Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 10/42] hwmon: (applesmc) check status earlier Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 11/42] nvme: skip noiob for zoned devices Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:38 ` Keith Busch 2020-08-31 15:38 ` Keith Busch 2020-09-05 12:03 ` Sasha Levin 2020-09-05 12:03 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 12/42] nvmet: Disable keep-alive timer when kato is cleared to 0h Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 13/42] drm/msm: enable vblank during atomic commits Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 14/42] habanalabs: unmap PCI bars upon iATU failure Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 15/42] habanalabs: validate packet id during CB parse Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 16/42] habanalabs: set clock gating according to mask Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 17/42] habanalabs: proper handling of alloc size in coresight Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 18/42] habanalabs: set max power according to card type Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 19/42] habanalabs: validate FW file size Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 20/42] habanalabs: check correct vmalloc return code Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 21/42] drm/msm/a6xx: fix gmu start on newer firmware Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 22/42] gfs2: add some much needed cleanup for log flushes that fail Sasha Levin 2020-08-31 15:29 ` [Cluster-devel] " Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 23/42] hv_utils: return error if host timesysnc update is stale Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 24/42] hv_utils: drain the timesync packets on onchannelcallback Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 25/42] ceph: fix inode number handling on arches with 32-bit ino_t Sasha Levin 2020-08-31 16:08 ` Ilya Dryomov 2020-09-05 12:04 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 26/42] ceph: don't allow setlease on cephfs Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 27/42] i2c: iproc: Fix shifting 31 bits Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` Sasha Levin [this message] 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 28/42] drm/omap: fix incorrect lock state Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 29/42] irqchip/ingenic: Leave parent IRQ unmasked on suspend Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 30/42] cpuidle: Fixup IRQ state Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 31/42] nbd: restore default timeout when setting it to zero Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 32/42] s390: don't trace preemption in percpu macros Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 33/42] drm/amd/display: should check error using DC_OK Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 34/42] drm/amd/display: Reject overlay plane configurations in multi-display scenarios Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 35/42] drivers: gpu: amd: Initialize amdgpu_dm_backlight_caps object to 0 in amdgpu_dm_update_backlight_caps Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 36/42] drm/amd/display: Revert HDCP disable sequence change Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 37/42] drm/amd/display: Fix passive dongle mistaken as active dongle in EDID emulation Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 38/42] drm/amd/display: Keep current gain when ABM disable immediately Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 39/42] drm/amd/display: Retry AUX write when fail occurs Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 40/42] drm/amd/display: Fix memleak in amdgpu_dm_mode_config_init Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 41/42] xen/xenbus: Fix granting of vmalloc'd memory Sasha Levin 2020-08-31 15:29 ` [PATCH AUTOSEL 5.8 42/42] fsldma: fix very broken 32-bit ppc ioread64 functionality Sasha Levin 2020-08-31 15:29 ` Sasha Levin
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200831152934.1023912-28-sashal@kernel.org \ --to=sashal@kernel.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=laurent.pinchart@ideasonboard.com \ --cc=linux-kernel@vger.kernel.org \ --cc=stable@vger.kernel.org \ --cc=tomi.valkeinen@ti.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.