All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King - ARM Linux <linux@armlinux.org.uk>
To: Liu Ying <gnuiyl@gmail.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v3 03/10] drm/imx: atomic phase 1: Use transitional atomic CRTC and plane helpers
Date: Sat, 13 Aug 2016 16:00:04 +0100	[thread overview]
Message-ID: <20160813150004.GA12419@n2100.armlinux.org.uk> (raw)
In-Reply-To: <20160813140910.GA11506@n2100.armlinux.org.uk>

On Sat, Aug 13, 2016 at 03:09:10PM +0100, Russell King - ARM Linux wrote:
> Okay, this is what I've ended up with - I'm not sure whether it's
> correct or not, but this dirty patch allows the full series to be
> applied and still have working userspace.
> 
> I still need to undo all the reverts I have touching imx-drm between
> patch 10 of this set and 4.8-rc1...

I tried a slightly different approach, so we at least get the simple
plane updates without having to go through the disable path:

diff --git a/drivers/gpu/drm/imx/ipuv3-plane.c b/drivers/gpu/drm/imx/ipuv3-plane.c
index 4ad67d015ec7..1cd3422e6e62 100644
--- a/drivers/gpu/drm/imx/ipuv3-plane.c
+++ b/drivers/gpu/drm/imx/ipuv3-plane.c
@@ -278,7 +278,7 @@ static int ipu_plane_atomic_check(struct drm_plane *plane,
 	if (WARN_ON(!crtc_state))
 		return -EINVAL;
 
-	/* CRTC should be enabled */
+	/* CRTC should be enabled -- why? */
 	if (!crtc_state->enable)
 		return -EINVAL;
 
@@ -322,10 +322,14 @@ static int ipu_plane_atomic_check(struct drm_plane *plane,
 	 * since we cannot touch active IDMAC channels, we do not support
 	 * resizing the enabled plane or changing its format
 	 */
+#if 0
 	if (old_fb && (state->src_w != old_state->src_w ||
 			      state->src_h != old_state->src_h ||
-			      fb->pixel_format != old_fb->pixel_format))
+			      fb->pixel_format != old_fb->pixel_format)) {
+		printk("%s:%d: fail\n", __func__, __LINE__);
 		return -EINVAL;
+	}
+#endif
 
 	eba = drm_plane_state_to_eba(state);
 
