[PATCH v11 00/24] drm/rockchip: RK356x VOP2 support

Maya Matuszczyk maccraft123mc at gmail.com
Fri May 20 05:15:19 PDT 2022


pt., 20 maj 2022 o 13:56 Peter Geis <pgwipeout at gmail.com> napisał(a):
>
> On Fri, May 20, 2022 at 6:12 AM Sascha Hauer <s.hauer at pengutronix.de> wrote:
> >
> > Hi Maya,
> >
> > On Fri, May 20, 2022 at 12:02:33PM +0200, Maya Matuszczyk wrote:
> > > Hello,
> > >
> > > wt., 17 maj 2022 o 20:28 Heiko Stuebner <heiko at sntech.de> napisał(a):
> > > >
> > > > Am Freitag, 22. April 2022, 09:28:17 CEST schrieb Sascha Hauer:
> > > > > It's v11 time. There's only one small change to v10. Discussion seems to
> > > > > have settled now. Is there anything left that prevents the series from
> > > > > being merged? I'd really like to have it in during the next merge
> > > > > window.
> > > > >
> > > > > This series still depends on:
> > > > > drm/rockchip: Refactor IOMMU initialisation (https://lists.freedesktop.org/archives/dri-devel/2022-April/349548.html)
> > > > > arm64: dts: rockchip: add basic dts for the radxa rock3 model a
> > > > >
> > > > > Sascha
> > > >
> > > > I've now picked up everything except the hdmi-rate stuff in some way.
> > > > The driver changes will go into 5.19 and the DT-changes into 5.20.
> > > >
> > > > I'll now move the series out of my focus and would expect further
> > > > hdmi rate voodoo to start a new series :-) .
> > > >
> > > > Thanks to all involved for working on this.
> > > > Heiko
> > >
> > > What do I need besides this patch series, mentioned before IOMMU refactor,
> > > and DTS changes for MIPI-DSI support on RK356x?
> > > I'm working on mainline kernel support for a a RK3566 board with
> > > a DSI display.
> >
> > Apart from these patches you'll need updates for the DSI. I've pushed
> > these once to
> > https://git.pengutronix.de/cgit/sha/linux/log/?h=rockchip-vop2-mipi
> > Particularly I think you need:
> >
> > 383ff250345f0 drm: rockchip: dw-mipi-dsi: Call host attach from probe
> > e79a16ead833d dw-mipi-dsi-rockchip: increase bandwidth
> > ac400bdd8d0cb drm: rockchip: dw-mipi-dsi-rockchip: Add rk3568 support
> > b6b7fabbc9fe2 drm: panel-simple: Add init sequence support
> > 3c13a030e92f3 arm64: dts: rockchip: rk3568-evb: Add Display support
> > 3433935a31675 arm64: dts: rockchip: rk356x: Add dsi nodes
> >
> > I'm not sure how well these fit onto the current state. I'll likely
> > update the branch when the VOP2 has hit mainline after the next merge
> > window. I have no plans currently to upstream the DSI bits though.
>
> Yeah DSI needs a bit of love with the merged version. Even updating
> the series to the new version we get a null pointer exception:
>
> [    2.304528] Unable to handle kernel NULL pointer dereference at
> virtual address 0000000000000250
> [    2.305311] Mem abort info:
> [    2.305563]   ESR = 0x96000005
> [    2.305839]   EC = 0x25: DABT (current EL), IL = 32 bits
> [    2.306311]   SET = 0, FnV = 0
> [    2.306586]   EA = 0, S1PTW = 0
> [    2.306868]   FSC = 0x05: level 1 translation fault
> [    2.307301] Data abort info:
> [    2.307559]   ISV = 0, ISS = 0x00000005
> [    2.307926]   CM = 0, WnR = 0
> [    2.308197] [0000000000000250] user address but active_mm is swapper
> [    2.308763] Internal error: Oops: 96000005 [#1] PREEMPT SMP
> [    2.309260] Modules linked in:
> [    2.309541] CPU: 0 PID: 51 Comm: kworker/u8:1 Not tainted
> 5.18.0-rc2-00072-g4d2476a40e3e-dirty #307
> [    2.310343] Hardware name: Pine64 RK3566 Quartz64-A Board (DT)
> [    2.310862] Workqueue: events_unbound deferred_probe_work_func
> [    2.311391] pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
> [    2.312010] pc : __drm_crtc_init_with_planes+0x44/0x2d0
> [    2.312482] lr : drm_crtc_init_with_planes+0x64/0x94
> [    2.312929] sp : ffffffc00aaa3830
> [    2.313226] x29: ffffffc00aaa3830 x28: 0000000000000001 x27: ffffffc00aaa38c0
> [    2.313866] x26: ffffffc009950fb0 x25: ffffff8100f24080 x24: ffffffc009452748
> [    2.314504] x23: ffffffc009950fb0 x22: 0000000000000000 x21: 0000000000000008
> [    2.315142] x20: ffffff8100d1e800 x19: ffffff8100f244e8 x18: 00000000fffffffd
> [    2.315781] x17: 08000000000000d1 x16: 0800000000000091 x15: 0000000000000020
> [    2.316419] x14: 0000000000000000 x13: ffffff8100f24478 x12: ffffff8100f2445d
> [    2.317057] x11: ffffffc00aaa3920 x10: ffffffc00aaa3920 x9 : ffffffc008843994
> [    2.317694] x8 : ffffffc00aaa3910 x7 : ffffffc00aaa3910 x6 : ffffffc00aaa38c0
> [    2.318333] x5 : ffffffc009950fb0 x4 : ffffffc0094522a0 x3 : 0000000000000000
> [    2.318970] x2 : 0000000000000008 x1 : ffffff8100f244e8 x0 : ffffff8100d1e800
> [    2.319609] Call trace:
> [    2.319829]  __drm_crtc_init_with_planes+0x44/0x2d0
> [    2.320268]  drm_crtc_init_with_planes+0x64/0x94
> [    2.320684]  vop2_bind+0x61c/0x960
> [    2.320996]  component_bind_all+0x10c/0x270
> [    2.321374]  rockchip_drm_bind+0xc0/0x20c
> [    2.321738]  try_to_bring_up_aggregate_device+0x16c/0x1e0
> [    2.322221]  __component_add+0xac/0x17c
> [    2.322568]  component_add+0x20/0x30
> [    2.322890]  dw_mipi_dsi_rockchip_host_attach+0x60/0x11c
> [    2.323365]  dw_mipi_dsi_host_attach+0x80/0xd4
> [    2.323767]  mipi_dsi_attach+0x34/0x50
> [    2.324107]  feiyang_dsi_probe+0x100/0x17c
> [    2.324476]  mipi_dsi_drv_probe+0x2c/0x40
> [    2.324838]  really_probe.part.0+0xa4/0x2a0
> [    2.325215]  __driver_probe_device+0xa0/0x150
> [    2.325607]  driver_probe_device+0x48/0x150
> [    2.325983]  __device_attach_driver+0xc0/0x130
> [    2.326381]  bus_for_each_drv+0x84/0xe0
> [    2.326729]  __device_attach+0xe4/0x190
> [    2.327075]  device_initial_probe+0x20/0x30
> [    2.327451]  bus_probe_device+0xa4/0xb0
> [    2.327798]  deferred_probe_work_func+0x94/0xcc
> [    2.328204]  process_one_work+0x1dc/0x450
> [    2.328569]  worker_thread+0x2d0/0x450
> [    2.328909]  kthread+0x100/0x110
> [    2.329204]  ret_from_fork+0x10/0x20
> [    2.329534] Code: aa0503fa f9002bfb aa0603fb b40000c2 (b9424840)
> [    2.330077] ---[ end trace 0000000000000000 ]---
>
> Which equates to:
> (gdb) l *__drm_crtc_init_with_planes+0x44
> 0xffffffc0088436ac is in __drm_crtc_init_with_planes
> (drivers/gpu/drm/drm_crtc.c:254).
> 249                                            const char *name, va_list ap)
> 250     {
> 251             struct drm_mode_config *config = &dev->mode_config;
> 252             int ret;
> 253
> 254             WARN_ON(primary && primary->type != DRM_PLANE_TYPE_PRIMARY);
> 255             WARN_ON(cursor && cursor->type != DRM_PLANE_TYPE_CURSOR);
> 256
> 257             /* crtc index is used with 32bit bitmasks */
> 258             if (WARN_ON(config->num_crtc >= 32))
>
> Of course it's entirely possible I missed something here in my port to
> the latest version. But if this is configuration in the device tree it
> strikes me as odd that a NPE could be triggered.

I encounter this issue too,
Using only vp0 is a work around.
So:

- vp0 routed to dsi, vp1 routed to hdmi -> NPE
- vp1 routed to dsi, vp0 routed to hdmi -> NPE
- vp0 routed to dsi -> [1]
- vp0 routed to hdmi -> Working

I'm currently trying to figure out why [1] happens at all,
and was planning on reporting the NPE once i had dsi working,
as I wasn't sure if it was issue on my end.

[1]:
[    0.362056] rockchip-drm display-subsystem: bound fe040000.vop (ops
0xffff800008635a60)
[    0.363026] [drm:drm_bridge_attach] *ERROR* failed to attach bridge
/dsi at fe060000 to encoder DSI-50: -22
[    0.363899] dw-mipi-dsi-rockchip fe060000.dsi:
[drm:dw_mipi_dsi_rockchip_bind] *ERROR* Failed to bind: -22
[    0.364848] rockchip-drm display-subsystem: failed to bind
fe060000.dsi (ops 0xffff80000863ae48): -22
[    0.365868] rockchip-drm display-subsystem: adev bind failed: -22
[    0.366447] dw-mipi-dsi-rockchip fe060000.dsi:
[drm:dw_mipi_dsi_rockchip_probe] *ERROR* Failed to register component:
-22



More information about the Linux-rockchip mailing list