Re: [PATCH] qxl: refactor to use drm_fb_helper_fbdev_setup

From: kbuild test robot
Date: Mon Sep 10 2018 - 22:23:20 EST


Hi Peter,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v4.19-rc3 next-20180910]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Peter-Wu/qxl-refactor-to-use-drm_fb_helper_fbdev_setup/20180911-071413
reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

drivers/gpu/drm/qxl/qxl_drv.c:144:9: sparse: undefined identifier 'qxl_fbdev_set_suspend'
drivers/gpu/drm/qxl/qxl_drv.c:181:9: sparse: undefined identifier 'qxl_fbdev_set_suspend'
>> drivers/gpu/drm/qxl/qxl_drv.c:144:30: sparse: call with no type!
drivers/gpu/drm/qxl/qxl_drv.c:181:30: sparse: call with no type!
drivers/gpu/drm/qxl/qxl_drv.c: In function 'qxl_drm_freeze':
drivers/gpu/drm/qxl/qxl_drv.c:144:2: error: implicit declaration of function 'qxl_fbdev_set_suspend'; did you mean 'fb_set_suspend'? [-Werror=implicit-function-declaration]
qxl_fbdev_set_suspend(qdev, 1);
^~~~~~~~~~~~~~~~~~~~~
fb_set_suspend
cc1: some warnings being treated as errors
--
>> drivers/gpu/drm/qxl/qxl_fb.c:166:21: sparse: incorrect type in assignment (different address spaces) @@ expected char const *data @@ got char [noderchar const *data @@
drivers/gpu/drm/qxl/qxl_fb.c:166:21: expected char const *data
drivers/gpu/drm/qxl/qxl_fb.c:166:21: got char [noderef] <asn:2>*
include/linux/overflow.h:251:13: sparse: undefined identifier '__builtin_mul_overflow'
include/linux/overflow.h:251:13: sparse: incorrect type in conditional
include/linux/overflow.h:251:13: got void
include/linux/overflow.h:251:13: sparse: call with no type!

vim +166 drivers/gpu/drm/qxl/qxl_fb.c

130
131 /*
132 * FIXME
133 * It should not be necessary to have a special dirty() callback for fbdev.
134 */
135 static int qxlfb_framebuffer_dirty(struct drm_framebuffer *fb,
136 struct drm_file *file_priv,
137 unsigned flags, unsigned color,
138 struct drm_clip_rect *clips,
139 unsigned num_clips)
140 {
141 struct qxl_device *qdev = fb->dev->dev_private;
142 struct fb_info *info = qdev->fb_helper.fbdev;
143 struct qxl_fb_image qxl_fb_image;
144 struct fb_image *image = &qxl_fb_image.fb_image;
145
146 /* TODO: hard coding 32 bpp */
147 int stride = fb->pitches[0];
148
149 /*
150 * we are using a shadow draw buffer, at qdev->surface0_shadow
151 */
152 image->dx = clips->x1;
153 image->dy = clips->y1;
154 image->width = clips->x2 - clips->x1;
155 image->height = clips->y2 - clips->y1;
156 image->fg_color = 0xffffffff; /* unused, just to avoid uninitialized
157 warnings */
158 image->bg_color = 0;
159 image->depth = 32; /* TODO: take from somewhere? */
160 image->cmap.start = 0;
161 image->cmap.len = 0;
162 image->cmap.red = NULL;
163 image->cmap.green = NULL;
164 image->cmap.blue = NULL;
165 image->cmap.transp = NULL;
> 166 image->data = info->screen_base + (clips->x1 * 4) + (stride * clips->y1);
167
168 qxl_fb_image_init(&qxl_fb_image, qdev, info, NULL);
169 qxl_draw_opaque_fb(&qxl_fb_image, stride);
170
171 return 0;
172 }
173

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation