[PATCH 00/16] drm/exynos: Convert driver to drm bridge

Michael Tretter m.tretter at pengutronix.de
Fri Sep 4 12:20:14 UTC 2020


Hi Marek,

On Fri, 04 Sep 2020 10:31:12 +0200, Marek Szyprowski wrote:
> Hi Krzysztof,
> 
> On 03.09.2020 22:08, Krzysztof Kozlowski wrote:
> > On Thu, 3 Sep 2020 at 18:57, Michael Tretter <m.tretter at pengutronix.de> wrote:
> >> the Exynos MIPI DSI Phy is also found on the i.MX8M Mini. However, on the
> >> i.MX8M Mini, the bridge is driven by an LCDIF display controller instead of
> >> the Exynos Decon. The driver for the LCDIF does not use the component
> >> framework, but uses drm bridges.
> >>
> >> This series converts the Exynos MIPI DSI into a drm bridge and makes it usable
> >> with such drivers. Although the driver is converted, it still supports the
> >> component framework API to stay compliant with the Exynos DRM driver.
> >>
> >> Unfortunately, I don't have any Exynos SoC to actually test the series.  I
> >> tested the driver with a few additional unfinished patches on the i.MX8M Mini
> >> EVK, but somebody should definitely verify that the driver is still working on
> >> Exynos hardware.
> > Hi Michael,
> >
> > +Cc maintainers and folks in Samsung.
> >
> > Please follow the script/get_maintainers.pl to get the list of
> > maintainers of the Exynos DRM drivers. First they could provide you
> > with testing, second they might be the people merging the driver.
> >
> > Unfortunately I cannot provide proper testing as none of my boards
> > have a display attached. :)
> 
> Thanks for adding cc to me. Sadly this patchset crashed badly on Samsung 
> Exnyos based boards. Here is the log from Exynos3250-based Rinato:

Thanks for testing.

