Subject: Re: linux-next: build failure after merge of the drm-misc tree

From: Stephen Rothwell <[email-masked]>
Date: Wed, 22 Jun 2022 11:04:51 +1000

Hi all,

On Tue, 21 Jun 2022 10:48:17 +0300 Ville Syrjälä <[email-masked]> wrote:
>
> On Tue, Jun 21, 2022 at 12:36:56PM +1000, Stephen Rothwell wrote:
> > 
> > After merging the drm-misc tree, today's linux-next build (x86_64
> > allmodconfig) failed like this:
> > 
> > drivers/gpu/drm/xlnx/zynqmp_disp.c: In function 'zynqmp_disp_create_planes':
> > drivers/gpu/drm/xlnx/zynqmp_disp.c:1260:17: error: implicit declaration of function 'drm_plane_create_zpos_immutable_property'; did you mean 'drm_plane_create_scaling_filter_property'? [-Werror=implicit-function-declaration]
> >  1260 |                 drm_plane_create_zpos_immutable_property(&layer->plane, i);
> >       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >       |                 drm_plane_create_scaling_filter_property
> > drivers/gpu/drm/xlnx/zynqmp_disp.c:1262:25: error: implicit declaration of function 'drm_plane_create_alpha_property'; did you mean 'drm_plane_create_color_properties'? [-Werror=implicit-function-declaration]
> >  1262 |                         drm_plane_create_alpha_property(&layer->plane);
> >       |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >       |                         drm_plane_create_color_properties
> > cc1: all warnings being treated as errors
> > 
> > Presumably caused by one of the commits that dropped includes from
> > drm-ctrc.h.
> > 
> > I have used the drm-misc tree from next-20220620 for today.  
> 
> Sorry about that. Looks like my .config was missing some
> dependencies of the zynqmp driver so it wasn't getting built.
> I'll cook up a fix.

And today, I get these:

In file included from include/linux/list.h:5,
                 from include/linux/preempt.h:11,
                 from include/linux/spinlock.h:55,
                 from include/linux/mmzone.h:8,
                 from include/linux/gfp.h:6,
                 from include/linux/mm.h:7,
                 from include/linux/hyperv.h:17,
                 from drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:6:
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c: In function 'hyperv_blit_to_vram_rect':
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:25:48: error: invalid use of undefined type 'struct drm_framebuffer'
   25 |         struct hyperv_drm_device *hv = to_hv(fb->dev);
      |                                                ^~
include/linux/container_of.h:18:33: note: in definition of macro 'container_of'
   18 |         void *__mptr = (void *)(ptr);                                   \
      |                                 ^~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:25:40: note: in expansion of macro 'to_hv'
   25 |         struct hyperv_drm_device *hv = to_hv(fb->dev);
      |                                        ^~~~~
In file included from include/linux/bits.h:22,
                 from include/linux/ratelimit_types.h:5,
                 from include/linux/printk.h:9,
                 from include/asm-generic/bug.h:22,
                 from arch/x86/include/asm/bug.h:87,
                 from include/linux/bug.h:5,
                 from include/linux/mmdebug.h:5,
                 from include/linux/mm.h:6,
                 from include/linux/hyperv.h:17,
                 from drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:6:
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:25:48: error: invalid use of undefined type 'struct drm_framebuffer'
   25 |         struct hyperv_drm_device *hv = to_hv(fb->dev);
      |                                                ^~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
   78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
      |                                                        ^~~~
include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert'
   19 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
      |         ^~~~~~~~~~~~~
include/linux/container_of.h:19:23: note: in expansion of macro '__same_type'
   19 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
      |                       ^~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm.h:40:21: note: in expansion of macro 'container_of'
   40 | #define to_hv(_dev) container_of(_dev, struct hyperv_drm_device, dev)
      |                     ^~~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:25:40: note: in expansion of macro 'to_hv'
   25 |         struct hyperv_drm_device *hv = to_hv(fb->dev);
      |                                        ^~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:25:48: error: invalid use of undefined type 'struct drm_framebuffer'
   25 |         struct hyperv_drm_device *hv = to_hv(fb->dev);
      |                                                ^~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
   78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
      |                                                        ^~~~
include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert'
   19 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
      |         ^~~~~~~~~~~~~
include/linux/container_of.h:20:23: note: in expansion of macro '__same_type'
   20 |                       __same_type(*(ptr), void),                        \
      |                       ^~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm.h:40:21: note: in expansion of macro 'container_of'
   40 | #define to_hv(_dev) container_of(_dev, struct hyperv_drm_device, dev)
      |                     ^~~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:25:40: note: in expansion of macro 'to_hv'
   25 |         struct hyperv_drm_device *hv = to_hv(fb->dev);
      |                                        ^~~~~
include/linux/compiler_types.h:293:27: error: expression in static assertion is not an integer
  293 | #define __same_type(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
   78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
      |                                                        ^~~~
include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert'
   19 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
      |         ^~~~~~~~~~~~~
