Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
Hi Frieder, On Tue, Apr 20, 2021 at 01:42:05PM +0200, Frieder Schrempf wrote: > On 23.02.21 13:07, Daniel Vetter wrote: > > On Thu, Feb 18, 2021 at 5:02 PM Andrzej Hajda wrote: > >> W dniu 18.02.2021 o 09:04, Michael Tretter pisze: > >>> On Wed, 10 Feb 2021 10:10:37 +0100, Frieder Schrempf wrote: > On 04.02.21 18:46, Daniel Vetter wrote: > > On Thu, Feb 4, 2021 at 6:26 PM Laurent Pinchart > > wrote: > >> On Thu, Feb 04, 2021 at 06:19:22PM +0100, Daniel Vetter wrote: > >>> On Thu, Feb 4, 2021 at 5:28 PM Andrzej Hajda wrote: > W dniu 04.02.2021 o 17:05, Daniel Vetter pisze: > > On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: > >> On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: > >>> On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter wrote: > On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > > On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > >> W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > >>> On 14.09.2020 22:01, Michael Tretter wrote: > On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > > On 14.09.2020 10:29, Marek Szyprowski wrote: > >> On 11.09.2020 15:54, Michael Tretter wrote: > >>> Make the exynos_dsi driver a full drm bridge that can be > >>> found and > >>> used > >>> from other drivers. > >>> > >>> Other drivers can only attach to the bridge, if a mipi > >>> dsi device > >>> already attached to the bridge. This allows to defer the > >>> probe of the > >>> display pipe until the downstream bridges are available, > >>> too. > >>> > >>> Signed-off-by: Michael Tretter > >> This one (and the whole series applied) still fails on > >> Exynos boards: > >> > >> [drm] Exynos DRM: using 11c0.fimd device for DMA > >> mapping > >> operations > >> exynos-drm exynos-drm: bound 11c0.fimd (ops > >> fimd_component_ops) > >> OF: graph: no port node found in /soc/dsi@11c8 > >> 8<--- cut here --- > >> Unable to handle kernel NULL pointer dereference at > >> virtual address > >> 0084 > >> pgd = (ptrval) > >> [0084] *pgd= > >> Internal error: Oops: 5 [#1] PREEMPT SMP ARM > >> Modules linked in: > >> CPU: 1 PID: 1 Comm: swapper/0 Not tainted > >> 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > >> Hardware name: Samsung Exynos (Flattened Device Tree) > >> PC is at drm_bridge_attach+0x18/0x164 > >> LR is at exynos_dsi_bind+0x88/0xa8 > >> pc : []lr : []psr: 2013 > >> sp : ef0dfca8 ip : 0002 fp : c13190e0 > >> r10: r9 : ee46d580 r8 : c13190e0 > >> r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > >> r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > >> Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM > >> Segment none > >> Control: 10c5387d Table: 4000404a DAC: 0051 > >> Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > >> Stack: (0xef0dfca8 to 0xef0e) > >> ... > >> [] (drm_bridge_attach) from [] > >> (exynos_dsi_bind+0x88/0xa8) > >> [] (exynos_dsi_bind) from [] > >> (component_bind_all+0xfc/0x290) > >> [] (component_bind_all) from [] > >> (exynos_drm_bind+0xe4/0x19c) > >> [] (exynos_drm_bind) from [] > >> (try_to_bring_up_master+0x1e4/0x2c4) > >> [] (try_to_bring_up_master) from [] > >> (component_master_add_with_match+0xd4/0x108) > >> [] (component_master_add_with_match) from > >> [] > >> (exynos_drm_platform_probe+0xe4/0x110) > >> [] (exynos_drm_platform_probe) from [] > >> (platform_drv_probe+0x6c/0xa4) > >> [] (platform_drv_probe) from [] > >> (really_probe+0x200/0x4fc) > >> [] (really_probe) from [] > >> (driver_probe_device+0x78/0x1fc) > >> [] (driver_probe_device) from [] > >> (device_driver_attach+0x58/0x60) > >> [] (device_driver_attach) from [] > >> (__driver_attach+0xdc/0x174) > >> []
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On 23.02.21 13:07, Daniel Vetter wrote: On Thu, Feb 18, 2021 at 5:02 PM Andrzej Hajda wrote: Hi Michael, W dniu 18.02.2021 o 09:04, Michael Tretter pisze: On Wed, 10 Feb 2021 10:10:37 +0100, Frieder Schrempf wrote: On 04.02.21 18:46, Daniel Vetter wrote: On Thu, Feb 4, 2021 at 6:26 PM Laurent Pinchart wrote: On Thu, Feb 04, 2021 at 06:19:22PM +0100, Daniel Vetter wrote: On Thu, Feb 4, 2021 at 5:28 PM Andrzej Hajda wrote: W dniu 04.02.2021 o 17:05, Daniel Vetter pisze: On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter wrote: On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: On 14.09.2020 22:01, Michael Tretter wrote: On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: On 14.09.2020 10:29, Marek Szyprowski wrote: On 11.09.2020 15:54, Michael Tretter wrote: Make the exynos_dsi driver a full drm bridge that can be found and used from other drivers. Other drivers can only attach to the bridge, if a mipi dsi device already attached to the bridge. This allows to defer the probe of the display pipe until the downstream bridges are available, too. Signed-off-by: Michael Tretter This one (and the whole series applied) still fails on Exynos boards: [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) OF: graph: no port node found in /soc/dsi@11c8 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 0084 pgd = (ptrval) [0084] *pgd= Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 Hardware name: Samsung Exynos (Flattened Device Tree) PC is at drm_bridge_attach+0x18/0x164 LR is at exynos_dsi_bind+0x88/0xa8 pc : []lr : []psr: 2013 sp : ef0dfca8 ip : 0002 fp : c13190e0 r10: r9 : ee46d580 r8 : c13190e0 r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 4000404a DAC: 0051 Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) Stack: (0xef0dfca8 to 0xef0e) ... [] (drm_bridge_attach) from [] (exynos_dsi_bind+0x88/0xa8) [] (exynos_dsi_bind) from [] (component_bind_all+0xfc/0x290) [] (component_bind_all) from [] (exynos_drm_bind+0xe4/0x19c) [] (exynos_drm_bind) from [] (try_to_bring_up_master+0x1e4/0x2c4) [] (try_to_bring_up_master) from [] (component_master_add_with_match+0xd4/0x108) [] (component_master_add_with_match) from [] (exynos_drm_platform_probe+0xe4/0x110) [] (exynos_drm_platform_probe) from [] (platform_drv_probe+0x6c/0xa4) [] (platform_drv_probe) from [] (really_probe+0x200/0x4fc) [] (really_probe) from [] (driver_probe_device+0x78/0x1fc) [] (driver_probe_device) from [] (device_driver_attach+0x58/0x60) [] (device_driver_attach) from [] (__driver_attach+0xdc/0x174) [] (__driver_attach) from [] (bus_for_each_dev+0x68/0xb4) [] (bus_for_each_dev) from [] (bus_add_driver+0x158/0x214) [] (bus_add_driver) from [] (driver_register+0x78/0x110) [] (driver_register) from [] (exynos_drm_init+0xe4/0x118) [] (exynos_drm_init) from [] (do_one_initcall+0x8c/0x42c) [] (do_one_initcall) from [] (kernel_init_freeable+0x190/0x1dc) [] (kernel_init_freeable) from [] (kernel_init+0x8/0x118) [] (kernel_init) from [] (ret_from_fork+0x14/0x20) Exception stack(0xef0dffb0 to 0xef0dfff8) ... ---[ end trace ee27f313f9ed9da1 ]--- # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) I will try to debug it a bit more today. The above crash has been caused by lack of in_bridge initialization to NULL in exynos_dsi_bind() in this patch. However, fixing it reveals another issue: [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) OF: graph: no port node found in /soc/dsi@11c8 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 0280 pgd = (ptrval) [0280] *pgd= Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.9.0-rc4-next-20200911-00010-g417dc70d70ec-dirty #1613 Hardware name: Samsung Exynos (Flattened Device Tree) PC is at __mutex_lock+0x54/0xb18 LR is at lock_is_held_type+0x80/0x138 pc : []lr : []psr: 6013 sp : ef0dfd30 ip : 33937b74 fp : c13193c8 r10: c1208eec r9 : r8 : ee45f808 r7 : c19561a4 r6 : r5 : r4 : 024c r3 : r2 : 00204140 r1 : c124f13c r0 : Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control:
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On Thu, Feb 18, 2021 at 5:02 PM Andrzej Hajda wrote: > > Hi Michael, > > W dniu 18.02.2021 o 09:04, Michael Tretter pisze: > > On Wed, 10 Feb 2021 10:10:37 +0100, Frieder Schrempf wrote: > >> On 04.02.21 18:46, Daniel Vetter wrote: > >>> On Thu, Feb 4, 2021 at 6:26 PM Laurent Pinchart > >>> wrote: > On Thu, Feb 04, 2021 at 06:19:22PM +0100, Daniel Vetter wrote: > > On Thu, Feb 4, 2021 at 5:28 PM Andrzej Hajda wrote: > >> W dniu 04.02.2021 o 17:05, Daniel Vetter pisze: > >>> On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: > On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: > > On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter wrote: > >> On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > >>> On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > > On 14.09.2020 22:01, Michael Tretter wrote: > >> On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > >>> On 14.09.2020 10:29, Marek Szyprowski wrote: > On 11.09.2020 15:54, Michael Tretter wrote: > > Make the exynos_dsi driver a full drm bridge that can be > > found and > > used > > from other drivers. > > > > Other drivers can only attach to the bridge, if a mipi dsi > > device > > already attached to the bridge. This allows to defer the > > probe of the > > display pipe until the downstream bridges are available, > > too. > > > > Signed-off-by: Michael Tretter > This one (and the whole series applied) still fails on > Exynos boards: > > [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > operations > exynos-drm exynos-drm: bound 11c0.fimd (ops > fimd_component_ops) > OF: graph: no port node found in /soc/dsi@11c8 > 8<--- cut here --- > Unable to handle kernel NULL pointer dereference at virtual > address > 0084 > pgd = (ptrval) > [0084] *pgd= > Internal error: Oops: 5 [#1] PREEMPT SMP ARM > Modules linked in: > CPU: 1 PID: 1 Comm: swapper/0 Not tainted > 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > Hardware name: Samsung Exynos (Flattened Device Tree) > PC is at drm_bridge_attach+0x18/0x164 > LR is at exynos_dsi_bind+0x88/0xa8 > pc : []lr : []psr: 2013 > sp : ef0dfca8 ip : 0002 fp : c13190e0 > r10: r9 : ee46d580 r8 : c13190e0 > r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment > none > Control: 10c5387d Table: 4000404a DAC: 0051 > Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > Stack: (0xef0dfca8 to 0xef0e) > ... > [] (drm_bridge_attach) from [] > (exynos_dsi_bind+0x88/0xa8) > [] (exynos_dsi_bind) from [] > (component_bind_all+0xfc/0x290) > [] (component_bind_all) from [] > (exynos_drm_bind+0xe4/0x19c) > [] (exynos_drm_bind) from [] > (try_to_bring_up_master+0x1e4/0x2c4) > [] (try_to_bring_up_master) from [] > (component_master_add_with_match+0xd4/0x108) > [] (component_master_add_with_match) from > [] > (exynos_drm_platform_probe+0xe4/0x110) > [] (exynos_drm_platform_probe) from [] > (platform_drv_probe+0x6c/0xa4) > [] (platform_drv_probe) from [] > (really_probe+0x200/0x4fc) > [] (really_probe) from [] > (driver_probe_device+0x78/0x1fc) > [] (driver_probe_device) from [] > (device_driver_attach+0x58/0x60) > [] (device_driver_attach) from [] > (__driver_attach+0xdc/0x174) > [] (__driver_attach) from [] > (bus_for_each_dev+0x68/0xb4) > [] (bus_for_each_dev) from [] > (bus_add_driver+0x158/0x214) > [] (bus_add_driver) from [] > (driver_register+0x78/0x110) > [] (driver_register) from [] >
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
Hi Michael, W dniu 18.02.2021 o 09:04, Michael Tretter pisze: > On Wed, 10 Feb 2021 10:10:37 +0100, Frieder Schrempf wrote: >> On 04.02.21 18:46, Daniel Vetter wrote: >>> On Thu, Feb 4, 2021 at 6:26 PM Laurent Pinchart >>> wrote: On Thu, Feb 04, 2021 at 06:19:22PM +0100, Daniel Vetter wrote: > On Thu, Feb 4, 2021 at 5:28 PM Andrzej Hajda wrote: >> W dniu 04.02.2021 o 17:05, Daniel Vetter pisze: >>> On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: > On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter wrote: >> On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: >>> On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > On 14.09.2020 22:01, Michael Tretter wrote: >> On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: >>> On 14.09.2020 10:29, Marek Szyprowski wrote: On 11.09.2020 15:54, Michael Tretter wrote: > Make the exynos_dsi driver a full drm bridge that can be > found and > used > from other drivers. > > Other drivers can only attach to the bridge, if a mipi dsi > device > already attached to the bridge. This allows to defer the > probe of the > display pipe until the downstream bridges are available, too. > > Signed-off-by: Michael Tretter This one (and the whole series applied) still fails on Exynos boards: [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) OF: graph: no port node found in /soc/dsi@11c8 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 0084 pgd = (ptrval) [0084] *pgd= Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 Hardware name: Samsung Exynos (Flattened Device Tree) PC is at drm_bridge_attach+0x18/0x164 LR is at exynos_dsi_bind+0x88/0xa8 pc : []lr : []psr: 2013 sp : ef0dfca8 ip : 0002 fp : c13190e0 r10: r9 : ee46d580 r8 : c13190e0 r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 4000404a DAC: 0051 Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) Stack: (0xef0dfca8 to 0xef0e) ... [] (drm_bridge_attach) from [] (exynos_dsi_bind+0x88/0xa8) [] (exynos_dsi_bind) from [] (component_bind_all+0xfc/0x290) [] (component_bind_all) from [] (exynos_drm_bind+0xe4/0x19c) [] (exynos_drm_bind) from [] (try_to_bring_up_master+0x1e4/0x2c4) [] (try_to_bring_up_master) from [] (component_master_add_with_match+0xd4/0x108) [] (component_master_add_with_match) from [] (exynos_drm_platform_probe+0xe4/0x110) [] (exynos_drm_platform_probe) from [] (platform_drv_probe+0x6c/0xa4) [] (platform_drv_probe) from [] (really_probe+0x200/0x4fc) [] (really_probe) from [] (driver_probe_device+0x78/0x1fc) [] (driver_probe_device) from [] (device_driver_attach+0x58/0x60) [] (device_driver_attach) from [] (__driver_attach+0xdc/0x174) [] (__driver_attach) from [] (bus_for_each_dev+0x68/0xb4) [] (bus_for_each_dev) from [] (bus_add_driver+0x158/0x214) [] (bus_add_driver) from [] (driver_register+0x78/0x110) [] (driver_register) from [] (exynos_drm_init+0xe4/0x118) [] (exynos_drm_init) from [] (do_one_initcall+0x8c/0x42c) [] (do_one_initcall) from [] (kernel_init_freeable+0x190/0x1dc) []
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On Wed, 10 Feb 2021 10:10:37 +0100, Frieder Schrempf wrote: > On 04.02.21 18:46, Daniel Vetter wrote: > > On Thu, Feb 4, 2021 at 6:26 PM Laurent Pinchart > > wrote: > > > On Thu, Feb 04, 2021 at 06:19:22PM +0100, Daniel Vetter wrote: > > > > On Thu, Feb 4, 2021 at 5:28 PM Andrzej Hajda wrote: > > > > > W dniu 04.02.2021 o 17:05, Daniel Vetter pisze: > > > > > > On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: > > > > > > > On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: > > > > > > > > On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter wrote: > > > > > > > > > On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > > > > > > > > > > On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > > > > > > > > > > > W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > > > > > > > > > > > > On 14.09.2020 22:01, Michael Tretter wrote: > > > > > > > > > > > > > On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > On 14.09.2020 10:29, Marek Szyprowski wrote: > > > > > > > > > > > > > > > On 11.09.2020 15:54, Michael Tretter wrote: > > > > > > > > > > > > > > > > Make the exynos_dsi driver a full drm bridge > > > > > > > > > > > > > > > > that can be found and > > > > > > > > > > > > > > > > used > > > > > > > > > > > > > > > > from other drivers. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Other drivers can only attach to the bridge, if > > > > > > > > > > > > > > > > a mipi dsi device > > > > > > > > > > > > > > > > already attached to the bridge. This allows to > > > > > > > > > > > > > > > > defer the probe of the > > > > > > > > > > > > > > > > display pipe until the downstream bridges are > > > > > > > > > > > > > > > > available, too. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Signed-off-by: Michael Tretter > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > This one (and the whole series applied) still > > > > > > > > > > > > > > > fails on Exynos boards: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [drm] Exynos DRM: using 11c0.fimd device for > > > > > > > > > > > > > > > DMA mapping > > > > > > > > > > > > > > > operations > > > > > > > > > > > > > > > exynos-drm exynos-drm: bound 11c0.fimd (ops > > > > > > > > > > > > > > > fimd_component_ops) > > > > > > > > > > > > > > > OF: graph: no port node found in /soc/dsi@11c8 > > > > > > > > > > > > > > > 8<--- cut here --- > > > > > > > > > > > > > > > Unable to handle kernel NULL pointer dereference > > > > > > > > > > > > > > > at virtual address > > > > > > > > > > > > > > > 0084 > > > > > > > > > > > > > > > pgd = (ptrval) > > > > > > > > > > > > > > > [0084] *pgd= > > > > > > > > > > > > > > > Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > > > > > > > > > > > > > > Modules linked in: > > > > > > > > > > > > > > > CPU: 1 PID: 1 Comm: swapper/0 Not tainted > > > > > > > > > > > > > > > 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > > > > > > > > > > > > > > > Hardware name: Samsung Exynos (Flattened Device > > > > > > > > > > > > > > > Tree) > > > > > > > > > > > > > > > PC is at drm_bridge_attach+0x18/0x164 > > > > > > > > > > > > > > > LR is at exynos_dsi_bind+0x88/0xa8 > > > > > > > > > > > > > > > pc : []lr : []psr: > > > > > > > > > > > > > > > 2013 > > > > > > > > > > > > > > > sp : ef0dfca8 ip : 0002 fp : c13190e0 > > > > > > > > > > > > > > > r10: r9 : ee46d580 r8 : c13190e0 > > > > > > > > > > > > > > > r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : > > > > > > > > > > > > > > > ef39e840 > > > > > > > > > > > > > > > r3 : r2 : 0018 r1 : ef39e888 r0 : > > > > > > > > > > > > > > > ef39e840 > > > > > > > > > > > > > > > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA > > > > > > > > > > > > > > > ARM Segment none > > > > > > > > > > > > > > > Control: 10c5387d Table: 4000404a DAC: 0051 > > > > > > > > > > > > > > > Process swapper/0 (pid: 1, stack limit = > > > > > > > > > > > > > > > 0x(ptrval)) > > > > > > > > > > > > > > > Stack: (0xef0dfca8 to 0xef0e) > > > > > > > > > > > > > > > ... > > > > > > > > > > > > > > > [] (drm_bridge_attach) from [] > > > > > > > > > > > > > > > (exynos_dsi_bind+0x88/0xa8) > > > > > > > > > > > > > > > [] (exynos_dsi_bind) from [] > > > > > > > > > > > > > > > (component_bind_all+0xfc/0x290) > > > > > > > > > > > > > > > [] (component_bind_all) from > > > > > > > > > > > > > > > [] > > > > > > > > > > > > > > > (exynos_drm_bind+0xe4/0x19c) > > > > > > > > > > > > > > > [] (exynos_drm_bind) from [] > > > > > > > > > > > > > > > (try_to_bring_up_master+0x1e4/0x2c4) > > > > > > > > > > > > > > > [] (try_to_bring_up_master) from > > > > > > > > > > > > > > > [] > > > > > > > > > > > > > > > (component_master_add_with_match+0xd4/0x108) > > > > > > > > > > > > > > > [] (component_master_add_with_match) > > > > > > > > > > > > > > > from [] > > > > > > > > > > >
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On 04.02.21 18:46, Daniel Vetter wrote: On Thu, Feb 4, 2021 at 6:26 PM Laurent Pinchart wrote: Hi Daniel, On Thu, Feb 04, 2021 at 06:19:22PM +0100, Daniel Vetter wrote: On Thu, Feb 4, 2021 at 5:28 PM Andrzej Hajda wrote: W dniu 04.02.2021 o 17:05, Daniel Vetter pisze: On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter wrote: On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: On 14.09.2020 22:01, Michael Tretter wrote: On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: On 14.09.2020 10:29, Marek Szyprowski wrote: On 11.09.2020 15:54, Michael Tretter wrote: Make the exynos_dsi driver a full drm bridge that can be found and used from other drivers. Other drivers can only attach to the bridge, if a mipi dsi device already attached to the bridge. This allows to defer the probe of the display pipe until the downstream bridges are available, too. Signed-off-by: Michael Tretter This one (and the whole series applied) still fails on Exynos boards: [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) OF: graph: no port node found in /soc/dsi@11c8 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 0084 pgd = (ptrval) [0084] *pgd= Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 Hardware name: Samsung Exynos (Flattened Device Tree) PC is at drm_bridge_attach+0x18/0x164 LR is at exynos_dsi_bind+0x88/0xa8 pc : []lr : []psr: 2013 sp : ef0dfca8 ip : 0002 fp : c13190e0 r10: r9 : ee46d580 r8 : c13190e0 r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 4000404a DAC: 0051 Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) Stack: (0xef0dfca8 to 0xef0e) ... [] (drm_bridge_attach) from [] (exynos_dsi_bind+0x88/0xa8) [] (exynos_dsi_bind) from [] (component_bind_all+0xfc/0x290) [] (component_bind_all) from [] (exynos_drm_bind+0xe4/0x19c) [] (exynos_drm_bind) from [] (try_to_bring_up_master+0x1e4/0x2c4) [] (try_to_bring_up_master) from [] (component_master_add_with_match+0xd4/0x108) [] (component_master_add_with_match) from [] (exynos_drm_platform_probe+0xe4/0x110) [] (exynos_drm_platform_probe) from [] (platform_drv_probe+0x6c/0xa4) [] (platform_drv_probe) from [] (really_probe+0x200/0x4fc) [] (really_probe) from [] (driver_probe_device+0x78/0x1fc) [] (driver_probe_device) from [] (device_driver_attach+0x58/0x60) [] (device_driver_attach) from [] (__driver_attach+0xdc/0x174) [] (__driver_attach) from [] (bus_for_each_dev+0x68/0xb4) [] (bus_for_each_dev) from [] (bus_add_driver+0x158/0x214) [] (bus_add_driver) from [] (driver_register+0x78/0x110) [] (driver_register) from [] (exynos_drm_init+0xe4/0x118) [] (exynos_drm_init) from [] (do_one_initcall+0x8c/0x42c) [] (do_one_initcall) from [] (kernel_init_freeable+0x190/0x1dc) [] (kernel_init_freeable) from [] (kernel_init+0x8/0x118) [] (kernel_init) from [] (ret_from_fork+0x14/0x20) Exception stack(0xef0dffb0 to 0xef0dfff8) ... ---[ end trace ee27f313f9ed9da1 ]--- # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) I will try to debug it a bit more today. The above crash has been caused by lack of in_bridge initialization to NULL in exynos_dsi_bind() in this patch. However, fixing it reveals another issue: [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) OF: graph: no port node found in /soc/dsi@11c8 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 0280 pgd = (ptrval) [0280] *pgd= Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.9.0-rc4-next-20200911-00010-g417dc70d70ec-dirty #1613 Hardware name: Samsung Exynos (Flattened Device Tree) PC is at __mutex_lock+0x54/0xb18 LR is at lock_is_held_type+0x80/0x138 pc : []lr : []psr: 6013 sp : ef0dfd30 ip : 33937b74 fp : c13193c8 r10: c1208eec r9 : r8 : ee45f808 r7 : c19561a4 r6 : r5 : r4 : 024c r3 : r2 : 00204140 r1 : c124f13c r0 : Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 4000404a DAC: 0051 Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) Stack: (0xef0dfd30 to 0xef0e) ... [] (__mutex_lock) from [] (mutex_lock_nested+0x1c/0x24) [] (mutex_lock_nested) from
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On Thu, Feb 4, 2021 at 6:26 PM Laurent Pinchart wrote: > > Hi Daniel, > > On Thu, Feb 04, 2021 at 06:19:22PM +0100, Daniel Vetter wrote: > > On Thu, Feb 4, 2021 at 5:28 PM Andrzej Hajda wrote: > > > W dniu 04.02.2021 o 17:05, Daniel Vetter pisze: > > > > On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: > > > >> On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: > > > >>> On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter wrote: > > > On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > > > > On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > > > >> W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > > > >>> On 14.09.2020 22:01, Michael Tretter wrote: > > > On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > > > > On 14.09.2020 10:29, Marek Szyprowski wrote: > > > >> On 11.09.2020 15:54, Michael Tretter wrote: > > > >>> Make the exynos_dsi driver a full drm bridge that can be > > > >>> found and > > > >>> used > > > >>> from other drivers. > > > >>> > > > >>> Other drivers can only attach to the bridge, if a mipi dsi > > > >>> device > > > >>> already attached to the bridge. This allows to defer the > > > >>> probe of the > > > >>> display pipe until the downstream bridges are available, too. > > > >>> > > > >>> Signed-off-by: Michael Tretter > > > >> This one (and the whole series applied) still fails on Exynos > > > >> boards: > > > >> > > > >> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > > > >> operations > > > >> exynos-drm exynos-drm: bound 11c0.fimd (ops > > > >> fimd_component_ops) > > > >> OF: graph: no port node found in /soc/dsi@11c8 > > > >> 8<--- cut here --- > > > >> Unable to handle kernel NULL pointer dereference at virtual > > > >> address > > > >> 0084 > > > >> pgd = (ptrval) > > > >> [0084] *pgd= > > > >> Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > > >> Modules linked in: > > > >> CPU: 1 PID: 1 Comm: swapper/0 Not tainted > > > >> 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > > > >> Hardware name: Samsung Exynos (Flattened Device Tree) > > > >> PC is at drm_bridge_attach+0x18/0x164 > > > >> LR is at exynos_dsi_bind+0x88/0xa8 > > > >> pc : []lr : []psr: 2013 > > > >> sp : ef0dfca8 ip : 0002 fp : c13190e0 > > > >> r10: r9 : ee46d580 r8 : c13190e0 > > > >> r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > > > >> r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > > > >> Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment > > > >> none > > > >> Control: 10c5387d Table: 4000404a DAC: 0051 > > > >> Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > > > >> Stack: (0xef0dfca8 to 0xef0e) > > > >> ... > > > >> [] (drm_bridge_attach) from [] > > > >> (exynos_dsi_bind+0x88/0xa8) > > > >> [] (exynos_dsi_bind) from [] > > > >> (component_bind_all+0xfc/0x290) > > > >> [] (component_bind_all) from [] > > > >> (exynos_drm_bind+0xe4/0x19c) > > > >> [] (exynos_drm_bind) from [] > > > >> (try_to_bring_up_master+0x1e4/0x2c4) > > > >> [] (try_to_bring_up_master) from [] > > > >> (component_master_add_with_match+0xd4/0x108) > > > >> [] (component_master_add_with_match) from > > > >> [] > > > >> (exynos_drm_platform_probe+0xe4/0x110) > > > >> [] (exynos_drm_platform_probe) from [] > > > >> (platform_drv_probe+0x6c/0xa4) > > > >> [] (platform_drv_probe) from [] > > > >> (really_probe+0x200/0x4fc) > > > >> [] (really_probe) from [] > > > >> (driver_probe_device+0x78/0x1fc) > > > >> [] (driver_probe_device) from [] > > > >> (device_driver_attach+0x58/0x60) > > > >> [] (device_driver_attach) from [] > > > >> (__driver_attach+0xdc/0x174) > > > >> [] (__driver_attach) from [] > > > >> (bus_for_each_dev+0x68/0xb4) > > > >> [] (bus_for_each_dev) from [] > > > >> (bus_add_driver+0x158/0x214) > > > >> [] (bus_add_driver) from [] > > > >> (driver_register+0x78/0x110) > > > >> [] (driver_register) from [] > > > >> (exynos_drm_init+0xe4/0x118) > > > >> [] (exynos_drm_init) from [] > > > >> (do_one_initcall+0x8c/0x42c) > > > >> [] (do_one_initcall) from [] > > > >> (kernel_init_freeable+0x190/0x1dc) > > > >> [] (kernel_init_freeable) from [] > > > >> (kernel_init+0x8/0x118) > > > >> [] (kernel_init) from [] > > > >> (ret_from_fork+0x14/0x20) > > > >>
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
Hi Daniel, On Thu, Feb 04, 2021 at 06:19:22PM +0100, Daniel Vetter wrote: > On Thu, Feb 4, 2021 at 5:28 PM Andrzej Hajda wrote: > > W dniu 04.02.2021 o 17:05, Daniel Vetter pisze: > > > On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: > > >> On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: > > >>> On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter wrote: > > On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > > > On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > > >> W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > > >>> On 14.09.2020 22:01, Michael Tretter wrote: > > On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > > > On 14.09.2020 10:29, Marek Szyprowski wrote: > > >> On 11.09.2020 15:54, Michael Tretter wrote: > > >>> Make the exynos_dsi driver a full drm bridge that can be found > > >>> and > > >>> used > > >>> from other drivers. > > >>> > > >>> Other drivers can only attach to the bridge, if a mipi dsi > > >>> device > > >>> already attached to the bridge. This allows to defer the probe > > >>> of the > > >>> display pipe until the downstream bridges are available, too. > > >>> > > >>> Signed-off-by: Michael Tretter > > >> This one (and the whole series applied) still fails on Exynos > > >> boards: > > >> > > >> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > > >> operations > > >> exynos-drm exynos-drm: bound 11c0.fimd (ops > > >> fimd_component_ops) > > >> OF: graph: no port node found in /soc/dsi@11c8 > > >> 8<--- cut here --- > > >> Unable to handle kernel NULL pointer dereference at virtual > > >> address > > >> 0084 > > >> pgd = (ptrval) > > >> [0084] *pgd= > > >> Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > >> Modules linked in: > > >> CPU: 1 PID: 1 Comm: swapper/0 Not tainted > > >> 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > > >> Hardware name: Samsung Exynos (Flattened Device Tree) > > >> PC is at drm_bridge_attach+0x18/0x164 > > >> LR is at exynos_dsi_bind+0x88/0xa8 > > >> pc : []lr : []psr: 2013 > > >> sp : ef0dfca8 ip : 0002 fp : c13190e0 > > >> r10: r9 : ee46d580 r8 : c13190e0 > > >> r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > > >> r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > > >> Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none > > >> Control: 10c5387d Table: 4000404a DAC: 0051 > > >> Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > > >> Stack: (0xef0dfca8 to 0xef0e) > > >> ... > > >> [] (drm_bridge_attach) from [] > > >> (exynos_dsi_bind+0x88/0xa8) > > >> [] (exynos_dsi_bind) from [] > > >> (component_bind_all+0xfc/0x290) > > >> [] (component_bind_all) from [] > > >> (exynos_drm_bind+0xe4/0x19c) > > >> [] (exynos_drm_bind) from [] > > >> (try_to_bring_up_master+0x1e4/0x2c4) > > >> [] (try_to_bring_up_master) from [] > > >> (component_master_add_with_match+0xd4/0x108) > > >> [] (component_master_add_with_match) from [] > > >> (exynos_drm_platform_probe+0xe4/0x110) > > >> [] (exynos_drm_platform_probe) from [] > > >> (platform_drv_probe+0x6c/0xa4) > > >> [] (platform_drv_probe) from [] > > >> (really_probe+0x200/0x4fc) > > >> [] (really_probe) from [] > > >> (driver_probe_device+0x78/0x1fc) > > >> [] (driver_probe_device) from [] > > >> (device_driver_attach+0x58/0x60) > > >> [] (device_driver_attach) from [] > > >> (__driver_attach+0xdc/0x174) > > >> [] (__driver_attach) from [] > > >> (bus_for_each_dev+0x68/0xb4) > > >> [] (bus_for_each_dev) from [] > > >> (bus_add_driver+0x158/0x214) > > >> [] (bus_add_driver) from [] > > >> (driver_register+0x78/0x110) > > >> [] (driver_register) from [] > > >> (exynos_drm_init+0xe4/0x118) > > >> [] (exynos_drm_init) from [] > > >> (do_one_initcall+0x8c/0x42c) > > >> [] (do_one_initcall) from [] > > >> (kernel_init_freeable+0x190/0x1dc) > > >> [] (kernel_init_freeable) from [] > > >> (kernel_init+0x8/0x118) > > >> [] (kernel_init) from [] > > >> (ret_from_fork+0x14/0x20) > > >> Exception stack(0xef0dffb0 to 0xef0dfff8) > > >> ... > > >> ---[ end trace ee27f313f9ed9da1 ]--- > > >> > > >> # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 > > >> drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) > > >> > >
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On Thu, Feb 4, 2021 at 5:28 PM Andrzej Hajda wrote: > > > W dniu 04.02.2021 o 17:05, Daniel Vetter pisze: > > On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: > >> On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: > >>> On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter > >>> wrote: > On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > > On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > >> W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > >>> On 14.09.2020 22:01, Michael Tretter wrote: > On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > > On 14.09.2020 10:29, Marek Szyprowski wrote: > >> On 11.09.2020 15:54, Michael Tretter wrote: > >>> Make the exynos_dsi driver a full drm bridge that can be found and > >>> used > >>> from other drivers. > >>> > >>> Other drivers can only attach to the bridge, if a mipi dsi device > >>> already attached to the bridge. This allows to defer the probe of > >>> the > >>> display pipe until the downstream bridges are available, too. > >>> > >>> Signed-off-by: Michael Tretter > >> This one (and the whole series applied) still fails on Exynos > >> boards: > >> > >> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > >> operations > >> exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > >> OF: graph: no port node found in /soc/dsi@11c8 > >> 8<--- cut here --- > >> Unable to handle kernel NULL pointer dereference at virtual address > >> 0084 > >> pgd = (ptrval) > >> [0084] *pgd= > >> Internal error: Oops: 5 [#1] PREEMPT SMP ARM > >> Modules linked in: > >> CPU: 1 PID: 1 Comm: swapper/0 Not tainted > >> 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > >> Hardware name: Samsung Exynos (Flattened Device Tree) > >> PC is at drm_bridge_attach+0x18/0x164 > >> LR is at exynos_dsi_bind+0x88/0xa8 > >> pc : []lr : []psr: 2013 > >> sp : ef0dfca8 ip : 0002 fp : c13190e0 > >> r10: r9 : ee46d580 r8 : c13190e0 > >> r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > >> r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > >> Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none > >> Control: 10c5387d Table: 4000404a DAC: 0051 > >> Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > >> Stack: (0xef0dfca8 to 0xef0e) > >> ... > >> [] (drm_bridge_attach) from [] > >> (exynos_dsi_bind+0x88/0xa8) > >> [] (exynos_dsi_bind) from [] > >> (component_bind_all+0xfc/0x290) > >> [] (component_bind_all) from [] > >> (exynos_drm_bind+0xe4/0x19c) > >> [] (exynos_drm_bind) from [] > >> (try_to_bring_up_master+0x1e4/0x2c4) > >> [] (try_to_bring_up_master) from [] > >> (component_master_add_with_match+0xd4/0x108) > >> [] (component_master_add_with_match) from [] > >> (exynos_drm_platform_probe+0xe4/0x110) > >> [] (exynos_drm_platform_probe) from [] > >> (platform_drv_probe+0x6c/0xa4) > >> [] (platform_drv_probe) from [] > >> (really_probe+0x200/0x4fc) > >> [] (really_probe) from [] > >> (driver_probe_device+0x78/0x1fc) > >> [] (driver_probe_device) from [] > >> (device_driver_attach+0x58/0x60) > >> [] (device_driver_attach) from [] > >> (__driver_attach+0xdc/0x174) > >> [] (__driver_attach) from [] > >> (bus_for_each_dev+0x68/0xb4) > >> [] (bus_for_each_dev) from [] > >> (bus_add_driver+0x158/0x214) > >> [] (bus_add_driver) from [] > >> (driver_register+0x78/0x110) > >> [] (driver_register) from [] > >> (exynos_drm_init+0xe4/0x118) > >> [] (exynos_drm_init) from [] > >> (do_one_initcall+0x8c/0x42c) > >> [] (do_one_initcall) from [] > >> (kernel_init_freeable+0x190/0x1dc) > >> [] (kernel_init_freeable) from [] > >> (kernel_init+0x8/0x118) > >> [] (kernel_init) from [] > >> (ret_from_fork+0x14/0x20) > >> Exception stack(0xef0dffb0 to 0xef0dfff8) > >> ... > >> ---[ end trace ee27f313f9ed9da1 ]--- > >> > >> # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 > >> drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) > >> > >> I will try to debug it a bit more today. > > The above crash has been caused by lack of in_bridge initialization > > to > > NULL in exynos_dsi_bind() in this patch. However, fixing it reveals > > another issue: > > > > [drm] Exynos DRM: using 11c0.fimd device for DMA
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
W dniu 04.02.2021 o 17:05, Daniel Vetter pisze: > On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: >> On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: >>> On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter >>> wrote: On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: >> W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: >>> On 14.09.2020 22:01, Michael Tretter wrote: On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > On 14.09.2020 10:29, Marek Szyprowski wrote: >> On 11.09.2020 15:54, Michael Tretter wrote: >>> Make the exynos_dsi driver a full drm bridge that can be found and >>> used >>> from other drivers. >>> >>> Other drivers can only attach to the bridge, if a mipi dsi device >>> already attached to the bridge. This allows to defer the probe of >>> the >>> display pipe until the downstream bridges are available, too. >>> >>> Signed-off-by: Michael Tretter >> This one (and the whole series applied) still fails on Exynos boards: >> >> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping >> operations >> exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) >> OF: graph: no port node found in /soc/dsi@11c8 >> 8<--- cut here --- >> Unable to handle kernel NULL pointer dereference at virtual address >> 0084 >> pgd = (ptrval) >> [0084] *pgd= >> Internal error: Oops: 5 [#1] PREEMPT SMP ARM >> Modules linked in: >> CPU: 1 PID: 1 Comm: swapper/0 Not tainted >> 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 >> Hardware name: Samsung Exynos (Flattened Device Tree) >> PC is at drm_bridge_attach+0x18/0x164 >> LR is at exynos_dsi_bind+0x88/0xa8 >> pc : []lr : []psr: 2013 >> sp : ef0dfca8 ip : 0002 fp : c13190e0 >> r10: r9 : ee46d580 r8 : c13190e0 >> r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 >> r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 >> Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none >> Control: 10c5387d Table: 4000404a DAC: 0051 >> Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) >> Stack: (0xef0dfca8 to 0xef0e) >> ... >> [] (drm_bridge_attach) from [] >> (exynos_dsi_bind+0x88/0xa8) >> [] (exynos_dsi_bind) from [] >> (component_bind_all+0xfc/0x290) >> [] (component_bind_all) from [] >> (exynos_drm_bind+0xe4/0x19c) >> [] (exynos_drm_bind) from [] >> (try_to_bring_up_master+0x1e4/0x2c4) >> [] (try_to_bring_up_master) from [] >> (component_master_add_with_match+0xd4/0x108) >> [] (component_master_add_with_match) from [] >> (exynos_drm_platform_probe+0xe4/0x110) >> [] (exynos_drm_platform_probe) from [] >> (platform_drv_probe+0x6c/0xa4) >> [] (platform_drv_probe) from [] >> (really_probe+0x200/0x4fc) >> [] (really_probe) from [] >> (driver_probe_device+0x78/0x1fc) >> [] (driver_probe_device) from [] >> (device_driver_attach+0x58/0x60) >> [] (device_driver_attach) from [] >> (__driver_attach+0xdc/0x174) >> [] (__driver_attach) from [] >> (bus_for_each_dev+0x68/0xb4) >> [] (bus_for_each_dev) from [] >> (bus_add_driver+0x158/0x214) >> [] (bus_add_driver) from [] >> (driver_register+0x78/0x110) >> [] (driver_register) from [] >> (exynos_drm_init+0xe4/0x118) >> [] (exynos_drm_init) from [] >> (do_one_initcall+0x8c/0x42c) >> [] (do_one_initcall) from [] >> (kernel_init_freeable+0x190/0x1dc) >> [] (kernel_init_freeable) from [] >> (kernel_init+0x8/0x118) >> [] (kernel_init) from [] >> (ret_from_fork+0x14/0x20) >> Exception stack(0xef0dffb0 to 0xef0dfff8) >> ... >> ---[ end trace ee27f313f9ed9da1 ]--- >> >> # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 >> drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) >> >> I will try to debug it a bit more today. > The above crash has been caused by lack of in_bridge initialization to > NULL in exynos_dsi_bind() in this patch. However, fixing it reveals > another issue: > > [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > operations > exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > OF: graph: no port node found in /soc/dsi@11c8 > 8<--- cut here --- > Unable to handle kernel NULL pointer dereference at virtual address
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On Thu, Feb 04, 2021 at 11:56:32AM +0100, Michael Tretter wrote: > On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: > > On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter > > wrote: > > > > > > On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > > > > On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > > > > > W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > > > > > > On 14.09.2020 22:01, Michael Tretter wrote: > > > > > >> On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > > > > > >>> On 14.09.2020 10:29, Marek Szyprowski wrote: > > > > > On 11.09.2020 15:54, Michael Tretter wrote: > > > > > > Make the exynos_dsi driver a full drm bridge that can be found > > > > > > and > > > > > > used > > > > > > from other drivers. > > > > > > > > > > > > Other drivers can only attach to the bridge, if a mipi dsi > > > > > > device > > > > > > already attached to the bridge. This allows to defer the probe > > > > > > of the > > > > > > display pipe until the downstream bridges are available, too. > > > > > > > > > > > > Signed-off-by: Michael Tretter > > > > > This one (and the whole series applied) still fails on Exynos > > > > > boards: > > > > > > > > > > [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > > > > > operations > > > > > exynos-drm exynos-drm: bound 11c0.fimd (ops > > > > > fimd_component_ops) > > > > > OF: graph: no port node found in /soc/dsi@11c8 > > > > > 8<--- cut here --- > > > > > Unable to handle kernel NULL pointer dereference at virtual > > > > > address > > > > > 0084 > > > > > pgd = (ptrval) > > > > > [0084] *pgd= > > > > > Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > > > > Modules linked in: > > > > > CPU: 1 PID: 1 Comm: swapper/0 Not tainted > > > > > 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > > > > > Hardware name: Samsung Exynos (Flattened Device Tree) > > > > > PC is at drm_bridge_attach+0x18/0x164 > > > > > LR is at exynos_dsi_bind+0x88/0xa8 > > > > > pc : []lr : []psr: 2013 > > > > > sp : ef0dfca8 ip : 0002 fp : c13190e0 > > > > > r10: r9 : ee46d580 r8 : c13190e0 > > > > > r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > > > > > r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > > > > > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none > > > > > Control: 10c5387d Table: 4000404a DAC: 0051 > > > > > Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > > > > > Stack: (0xef0dfca8 to 0xef0e) > > > > > ... > > > > > [] (drm_bridge_attach) from [] > > > > > (exynos_dsi_bind+0x88/0xa8) > > > > > [] (exynos_dsi_bind) from [] > > > > > (component_bind_all+0xfc/0x290) > > > > > [] (component_bind_all) from [] > > > > > (exynos_drm_bind+0xe4/0x19c) > > > > > [] (exynos_drm_bind) from [] > > > > > (try_to_bring_up_master+0x1e4/0x2c4) > > > > > [] (try_to_bring_up_master) from [] > > > > > (component_master_add_with_match+0xd4/0x108) > > > > > [] (component_master_add_with_match) from [] > > > > > (exynos_drm_platform_probe+0xe4/0x110) > > > > > [] (exynos_drm_platform_probe) from [] > > > > > (platform_drv_probe+0x6c/0xa4) > > > > > [] (platform_drv_probe) from [] > > > > > (really_probe+0x200/0x4fc) > > > > > [] (really_probe) from [] > > > > > (driver_probe_device+0x78/0x1fc) > > > > > [] (driver_probe_device) from [] > > > > > (device_driver_attach+0x58/0x60) > > > > > [] (device_driver_attach) from [] > > > > > (__driver_attach+0xdc/0x174) > > > > > [] (__driver_attach) from [] > > > > > (bus_for_each_dev+0x68/0xb4) > > > > > [] (bus_for_each_dev) from [] > > > > > (bus_add_driver+0x158/0x214) > > > > > [] (bus_add_driver) from [] > > > > > (driver_register+0x78/0x110) > > > > > [] (driver_register) from [] > > > > > (exynos_drm_init+0xe4/0x118) > > > > > [] (exynos_drm_init) from [] > > > > > (do_one_initcall+0x8c/0x42c) > > > > > [] (do_one_initcall) from [] > > > > > (kernel_init_freeable+0x190/0x1dc) > > > > > [] (kernel_init_freeable) from [] > > > > > (kernel_init+0x8/0x118) > > > > > [] (kernel_init) from [] > > > > > (ret_from_fork+0x14/0x20) > > > > > Exception stack(0xef0dffb0 to 0xef0dfff8) > > > > > ... > > > > > ---[ end trace ee27f313f9ed9da1 ]--- > > > > > > > > > > # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 > > > > > drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) > > > > > > > > > > I will try to debug it a bit more today. > > > > > >>> The above crash has been caused by lack of in_bridge > > > > > >>> initialization to > > > > > >>> NULL in exynos_dsi_bind() in this
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On Thu, 04 Feb 2021 11:17:49 +0100, Daniel Vetter wrote: > On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter > wrote: > > > > On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > > > On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > > > > W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > > > > > On 14.09.2020 22:01, Michael Tretter wrote: > > > > >> On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > > > > >>> On 14.09.2020 10:29, Marek Szyprowski wrote: > > > > On 11.09.2020 15:54, Michael Tretter wrote: > > > > > Make the exynos_dsi driver a full drm bridge that can be found and > > > > > used > > > > > from other drivers. > > > > > > > > > > Other drivers can only attach to the bridge, if a mipi dsi device > > > > > already attached to the bridge. This allows to defer the probe of > > > > > the > > > > > display pipe until the downstream bridges are available, too. > > > > > > > > > > Signed-off-by: Michael Tretter > > > > This one (and the whole series applied) still fails on Exynos > > > > boards: > > > > > > > > [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > > > > operations > > > > exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > > > > OF: graph: no port node found in /soc/dsi@11c8 > > > > 8<--- cut here --- > > > > Unable to handle kernel NULL pointer dereference at virtual address > > > > 0084 > > > > pgd = (ptrval) > > > > [0084] *pgd= > > > > Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > > > Modules linked in: > > > > CPU: 1 PID: 1 Comm: swapper/0 Not tainted > > > > 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > > > > Hardware name: Samsung Exynos (Flattened Device Tree) > > > > PC is at drm_bridge_attach+0x18/0x164 > > > > LR is at exynos_dsi_bind+0x88/0xa8 > > > > pc : []lr : []psr: 2013 > > > > sp : ef0dfca8 ip : 0002 fp : c13190e0 > > > > r10: r9 : ee46d580 r8 : c13190e0 > > > > r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > > > > r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > > > > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none > > > > Control: 10c5387d Table: 4000404a DAC: 0051 > > > > Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > > > > Stack: (0xef0dfca8 to 0xef0e) > > > > ... > > > > [] (drm_bridge_attach) from [] > > > > (exynos_dsi_bind+0x88/0xa8) > > > > [] (exynos_dsi_bind) from [] > > > > (component_bind_all+0xfc/0x290) > > > > [] (component_bind_all) from [] > > > > (exynos_drm_bind+0xe4/0x19c) > > > > [] (exynos_drm_bind) from [] > > > > (try_to_bring_up_master+0x1e4/0x2c4) > > > > [] (try_to_bring_up_master) from [] > > > > (component_master_add_with_match+0xd4/0x108) > > > > [] (component_master_add_with_match) from [] > > > > (exynos_drm_platform_probe+0xe4/0x110) > > > > [] (exynos_drm_platform_probe) from [] > > > > (platform_drv_probe+0x6c/0xa4) > > > > [] (platform_drv_probe) from [] > > > > (really_probe+0x200/0x4fc) > > > > [] (really_probe) from [] > > > > (driver_probe_device+0x78/0x1fc) > > > > [] (driver_probe_device) from [] > > > > (device_driver_attach+0x58/0x60) > > > > [] (device_driver_attach) from [] > > > > (__driver_attach+0xdc/0x174) > > > > [] (__driver_attach) from [] > > > > (bus_for_each_dev+0x68/0xb4) > > > > [] (bus_for_each_dev) from [] > > > > (bus_add_driver+0x158/0x214) > > > > [] (bus_add_driver) from [] > > > > (driver_register+0x78/0x110) > > > > [] (driver_register) from [] > > > > (exynos_drm_init+0xe4/0x118) > > > > [] (exynos_drm_init) from [] > > > > (do_one_initcall+0x8c/0x42c) > > > > [] (do_one_initcall) from [] > > > > (kernel_init_freeable+0x190/0x1dc) > > > > [] (kernel_init_freeable) from [] > > > > (kernel_init+0x8/0x118) > > > > [] (kernel_init) from [] > > > > (ret_from_fork+0x14/0x20) > > > > Exception stack(0xef0dffb0 to 0xef0dfff8) > > > > ... > > > > ---[ end trace ee27f313f9ed9da1 ]--- > > > > > > > > # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 > > > > drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) > > > > > > > > I will try to debug it a bit more today. > > > > >>> The above crash has been caused by lack of in_bridge initialization > > > > >>> to > > > > >>> NULL in exynos_dsi_bind() in this patch. However, fixing it reveals > > > > >>> another issue: > > > > >>> > > > > >>> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > > > > >>> operations > > > > >>> exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > > > > >>> OF: graph: no port node found in /soc/dsi@11c8 > > > > >>>
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On Wed, Feb 3, 2021 at 9:32 PM Michael Tretter wrote: > > On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > > On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > > > W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > > > > On 14.09.2020 22:01, Michael Tretter wrote: > > > >> On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > > > >>> On 14.09.2020 10:29, Marek Szyprowski wrote: > > > On 11.09.2020 15:54, Michael Tretter wrote: > > > > Make the exynos_dsi driver a full drm bridge that can be found and > > > > used > > > > from other drivers. > > > > > > > > Other drivers can only attach to the bridge, if a mipi dsi device > > > > already attached to the bridge. This allows to defer the probe of > > > > the > > > > display pipe until the downstream bridges are available, too. > > > > > > > > Signed-off-by: Michael Tretter > > > This one (and the whole series applied) still fails on Exynos boards: > > > > > > [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > > > operations > > > exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > > > OF: graph: no port node found in /soc/dsi@11c8 > > > 8<--- cut here --- > > > Unable to handle kernel NULL pointer dereference at virtual address > > > 0084 > > > pgd = (ptrval) > > > [0084] *pgd= > > > Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > > Modules linked in: > > > CPU: 1 PID: 1 Comm: swapper/0 Not tainted > > > 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > > > Hardware name: Samsung Exynos (Flattened Device Tree) > > > PC is at drm_bridge_attach+0x18/0x164 > > > LR is at exynos_dsi_bind+0x88/0xa8 > > > pc : []lr : []psr: 2013 > > > sp : ef0dfca8 ip : 0002 fp : c13190e0 > > > r10: r9 : ee46d580 r8 : c13190e0 > > > r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > > > r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > > > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none > > > Control: 10c5387d Table: 4000404a DAC: 0051 > > > Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > > > Stack: (0xef0dfca8 to 0xef0e) > > > ... > > > [] (drm_bridge_attach) from [] > > > (exynos_dsi_bind+0x88/0xa8) > > > [] (exynos_dsi_bind) from [] > > > (component_bind_all+0xfc/0x290) > > > [] (component_bind_all) from [] > > > (exynos_drm_bind+0xe4/0x19c) > > > [] (exynos_drm_bind) from [] > > > (try_to_bring_up_master+0x1e4/0x2c4) > > > [] (try_to_bring_up_master) from [] > > > (component_master_add_with_match+0xd4/0x108) > > > [] (component_master_add_with_match) from [] > > > (exynos_drm_platform_probe+0xe4/0x110) > > > [] (exynos_drm_platform_probe) from [] > > > (platform_drv_probe+0x6c/0xa4) > > > [] (platform_drv_probe) from [] > > > (really_probe+0x200/0x4fc) > > > [] (really_probe) from [] > > > (driver_probe_device+0x78/0x1fc) > > > [] (driver_probe_device) from [] > > > (device_driver_attach+0x58/0x60) > > > [] (device_driver_attach) from [] > > > (__driver_attach+0xdc/0x174) > > > [] (__driver_attach) from [] > > > (bus_for_each_dev+0x68/0xb4) > > > [] (bus_for_each_dev) from [] > > > (bus_add_driver+0x158/0x214) > > > [] (bus_add_driver) from [] > > > (driver_register+0x78/0x110) > > > [] (driver_register) from [] > > > (exynos_drm_init+0xe4/0x118) > > > [] (exynos_drm_init) from [] > > > (do_one_initcall+0x8c/0x42c) > > > [] (do_one_initcall) from [] > > > (kernel_init_freeable+0x190/0x1dc) > > > [] (kernel_init_freeable) from [] > > > (kernel_init+0x8/0x118) > > > [] (kernel_init) from [] > > > (ret_from_fork+0x14/0x20) > > > Exception stack(0xef0dffb0 to 0xef0dfff8) > > > ... > > > ---[ end trace ee27f313f9ed9da1 ]--- > > > > > > # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 > > > drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) > > > > > > I will try to debug it a bit more today. > > > >>> The above crash has been caused by lack of in_bridge initialization to > > > >>> NULL in exynos_dsi_bind() in this patch. However, fixing it reveals > > > >>> another issue: > > > >>> > > > >>> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > > > >>> operations > > > >>> exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > > > >>> OF: graph: no port node found in /soc/dsi@11c8 > > > >>> 8<--- cut here --- > > > >>> Unable to handle kernel NULL pointer dereference at virtual address > > > >>> 0280 > > > >>> pgd = (ptrval) > > > >>> [0280] *pgd= > > > >>> Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > > >>> Modules linked in: > > > >>> CPU: 0 PID: 1 Comm:
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On Mon, 01 Feb 2021 17:33:14 +0100, Michael Tretter wrote: > On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > > W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > > > On 14.09.2020 22:01, Michael Tretter wrote: > > >> On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > > >>> On 14.09.2020 10:29, Marek Szyprowski wrote: > > On 11.09.2020 15:54, Michael Tretter wrote: > > > Make the exynos_dsi driver a full drm bridge that can be found and > > > used > > > from other drivers. > > > > > > Other drivers can only attach to the bridge, if a mipi dsi device > > > already attached to the bridge. This allows to defer the probe of the > > > display pipe until the downstream bridges are available, too. > > > > > > Signed-off-by: Michael Tretter > > This one (and the whole series applied) still fails on Exynos boards: > > > > [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > > operations > > exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > > OF: graph: no port node found in /soc/dsi@11c8 > > 8<--- cut here --- > > Unable to handle kernel NULL pointer dereference at virtual address > > 0084 > > pgd = (ptrval) > > [0084] *pgd= > > Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > Modules linked in: > > CPU: 1 PID: 1 Comm: swapper/0 Not tainted > > 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > > Hardware name: Samsung Exynos (Flattened Device Tree) > > PC is at drm_bridge_attach+0x18/0x164 > > LR is at exynos_dsi_bind+0x88/0xa8 > > pc : [] lr : [] psr: 2013 > > sp : ef0dfca8 ip : 0002 fp : c13190e0 > > r10: r9 : ee46d580 r8 : c13190e0 > > r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > > r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none > > Control: 10c5387d Table: 4000404a DAC: 0051 > > Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > > Stack: (0xef0dfca8 to 0xef0e) > > ... > > [] (drm_bridge_attach) from [] > > (exynos_dsi_bind+0x88/0xa8) > > [] (exynos_dsi_bind) from [] > > (component_bind_all+0xfc/0x290) > > [] (component_bind_all) from [] > > (exynos_drm_bind+0xe4/0x19c) > > [] (exynos_drm_bind) from [] > > (try_to_bring_up_master+0x1e4/0x2c4) > > [] (try_to_bring_up_master) from [] > > (component_master_add_with_match+0xd4/0x108) > > [] (component_master_add_with_match) from [] > > (exynos_drm_platform_probe+0xe4/0x110) > > [] (exynos_drm_platform_probe) from [] > > (platform_drv_probe+0x6c/0xa4) > > [] (platform_drv_probe) from [] > > (really_probe+0x200/0x4fc) > > [] (really_probe) from [] > > (driver_probe_device+0x78/0x1fc) > > [] (driver_probe_device) from [] > > (device_driver_attach+0x58/0x60) > > [] (device_driver_attach) from [] > > (__driver_attach+0xdc/0x174) > > [] (__driver_attach) from [] > > (bus_for_each_dev+0x68/0xb4) > > [] (bus_for_each_dev) from [] > > (bus_add_driver+0x158/0x214) > > [] (bus_add_driver) from [] > > (driver_register+0x78/0x110) > > [] (driver_register) from [] > > (exynos_drm_init+0xe4/0x118) > > [] (exynos_drm_init) from [] > > (do_one_initcall+0x8c/0x42c) > > [] (do_one_initcall) from [] > > (kernel_init_freeable+0x190/0x1dc) > > [] (kernel_init_freeable) from [] > > (kernel_init+0x8/0x118) > > [] (kernel_init) from [] (ret_from_fork+0x14/0x20) > > Exception stack(0xef0dffb0 to 0xef0dfff8) > > ... > > ---[ end trace ee27f313f9ed9da1 ]--- > > > > # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 > > drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) > > > > I will try to debug it a bit more today. > > >>> The above crash has been caused by lack of in_bridge initialization to > > >>> NULL in exynos_dsi_bind() in this patch. However, fixing it reveals > > >>> another issue: > > >>> > > >>> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations > > >>> exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > > >>> OF: graph: no port node found in /soc/dsi@11c8 > > >>> 8<--- cut here --- > > >>> Unable to handle kernel NULL pointer dereference at virtual address > > >>> 0280 > > >>> pgd = (ptrval) > > >>> [0280] *pgd= > > >>> Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > >>> Modules linked in: > > >>> CPU: 0 PID: 1 Comm: swapper/0 Not tainted > > >>> 5.9.0-rc4-next-20200911-00010-g417dc70d70ec-dirty #1613 > > >>> Hardware name: Samsung Exynos (Flattened Device Tree) > > >>> PC is at __mutex_lock+0x54/0xb18 > > >>> LR is at lock_is_held_type+0x80/0x138 > > >>> pc : [] lr : [] psr: 6013 > > >>> sp : ef0dfd30
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
On Tue, 15 Sep 2020 21:40:40 +0200, Andrzej Hajda wrote: > W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > > On 14.09.2020 22:01, Michael Tretter wrote: > >> On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > >>> On 14.09.2020 10:29, Marek Szyprowski wrote: > On 11.09.2020 15:54, Michael Tretter wrote: > > Make the exynos_dsi driver a full drm bridge that can be found and > > used > > from other drivers. > > > > Other drivers can only attach to the bridge, if a mipi dsi device > > already attached to the bridge. This allows to defer the probe of the > > display pipe until the downstream bridges are available, too. > > > > Signed-off-by: Michael Tretter > This one (and the whole series applied) still fails on Exynos boards: > > [drm] Exynos DRM: using 11c0.fimd device for DMA mapping > operations > exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > OF: graph: no port node found in /soc/dsi@11c8 > 8<--- cut here --- > Unable to handle kernel NULL pointer dereference at virtual address > 0084 > pgd = (ptrval) > [0084] *pgd= > Internal error: Oops: 5 [#1] PREEMPT SMP ARM > Modules linked in: > CPU: 1 PID: 1 Comm: swapper/0 Not tainted > 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > Hardware name: Samsung Exynos (Flattened Device Tree) > PC is at drm_bridge_attach+0x18/0x164 > LR is at exynos_dsi_bind+0x88/0xa8 > pc : [] lr : [] psr: 2013 > sp : ef0dfca8 ip : 0002 fp : c13190e0 > r10: r9 : ee46d580 r8 : c13190e0 > r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none > Control: 10c5387d Table: 4000404a DAC: 0051 > Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > Stack: (0xef0dfca8 to 0xef0e) > ... > [] (drm_bridge_attach) from [] > (exynos_dsi_bind+0x88/0xa8) > [] (exynos_dsi_bind) from [] > (component_bind_all+0xfc/0x290) > [] (component_bind_all) from [] > (exynos_drm_bind+0xe4/0x19c) > [] (exynos_drm_bind) from [] > (try_to_bring_up_master+0x1e4/0x2c4) > [] (try_to_bring_up_master) from [] > (component_master_add_with_match+0xd4/0x108) > [] (component_master_add_with_match) from [] > (exynos_drm_platform_probe+0xe4/0x110) > [] (exynos_drm_platform_probe) from [] > (platform_drv_probe+0x6c/0xa4) > [] (platform_drv_probe) from [] > (really_probe+0x200/0x4fc) > [] (really_probe) from [] > (driver_probe_device+0x78/0x1fc) > [] (driver_probe_device) from [] > (device_driver_attach+0x58/0x60) > [] (device_driver_attach) from [] > (__driver_attach+0xdc/0x174) > [] (__driver_attach) from [] > (bus_for_each_dev+0x68/0xb4) > [] (bus_for_each_dev) from [] > (bus_add_driver+0x158/0x214) > [] (bus_add_driver) from [] > (driver_register+0x78/0x110) > [] (driver_register) from [] > (exynos_drm_init+0xe4/0x118) > [] (exynos_drm_init) from [] > (do_one_initcall+0x8c/0x42c) > [] (do_one_initcall) from [] > (kernel_init_freeable+0x190/0x1dc) > [] (kernel_init_freeable) from [] > (kernel_init+0x8/0x118) > [] (kernel_init) from [] (ret_from_fork+0x14/0x20) > Exception stack(0xef0dffb0 to 0xef0dfff8) > ... > ---[ end trace ee27f313f9ed9da1 ]--- > > # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 > drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) > > I will try to debug it a bit more today. > >>> The above crash has been caused by lack of in_bridge initialization to > >>> NULL in exynos_dsi_bind() in this patch. However, fixing it reveals > >>> another issue: > >>> > >>> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations > >>> exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > >>> OF: graph: no port node found in /soc/dsi@11c8 > >>> 8<--- cut here --- > >>> Unable to handle kernel NULL pointer dereference at virtual address > >>> 0280 > >>> pgd = (ptrval) > >>> [0280] *pgd= > >>> Internal error: Oops: 5 [#1] PREEMPT SMP ARM > >>> Modules linked in: > >>> CPU: 0 PID: 1 Comm: swapper/0 Not tainted > >>> 5.9.0-rc4-next-20200911-00010-g417dc70d70ec-dirty #1613 > >>> Hardware name: Samsung Exynos (Flattened Device Tree) > >>> PC is at __mutex_lock+0x54/0xb18 > >>> LR is at lock_is_held_type+0x80/0x138 > >>> pc : [] lr : [] psr: 6013 > >>> sp : ef0dfd30 ip : 33937b74 fp : c13193c8 > >>> r10: c1208eec r9 : r8 : ee45f808 > >>> r7 : c19561a4 r6 : r5 : r4 : 024c > >>> r3 : r2 : 00204140 r1 : c124f13c r0 : > >>> Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
Hi again, W dniu 14.09.2020 o 23:19, Andrzej Hajda pisze: > Hi Marek, Michael, > > On 14.09.2020 22:01, Michael Tretter wrote: >> Hi, >> >> On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: >>> On 14.09.2020 10:29, Marek Szyprowski wrote: On 11.09.2020 15:54, Michael Tretter wrote: > Make the exynos_dsi driver a full drm bridge that can be found and > used > from other drivers. > > Other drivers can only attach to the bridge, if a mipi dsi device > already attached to the bridge. This allows to defer the probe of the > display pipe until the downstream bridges are available, too. > > Signed-off-by: Michael Tretter This one (and the whole series applied) still fails on Exynos boards: [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) OF: graph: no port node found in /soc/dsi@11c8 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 0084 pgd = (ptrval) [0084] *pgd= Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 Hardware name: Samsung Exynos (Flattened Device Tree) PC is at drm_bridge_attach+0x18/0x164 LR is at exynos_dsi_bind+0x88/0xa8 pc : [] lr : [] psr: 2013 sp : ef0dfca8 ip : 0002 fp : c13190e0 r10: r9 : ee46d580 r8 : c13190e0 r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 4000404a DAC: 0051 Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) Stack: (0xef0dfca8 to 0xef0e) ... [] (drm_bridge_attach) from [] (exynos_dsi_bind+0x88/0xa8) [] (exynos_dsi_bind) from [] (component_bind_all+0xfc/0x290) [] (component_bind_all) from [] (exynos_drm_bind+0xe4/0x19c) [] (exynos_drm_bind) from [] (try_to_bring_up_master+0x1e4/0x2c4) [] (try_to_bring_up_master) from [] (component_master_add_with_match+0xd4/0x108) [] (component_master_add_with_match) from [] (exynos_drm_platform_probe+0xe4/0x110) [] (exynos_drm_platform_probe) from [] (platform_drv_probe+0x6c/0xa4) [] (platform_drv_probe) from [] (really_probe+0x200/0x4fc) [] (really_probe) from [] (driver_probe_device+0x78/0x1fc) [] (driver_probe_device) from [] (device_driver_attach+0x58/0x60) [] (device_driver_attach) from [] (__driver_attach+0xdc/0x174) [] (__driver_attach) from [] (bus_for_each_dev+0x68/0xb4) [] (bus_for_each_dev) from [] (bus_add_driver+0x158/0x214) [] (bus_add_driver) from [] (driver_register+0x78/0x110) [] (driver_register) from [] (exynos_drm_init+0xe4/0x118) [] (exynos_drm_init) from [] (do_one_initcall+0x8c/0x42c) [] (do_one_initcall) from [] (kernel_init_freeable+0x190/0x1dc) [] (kernel_init_freeable) from [] (kernel_init+0x8/0x118) [] (kernel_init) from [] (ret_from_fork+0x14/0x20) Exception stack(0xef0dffb0 to 0xef0dfff8) ... ---[ end trace ee27f313f9ed9da1 ]--- # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) I will try to debug it a bit more today. >>> The above crash has been caused by lack of in_bridge initialization to >>> NULL in exynos_dsi_bind() in this patch. However, fixing it reveals >>> another issue: >>> >>> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations >>> exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) >>> OF: graph: no port node found in /soc/dsi@11c8 >>> 8<--- cut here --- >>> Unable to handle kernel NULL pointer dereference at virtual address >>> 0280 >>> pgd = (ptrval) >>> [0280] *pgd= >>> Internal error: Oops: 5 [#1] PREEMPT SMP ARM >>> Modules linked in: >>> CPU: 0 PID: 1 Comm: swapper/0 Not tainted >>> 5.9.0-rc4-next-20200911-00010-g417dc70d70ec-dirty #1613 >>> Hardware name: Samsung Exynos (Flattened Device Tree) >>> PC is at __mutex_lock+0x54/0xb18 >>> LR is at lock_is_held_type+0x80/0x138 >>> pc : [] lr : [] psr: 6013 >>> sp : ef0dfd30 ip : 33937b74 fp : c13193c8 >>> r10: c1208eec r9 : r8 : ee45f808 >>> r7 : c19561a4 r6 : r5 : r4 : 024c >>> r3 : r2 : 00204140 r1 : c124f13c r0 : >>> Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none >>> Control: 10c5387d Table: 4000404a DAC: 0051 >>> Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) >>> Stack: (0xef0dfd30 to 0xef0e) >>> ... >>> [] (__mutex_lock) from [] >>> (mutex_lock_nested+0x1c/0x24) >>> []
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
Hi Marek, Michael, On 14.09.2020 22:01, Michael Tretter wrote: > Hi, > > On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: >> On 14.09.2020 10:29, Marek Szyprowski wrote: >>> On 11.09.2020 15:54, Michael Tretter wrote: Make the exynos_dsi driver a full drm bridge that can be found and used from other drivers. Other drivers can only attach to the bridge, if a mipi dsi device already attached to the bridge. This allows to defer the probe of the display pipe until the downstream bridges are available, too. Signed-off-by: Michael Tretter >>> This one (and the whole series applied) still fails on Exynos boards: >>> >>> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations >>> exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) >>> OF: graph: no port node found in /soc/dsi@11c8 >>> 8<--- cut here --- >>> Unable to handle kernel NULL pointer dereference at virtual address 0084 >>> pgd = (ptrval) >>> [0084] *pgd= >>> Internal error: Oops: 5 [#1] PREEMPT SMP ARM >>> Modules linked in: >>> CPU: 1 PID: 1 Comm: swapper/0 Not tainted >>> 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 >>> Hardware name: Samsung Exynos (Flattened Device Tree) >>> PC is at drm_bridge_attach+0x18/0x164 >>> LR is at exynos_dsi_bind+0x88/0xa8 >>> pc : [] lr : [] psr: 2013 >>> sp : ef0dfca8 ip : 0002 fp : c13190e0 >>> r10: r9 : ee46d580 r8 : c13190e0 >>> r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 >>> r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 >>> Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none >>> Control: 10c5387d Table: 4000404a DAC: 0051 >>> Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) >>> Stack: (0xef0dfca8 to 0xef0e) >>> ... >>> [] (drm_bridge_attach) from [] >>> (exynos_dsi_bind+0x88/0xa8) >>> [] (exynos_dsi_bind) from [] >>> (component_bind_all+0xfc/0x290) >>> [] (component_bind_all) from [] >>> (exynos_drm_bind+0xe4/0x19c) >>> [] (exynos_drm_bind) from [] >>> (try_to_bring_up_master+0x1e4/0x2c4) >>> [] (try_to_bring_up_master) from [] >>> (component_master_add_with_match+0xd4/0x108) >>> [] (component_master_add_with_match) from [] >>> (exynos_drm_platform_probe+0xe4/0x110) >>> [] (exynos_drm_platform_probe) from [] >>> (platform_drv_probe+0x6c/0xa4) >>> [] (platform_drv_probe) from [] >>> (really_probe+0x200/0x4fc) >>> [] (really_probe) from [] >>> (driver_probe_device+0x78/0x1fc) >>> [] (driver_probe_device) from [] >>> (device_driver_attach+0x58/0x60) >>> [] (device_driver_attach) from [] >>> (__driver_attach+0xdc/0x174) >>> [] (__driver_attach) from [] >>> (bus_for_each_dev+0x68/0xb4) >>> [] (bus_for_each_dev) from [] >>> (bus_add_driver+0x158/0x214) >>> [] (bus_add_driver) from [] (driver_register+0x78/0x110) >>> [] (driver_register) from [] >>> (exynos_drm_init+0xe4/0x118) >>> [] (exynos_drm_init) from [] >>> (do_one_initcall+0x8c/0x42c) >>> [] (do_one_initcall) from [] >>> (kernel_init_freeable+0x190/0x1dc) >>> [] (kernel_init_freeable) from [] >>> (kernel_init+0x8/0x118) >>> [] (kernel_init) from [] (ret_from_fork+0x14/0x20) >>> Exception stack(0xef0dffb0 to 0xef0dfff8) >>> ... >>> ---[ end trace ee27f313f9ed9da1 ]--- >>> >>> # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 >>> drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) >>> >>> I will try to debug it a bit more today. >> The above crash has been caused by lack of in_bridge initialization to >> NULL in exynos_dsi_bind() in this patch. However, fixing it reveals >> another issue: >> >> [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations >> exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) >> OF: graph: no port node found in /soc/dsi@11c8 >> 8<--- cut here --- >> Unable to handle kernel NULL pointer dereference at virtual address 0280 >> pgd = (ptrval) >> [0280] *pgd= >> Internal error: Oops: 5 [#1] PREEMPT SMP ARM >> Modules linked in: >> CPU: 0 PID: 1 Comm: swapper/0 Not tainted >> 5.9.0-rc4-next-20200911-00010-g417dc70d70ec-dirty #1613 >> Hardware name: Samsung Exynos (Flattened Device Tree) >> PC is at __mutex_lock+0x54/0xb18 >> LR is at lock_is_held_type+0x80/0x138 >> pc : [] lr : [] psr: 6013 >> sp : ef0dfd30 ip : 33937b74 fp : c13193c8 >> r10: c1208eec r9 : r8 : ee45f808 >> r7 : c19561a4 r6 : r5 : r4 : 024c >> r3 : r2 : 00204140 r1 : c124f13c r0 : >> Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none >> Control: 10c5387d Table: 4000404a DAC: 0051 >> Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) >> Stack: (0xef0dfd30 to 0xef0e) >> ... >> [] (__mutex_lock) from [] (mutex_lock_nested+0x1c/0x24) >> [] (mutex_lock_nested) from [] >> (__exynos_dsi_host_attach+0x20/0x6c) >> [] (__exynos_dsi_host_attach) from [] >> (exynos_dsi_host_attach+0x70/0x194) >> [] (exynos_dsi_host_attach) from [] >>
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
Hi, On Mon, 14 Sep 2020 14:31:19 +0200, Marek Szyprowski wrote: > On 14.09.2020 10:29, Marek Szyprowski wrote: > > On 11.09.2020 15:54, Michael Tretter wrote: > >> Make the exynos_dsi driver a full drm bridge that can be found and used > >> from other drivers. > >> > >> Other drivers can only attach to the bridge, if a mipi dsi device > >> already attached to the bridge. This allows to defer the probe of the > >> display pipe until the downstream bridges are available, too. > >> > >> Signed-off-by: Michael Tretter > > This one (and the whole series applied) still fails on Exynos boards: > > > > [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations > > exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > > OF: graph: no port node found in /soc/dsi@11c8 > > 8<--- cut here --- > > Unable to handle kernel NULL pointer dereference at virtual address 0084 > > pgd = (ptrval) > > [0084] *pgd= > > Internal error: Oops: 5 [#1] PREEMPT SMP ARM > > Modules linked in: > > CPU: 1 PID: 1 Comm: swapper/0 Not tainted > > 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > > Hardware name: Samsung Exynos (Flattened Device Tree) > > PC is at drm_bridge_attach+0x18/0x164 > > LR is at exynos_dsi_bind+0x88/0xa8 > > pc : [] lr : [] psr: 2013 > > sp : ef0dfca8 ip : 0002 fp : c13190e0 > > r10: r9 : ee46d580 r8 : c13190e0 > > r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > > r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none > > Control: 10c5387d Table: 4000404a DAC: 0051 > > Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > > Stack: (0xef0dfca8 to 0xef0e) > > ... > > [] (drm_bridge_attach) from [] > > (exynos_dsi_bind+0x88/0xa8) > > [] (exynos_dsi_bind) from [] > > (component_bind_all+0xfc/0x290) > > [] (component_bind_all) from [] > > (exynos_drm_bind+0xe4/0x19c) > > [] (exynos_drm_bind) from [] > > (try_to_bring_up_master+0x1e4/0x2c4) > > [] (try_to_bring_up_master) from [] > > (component_master_add_with_match+0xd4/0x108) > > [] (component_master_add_with_match) from [] > > (exynos_drm_platform_probe+0xe4/0x110) > > [] (exynos_drm_platform_probe) from [] > > (platform_drv_probe+0x6c/0xa4) > > [] (platform_drv_probe) from [] > > (really_probe+0x200/0x4fc) > > [] (really_probe) from [] > > (driver_probe_device+0x78/0x1fc) > > [] (driver_probe_device) from [] > > (device_driver_attach+0x58/0x60) > > [] (device_driver_attach) from [] > > (__driver_attach+0xdc/0x174) > > [] (__driver_attach) from [] > > (bus_for_each_dev+0x68/0xb4) > > [] (bus_for_each_dev) from [] > > (bus_add_driver+0x158/0x214) > > [] (bus_add_driver) from [] (driver_register+0x78/0x110) > > [] (driver_register) from [] > > (exynos_drm_init+0xe4/0x118) > > [] (exynos_drm_init) from [] > > (do_one_initcall+0x8c/0x42c) > > [] (do_one_initcall) from [] > > (kernel_init_freeable+0x190/0x1dc) > > [] (kernel_init_freeable) from [] > > (kernel_init+0x8/0x118) > > [] (kernel_init) from [] (ret_from_fork+0x14/0x20) > > Exception stack(0xef0dffb0 to 0xef0dfff8) > > ... > > ---[ end trace ee27f313f9ed9da1 ]--- > > > > # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 > > drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) > > > > I will try to debug it a bit more today. > > The above crash has been caused by lack of in_bridge initialization to > NULL in exynos_dsi_bind() in this patch. However, fixing it reveals > another issue: > > [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations > exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > OF: graph: no port node found in /soc/dsi@11c8 > 8<--- cut here --- > Unable to handle kernel NULL pointer dereference at virtual address 0280 > pgd = (ptrval) > [0280] *pgd= > Internal error: Oops: 5 [#1] PREEMPT SMP ARM > Modules linked in: > CPU: 0 PID: 1 Comm: swapper/0 Not tainted > 5.9.0-rc4-next-20200911-00010-g417dc70d70ec-dirty #1613 > Hardware name: Samsung Exynos (Flattened Device Tree) > PC is at __mutex_lock+0x54/0xb18 > LR is at lock_is_held_type+0x80/0x138 > pc : [] lr : [] psr: 6013 > sp : ef0dfd30 ip : 33937b74 fp : c13193c8 > r10: c1208eec r9 : r8 : ee45f808 > r7 : c19561a4 r6 : r5 : r4 : 024c > r3 : r2 : 00204140 r1 : c124f13c r0 : > Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none > Control: 10c5387d Table: 4000404a DAC: 0051 > Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > Stack: (0xef0dfd30 to 0xef0e) > ... > [] (__mutex_lock) from [] (mutex_lock_nested+0x1c/0x24) > [] (mutex_lock_nested) from [] > (__exynos_dsi_host_attach+0x20/0x6c) > [] (__exynos_dsi_host_attach) from [] > (exynos_dsi_host_attach+0x70/0x194) > [] (exynos_dsi_host_attach) from [] > (s6e8aa0_probe+0x1b0/0x218) > [] (s6e8aa0_probe) from [] (really_probe+0x200/0x4fc) > [] (really_probe) from [] >
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
Hi, On 14.09.2020 10:29, Marek Szyprowski wrote: > On 11.09.2020 15:54, Michael Tretter wrote: >> Make the exynos_dsi driver a full drm bridge that can be found and used >> from other drivers. >> >> Other drivers can only attach to the bridge, if a mipi dsi device >> already attached to the bridge. This allows to defer the probe of the >> display pipe until the downstream bridges are available, too. >> >> Signed-off-by: Michael Tretter > This one (and the whole series applied) still fails on Exynos boards: > > [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations > exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) > OF: graph: no port node found in /soc/dsi@11c8 > 8<--- cut here --- > Unable to handle kernel NULL pointer dereference at virtual address 0084 > pgd = (ptrval) > [0084] *pgd= > Internal error: Oops: 5 [#1] PREEMPT SMP ARM > Modules linked in: > CPU: 1 PID: 1 Comm: swapper/0 Not tainted > 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 > Hardware name: Samsung Exynos (Flattened Device Tree) > PC is at drm_bridge_attach+0x18/0x164 > LR is at exynos_dsi_bind+0x88/0xa8 > pc : [] lr : [] psr: 2013 > sp : ef0dfca8 ip : 0002 fp : c13190e0 > r10: r9 : ee46d580 r8 : c13190e0 > r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 > r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 > Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none > Control: 10c5387d Table: 4000404a DAC: 0051 > Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) > Stack: (0xef0dfca8 to 0xef0e) > ... > [] (drm_bridge_attach) from [] > (exynos_dsi_bind+0x88/0xa8) > [] (exynos_dsi_bind) from [] > (component_bind_all+0xfc/0x290) > [] (component_bind_all) from [] > (exynos_drm_bind+0xe4/0x19c) > [] (exynos_drm_bind) from [] > (try_to_bring_up_master+0x1e4/0x2c4) > [] (try_to_bring_up_master) from [] > (component_master_add_with_match+0xd4/0x108) > [] (component_master_add_with_match) from [] > (exynos_drm_platform_probe+0xe4/0x110) > [] (exynos_drm_platform_probe) from [] > (platform_drv_probe+0x6c/0xa4) > [] (platform_drv_probe) from [] > (really_probe+0x200/0x4fc) > [] (really_probe) from [] > (driver_probe_device+0x78/0x1fc) > [] (driver_probe_device) from [] > (device_driver_attach+0x58/0x60) > [] (device_driver_attach) from [] > (__driver_attach+0xdc/0x174) > [] (__driver_attach) from [] > (bus_for_each_dev+0x68/0xb4) > [] (bus_for_each_dev) from [] > (bus_add_driver+0x158/0x214) > [] (bus_add_driver) from [] (driver_register+0x78/0x110) > [] (driver_register) from [] > (exynos_drm_init+0xe4/0x118) > [] (exynos_drm_init) from [] > (do_one_initcall+0x8c/0x42c) > [] (do_one_initcall) from [] > (kernel_init_freeable+0x190/0x1dc) > [] (kernel_init_freeable) from [] > (kernel_init+0x8/0x118) > [] (kernel_init) from [] (ret_from_fork+0x14/0x20) > Exception stack(0xef0dffb0 to 0xef0dfff8) > ... > ---[ end trace ee27f313f9ed9da1 ]--- > > # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 > drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) > > I will try to debug it a bit more today. The above crash has been caused by lack of in_bridge initialization to NULL in exynos_dsi_bind() in this patch. However, fixing it reveals another issue: [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) OF: graph: no port node found in /soc/dsi@11c8 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 0280 pgd = (ptrval) [0280] *pgd= Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.9.0-rc4-next-20200911-00010-g417dc70d70ec-dirty #1613 Hardware name: Samsung Exynos (Flattened Device Tree) PC is at __mutex_lock+0x54/0xb18 LR is at lock_is_held_type+0x80/0x138 pc : [] lr : [] psr: 6013 sp : ef0dfd30 ip : 33937b74 fp : c13193c8 r10: c1208eec r9 : r8 : ee45f808 r7 : c19561a4 r6 : r5 : r4 : 024c r3 : r2 : 00204140 r1 : c124f13c r0 : Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 4000404a DAC: 0051 Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) Stack: (0xef0dfd30 to 0xef0e) ... [] (__mutex_lock) from [] (mutex_lock_nested+0x1c/0x24) [] (mutex_lock_nested) from [] (__exynos_dsi_host_attach+0x20/0x6c) [] (__exynos_dsi_host_attach) from [] (exynos_dsi_host_attach+0x70/0x194) [] (exynos_dsi_host_attach) from [] (s6e8aa0_probe+0x1b0/0x218) [] (s6e8aa0_probe) from [] (really_probe+0x200/0x4fc) [] (really_probe) from [] (driver_probe_device+0x78/0x1fc) [] (driver_probe_device) from [] (device_driver_attach+0x58/0x60) [] (device_driver_attach) from [] (__driver_attach+0xdc/0x174) [] (__driver_attach) from [] (bus_for_each_dev+0x68/0xb4) [] (bus_for_each_dev) from [] (bus_add_driver+0x158/0x214) [] (bus_add_driver)
Re: [PATCH v2 10/16] drm/exynos: implement a drm bridge
Hi Michael, On 11.09.2020 15:54, Michael Tretter wrote: > Make the exynos_dsi driver a full drm bridge that can be found and used > from other drivers. > > Other drivers can only attach to the bridge, if a mipi dsi device > already attached to the bridge. This allows to defer the probe of the > display pipe until the downstream bridges are available, too. > > Signed-off-by: Michael Tretter This one (and the whole series applied) still fails on Exynos boards: [drm] Exynos DRM: using 11c0.fimd device for DMA mapping operations exynos-drm exynos-drm: bound 11c0.fimd (ops fimd_component_ops) OF: graph: no port node found in /soc/dsi@11c8 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 0084 pgd = (ptrval) [0084] *pgd= Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.9.0-rc4-next-20200911-00010-g417dc70d70ec #1608 Hardware name: Samsung Exynos (Flattened Device Tree) PC is at drm_bridge_attach+0x18/0x164 LR is at exynos_dsi_bind+0x88/0xa8 pc : [] lr : [] psr: 2013 sp : ef0dfca8 ip : 0002 fp : c13190e0 r10: r9 : ee46d580 r8 : c13190e0 r7 : ee438800 r6 : 0018 r5 : ef253810 r4 : ef39e840 r3 : r2 : 0018 r1 : ef39e888 r0 : ef39e840 Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none Control: 10c5387d Table: 4000404a DAC: 0051 Process swapper/0 (pid: 1, stack limit = 0x(ptrval)) Stack: (0xef0dfca8 to 0xef0e) ... [] (drm_bridge_attach) from [] (exynos_dsi_bind+0x88/0xa8) [] (exynos_dsi_bind) from [] (component_bind_all+0xfc/0x290) [] (component_bind_all) from [] (exynos_drm_bind+0xe4/0x19c) [] (exynos_drm_bind) from [] (try_to_bring_up_master+0x1e4/0x2c4) [] (try_to_bring_up_master) from [] (component_master_add_with_match+0xd4/0x108) [] (component_master_add_with_match) from [] (exynos_drm_platform_probe+0xe4/0x110) [] (exynos_drm_platform_probe) from [] (platform_drv_probe+0x6c/0xa4) [] (platform_drv_probe) from [] (really_probe+0x200/0x4fc) [] (really_probe) from [] (driver_probe_device+0x78/0x1fc) [] (driver_probe_device) from [] (device_driver_attach+0x58/0x60) [] (device_driver_attach) from [] (__driver_attach+0xdc/0x174) [] (__driver_attach) from [] (bus_for_each_dev+0x68/0xb4) [] (bus_for_each_dev) from [] (bus_add_driver+0x158/0x214) [] (bus_add_driver) from [] (driver_register+0x78/0x110) [] (driver_register) from [] (exynos_drm_init+0xe4/0x118) [] (exynos_drm_init) from [] (do_one_initcall+0x8c/0x42c) [] (do_one_initcall) from [] (kernel_init_freeable+0x190/0x1dc) [] (kernel_init_freeable) from [] (kernel_init+0x8/0x118) [] (kernel_init) from [] (ret_from_fork+0x14/0x20) Exception stack(0xef0dffb0 to 0xef0dfff8) ... ---[ end trace ee27f313f9ed9da1 ]--- # arm-linux-gnueabi-addr2line -e vmlinux c0628c08 drivers/gpu/drm/drm_bridge.c:184 (discriminator 1) I will try to debug it a bit more today. > --- > v2: > - move attach of out_bridge to bridge_attach > - add bridge_detach > - don't cleanup encoder if create_connector failed > --- > drivers/gpu/drm/exynos/exynos_drm_dsi.c | 103 +--- > 1 file changed, 75 insertions(+), 28 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c > b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > index 2d75f9877dc0..5e7c1a99a3ee 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c > @@ -266,6 +266,7 @@ struct exynos_dsi_driver_data { > > struct exynos_dsi { > struct drm_encoder encoder; > + struct drm_bridge bridge; > struct mipi_dsi_host dsi_host; > struct drm_connector connector; > struct drm_panel *panel; > @@ -1602,6 +1603,60 @@ static const struct drm_encoder_helper_funcs > exynos_dsi_encoder_helper_funcs = { > .disable = exynos_dsi_disable, > }; > > +static int exynos_dsi_bridge_attach(struct drm_bridge *bridge, > + enum drm_bridge_attach_flags flags) > +{ > + struct exynos_dsi *dsi = bridge->driver_private; > + struct drm_encoder *encoder = bridge->encoder; > + int ret; > + > + if (!dsi->out_bridge && !dsi->panel) > + return -EPROBE_DEFER; > + > + if (dsi->out_bridge) { > + ret = drm_bridge_attach(encoder, dsi->out_bridge, > + bridge, flags); > + if (ret) > + return ret; > + list_splice_init(>bridge_chain, >bridge_chain); > + } else { > + ret = exynos_dsi_create_connector(encoder); > + if (ret) > + return ret; > + > + if (dsi->panel) { > + dsi->connector.status = connector_status_connected; > + } > + } > + > + return 0; > +} > + > +static void exynos_dsi_bridge_detach(struct drm_bridge *bridge) > +{ > + struct exynos_dsi *dsi = bridge->driver_private; > + struct
[PATCH v2 10/16] drm/exynos: implement a drm bridge
Make the exynos_dsi driver a full drm bridge that can be found and used from other drivers. Other drivers can only attach to the bridge, if a mipi dsi device already attached to the bridge. This allows to defer the probe of the display pipe until the downstream bridges are available, too. Signed-off-by: Michael Tretter --- v2: - move attach of out_bridge to bridge_attach - add bridge_detach - don't cleanup encoder if create_connector failed --- drivers/gpu/drm/exynos/exynos_drm_dsi.c | 103 +--- 1 file changed, 75 insertions(+), 28 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 2d75f9877dc0..5e7c1a99a3ee 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -266,6 +266,7 @@ struct exynos_dsi_driver_data { struct exynos_dsi { struct drm_encoder encoder; + struct drm_bridge bridge; struct mipi_dsi_host dsi_host; struct drm_connector connector; struct drm_panel *panel; @@ -1602,6 +1603,60 @@ static const struct drm_encoder_helper_funcs exynos_dsi_encoder_helper_funcs = { .disable = exynos_dsi_disable, }; +static int exynos_dsi_bridge_attach(struct drm_bridge *bridge, + enum drm_bridge_attach_flags flags) +{ + struct exynos_dsi *dsi = bridge->driver_private; + struct drm_encoder *encoder = bridge->encoder; + int ret; + + if (!dsi->out_bridge && !dsi->panel) + return -EPROBE_DEFER; + + if (dsi->out_bridge) { + ret = drm_bridge_attach(encoder, dsi->out_bridge, + bridge, flags); + if (ret) + return ret; + list_splice_init(>bridge_chain, >bridge_chain); + } else { + ret = exynos_dsi_create_connector(encoder); + if (ret) + return ret; + + if (dsi->panel) { + dsi->connector.status = connector_status_connected; + } + } + + return 0; +} + +static void exynos_dsi_bridge_detach(struct drm_bridge *bridge) +{ + struct exynos_dsi *dsi = bridge->driver_private; + struct drm_encoder *encoder = bridge->encoder; + struct drm_device *drm = encoder->dev; + + if (dsi->panel) { + mutex_lock(>mode_config.mutex); + exynos_dsi_disable(>encoder); + dsi->panel = NULL; + dsi->connector.status = connector_status_disconnected; + mutex_unlock(>mode_config.mutex); + } else { + if (dsi->out_bridge->funcs->detach) + dsi->out_bridge->funcs->detach(dsi->out_bridge); + dsi->out_bridge = NULL; + INIT_LIST_HEAD(>bridge_chain); + } +} + +static const struct drm_bridge_funcs exynos_dsi_bridge_funcs = { + .attach = exynos_dsi_bridge_attach, + .detach = exynos_dsi_bridge_detach, +}; + MODULE_DEVICE_TABLE(of, exynos_dsi_of_match); static int exynos_dsi_host_attach(struct mipi_dsi_host *host, @@ -1609,25 +1664,12 @@ static int exynos_dsi_host_attach(struct mipi_dsi_host *host, { struct exynos_dsi *dsi = host_to_dsi(host); const struct exynos_dsi_host_ops *ops = dsi->driver_data->host_ops; - struct drm_encoder *encoder = >encoder; struct drm_bridge *out_bridge; - out_bridge = of_drm_find_bridge(device->dev.of_node); + out_bridge = of_drm_find_bridge(device->dev.of_node); if (out_bridge) { - drm_bridge_attach(encoder, out_bridge, NULL, 0); dsi->out_bridge = out_bridge; - list_splice_init(>bridge_chain, >bridge_chain); } else { - int ret = exynos_dsi_create_connector(encoder); - - if (ret) { - DRM_DEV_ERROR(dsi->dev, - "failed to create connector ret = %d\n", - ret); - drm_encoder_cleanup(encoder); - return ret; - } - dsi->panel = of_drm_find_panel(device->dev.of_node); if (IS_ERR(dsi->panel)) dsi->panel = NULL; @@ -1662,20 +1704,6 @@ static int exynos_dsi_host_detach(struct mipi_dsi_host *host, { struct exynos_dsi *dsi = host_to_dsi(host); const struct exynos_dsi_host_ops *ops = dsi->driver_data->host_ops; - struct drm_device *drm = dsi->encoder.dev; - - if (dsi->panel) { - mutex_lock(>mode_config.mutex); - exynos_dsi_disable(>encoder); - dsi->panel = NULL; - dsi->connector.status = connector_status_disconnected; - mutex_unlock(>mode_config.mutex); - } else { - if (dsi->out_bridge->funcs->detach) -