> 
> exynos4-fb 11c00000.fimd: Adding to iommu group 0
> OF: graph: no port node found in /soc/fimd at 11c00000
> [drm] Exynos DRM: using 11c00000.fimd device for DMA mapping operations
> exynos-drm exynos-drm: bound 11c00000.fimd (ops fimd_component_ops)
> OF: graph: no port node found in /soc/dsi at 11c80000
> 8<--- cut here ---
> Unable to handle kernel NULL pointer dereference at virtual address 00000650
> pgd = (ptrval)
> [00000650] *pgd=00000000
> Internal error: Oops: 5 [#1] PREEMPT SMP ARM
> Modules linked in:
> CPU: 1 PID: 1 Comm: swapper/0 Not tainted 
> 5.9.0-rc2-next-20200824-00017-g3e9b20f7eb0d #1576
> Hardware name: Samsung Exynos (Flattened Device Tree)
> PC is at samsung_dsim_resume+0x18/0x120
> LR is at genpd_runtime_resume+0x160/0x278
> ...
> [<c064f590>] (samsung_dsim_resume) from [<c0685020>] 
> (genpd_runtime_resume+0x160/0x278)
> [<c0685020>] (genpd_runtime_resume) from [<c0677e84>] 
> (__rpm_callback+0xbc/0x124)
> [<c0677e84>] (__rpm_callback) from [<c0677f0c>] (rpm_callback+0x20/0x80)
> [<c0677f0c>] (rpm_callback) from [<c0676aec>] (rpm_resume+0x388/0x714)
> [<c0676aec>] (rpm_resume) from [<c0676edc>] (__pm_runtime_resume+0x64/0x9c)
> [<c0676edc>] (__pm_runtime_resume) from [<c0669e10>] 
> (__device_attach+0xcc/0x17c)
> [<c0669e10>] (__device_attach) from [<c0668ee8>] 
> (bus_probe_device+0x88/0x90)
> [<c0668ee8>] (bus_probe_device) from [<c06660a0>] (device_add+0x4e8/0x79c)
> [<c06660a0>] (device_add) from [<c063dc1c>] 
> (mipi_dsi_device_register_full+0xc8/0x148)
> [<c063dc1c>] (mipi_dsi_device_register_full) from [<c063dcec>] 
> (mipi_dsi_host_register+0x50/0x168)
> [<c063dcec>] (mipi_dsi_host_register) from [<c064d90c>] 
> (samsung_dsim_bind+0x368/0x40c)
> [<c064d90c>] (samsung_dsim_bind) from [<c06449f8>] 
> (exynos_dsi_bind+0x78/0x88)
> [<c06449f8>] (exynos_dsi_bind) from [<c0661ef0>] 
> (component_bind_all+0xfc/0x290)
> [<c0661ef0>] (component_bind_all) from [<c06413d0>] 
> (exynos_drm_bind+0xe4/0x19c)
> [<c06413d0>] (exynos_drm_bind) from [<c0662464>] 
> (try_to_bring_up_master+0x1e4/0x2c4)
> [<c0662464>] (try_to_bring_up_master) from [<c06629a4>] 
> (component_master_add_with_match+0xd4/0x108)
> [<c06629a4>] (component_master_add_with_match) from [<c06410f8>] 
> (exynos_drm_platform_probe+0xe4/0x110)
> [<c06410f8>] (exynos_drm_platform_probe) from [<c066cb8c>] 
> (platform_drv_probe+0x6c/0xa4)
> [<c066cb8c>] (platform_drv_probe) from [<c066a0c8>] 
> (really_probe+0x200/0x4fc)
> [<c066a0c8>] (really_probe) from [<c066a58c>] 
> (driver_probe_device+0x78/0x1fc)
> [<c066a58c>] (driver_probe_device) from [<c066a974>] 
> (device_driver_attach+0x58/0x60)
> [<c066a974>] (device_driver_attach) from [<c066aa58>] 
> (__driver_attach+0xdc/0x174)
> [<c066aa58>] (__driver_attach) from [<c0667e50>] 
> (bus_for_each_dev+0x68/0xb4)
> [<c0667e50>] (bus_for_each_dev) from [<c0669184>] 
> (bus_add_driver+0x158/0x214)
> [<c0669184>] (bus_add_driver) from [<c066b93c>] (driver_register+0x78/0x110)
> [<c066b93c>] (driver_register) from [<c06412b8>] 
> (exynos_drm_init+0xe4/0x118)
> [<c06412b8>] (exynos_drm_init) from [<c01023f4>] 
> (do_one_initcall+0x8c/0x424)
> [<c01023f4>] (do_one_initcall) from [<c10011a8>] 
> (kernel_init_freeable+0x190/0x1dc)
> [<c10011a8>] (kernel_init_freeable) from [<c0ae8e5c>] 
> (kernel_init+0x8/0x118)
> [<c0ae8e5c>] (kernel_init) from [<c0100114>] (ret_from_fork+0x14/0x20)
> Exception stack(0xd94a5fb0 to 0xd94a5ff8)
> ...
> ---[ end trace 1a053145d15f23dc ]---
> Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
> CPU0: stopping
> CPU: 0 PID: 0 Comm: swapper/0 Tainted: G      D 
> 5.9.0-rc2-next-20200824-00017-g3e9b20f7eb0d #1576
> Hardware name: Samsung Exynos (Flattened Device Tree)
> [<c011160c>] (unwind_backtrace) from [<c010cfc0>] (show_stack+0x10/0x14)
> [<c010cfc0>] (show_stack) from [<c0533c3c>] (dump_stack+0xbc/0xe8)
> [<c0533c3c>] (dump_stack) from [<c01104e0>] (handle_IPI+0x3e0/0x428)
> [<c01104e0>] (handle_IPI) from [<c05511dc>] (gic_handle_irq+0x98/0x9c)
> [<c05511dc>] (gic_handle_irq) from [<c0100af0>] (__irq_svc+0x70/0xb0)
> Exception stack(0xc1101f08 to 0xc1101f50)
> ...
> [<c0100af0>] (__irq_svc) from [<c01095dc>] (arch_cpu_idle+0x24/0x44)
> [<c01095dc>] (arch_cpu_idle) from [<c01635dc>] (do_idle+0x1bc/0x2bc)
> [<c01635dc>] (do_idle) from [<c0163a90>] (cpu_startup_entry+0x18/0x1c)
> [<c0163a90>] (cpu_startup_entry) from [<c1000f88>] 
> (start_kernel+0x628/0x664)
> [<c1000f88>] (start_kernel) from [<00000000>] (0x0)
> ---[ end Kernel panic - not syncing: Attempted to kill init! 
> exitcode=0x0000000b ]---

This and the other null pointer dereference look like two different problems.
I will look into both of them and send an update.

I will also try to come up with something to at least test the bind/unbind
interface and reduce the code that I cannot test.

> 
> I've didn't check the code yet, but the conversion also lacks "select 
> DRM_SAMSUNG_DSIM" in the Exynos DSI driver's Kconfig, as I wasn't even 
> able to compile it with the current exynos_defconfig.

Dang, of course. I will fix it.

Michael


More information about the dri-devel mailing list