DisplayLink / evdi

Extensible Virtual Display Interface
MIT License
689 stars 179 forks source link

Linux kernel version 6 not supported - patch available #384

Open VGerris opened 1 year ago

VGerris commented 1 year ago

Installing the driver fails on kernel version 6 and up. This has been reported here, including a patch : https://github.com/DisplayLink/evdi/issues/376

problem: Building module: Cleaning build area... make -j16 KERNELRELEASE=6.0.5-200.fc36.x86_64 all INCLUDEDIR=/lib/modules/6.0.5-200.fc36.x86_64/build/include KVERSION=6.0.5-200.fc36.x86_64 DKMS_BUILD=1...(bad exit status: 2) Error! Bad return status for module build on kernel: 6.0.5-200.fc36.x86_64 (x86_64)

This is the same issue as on Ubuntu

Snippet of end of log :

+1: =jump_label  --hacks=noinstr    --orc  --retpoline  --rethunk  --sls   --static-call  --uaccess   --module  /var/lib/dkms/evdi/1.12.0/build/evdi_ioc32.o
  ./scripts/check-local-export /var/lib/dkms/evdi/1.12.0/build/evdi_debug.o
   { echo ; echo '/var/lib/dkms/evdi/1.12.0/build/evdi_debug.o: $(wildcard ./tools/objtool/objtool)' ; } >> /var/lib/dkms/evdi/1.12.0/build/.evdi_debug.o.cmd
  ./scripts/check-local-export /var/lib/dkms/evdi/1.12.0/build/evdi_params.o
   { echo ; echo '/var/lib/dkms/evdi/1.12.0/build/evdi_params.o: $(wildcard ./tools/objtool/objtool)' ; } >> /var/lib/dkms/evdi/1.12.0/build/.evdi_params.o.cmd
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_encoder.c:21:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_platform_dev.c:30:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_painter.c:23:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
make[2]: *** [scripts/Makefile.build:249: /var/lib/dkms/evdi/1.12.0/build/evdi_encoder.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c: In function ‘copy_primary_pixels’:
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c:175:42: _error: invalid use of undefined type ‘struct drm_framebuffer’_
  175 |                 const int src_offset = fb->offsets[0] +
      |                                          ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c:176:42: error: invalid use of undefined type ‘struct drm_framebuffer’
  176 |                                        fb->pitches[0] * r->y1 + byte_offset;
      |                                          ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c:195:34: error: invalid use of undefined type ‘struct drm_framebuffer’
  195 |                         src += fb->pitches[0];
      |                                  ^~
  ./scripts/check-local-export /var/lib/dkms/evdi/1.12.0/build/evdi_sysfs.o
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c: In function ‘evdi_painter_mode_changed_notify’:
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c:756:28: error: invalid use of undefined type ‘struct drm_framebuffer’
  756 |         bits_per_pixel = fb->format->cpp[0] * 8;
      |                            ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c:757:26: error: invalid use of undefined type ‘struct drm_framebuffer’
  757 |         pixel_format = fb->format->format;
      |                          ^~
make[2]: *** [scripts/Makefile.build:249: /var/lib/dkms/evdi/1.12.0/build/evdi_platform_dev.o] Error 1
   { echo ; echo '/var/lib/dkms/evdi/1.12.0/build/evdi_sysfs.o: $(wildcard ./tools/objtool/objtool)' ; } >> /var/lib/dkms/evdi/1.12.0/build/.evdi_sysfs.o.cmd
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_ioc32.c:34:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c: In function ‘evdi_painter_disconnect’:
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c:925:17: error: implicit declaration of function ‘drm_framebuffer_put’ [-Werror=implicit-function-declaration]
  925 |                 drm_framebuffer_put(&painter->scanout_fb->base);
      |                 ^~~~~~~~~~~~~~~~~~~
make[2]: *** [scripts/Makefile.build:249: /var/lib/dkms/evdi/1.12.0/build/evdi_ioc32.o] Error 1
  ./scripts/check-local-export /var/lib/dkms/evdi/1.12.0/build/evdi_platform_drv.o
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_connector.c:19:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:29:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.c:31:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
   { echo ; echo '/var/lib/dkms/evdi/1.12.0/build/evdi_platform_drv.o: $(wildcard ./tools/objtool/objtool)' ; } >> /var/lib/dkms/evdi/1.12.0/build/.evdi_platform_drv.o.cmd
In file included from ./include/linux/container_of.h:5,
                 from ./include/linux/list.h:5,
                 from ./include/linux/smp.h:12,
                 from ./include/linux/lockdep.h:14,
                 from ./include/linux/seqlock.h:18,
                 from ./include/drm/drm_vblank.h:27,
                 from /var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:16:
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c: In function ‘evdi_plane_atomic_update’:
././include/linux/compiler_types.h:295:27: error: expression in static assertion is not an integer
  295 | #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) ||       \
      |                       ^~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:92:23: note: in expansion of macro ‘container_of’
   92 | #define to_evdi_fb(x) container_of(x, struct evdi_framebuffer, base)
      |                       ^~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:268:48: note: in expansion of macro ‘to_evdi_fb’
  268 |                 struct evdi_framebuffer *efb = to_evdi_fb(fb);
      |                                                ^~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:271:33: error: invalid use of undefined type ‘struct drm_framebuffer’
  271 |                         0, 0, fb->width, fb->height
      |                                 ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:271:44: error: invalid use of undefined type ‘struct drm_framebuffer’
  271 |                         0, 0, fb->width, fb->height
      |                                            ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:278:23: error: invalid use of undefined type ‘struct drm_framebuffer’
  278 |                     fb->format && old_fb->format &&
      |                       ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:278:41: error: invalid use of undefined type ‘struct drm_framebuffer’
  278 |                     fb->format && old_fb->format &&
      |                                         ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:279:23: error: invalid use of undefined type ‘struct drm_framebuffer’
  279 |                     fb->format->format != old_fb->format->format)
      |                       ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:279:49: error: invalid use of undefined type ‘struct drm_framebuffer’
  279 |                     fb->format->format != old_fb->format->format)
      |                                                 ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:291:43: error: invalid use of undefined type ‘struct drm_framebuffer’
  291 |                         state->src.x2 = fb->width << 16;
      |                                           ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:292:43: error: invalid use of undefined type ‘struct drm_framebuffer’
  292 |                         state->src.y2 = fb->height << 16;
      |                                           ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c: In function ‘evdi_cursor_atomic_update’:
././include/linux/compiler_types.h:295:27: error: expression in static assertion is not an integer
  295 | #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) ||       \
      |                       ^~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:92:23: note: in expansion of macro ‘container_of’
   92 | #define to_evdi_fb(x) container_of(x, struct evdi_framebuffer, base)
      |                       ^~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:336:48: note: in expansion of macro ‘to_evdi_fb’
  336 |                 struct evdi_framebuffer *efb = to_evdi_fb(fb);
      |                                                ^~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:355:57: error: invalid use of undefined type ‘struct drm_framebuffer’
  355 |                                 uint32_t stride = 4 * fb->width;
      |                                                         ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:359:51: error: invalid use of undefined type ‘struct drm_framebuffer’
  359 |                                                 fb->width,
      |                                                   ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:360:51: error: invalid use of undefined type ‘struct drm_framebuffer’
  360 |                                                 fb->height,
      |                                                   ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_modeset.c:363:51: error: invalid use of undefined type ‘struct drm_framebuffer’
  363 |                                                 fb->format->format,
      |                                                   ^~
make[2]: *** [scripts/Makefile.build:250: /var/lib/dkms/evdi/1.12.0/build/evdi_connector.o] Error 1
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_gem.c:24:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c: In function ‘evdi_painter_grabpix_ioctl’:
/var/lib/dkms/evdi/1.12.0/build/evdi_painter.c:1060:9: error: implicit declaration of function ‘drm_framebuffer_get’ [-Werror=implicit-function-declaration]
 1060 |         drm_framebuffer_get(&efb->base);
      |         ^~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:31:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_cursor.c:33:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
In file included from ./include/linux/container_of.h:5,
                 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:7,
                 from ./include/linux/slab.h:15,
                 from /var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:14:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: In function ‘evdi_user_framebuffer_create_handle’:
make[2]: *** [scripts/Makefile.build:249: /var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.o] Error 1
././include/linux/compiler_types.h:295:27: error: expression in static assertion is not an integer
  295 | #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) ||       \
      |                       ^~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:92:23: note: in expansion of macro ‘container_of’
   92 | #define to_evdi_fb(x) container_of(x, struct evdi_framebuffer, base)
      |                       ^~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:311:40: note: in expansion of macro ‘to_evdi_fb’
  311 |         struct evdi_framebuffer *efb = to_evdi_fb(fb);
      |                                        ^~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: In function ‘evdi_user_framebuffer_destroy’:
././include/linux/compiler_types.h:295:27: error: expression in static assertion is not an integer
  295 | #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) ||       \
      |                       ^~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:92:23: note: in expansion of macro ‘container_of’
   92 | #define to_evdi_fb(x) container_of(x, struct evdi_framebuffer, base)
      |                       ^~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:318:40: note: in expansion of macro ‘to_evdi_fb’
  318 |         struct evdi_framebuffer *efb = to_evdi_fb(fb);
      |                                        ^~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_cursor.c: In function ‘evdi_cursor_compose_and_copy’:
