Hi Meng, The only situation I could observe that is when fsl,panel was not valid...
However, I think with my patch "drm/fsl-dcu: Fix no fb check bug", this situation can be avoided completely: https://lkml.org/lkml/2015/11/18/950 With that patch applied, and a non-existing panel assigned, the DRM driver already fails at probe time gracefully: [ 0.488291] [drm] Initialized drm 1.1.0 20060810 [ 0.501576] fsl-dcu 40058000.dcu: failed to initialize mode setting So I think that a state->fb check for NULL is not necessary at all... Can you test my patch to see if it fixes the issue for you too? -- Stefan On 2015-12-23 21:28, Meng Yi wrote: > Tested-by: Meng Yi <meng.yi at nxp.com> > > -----é®ä»¶å件----- > å件人: Dongsheng Wang [mailto:Dongsheng.Wang at freescale.com] > åéæ¶é´: Tuesday, December 01, 2015 4:16 PM > æ¶ä»¶äºº: airlied at linux.ie > æé: stefan at agner.ch; dri-devel at lists.freedesktop.org; Jianwei Wang > <jianwei.wang.chn at gmail.com>; Yi Meng-B56799 <B56799 at freescale.com>; > Wang Dongsheng-B40534 <Dongsheng.Wang at freescale.com> > 主é¢: [RESEND 1/3] drm: fsl-dcu: Fix no fb check bug > > From: Jianwei Wang <jianwei.wang.chn at gmail.com> > > For state->fb may be NULL in fsl_dcu_drm_plane_atomic_check function, > if so, return -EINVAL. No need check in > fsl_dcu_drm_plane_atomic_update anymore. > > Signed-off-by: Jianwei Wang <jianwei.wang.chn at gmail.com> > Signed-off-by: Yi Meng <b56799 at freescale.com> > Signed-off-by: Wang Dongsheng <dongsheng.wang at freescale.com> > Tested-by: Stefan Agner <stefan at agner.ch> > > diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c > b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c > index 51daaea..a8932a8 100644 > --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c > +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_plane.c > @@ -41,6 +41,9 @@ static int fsl_dcu_drm_plane_atomic_check(struct > drm_plane *plane, { > struct drm_framebuffer *fb = state->fb; > > + if (!fb) > + return -EINVAL; > + > switch (fb->pixel_format) { > case DRM_FORMAT_RGB565: > case DRM_FORMAT_RGB888: > @@ -85,9 +88,6 @@ static void fsl_dcu_drm_plane_atomic_update(struct > drm_plane *plane, > unsigned int alpha, bpp; > int index, ret; > > - if (!fb) > - return; > - > index = fsl_dcu_drm_plane_index(plane); > if (index < 0) > return; > -- > 2.1.0.27.g96db324