evdi-dkms fails to build on hirsute with the latest 5.11 kernel

Bug #1917787 reported by Andrea Righi on 2021-03-04
32
This bug affects 5 people
Affects Status Importance Assigned to Milestone
evdi (Ubuntu)
Undecided
Unassigned

Bug Description

Trying to build evdi-dkms on the latest 5.11 kernel (on hirsute) returns the following build errors:

/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_modeset.c:167:20: error: initialization of ‘void (*)(struct drm_c
rtc *, struct drm_atomic_state *)’ from incompatible pointer type ‘void (*)(struct drm_crtc *, struct drm_
crtc_state *)’ [-Werror=incompatible-pointer-types]
  167 | .atomic_flush = evdi_crtc_atomic_flush,
      | ^~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_modeset.c:167:20: note: (near initialization for ‘evdi_helper_fun
cs.atomic_flush’)
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:90:3: error: ‘struct drm_driver’ has no member named ‘precl
ose’; did you mean ‘postclose’?
   90 | .preclose = evdi_driver_preclose,
      | ^~~~~~~~
      | postclose
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:90:14: error: initialization of ‘void (*)(struct drm_device
 *)’ from incompatible pointer type ‘void (*)(struct drm_device *, struct drm_file *)’ [-Werror=incompatib
le-pointer-types]
   90 | .preclose = evdi_driver_preclose,
      | ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:90:14: note: (near initialization for ‘driver.release’)
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:96:3: error: ‘struct drm_driver’ has no member named ‘gem_f
ree_object_unlocked’
   96 | .gem_free_object_unlocked = evdi_gem_free_object,
      | ^~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:96:30: error: initialization of ‘void (*)(struct drm_device
 *)’ from incompatible pointer type ‘void (*)(struct drm_gem_object *)’ [-Werror=incompatible-pointer-type
s]
   96 | .gem_free_object_unlocked = evdi_gem_free_object,
      | ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:96:30: note: (near initialization for ‘driver.lastclose’)
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:100:3: error: ‘struct drm_driver’ has no member named ‘gem_
vm_ops’
  100 | .gem_vm_ops = &evdi_gem_vm_ops,
      | ^~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:100:16: error: initialization of ‘void (*)(struct drm_devic
e *)’ from incompatible pointer type ‘const struct vm_operations_struct *’ [-Werror=incompatible-pointer-t
ypes]
  100 | .gem_vm_ops = &evdi_gem_vm_ops,
      | ^
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:100:16: note: (near initialization for ‘driver.unload’)
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:114:3: error: ‘struct drm_driver’ has no member named ‘gem_prime_export’; did you mean ‘gem_prime_import’?
  114 | .gem_prime_export = drm_gem_prime_export,
      | ^~~~~~~~~~~~~~~~
      | gem_prime_import
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:114:22: error: initialization of ‘int (*)(struct drm_device *, struct drm_file *, int, uint32_t *)’ {aka ‘int (*)(struct drm_device *, struct drm_file *, int, unsigned int *)’} from incompatible pointer type ‘struct dma_buf * (*)(struct drm_gem_object *, int)’ [-Werror=incompatible-pointer-types]
  114 | .gem_prime_export = drm_gem_prime_export,
      | ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:114:22: error: initialization of ‘int (*)(struct drm_device *, struct drm_file *, int, uint32_t *)’ {aka ‘int (*)(struct drm_device *, struct drm_file *, int, unsigned int *)’} from incompatible pointer type ‘struct dma_buf * (*)(struct drm_gem_object *, int)’ [-Werror=incompatible-pointer-types]
  114 | .gem_prime_export = drm_gem_prime_export,
      | ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:114:22: note: (near initialization for ‘driver.prime_fd_to_handle’)
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:115:3: error: ‘struct drm_driver’ has no member named ‘gem_prime_get_sg_table’; did you mean ‘gem_prime_import_sg_table’?
  115 | .gem_prime_get_sg_table = evdi_prime_get_sg_table,
      | ^~~~~~~~~~~~~~~~~~~~~~
      | gem_prime_import_sg_table
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:115:28: error: initialization of ‘struct drm_gem_object * (*)(struct drm_device *, struct dma_buf *)’ from incompatible pointer type ‘struct sg_table * (*)(struct drm_gem_object *)’ [-Werror=incompatible-pointer-types]
  115 | .gem_prime_get_sg_table = evdi_prime_get_sg_table,
      | ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:115:28: note: (near initialization for ‘driver.gem_prime_import’)
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:118:3: error: ‘struct drm_driver’ has no member named ‘enable_vblank’
  118 | .enable_vblank = evdi_enable_vblank,
      | ^~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:118:19: error: initialization of ‘int (*)(struct drm_gem_object *, struct vm_area_struct *)’ from incompatible pointer type ‘int (*)(struct drm_device *, unsigned int)’ [-Werror=incompatible-pointer-types]
  118 | .enable_vblank = evdi_enable_vblank,
      | ^~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:118:19: note: (near initialization for ‘driver.gem_prime_mmap’)
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:119:3: error: ‘struct drm_driver’ has no member named ‘disable_vblank’
  119 | .disable_vblank = evdi_disable_vblank,
      | ^~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:119:20: error: initialization of ‘int (*)(struct drm_file *, struct drm_device *, struct drm_mode_create_dumb *)’ from incompatible pointer type ‘void (*)(struct drm_device *, unsigned int)’ [-Werror=incompatible-pointer-types]
  119 | .disable_vblank = evdi_disable_vblank,
      | ^~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0+dfsg/build/evdi_drv.c:119:20: note: (near initialization for ‘driver.dumb_create’)
cc1: some warnings being treated as errors
```

Revision history for this message
Rocko (rockorequin) wrote :

It has been a known issue for a while: https://github.com/DisplayLink/evdi/issues/249

The trouble is we can patch and build it against 5.11 and it works at first, but it freezes the system if you rearrange the layout, change the resolution, unplug the screen, etc.

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in evdi (Ubuntu):
status: New → Confirmed
Balint Reczey (rbalint) on 2021-04-07
tags: added: update-excuse
Revision history for this message
Jonathan Kamens (jik) wrote :

If you've landed here looking for how to use EVDI or DisplayLink with Hirsute, please see my blog posting about this:

https://blog.kamens.us/2021/03/19/update-on-using-displaylink-with-ubuntu-21-04-hirsute-hippo/

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.