virtualbox-guest-dkms is still failing with kernel 5.11:
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:345:3: error: ‘struct drm_driver’ has no member named ‘gem_free_object_unlocked’
345 | .gem_free_object_unlocked = vbox_gem_free_object,
| ^~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:345:30: error: initialization of ‘char *’ from incompatible pointer type ‘void (*)(struct drm_gem_object *)’ [-Werror=incompatible-pointer-types]
345 | .gem_free_object_unlocked = vbox_gem_free_object,
| ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:345:30: note: (near initialization for ‘driver.name’)
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:356:3: error: ‘struct drm_driver’ has no member named ‘gem_prime_export’; did you mean ‘gem_prime_import’?
356 | .gem_prime_export = drm_gem_prime_export,
| ^~~~~~~~~~~~~~~~
| gem_prime_import
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:356:22: error: initialization of ‘struct drm_gem_object * (*)(struct drm_device *, struct dma_buf *)’ from incompatible pointer type ‘struct dma_buf * (*)(struct drm_gem_object *, int)’ [-Werror=incompatible-pointer-types]
356 | .gem_prime_export = drm_gem_prime_export,
| ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:356:22: note: (near initialization for ‘driver.gem_prime_import’)
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:358:3: error: ‘struct drm_driver’ has no member named ‘gem_prime_pin’; did you mean ‘gem_prime_mmap’?
358 | .gem_prime_pin = vbox_gem_prime_pin,
| ^~~~~~~~~~~~~
| gem_prime_mmap
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:358:19: error: initialization of ‘struct drm_gem_object * (*)(struct drm_device *, struct dma_buf_attachment *, struct sg_table *)’ from incompatible pointer type ‘int (*)(struct drm_gem_object *)’ [-Werror=incompatible-pointer-types]
358 | .gem_prime_pin = vbox_gem_prime_pin,
| ^~~~~~~~~~~~~~~~~~
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:358:19: note: (near initialization for ‘driver.gem_prime_import_sg_table’)
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:359:3: error: ‘struct drm_driver’ has no member named ‘gem_prime_unpin’; did you mean ‘gem_prime_import’?
359 | .gem_prime_unpin = vbox_gem_prime_unpin,
| ^~~~~~~~~~~~~~~
| gem_prime_import
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:359:21: error: initialization of ‘int (*)(struct drm_gem_object *, struct vm_area_struct *)’ from incompatible pointer type ‘void (*)(struct drm_gem_object *)’ [-Werror=incompatible-pointer-types]
359 | .gem_prime_unpin = vbox_gem_prime_unpin,
| ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:359:21: note: (near initialization for ‘driver.gem_prime_mmap’)
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:360:3: error: ‘struct drm_driver’ has no member named ‘gem_prime_get_sg_table’; did you mean ‘gem_prime_import_sg_table’?
360 | .gem_prime_get_sg_table = vbox_gem_prime_get_sg_table,
| ^~~~~~~~~~~~~~~~~~~~~~
| gem_prime_import_sg_table
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:360:28: error: initialization of ‘int (*)(struct drm_file *, struct drm_device *, struct drm_mode_create_dumb *)’ from incompatible pointer type ‘struct sg_table * (*)(struct drm_gem_object *)’ [-Werror=incompatible-pointer-types]
360 | .gem_prime_get_sg_table = vbox_gem_prime_get_sg_table,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:360:28: note: (near initialization for ‘driver.dumb_create’)
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:362:3: error: ‘struct drm_driver’ has no member named ‘gem_prime_vmap’; did you mean ‘gem_prime_mmap’?
362 | .gem_prime_vmap = vbox_gem_prime_vmap,
| ^~~~~~~~~~~~~~
| gem_prime_mmap
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:362:20: error: initialization of ‘int (*)(struct drm_gem_object *, struct vm_area_struct *)’ from incompatible pointer type ‘void * (*)(struct drm_gem_object *)’ [-Werror=incompatible-pointer-types]
362 | .gem_prime_vmap = vbox_gem_prime_vmap,
| ^~~~~~~~~~~~~~~~~~~
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:362:20: note: (near initialization for ‘driver.gem_prime_mmap’)
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:363:3: error: ‘struct drm_driver’ has no member named ‘gem_prime_vunmap’; did you mean ‘gem_prime_mmap’?
363 | .gem_prime_vunmap = vbox_gem_prime_vunmap,
| ^~~~~~~~~~~~~~~~
| gem_prime_mmap
/var/lib/dkms/virtualbox-guest/6.1.18/build/vboxvideo/vbox_drv.c:363:22: error: initialization of ‘int (*)(struct drm_file *, struct drm_device *, struct drm_mode_create_dumb *)’ from incompatible pointer type ‘void (*)(struct drm_gem_object *, void *)’ [-Werror=incompatible-pointer-types]
363 | .gem_prime_vunmap = vbox_gem_prime_vunmap,
| ^~~~~~~~~~~~~~~~~~~~~
Attached debdiff disables vboxvideo in virtualbox- guest-dkms and forces the usage of the mainline vboxvideo. In this way we can prevent the build errors from happening. A nicer solution would be to disable vboxvideo only in kernels >= 5.11, but this shouldn't be a problem in hirsute (this change should be valid both with all kernels >= 5.10).