drm: mxsfb: Kernel panic on 4.10.0-rc5

Breno Matheus Lima brenomatheus at gmail.com
Sat Jan 28 12:46:44 UTC 2017


2017-01-27 18:43 GMT-02:00 Marek Vasut <marex at denx.de>:
>
> On 01/27/2017 09:40 PM, Marek Vasut wrote:
> > On 01/27/2017 05:04 PM, Breno Matheus Lima wrote:
> >> Hi,
> >
> > Hi,
> >
> >> I'm trying to use kernel 4.10.0-rc5 and DRM_MXS driver on a i.MX6SX
SabreSD
> >> Rev A, but it crashes during the boot, I'm also disabling the FB_MXS
driver
> >> to avoid any conflict. By using the driver FB_MXS the board boots
normally
> >> and the display is working as well.
> >
> > OK
> >
> >> I would like to know if is possible to use the DRM_MXS driver with the
> >> deprecated bindings as according to the documentation located at
> >> Documentation/devicetree/bindings/display/mxsfb.txt, or if is just
possible
> >> to
> >> use the DRM driver with the new bindings.
> >
> > No, the deprecated bindings are deprecated and DO NOT WORK with this
> > driver. Use the new of-graph stuff.
> >

Good to know

> >> Please find below the log:
> >>
> >> [    1.076530] [drm] Initialized
> >> [    1.086305] etnaviv gpu-subsystem: bound 1800000.gpu (ops gpu_ops)
> >> [    1.092590] etnaviv-gpu 1800000.gpu: model: GC400, revision: 4645
> >> [    1.098703] etnaviv-gpu 1800000.gpu: Need to move linear window on
> >> MC1.0, disabling TS
> >> [    1.154691] [drm] Supports vblank timestamp caching Rev 2
(21.10.2013).
> >> [    1.161425] [drm] No driver support for vblank timestamp query.
> >> [    1.167799] OF: graph: no port node found in /soc/aips-bus at 02200000
> >> /spba-bus at 02200000/lcdif at 02220000
> >> [    1.177132] Unable to handle kernel NULL pointer dereference at
virtual
> >> address 00000004
> >
> > Try with this patch please:
> >
> > diff --git a/drivers/gpu/drm/mxsfb/mxsfb_out.c
> > b/drivers/gpu/drm/mxsfb/mxsfb_out.c
> > index fa8d17399407..b8e81422d4e2 100644
> > --- a/drivers/gpu/drm/mxsfb/mxsfb_out.c
> > +++ b/drivers/gpu/drm/mxsfb/mxsfb_out.c
> > @@ -112,6 +112,7 @@ static int mxsfb_attach_endpoint(struct drm_device
*drm,
> >
> >  int mxsfb_create_output(struct drm_device *drm)
> >  {
> > +       struct mxsfb_drm_private *mxsfb = drm->dev_private;
> >         struct device_node *ep_np = NULL;
> >         struct of_endpoint ep;
> >         int ret;
> > @@ -127,5 +128,8 @@ int mxsfb_create_output(struct drm_device *drm)
> >                 }
> >         }
> >
> > +       if (!mxsfb->panel)
> > +               return -EPROBE_DEFER;
> > +
> >         return 0;
> >  }
> >
> Rationale behind the patch:
>
> IFF you use some odd bindings or your of-graph panel bindings are
> missing from the DT , THEN the for_each_endpoint_of_node() body
> is never executed, thus mxsfb->panel remains NULL and yet the
> function returns 0/success . mxsfb_load() therefore doesn't detect
> this failure and calls drm_panel_attach() with mxsfb->panel = NULL,
> thus the crash.
>

Thanks for the explanation, I'm going to try with this patch and figure out
how to implement it on imx6sx-sdb.dtsi.

> --
> Best regards,
> Marek Vasut

Best Regards,
Breno Matheus Lima
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20170128/eaecb2f1/attachment-0001.html>


More information about the dri-devel mailing list