/var/lib/dkms/evdi/1.12.0/build/evdi_cursor.c:235:54: error: invalid use of undefined type ‘struct drm_framebuffer’
  235 |                                 mouse_pix_x < (int)fb->width &&
      |                                                      ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_cursor.c:236:54: error: invalid use of undefined type ‘struct drm_framebuffer’
  236 |                                 mouse_pix_y < (int)fb->height;
      |                                                      ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_cursor.c:244:64: error: invalid use of undefined type ‘struct drm_framebuffer’
  244 |                         fbsrc = (int *)(efb->obj->vmapping + fb->offsets[0]);
      |                                                                ^~
/var/lib/dkms/evdi/1.12.0/build/evdi_cursor.c:245:50: error: invalid use of undefined type ‘struct drm_framebuffer’
  245 |                         fb_value = *(fbsrc + ((fb->pitches[0]>>2) *
      |                                                  ^~
make[2]: *** [scripts/Makefile.build:249: /var/lib/dkms/evdi/1.12.0/build/evdi_modeset.o] Error 1
In file included from /var/lib/dkms/evdi/1.12.0/build/evdi_i2c.c:12:
/var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:87:32: error: field ‘base’ has incomplete type
   87 |         struct drm_framebuffer base;
      |                                ^~~~
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:249: /var/lib/dkms/evdi/1.12.0/build/evdi_cursor.o] Error 1
make[2]: *** [scripts/Makefile.build:249: /var/lib/dkms/evdi/1.12.0/build/evdi_painter.o] Error 1
make[2]: *** [scripts/Makefile.build:249: /var/lib/dkms/evdi/1.12.0/build/evdi_i2c.o] Error 1
make[2]: *** [scripts/Makefile.build:249: /var/lib/dkms/evdi/1.12.0/build/evdi_gem.o] Error 1
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:327:9: error: implicit declaration of function ‘drm_framebuffer_cleanup’; did you mean ‘drm_encoder_cleanup’? [-Werror=implicit-function-declaration]
  327 |         drm_framebuffer_cleanup(fb);
      |         ^~~~~~~~~~~~~~~~~~~~~~~
      |         drm_encoder_cleanup
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: At top level:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:331:21: error: variable ‘evdifb_funcs’ has initializer but incomplete type
  331 | static const struct drm_framebuffer_funcs evdifb_funcs = {
      |                     ^~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:332:10: error: ‘const struct drm_framebuffer_funcs’ has no member named ‘create_handle’
  332 |         .create_handle = evdi_user_framebuffer_create_handle,
      |          ^~~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:332:26: warning: excess elements in struct initializer
  332 |         .create_handle = evdi_user_framebuffer_create_handle,
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:332:26: note: (near initialization for ‘evdifb_funcs’)
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:333:10: error: ‘const struct drm_framebuffer_funcs’ has no member named ‘destroy’
  333 |         .destroy = evdi_user_framebuffer_destroy,
      |          ^~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:333:20: warning: excess elements in struct initializer
  333 |         .destroy = evdi_user_framebuffer_destroy,
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:333:20: note: (near initialization for ‘evdifb_funcs’)
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:335:10: error: ‘const struct drm_framebuffer_funcs’ has no member named ‘dirty’
  335 |         .dirty = drm_atomic_helper_dirtyfb,
      |          ^~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:335:18: warning: excess elements in struct initializer
  335 |         .dirty = drm_atomic_helper_dirtyfb,
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:335:18: note: (near initialization for ‘evdifb_funcs’)
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: In function ‘evdi_framebuffer_init’:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:349:16: error: implicit declaration of function ‘drm_framebuffer_init’; did you mean ‘evdi_framebuffer_init’? [-Werror=implicit-function-declaration]
  349 |         return drm_framebuffer_init(dev, &efb->base, &evdifb_funcs);
      |                ^~~~~~~~~~~~~~~~~~~~
      |                evdi_framebuffer_init
In file included from ./include/drm/drm_mm.h:51,
                 from ./include/drm/drm_vma_manager.h:26,
                 from ./include/drm/drm_gem.h:40,
                 from /var/lib/dkms/evdi/1.12.0/build/evdi_drm_drv.h:36:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: In function ‘evdifb_create’:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:440:25: error: invalid use of undefined type ‘struct drm_framebuffer’
  440 |                       fb->width, fb->height, efbdev->efb.obj->vmapping);
      |                         ^~
./include/drm/drm_print.h:534:38: note: in definition of macro ‘DRM_DEBUG_KMS’
  534 |         __drm_dbg(DRM_UT_KMS, fmt, ##__VA_ARGS__)
      |                                      ^~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:440:36: error: invalid use of undefined type ‘struct drm_framebuffer’
  440 |                       fb->width, fb->height, efbdev->efb.obj->vmapping);
      |                                    ^~
./include/drm/drm_print.h:534:38: note: in definition of macro ‘DRM_DEBUG_KMS’
  534 |         __drm_dbg(DRM_UT_KMS, fmt, ##__VA_ARGS__)
      |                                      ^~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: In function ‘evdi_fbdev_destroy’:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:472:17: error: implicit declaration of function ‘drm_framebuffer_unregister_private’ [-Werror=implicit-function-declaration]
  472 |                 drm_framebuffer_unregister_private(&efbdev->efb.base);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: At top level:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:331:43: error: storage size of ‘evdifb_funcs’ isn’t known
  331 | static const struct drm_framebuffer_funcs evdifb_funcs = {
      |                                           ^~~~~~~~~~~~
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: In function ‘evdi_framebuffer_init’:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:350:1: error: control reaches end of non-void function [-Werror=return-type]
  350 | }
      | ^
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:249: /var/lib/dkms/evdi/1.12.0/build/evdi_fb.o] Error 1
make[1]: *** [Makefile:1856: /var/lib/dkms/evdi/1.12.0/build] Error 2
make[1]: Leaving directory '/usr/src/kernels/6.0.5-200.fc36.x86_64'
make: *** [Makefile:33: all] Error 2
[2022-11-01 09:08:22 vgerris@fedora:~/Hämtningar/DisplayLink USB Graphics Software for Ubuntu5.6.1-EXE]
VGerris commented 1 year ago

Apologies, I missed : https://github.com/DisplayLink/evdi/pull/381 So it seems the fix is applied. Will this be released soon and can the issue be used to track that? Otherwise feel free to close it, thank you.

dominikzogg commented 1 year ago

@VGerris in the meanwhile you can compile it yourself, as far as i can tell it should be automatically recompiled on kernel upgrade

Thats how i did it (written based on what i remember)

git clone git@github.com:DisplayLink/evdi.git
sudo mv evdi /usr/src/evdi
cd /usr/src
sudo mv evdi-1.12.0 evdi-1.12.0-backup
sudo ln -s evdi/module evdi-1.12.0
cd evdi-1.12.0
sudo make
sudo make install

This way you can also which branch / pull, adapt if changes are needed. If you reinstall or upgrade the package (rpm) the changes will be overridden.

mortezaalizadeh commented 1 year ago

hey guys, any chance when the merged patch can be released? I am left with one monitor only and it is an absolute pain. Cheers

simcax commented 1 year ago

That worked for me :-) Thank you @dominikzogg . perfect fix