@@ -335,9 +339,6 @@ static int ipu_plane_atomic_check(struct drm_plane *plane,
 	if (fb->pitches[0] < 1 || fb->pitches[0] > 16384)
 		return -EINVAL;
 
-	if (old_fb && fb->pitches[0] != old_fb->pitches[0])
-		return -EINVAL;
-
 	switch (fb->pixel_format) {
 	case DRM_FORMAT_YUV420:
 	case DRM_FORMAT_YVU420:
@@ -391,11 +392,17 @@ static void ipu_plane_atomic_update(struct drm_plane *plane,
 	struct drm_plane_state *state = plane->state;
 	enum ipu_color_space ics;
 
-	if (old_state->fb) {
+	if (old_state->fb &&
+	    old_state->src_w == state->src_w &&
+	    old_state->src_h == state->src_h &&
+	    old_state->fb->pixel_format == state->fb->pixel_format &&
+	    old_state->fb->pitches[0] == state->fb->pitches[0]) {
 		ipu_plane_atomic_set_base(ipu_plane, old_state);
 		return;
 	}
 
+	ipu_plane_disable(ipu_plane);
+
 	switch (ipu_plane->dp_flow) {
 	case IPU_DP_FLOW_SYNC_BG:
 		ipu_dp_setup_channel(ipu_plane->dp,

but unfortunately this leads to a kernel oops.  From what I can tell,
lock->class_cache[subclass] was 0xffffffff.  subclass was 0, lock
was 0xec58631c.

[drm:drm_atomic_helper_commit_cleanup_done] *ERROR* [CRTC:24:crtc-0] flip_done timed out
Alignment trap: not handling instruction e1921f9f at [<c007fe4c>][  651.472496] Unhandled fault: alignment exception (0x001) at 0x00000103
pgd = ecea4000
[00000103] *pgd=00000000
Internal error: : 1 [#1] SMP ARM
Modules linked in: bnep rfcomm bluetooth nfsd rc_cec snd_soc_fsl_spdif caam_jr coda imx_pcm_dma imx_sdma v4l2_mem2mem videobuf2_dma_contig imx2_wdt videobuf2_vmalloc dw_hdmi_cec imx_thermal dw_hdmi_ahb_audio videobuf2_memops caam etnaviv snd_soc_imx_spdif
CPU: 0 PID: 1091 Comm: dbus-daemon Not tainted 4.8.0-rc1+ #2043
Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
task: ee3755c0 task.stack: ece74000
PC is at __lock_acquire+0xd4/0x18fc
LR is at lock_acquire+0xd8/0x250
pc : [<c007fe50>]    lr : [<c0081bd0>]    psr: a0070193
sp : ece75730  ip : ece74000  fp : ece757b4
r10: 00000000  r9 : c0acbef0  r8 : ec58631c
r7 : 00000001  r6 : ee3755c0  r5 : c0a925f8  r4 : c125ad8c
r3 : 00000000  r2 : 00000103  r1 : 00000000  r0 : ffffffff
Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment none
Control: 10c5387d  Table: 3cea404a  DAC: 00000051
Process dbus-daemon (pid: 1091, stack limit = 0xece74210)
Stack: (0xece75730 to 0xece76000)
(omitted)
Backtrace:
[<c007fd7c>] (__lock_acquire) from [<c0081bd0>] (lock_acquire+0xd8/0x250)
 r10:00000000 r9:c0acbef0 r8:00000000 r7:00000000 r6:ec58631c r5:60070193
 r4:00000000
[<c0081af8>] (lock_acquire) from [<c074d9cc>] (_raw_spin_lock_irqsave+0x4c/0x60)
 r10:ee1ca000 r9:0000040a r8:00000000 r7:00000000 r6:c007a48c r5:a0070193
 r4:ec58630c
[<c074d980>] (_raw_spin_lock_irqsave) from [<c007a48c>] (complete_all+0x1c/0x4c)
 r6:c0acdd18 r5:ec586308 r4:ec58630c
[<c007a470>] (complete_all) from [<c03fb480>] (drm_send_event_locked+0x30/0x104)
 r6:c0acdd18 r5:c0acb61d r4:ebc57200 r3:04240423
[<c03fb450>] (drm_send_event_locked) from [<c03fe4ac>] (send_vblank_event+0x94/0x1bc)
 r5:c0acb61d r4:ebc57200
[<c03fe418>] (send_vblank_event) from [<c03feda0>] (drm_handle_vblank+0x158/0x364)
 r10:ee1ca23c r9:ee1ca234 r8:0000040a r7:ee1ca000 r6:00000000 r5:ee1ca228
 r4:ebc57200
[<c03fec48>] (drm_handle_vblank) from [<c03fefc8>] (drm_crtc_handle_vblank+0x1c/0x20)
 r10:ece75964 r9:c0a3d554 r8:00000000 r7:0000012f r6:ee114a10 r5:ee114a00
 r4:ee055940
[<c03fefac>] (drm_crtc_handle_vblank) from [<c041ace4>] (imx_drm_handle_vblank+0x14/0x18)
[<c041acd0>] (imx_drm_handle_vblank) from [<c041b4c8>] (ipu_irq_handler+0x14/0x1c)
[<c041b4b4>] (ipu_irq_handler) from [<c0096630>] (__handle_irq_event_percpu+0xa4/0x428)
[<c009658c>] (__handle_irq_event_percpu) from [<c00969d8>] (handle_irq_event_percpu+0x24/0x60)
 r10:ece75ab0 r9:f4001100 r8:00000009 r7:00000000 r6:ee114a10 r5:ee114a00
 r4:ee114a00
[<c00969b4>] (handle_irq_event_percpu) from [<c0096a54>] (handle_irq_event+0x40/0x64)
 r5:ee114a60 r4:ee114a00
[<c0096a14>] (handle_irq_event) from [<c009a1c4>] (handle_level_irq+0xb0/0x138)
 r6:ee114a10 r5:ee114a60 r4:ee114a00 r3:c0a323d8
[<c009a114>] (handle_level_irq) from [<c0095df0>] (generic_handle_irq+0x20/0x30)
 r6:ee146810 r5:ece75a08 r4:00000017 r3:c009a114
[<c0095dd0>] (generic_handle_irq) from [<c041f344>] (ipu_irq_handle+0xa8/0xd8)
[<c041f29c>] (ipu_irq_handle) from [<c041f474>] (ipu_irq_handler+0x5c/0xb4)
 r8:ee820000 r7:00000026 r6:ee146810 r5:c0a44288 r4:eea46f10
[<c041f418>] (ipu_irq_handler) from [<c0095df0>] (generic_handle_irq+0x20/0x30)
 r6:00000000 r5:ece75c68 r4:c0a37240
[<c0095dd0>] (generic_handle_irq) from [<c0095f24>] (__handle_domain_irq+0x5c/0xb8)
[<c0095ec8>] (__handle_domain_irq) from [<c00094c8>] (gic_handle_irq+0x4c/0x9c)
 r8:c0a92950 r7:000003eb r6:c0a3dba4 r5:f400010c r4:f4000100 r3:ece75ab0
[<c000947c>] (gic_handle_irq) from [<c0014930>] (__irq_svc+0x70/0x98)
Exception stack(0xece75ab0 to 0xece75af8)
5aa0:                                     00000001 ee375a70 00000000 60070193
5ac0: 20070113 c0a4b910 00000001 00000002 00000002 c0a4b680 c0acbc34 ece75b14
5ae0: ece75ad0 ece75b00 c00821a0 c074e028 60070113 ffffffff
 r10:c0acbc34 r9:ece74000 r8:00000002 r7:ece75ae4 r6:ffffffff r5:60070113
 r4:c074e028 r3:ee3755c0
[<c074dfec>] (_raw_spin_unlock_irqrestore) from [<c007a388>] (swake_up+0x3c/0x40)
 r5:20070113 r4:c0a4b910
[<c007a34c>] (swake_up) from [<c00a0820>] (rcu_gp_kthread_wake+0x48/0x4c)
 r5:60070113 r4:eef85340
[<c00a07d8>] (rcu_gp_kthread_wake) from [<c00a2d98>] (rcu_process_callbacks+0x3a8/0x93c)
[<c00a29f0>] (rcu_process_callbacks) from [<c0034cb8>] (__do_softirq+0xe8/0x5e4)
 r10:c0acbc34 r9:00000024 r8:00000002 r7:00000002 r6:c0a3d554 r5:00000009
 r4:c0a3d0a4
[<c0034bd0>] (__do_softirq) from [<c0035534>] (irq_exit+0xe4/0x150)
 r10:ece75c68 r9:f4001100 r8:ee820000 r7:0000001d r6:00000000 r5:00000000
 r4:c0a37240
[<c0035450>] (irq_exit) from [<c0095f28>] (__handle_domain_irq+0x60/0xb8)
[<c0095ec8>] (__handle_domain_irq) from [<c00094c8>] (gic_handle_irq+0x4c/0x9c)
 r8:c0a92950 r7:000003eb r6:c0a3dba4 r5:f400010c r4:f4000100 r3:ece75c68
[<c000947c>] (gic_handle_irq) from [<c0014930>] (__irq_svc+0x70/0x98)
Exception stack(0xece75c68 to 0xece75cb0)
5c60:                   00000001 ece75eb0 ece75ca8 ee765748 ee765748 ee4357e8
5c80: ed7e9011 eeefa000 c0acb1f6 00002081 ece75eb0 ece75cf4 ece75cb8 ece75cb8
5ca0: c0181764 c0181838 60070013 ffffffff
 r10:ece75eb0 r9:ece74000 r8:c0acb1f6 r7:ece75c9c r6:ffffffff r5:60070013
 r4:c0181838 r3:ee3755c0
[<c0181724>] (__d_lookup_rcu) from [<c0171da0>] (lookup_fast+0x48/0x384)
 r10:ece75d5c r9:ee955910 r8:ece75d58 r7:ee4357e8 r6:00000000 r5:ece75d60
 r4:ece75ea8
[<c0171d58>] (lookup_fast) from [<c0174644>] (walk_component+0x34/0x284)
 r10:90954373 r9:ff010301 r8:ece75ea8 r7:00000001 r6:00000000 r5:2f727375
 r4:ece75ea8
[<c0174610>] (walk_component) from [<c0174a30>] (link_path_walk+0x19c/0x4b8)
 r7:ed7e9015 r6:ee4357e8 r5:2f727375 r4:7fffffff
[<c0174894>] (link_path_walk) from [<c017514c>] (path_openat+0x70/0xee0)
 r10:ece75ea8 r9:ece74000 r8:ece75f5c r7:00000003 r6:ece75ea8 r5:ece75f5c
 r4:00000046
[<c01750dc>] (path_openat) from [<c0176dd0>] (do_filp_open+0x68/0xbc)
 r10:00000000 r9:ece74000 r8:c000ff44 r7:00000003 r6:ece75ea8 r5:ece75f5c
 r4:00000046
[<c0176d68>] (do_filp_open) from [<c0165b4c>] (do_sys_open+0x120/0x1d4)
 r7:00000142 r6:ffffff9c r5:ed7e9000 r4:00000046
[<c0165a2c>] (do_sys_open) from [<c0165c3c>] (SyS_openat+0x14/0x18)
 r10:00000000 r8:c000ff44 r7:00000142 r6:801462c8 r5:bed94468 r4:80146450
[<c0165c28>] (SyS_openat) from [<c000fda0>] (ret_fast_syscall+0x0/0x1c)
Code: 0affffe9 e2802f41 f592f000 e1921f9f (e2811001)
---[ end trace 8ffd323ac322f062 ]---

-- 
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2016-08-13 15:00 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-04  7:40 [PATCH v3 00/10] imx drm atomic mode setting conversion Liu Ying
2016-07-04  7:40 ` [PATCH v3 01/10] drm/imx: ipuv3 plane: Check different types of plane separately Liu Ying
2016-07-04  7:40 ` [PATCH v3 02/10] gpu: ipu-v3: ipu-dmfc: Use static DMFC FIFO allocation mechanism Liu Ying
2016-07-04  7:40 ` [PATCH v3 03/10] drm/imx: atomic phase 1: Use transitional atomic CRTC and plane helpers Liu Ying
2016-08-13 10:11   ` Russell King - ARM Linux
2016-08-13 10:45     ` Russell King - ARM Linux
2016-08-13 11:29       ` Russell King - ARM Linux
2016-08-13 14:09         ` Russell King - ARM Linux
2016-08-13 15:00           ` Russell King - ARM Linux [this message]
2016-08-14  9:44         ` Daniel Vetter
2016-08-14 10:46           ` Daniel Vetter
2016-08-14 11:43             ` Peter Senna Tschudin
2016-08-15  6:21               ` Ying Liu
2016-07-04  7:40 ` [PATCH v3 04/10] drm/imx: atomic phase 2 step 1: Wire up state ->reset, ->duplicate and ->destroy Liu Ying
2016-07-04  7:40 ` [PATCH v3 05/10] drm/imx: atomic phase 2 step 2: Track plane_state->fb correctly in ->page_flip Liu Ying
2016-07-04  7:40 ` [PATCH v3 06/10] drm/imx: Remove encoders' ->prepare callbacks Liu Ying
2016-07-04  7:40 ` [PATCH v3 07/10] drm/imx: atomic phase 3 step 1: Use atomic configuration Liu Ying
2016-07-04  7:40 ` [PATCH v3 08/10] drm/bridge: dw-hdmi: Remove the legacy drm_connector_funcs structure Liu Ying
2016-07-04  7:40 ` [PATCH v3 09/10] drm/imx: atomic phase 3 step 2: Legacy callback fixups Liu Ying
2016-07-04  7:40 ` [PATCH v3 10/10] drm/imx: atomic phase 3 step 3: Advertise DRIVER_ATOMIC Liu Ying
2016-07-12 12:51 ` [PATCH v3 00/10] imx drm atomic mode setting conversion Daniel Vetter
2016-07-12 16:48   ` Philipp Zabel

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=20160813150004.GA12419@n2100.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gnuiyl@gmail.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: link
Be 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.