include/linux/container_of.h:19:23: note: in expansion of macro '__same_type'
   19 |         static_assert(__same_type(*(ptr), ((type *)0)->member) ||       \
      |                       ^~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm.h:40:21: note: in expansion of macro 'container_of'
   40 | #define to_hv(_dev) container_of(_dev, struct hyperv_drm_device, dev)
      |                     ^~~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:25:40: note: in expansion of macro 'to_hv'
   25 |         struct hyperv_drm_device *hv = to_hv(fb->dev);
      |                                        ^~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:33:37: error: invalid use of undefined type 'struct drm_framebuffer'
   33 |         dst += drm_fb_clip_offset(fb->pitches[0], fb->format, rect);
      |                                     ^~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:33:53: error: invalid use of undefined type 'struct drm_framebuffer'
   33 |         dst += drm_fb_clip_offset(fb->pitches[0], fb->format, rect);
      |                                                     ^~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:34:35: error: invalid use of undefined type 'struct drm_framebuffer'
   34 |         drm_fb_memcpy_toio(dst, fb->pitches[0], vmap, fb, rect);
      |                                   ^~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c: In function 'hyperv_blit_to_vram_fullscreen':
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:46:25: error: invalid use of undefined type 'struct drm_framebuffer'
   46 |                 .x2 = fb->width,
      |                         ^~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:48:25: error: invalid use of undefined type 'struct drm_framebuffer'
   48 |                 .y2 = fb->height,
      |                         ^~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c: In function 'hyperv_connector_get_modes':
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:58:17: error: implicit declaration of function 'drm_add_modes_noedid' [-Werror=implicit-function-declaration]
   58 |         count = drm_add_modes_noedid(connector,
      |                 ^~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:61:9: error: implicit declaration of function 'drm_set_preferred_mode'; did you mean 'drm_mm_reserve_node'? [-Werror=implicit-function-declaration]
   61 |         drm_set_preferred_mode(connector, hv->preferred_width,
      |         ^~~~~~~~~~~~~~~~~~~~~~
      |         drm_mm_reserve_node
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c: In function 'hyperv_check_size':
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:93:27: error: invalid use of undefined type 'struct drm_framebuffer'
   93 |                 pitch = fb->pitches[0];
      |                           ^~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c: In function 'hyperv_pipe_enable':
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:112:48: error: invalid use of undefined type 'struct drm_framebuffer'
  112 |                                 plane_state->fb->pitches[0]);
      |                                                ^~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c: In function 'hyperv_pipe_check':
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:123:15: error: invalid use of undefined type 'struct drm_framebuffer'
  123 |         if (fb->format->format != DRM_FORMAT_XRGB8888)
      |               ^~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:126:15: error: invalid use of undefined type 'struct drm_framebuffer'
  126 |         if (fb->pitches[0] * fb->height > hv->fb_size) {
      |               ^~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:126:32: error: invalid use of undefined type 'struct drm_framebuffer'
  126 |         if (fb->pitches[0] * fb->height > hv->fb_size) {
      |                                ^~
In file included from include/linux/device.h:15,
                 from include/linux/hyperv.h:23,
                 from drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:6:
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:128:42: error: invalid use of undefined type 'struct drm_framebuffer'
  128 |                         current->comm, fb->width, fb->height, fb->pitches[0], hv->fb_size);
      |                                          ^~
include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
  110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
      |                                     ^~~~~~~~~~~
include/drm/drm_print.h:425:9: note: in expansion of macro 'dev_err'
  425 |         dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
      |         ^~~~
include/drm/drm_print.h:438:9: note: in expansion of macro '__drm_printk'
  438 |         __drm_printk((drm), err,, "*ERROR* " fmt, ##__VA_ARGS__)
      |         ^~~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:127:17: note: in expansion of macro 'drm_err'
  127 |                 drm_err(&hv->dev, "fb size requested by %s for %dX%d (pitch %d) greater than %ld\n",
      |                 ^~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:128:53: error: invalid use of undefined type 'struct drm_framebuffer'
  128 |                         current->comm, fb->width, fb->height, fb->pitches[0], hv->fb_size);
      |                                                     ^~
include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
  110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
      |                                     ^~~~~~~~~~~
include/drm/drm_print.h:425:9: note: in expansion of macro 'dev_err'
  425 |         dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
      |         ^~~~
include/drm/drm_print.h:438:9: note: in expansion of macro '__drm_printk'
  438 |         __drm_printk((drm), err,, "*ERROR* " fmt, ##__VA_ARGS__)
      |         ^~~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:127:17: note: in expansion of macro 'drm_err'
  127 |                 drm_err(&hv->dev, "fb size requested by %s for %dX%d (pitch %d) greater than %ld\n",
      |                 ^~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:128:65: error: invalid use of undefined type 'struct drm_framebuffer'
  128 |                         current->comm, fb->width, fb->height, fb->pitches[0], hv->fb_size);
      |                                                                 ^~
include/linux/dev_printk.h:110:37: note: in definition of macro 'dev_printk_index_wrap'
  110 |                 _p_func(dev, fmt, ##__VA_ARGS__);                       \
      |                                     ^~~~~~~~~~~
include/drm/drm_print.h:425:9: note: in expansion of macro 'dev_err'
  425 |         dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
      |         ^~~~
include/drm/drm_print.h:438:9: note: in expansion of macro '__drm_printk'
  438 |         __drm_printk((drm), err,, "*ERROR* " fmt, ##__VA_ARGS__)
      |         ^~~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm_modeset.c:127:17: note: in expansion of macro 'drm_err'
  127 |                 drm_err(&hv->dev, "fb size requested by %s for %dX%d (pitch %d) greater than %ld\n",
      |                 ^~~~~~~
cc1: all warnings being treated as errors

Please do some allmodconfig builds.

I have used the drm-misc tree from next-20220620 again for today.
-- 
Cheers,
Stephen Rothwell