[Intel-gfx] [PATCH] drm/i915: Protect fbdev across slow or failed initialisation

kbuild test robot lkp at intel.com
Wed Mar 30 18:10:35 UTC 2016


Hi Chris,

[auto build test WARNING on drm-intel/for-linux-next]
[cannot apply to v4.6-rc1 next-20160330]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Chris-Wilson/drm-i915-Protect-fbdev-across-slow-or-failed-initialisation/20160331-015912
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-x015-03310059 (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   drivers/gpu/drm/i915/intel_fbdev.c: In function 'intel_fbdev_get_if_active':
   drivers/gpu/drm/i915/intel_fbdev.c:119:37: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
     struct drm_i915_device *dev_priv = to_i915(dev);
                                        ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/async.h:15,
                    from drivers/gpu/drm/i915/intel_fbdev.c:27:
   drivers/gpu/drm/i915/intel_fbdev.c:122:14: error: dereferencing pointer to incomplete type 'struct drm_i915_device'
     if (dev_priv->fbdev == NULL)
                 ^
   include/linux/compiler.h:147:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^
>> drivers/gpu/drm/i915/intel_fbdev.c:122:2: note: in expansion of macro 'if'
     if (dev_priv->fbdev == NULL)
     ^
   drivers/gpu/drm/i915/intel_fbdev.c:125:9: error: 'ifbdev' undeclared (first use in this function)
     info = ifbdev->helper.fbdev;
            ^
   drivers/gpu/drm/i915/intel_fbdev.c:125:9: note: each undeclared identifier is reported only once for each function it appears in
   drivers/gpu/drm/i915/intel_fbdev.c:133:1: warning: control reaches end of non-void function [-Wreturn-type]
    }
    ^

vim +/if +122 drivers/gpu/drm/i915/intel_fbdev.c

    21	 * DEALINGS IN THE SOFTWARE.
    22	 *
    23	 * Authors:
    24	 *     David Airlie
    25	 */
    26	
  > 27	#include <linux/async.h>
    28	#include <linux/module.h>
    29	#include <linux/kernel.h>
    30	#include <linux/console.h>
    31	#include <linux/errno.h>
    32	#include <linux/string.h>
    33	#include <linux/mm.h>
    34	#include <linux/tty.h>
    35	#include <linux/sysrq.h>
    36	#include <linux/delay.h>
    37	#include <linux/fb.h>
    38	#include <linux/init.h>
    39	#include <linux/vga_switcheroo.h>
    40	
    41	#include <drm/drmP.h>
    42	#include <drm/drm_crtc.h>
    43	#include <drm/drm_fb_helper.h>
    44	#include "intel_drv.h"
    45	#include <drm/i915_drm.h>
    46	#include "i915_drv.h"
    47	
    48	static int intel_fbdev_set_par(struct fb_info *info)
    49	{
    50		struct drm_fb_helper *fb_helper = info->par;
    51		struct intel_fbdev *ifbdev =
    52			container_of(fb_helper, struct intel_fbdev, helper);
    53		int ret;
    54	
    55		ret = drm_fb_helper_set_par(info);
    56	
    57		if (ret == 0) {
    58			mutex_lock(&fb_helper->dev->struct_mutex);
    59			intel_fb_obj_invalidate(ifbdev->fb->obj, ORIGIN_GTT);
    60			mutex_unlock(&fb_helper->dev->struct_mutex);
    61		}
    62	
    63		return ret;
    64	}
    65	
    66	static int intel_fbdev_blank(int blank, struct fb_info *info)
    67	{
    68		struct drm_fb_helper *fb_helper = info->par;
    69		struct intel_fbdev *ifbdev =
    70			container_of(fb_helper, struct intel_fbdev, helper);
    71		int ret;
    72	
    73		ret = drm_fb_helper_blank(blank, info);
    74	
    75		if (ret == 0) {
    76			mutex_lock(&fb_helper->dev->struct_mutex);
    77			intel_fb_obj_invalidate(ifbdev->fb->obj, ORIGIN_GTT);
    78			mutex_unlock(&fb_helper->dev->struct_mutex);
    79		}
    80	
    81		return ret;
    82	}
    83	
    84	static int intel_fbdev_pan_display(struct fb_var_screeninfo *var,
    85					   struct fb_info *info)
    86	{
    87		struct drm_fb_helper *fb_helper = info->par;
    88		struct intel_fbdev *ifbdev =
    89			container_of(fb_helper, struct intel_fbdev, helper);
    90	
    91		int ret;
    92		ret = drm_fb_helper_pan_display(var, info);
    93	
    94		if (ret == 0) {
    95			mutex_lock(&fb_helper->dev->struct_mutex);
    96			intel_fb_obj_invalidate(ifbdev->fb->obj, ORIGIN_GTT);
    97			mutex_unlock(&fb_helper->dev->struct_mutex);
    98		}
    99	
   100		return ret;
   101	}
   102	
   103	static struct fb_ops intelfb_ops = {
   104		.owner = THIS_MODULE,
   105		.fb_check_var = drm_fb_helper_check_var,
   106		.fb_set_par = intel_fbdev_set_par,
   107		.fb_fillrect = drm_fb_helper_cfb_fillrect,
   108		.fb_copyarea = drm_fb_helper_cfb_copyarea,
   109		.fb_imageblit = drm_fb_helper_cfb_imageblit,
   110		.fb_pan_display = intel_fbdev_pan_display,
   111		.fb_blank = intel_fbdev_blank,
   112		.fb_setcmap = drm_fb_helper_setcmap,
   113		.fb_debug_enter = drm_fb_helper_debug_enter,
   114		.fb_debug_leave = drm_fb_helper_debug_leave,
   115	};
   116	
   117	static struct intel_fbdev *intel_fbdev_get_if_active(struct drm_device *dev)
   118	{
   119		struct drm_i915_device *dev_priv = to_i915(dev);
   120		struct fb_info *info;
   121	
 > 122		if (dev_priv->fbdev == NULL)
   123			return NULL;
   124	
   125		info = ifbdev->helper.fbdev;

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/octet-stream
Size: 24904 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/intel-gfx/attachments/20160331/a1a333ad/attachment-0001.obj>


More information about the Intel-gfx mailing list