onel0p3z commented 1 year ago

@dominikzogg thanks for the help! I had to follow the steps from https://github.com/andikleen/simple-pt/issues/8#issuecomment-813438385 because I was getting the certs not found error, then ran sudo dkms add . after sudo make install so that I could get the driver to install properly because it kept failing with an error along the lines dkms module not found. After rebooting, I was able to use my USB type-c monitor 🎉 Thanks!

kernel: 6.0.6 os: pop_os 22.04

Crashdummyy commented 1 year ago

Btw 6.2 is going to need another patch:

var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: In function ‘evdifb_create’:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:408:24: error: ‘struct drm_fb_helper’ has no member named ‘fbdev’; did you mean ‘dev’?
  408 |         efbdev->helper.fbdev = info;
      |                        ^~~~~
      |                        dev
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: In function ‘evdi_fbdev_destroy’:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:462:28: error: ‘struct drm_fb_helper’ has no member named ‘fbdev’; did you mean ‘dev’?
  462 |         if (efbdev->helper.fbdev) {
      |                            ^~~~~
      |                            dev
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:463:39: error: ‘struct drm_fb_helper’ has no member named ‘fbdev’; did you mean ‘dev’?
  463 |                 info = efbdev->helper.fbdev;
      |                                       ^~~~~
      |                                       dev
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c: In function ‘evdi_fbdev_unplug’:
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:540:28: error: ‘struct drm_fb_helper’ has no member named ‘fbdev’; did you mean ‘dev’?
  540 |         if (efbdev->helper.fbdev) {
      |                            ^~~~~
      |                            dev
/var/lib/dkms/evdi/1.12.0/build/evdi_fb.c:543:39: error: ‘struct drm_fb_helper’ has no member named ‘fbdev’; did you mean ‘dev’?
  543 |                 info = efbdev->helper.fbdev;
      |                                       ^~~~~