Showing posts with label kernel. Show all posts
Showing posts with label kernel. Show all posts

Monday, 17 December 2018

Unable to compile VirtualBox Guest Additions on CentOS kernel version 3.10.0-957

The Guest Additions for VirtualBox fail to be built on the kernel released on November 12th 2018, version 3.10.0-957 for CentOS 7.

After upgrading the kernel from 3.10.0-862 the compilation of the Guest Additions' modules generates the following errors:

Building the graphics driver module.
Error building the module.  Build output follows.
make V=1 CONFIG_MODULE_SIG= -C /lib/modules/3.10.0-957.1.3.el7.x86_64/build SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -j2 modules
make[1]: warning: -jN forced in submake: disabling jobserver mode.
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (                \
echo >&2;                                                       \
echo >&2 "  ERROR: Kernel configuration is invalid.";           \
echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";      \
echo >&2 ;                                                      \
/bin/false)
mkdir -p /tmp/vbox.0/.tmp_versions ; rm -f /tmp/vbox.0/.tmp_versions/*
...
/tmp/vbox.0/vbox_mode.c: In function ‘vbox_best_single_encoder’:
/tmp/vbox.0/vbox_mode.c:358:3: warning: passing argument 2 of ‘drm_encoder_find’ makes pointer from integer without a cast [enabled by default]
   return drm_encoder_find(connector->dev, enc_id);
   ^
In file included from /tmp/vbox.0/vbox_drv.h:89:0,
                 from /tmp/vbox.0/vbox_mode.c:35:
include/drm/drm_encoder.h:221:35: note: expected ‘struct drm_file *’ but argument is of type ‘int’
 static inline struct drm_encoder *drm_encoder_find(struct drm_device *dev,
                                   ^
/tmp/vbox.0/vbox_mode.c:358:3: error: too few arguments to function ‘drm_encoder_find’
   return drm_encoder_find(connector->dev, enc_id);
   ^
In file included from /tmp/vbox.0/vbox_drv.h:89:0,
                 from /tmp/vbox.0/vbox_mode.c:35:
include/drm/drm_encoder.h:221:35: note: declared here
 static inline struct drm_encoder *drm_encoder_find(struct drm_device *dev,
                                   ^
make[2]: *** [/tmp/vbox.0/vbox_mode.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/tmp/vbox.0/vbox_ttm.c: In function ‘vbox_ttm_tt_create’:
/tmp/vbox.0/vbox_ttm.c:225:2: warning: passing argument 2 of ‘ttm_tt_init’ from incompatible pointer type [enabled by default]
  if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
  ^
In file included from include/drm/ttm/ttm_bo_driver.h:45:0,
                 from /tmp/vbox.0/vbox_drv.h:93,
                 from /tmp/vbox.0/vbox_ttm.c:31:
include/drm/ttm/ttm_tt.h:161:5: note: expected ‘struct ttm_buffer_object *’ but argument is of type ‘struct ttm_bo_device *’
 int ttm_tt_init(struct ttm_tt *ttm, struct ttm_buffer_object *bo,
     ^
/tmp/vbox.0/vbox_ttm.c:225:2: error: too many arguments to function ‘ttm_tt_init’
  if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
  ^
In file included from include/drm/ttm/ttm_bo_driver.h:45:0,
                 from /tmp/vbox.0/vbox_drv.h:93,
                 from /tmp/vbox.0/vbox_ttm.c:31:
include/drm/ttm/ttm_tt.h:161:5: note: declared here
 int ttm_tt_init(struct ttm_tt *ttm, struct ttm_buffer_object *bo,
     ^
/tmp/vbox.0/vbox_ttm.c: In function ‘vbox_ttm_tt_populate’:
/tmp/vbox.0/vbox_ttm.c:240:2: error: too few arguments to function ‘ttm_pool_populate’
  return ttm_pool_populate(ttm);
  ^
In file included from /tmp/vbox.0/vbox_ttm.c:32:0:
include/drm/ttm/ttm_page_alloc.h:50:5: note: declared here
 int ttm_pool_populate(struct ttm_tt *ttm, struct ttm_operation_ctx *ctx);
     ^
/tmp/vbox.0/vbox_ttm.c: At top level:
/tmp/vbox.0/vbox_ttm.c:257:2: warning: initialization from incompatible pointer type [enabled by default]
  .ttm_tt_create = vbox_ttm_tt_create,
  ^
/tmp/vbox.0/vbox_ttm.c:257:2: warning: (near initialization for ‘vbox_bo_driver.ttm_tt_create’) [enabled by default]
/tmp/vbox.0/vbox_ttm.c:259:2: warning: initialization from incompatible pointer type [enabled by default]
  .ttm_tt_populate = vbox_ttm_tt_populate,
  ^
/tmp/vbox.0/vbox_ttm.c:259:2: warning: (near initialization for ‘vbox_bo_driver.ttm_tt_populate’) [enabled by default]
/tmp/vbox.0/vbox_ttm.c:272:16: error: ‘ttm_bo_default_io_mem_pfn’ undeclared here (not in a function)
  .io_mem_pfn = ttm_bo_default_io_mem_pfn,
                ^
/tmp/vbox.0/vbox_ttm.c: In function ‘vbox_bo_create’:
/tmp/vbox.0/vbox_ttm.c:417:6: warning: passing argument 8 of ‘ttm_bo_init’ makes integer from pointer without a cast [enabled by default]
      NULL, vbox_bo_ttm_destroy);
      ^
In file included from /tmp/vbox.0/vbox_drv.h:92:0,
                 from /tmp/vbox.0/vbox_ttm.c:31:
include/drm/ttm/ttm_bo_api.h:544:5: note: expected ‘size_t’ but argument is of type ‘void *’
 int ttm_bo_init(struct ttm_bo_device *bdev, struct ttm_buffer_object *bo,
     ^
/tmp/vbox.0/vbox_ttm.c:417:6: warning: passing argument 9 of ‘ttm_bo_init’ makes pointer from integer without a cast [enabled by default]
      NULL, vbox_bo_ttm_destroy);
      ^
In file included from /tmp/vbox.0/vbox_drv.h:92:0,
                 from /tmp/vbox.0/vbox_ttm.c:31:
include/drm/ttm/ttm_bo_api.h:544:5: note: expected ‘struct sg_table *’ but argument is of type ‘size_t’
 int ttm_bo_init(struct ttm_bo_device *bdev, struct ttm_buffer_object *bo,
     ^
/tmp/vbox.0/vbox_ttm.c:417:6: error: too many arguments to function ‘ttm_bo_init’
      NULL, vbox_bo_ttm_destroy);
      ^
In file included from /tmp/vbox.0/vbox_drv.h:92:0,
                 from /tmp/vbox.0/vbox_ttm.c:31:
include/drm/ttm/ttm_bo_api.h:544:5: note: declared here
 int ttm_bo_init(struct ttm_bo_device *bdev, struct ttm_buffer_object *bo,
     ^
/tmp/vbox.0/vbox_ttm.c: In function ‘vbox_bo_pin’:
/tmp/vbox.0/vbox_ttm.c:452:2: error: too many arguments to function ‘ttm_bo_validate’
  ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
  ^
In file included from /tmp/vbox.0/vbox_drv.h:92:0,
                 from /tmp/vbox.0/vbox_ttm.c:31:
include/drm/ttm/ttm_bo_api.h:344:5: note: declared here
 int ttm_bo_validate(struct ttm_buffer_object *bo,
     ^
/tmp/vbox.0/vbox_ttm.c: In function ‘vbox_bo_unpin’:
/tmp/vbox.0/vbox_ttm.c:486:2: error: too many arguments to function ‘ttm_bo_validate’
  ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
  ^
In file included from /tmp/vbox.0/vbox_drv.h:92:0,
                 from /tmp/vbox.0/vbox_ttm.c:31:
include/drm/ttm/ttm_bo_api.h:344:5: note: declared here
 int ttm_bo_validate(struct ttm_buffer_object *bo,
     ^
/tmp/vbox.0/vbox_ttm.c: In function ‘vbox_bo_push_sysram’:
/tmp/vbox.0/vbox_ttm.c:525:2: error: too many arguments to function ‘ttm_bo_validate’
  ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
  ^
In file included from /tmp/vbox.0/vbox_drv.h:92:0,
                 from /tmp/vbox.0/vbox_ttm.c:31:
include/drm/ttm/ttm_bo_api.h:344:5: note: declared here
 int ttm_bo_validate(struct ttm_buffer_object *bo,
     ^
make[2]: *** [/tmp/vbox.0/vbox_ttm.o] Error 1
make[1]: *** [_module_/tmp/vbox.0] Error 2
make: *** [vboxvideo] Error 2

I have also attempted to use the beta version 5.2.23, but the Windows device drivers for the VirtualBox devices would not load because of a problem with the drivers' signatures from Oracle.



The only solution I have found so far has been to go back to using kernel version 3.10.0-862.