VirtualBox

Opened 4 years ago

Closed 4 years ago

#19863 closed defect (fixed)

Guest additions 6.1.14 won't build in RHEL 8.3 beta (fixed in trunk)

Reported by: nixuser Owned by: Frank Batschulat (Oracle)
Component: guest additions Version: VirtualBox 6.1.14
Keywords: RHEL 8.3 CentsOS 8 OL 8.3 Cc:
Guest type: Linux Host type: Windows

Description

Guest additions version 6.1.14 won't build in Red Hat Enterprise Linux 8.3 beta with kernel-4.18.0-221.el8.x86_64. This will impact derived distros like CentOS eventually also.

Attachments (3)

vboxadd-setup.log (5.9 KB ) - added by nixuser 4 years ago.
vboxadd-setup.log
rhel83-614-diff2.txt (4.5 KB ) - added by Frank Batschulat (Oracle) 4 years ago.
GA diffs for 6.1.14 Rhel 83 & CentOS 8 stream
rhel83-trunk-diff2.txt (5.1 KB ) - added by Frank Batschulat (Oracle) 4 years ago.
diffs for trunk

Download all attachments as: .zip

Change History (29)

by nixuser, 4 years ago

Attachment: vboxadd-setup.log added

vboxadd-setup.log

comment:1 by Frank Batschulat (Oracle), 4 years ago

The error is:

Building the main Guest Additions 6.1.14 module for kernel 4.18.0-221.el8.x86_64.
Building the shared folder support module.
Building the graphics driver module.
Error building the module.  Build output follows.
make V=1 CONFIG_MODULE_SIG= CONFIG_MODULE_SIG_ALL= -C /lib/modules/4.18.0-221.el8.x86_64/build M=/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/*
make -f ./scripts/Makefile.build obj=/tmp/vbox.0
(cat /dev/null;   echo kernel//tmp/vbox.0/vboxvideo.ko;) > /tmp/vbox.0/modules.order
  gcc -Wp,-MD,/tmp/vbox.0/.hgsmi_base.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/8/include -I./arch/x86/include -I./arch/x86/include/generated   -I./include/drm-backport -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -DCC_HAVE_ASM_GOTO -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_AVX512=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 --param=allow-store-data-races=0 -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -g -gdwarf-4 -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -fno-inline-functions-called-once -Wdeclaration-after-statement -Wno-pointer-sign -Wno-stringop-truncation -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=./= -Wno-packed-not-aligned -I./include -I/tmp/vbox.0/ -I./include/drm -D__KERNEL__ -DMODULE -DRT_WITHOUT_PRAGMA_ONCE -DRT_ARCH_AMD64  -DMODULE  -DKBUILD_BASENAME='"hgsmi_base"' -DKBUILD_MODNAME='"vboxvideo"' -c -o /tmp/vbox.0/.tmp_hgsmi_base.o /tmp/vbox.0/hgsmi_base.c
  gcc -Wp,-MD,/tmp/vbox.0/.modesetting.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/8/include -I./arch/x86/include -I./arch/x86/include/generated   -I./include/drm-backport -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -DCC_HAVE_ASM_GOTO -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_AVX512=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 --param=allow-store-data-races=0 -Wframe-larger-than=2048 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-const-variable -g -gdwarf-4 -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -fno-inline-functions-called-once -Wdeclaration-after-statement -Wno-pointer-sign -Wno-stringop-truncation -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -fmacro-prefix-map=./= -Wno-packed-not-aligned -I./include -I/tmp/vbox.0/ -I./include/drm -D__KERNEL__ -DMODULE -DRT_WITHOUT_PRAGMA_ONCE -DRT_ARCH_AMD64  -DMODULE  -DKBUILD_BASENAME='"modesetting"' -DKBUILD_MODNAME='"vboxvideo"' -c -o /tmp/vbox.0/.tmp_modesetting.o /tmp/vbox.0/modesetting.c
In file included from /tmp/vbox.0/hgsmi_base.c:27:
/tmp/vbox.0/vbox_drv.h:151:11: fatal error: drm/drmP.h: No such file or directory
 # include <drm/drmP.h>
           ^~~~~~~~~~~~
compilation terminated.
make[2]: *** [scripts/Makefile.build:315: /tmp/vbox.0/hgsmi_base.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /tmp/vbox.0/vboxvideo_guest.h:34,
                 from /tmp/vbox.0/modesetting.c:27:
/tmp/vbox.0/vbox_drv.h:151:11: fatal error: drm/drmP.h: No such file or directory
 # include <drm/drmP.h>
           ^~~~~~~~~~~~
compilation terminated.

Our code does: trunk/src/VBox/Additions/linux/drm/vbox_drv.h

154 #if RTLNX_VER_MAX(5,5,0)                                                                                                           
155 # include <drm/drmP.h>                                                                                                             
156 #else /* >= 5.5.0 */                                                                                                               
157 # include <drm/drm_file.h>                                                                                                         
158 # include <drm/drm_drv.h>                                                                                                          
159 # include <drm/drm_device.h>                                                                                                       
160 # include <drm/drm_ioctl.h>                                                                                                        
161 # include <drm/drm_fourcc.h>                                                                                                       
162 # include <drm/drm_irq.h>                                                                                                          
163 # include <drm/drm_vblank.h>                                                                                                       
164 #endif /* >= 5.5.0 */   

I just did that for the 5.5 kernel support so that implies that RH did backport something to RHEL 8.3 and kernel 4.18.0-221.el8.x86_64 that broke this.

comment:2 by Frank Batschulat (Oracle), 4 years ago

Submitter, please provide the output of:

#cat /etc/os-release
#cat /etc/redhat-release

thanks

comment:3 by nixuser, 4 years ago

rhel8b3$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.3 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.3"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.3 Beta (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8.3:beta"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.3
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.3 Beta"
rhel8b3$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.3 Beta (Ootpa)
rhel8b3$ 

comment:4 by Frank Batschulat (Oracle), 4 years ago

see https://www.virtualbox.org/ticket/19145 for the details about the removal and changes related to drmP.h in the 5.5 kernel release. This must have been backported to RHEL 8.3 now.

Also the drm_connector related changes from 5.5 got backported.

Last edited 4 years ago by Frank Batschulat (Oracle) (previous) (diff)

comment:5 by Frank Batschulat (Oracle), 4 years ago

This should fix the problem in file: trunk/src/VBox/Additions/linux/drm/vbox_drv.h

$ diff -c vbox_drv.h.orig vbox_drv.h
*** vbox_drv.h.orig	2020-09-07 10:24:18.259718764 +0200
--- vbox_drv.h	2020-09-07 10:50:30.088925534 +0200
***************
*** 151,159 ****
  #define S64_MIN         ((s64)(-S64_MAX - 1))
  #endif
  
! #if RTLNX_VER_MAX(5,5,0)
  # include <drm/drmP.h>
! #else /* >= 5.5.0 */
  # include <drm/drm_file.h>
  # include <drm/drm_drv.h>
  # include <drm/drm_device.h>
--- 151,159 ----
  #define S64_MIN         ((s64)(-S64_MAX - 1))
  #endif
  
! #if RTLNX_VER_MAX(5,5,0) && RTLNX_RHEL_MAX(8,3)
  # include <drm/drmP.h>
! #else /* >= 5.5.0 || RHEL >= 8.3 */
  # include <drm/drm_file.h>
  # include <drm/drm_drv.h>
  # include <drm/drm_device.h>
***************
*** 161,167 ****
  # include <drm/drm_fourcc.h>
  # include <drm/drm_irq.h>
  # include <drm/drm_vblank.h>
! #endif /* >= 5.5.0 */
  #if RTLNX_VER_MIN(4,11,0) || RTLNX_RHEL_MAJ_PREREQ(7,5)
  # include <drm/drm_encoder.h>
  #endif
--- 161,167 ----
  # include <drm/drm_fourcc.h>
  # include <drm/drm_irq.h>
  # include <drm/drm_vblank.h>
! #endif /* >= 5.5.0 || RHEL >= 8.3 */
  #if RTLNX_VER_MIN(4,11,0) || RTLNX_RHEL_MAJ_PREREQ(7,5)
  # include <drm/drm_encoder.h>
  #endif
Last edited 4 years ago by Frank Batschulat (Oracle) (previous) (diff)

comment:6 by Frank Batschulat (Oracle), 4 years ago

Any suggestion where I can get a RHEL 8.3 Beta install DVD from to verify the fix?

comment:7 by nixuser, 4 years ago

You will need a Red Hat Developer Account which you can get for free as a developer. Check here https://developers.redhat.com/articles/getting-red-hat-developer-subscription-what-rhel-users-need-know. You can then simply download the beta here https://developers.redhat.com/products/rhel/download. Hope this helps.

comment:8 by nixuser, 4 years ago

Actually I believe you can do everything from the second link, and create the account at the time of download. Sorry but it's been a long while since I had to do this, and the pages have changed.

comment:9 by Frank Batschulat (Oracle), 4 years ago

Owner: set to Frank Batschulat (Oracle)
Status: newaccepted

comment:10 by Frank Batschulat (Oracle), 4 years ago

Status: acceptedawaitsfeedback

from RedHat on an attempt to get the beta with a developer subscription:

RHEL Beta subscriptions are only available to customers who have an active subscription for a Red Hat product. However,  subscriptions that will let you evaluate Red Hat Enterprise Linux Beta are available at no cost by requesting a Red Hat Enterprise Linux evaluation or by joining the Red Hat Developer Program.

If you are unsure whether you already have a Red Hat Enterprise Linux Beta subscription, you can check by visiting the Red Hat Customer Portal, https://access.redhat.com/management/

Learn more about Red Hat Enterprise Linux Beta: https://access.redhat.com/products/red-hat-enterprise-linux/beta

For more information about Red Hat Enterprise Linux Beta and requirements, visit: https://access.redhat.com/site/solutions/534743

I actually have the Red Hat Beta Access but the download is not available to me in the Downloads section, maybe it is hidden somewhere in the HTML emails I got as a result. I don't know. I don't have time for this.

So just wake me up when RHEL 8.3 is released or you figure out a way to provide early access for us or test the above suggested fix I put in on your systems GAs and report the result back.

Last edited 4 years ago by Frank Batschulat (Oracle) (previous) (diff)

comment:11 by Frank Batschulat (Oracle), 4 years ago

Owner: Frank Batschulat (Oracle) removed
Status: awaitsfeedbacknew

comment:12 by Frank Batschulat (Oracle), 4 years ago

Status: newawaitsfeedback

comment:13 by nixuser, 4 years ago

If you are logged into your Red Hat account, the following link should work:

https://access.redhat.com/downloads/content/486/ver=/rhel---8/8.3%20Beta/x86_64/product-software

in reply to:  13 comment:14 by Frank Batschulat (Oracle), 4 years ago

Replying to nixuser:

If you are logged into your Red Hat account, the following link should work:

https://access.redhat.com/downloads/content/486/ver=/rhel---8/8.3%20Beta/x86_64/product-software

Yes, that indeed worked and I now have a corresponding RHEL 8.3 Beta VM running, however it does not come with any software repos enabled so hard to install gcc make kernel-devel and kernel-headers. I am sure the final distro once releases will be more easy to handle and test then this beta testing stuff.

comment:15 by nixuser, 4 years ago

You need to register the machine and connect it to a free beta entitlement. However I completely forgot the fact that after the install the graphical registration program was completely broken for me.... I had to do it from the command line and nothing I read from other people in the community portal seemed to work for me.... I got it working only after a lot of hacking and experimenting.

No chance to describe how I did it because I'm not even sure myself how I got it going! But that's how I got the repos up and running. I think you're right, this will have to wait for final release sadly.

Sorry about that, I had forgotten what a fight it was to get the repos working.

comment:16 by Frank Batschulat (Oracle), 4 years ago

You can apply the suggested fix from comment https://www.virtualbox.org/ticket/19863#comment:5 to your installed GA in the RHEL 5.3beta VM and test it.

the file to change is in directory : /opt/VBoxGuestAdditions-6.1.14/src/vboxguest-6.1.14/vboxvideo filename: vbox_drv.h

after you applied the diffs, you build and install the GAs again with:

# cd /opt/VBoxGuestAdditions-6.1.14/src/vboxguest-6.1.14
# make
# make install

Then reboot the VM.

comment:17 by jre, 4 years ago

The same bug affects CentOS 8 Stream from https://www.centos.org/download/ Release identifier inside the OS: CentOS Linux release 8.2.2004 (Core)

the current kernel affected is 4.18.0-236.el8.x86_64

in reply to:  17 comment:18 by Frank Batschulat (Oracle), 4 years ago

Owner: set to Frank Batschulat (Oracle)
Status: awaitsfeedbackassigned

Replying to jre:

The same bug affects CentOS 8 Stream from https://www.centos.org/download/ Release identifier inside the OS: CentOS Linux release 8.2.2004 (Core)

the current kernel affected is 4.18.0-236.el8.x86_64

Jepp, thanks! I can reproduce it using that. That's something I can work with.

Last edited 4 years ago by Frank Batschulat (Oracle) (previous) (diff)

comment:19 by Frank Batschulat (Oracle), 4 years ago

So the drmP.h issue mentioned initially is only the first problem, when fixing it as suggested in comment #5 we stumble over the next issue :

t/VBoxGuestAdditions-6.1.14/src/vboxguest-6.1.14/vboxvideo/vbox_fb.c
/opt/VBoxGuestAdditions-6.1.14/src/vboxguest-6.1.14/vboxvideo/vbox_drv.c: In
function ‘vbox_pci_probe’:
/opt/VBoxGuestAdditions-6.1.14/src/vboxguest-6.1.14/vboxvideo/vbox_drv.c:61:9:
error: implicit declaration of function ‘drm_get_pci_dev’; did you mean
‘acpi_get_pci_dev’? [-Werror=implicit-function-declaration]
 #else
         ^
         acpi_get_pci_dev
/opt/VBoxGuestAdditions-6.1.14/src/vboxguest-6.1.14/vboxvideo/vbox_drv.c: At
top level:
/opt/VBoxGuestAdditions-6.1.14/src/vboxguest-6.1.14/vboxvideo/vbox_drv.c:308:6:
error: ‘DRIVER_PRIME’ undeclared here (not in a function); did you mean
‘DRIVER_NAME’?
 #else  /* >= 5.4.0 */
      ^~~~~~~~~~~~
      DRIVER_NAME

comment:20 by Frank Batschulat (Oracle), 4 years ago

they have not only backported changes from the 5.5 kernel, but also changes from the 5.4 kernel, namely the vma_manager related ones, see previous 5.4 support ticket #18945

comment:22 by Frank Batschulat (Oracle), 4 years ago

Keywords: CentsOS 8 OL added

by Frank Batschulat (Oracle), 4 years ago

Attachment: rhel83-614-diff2.txt added

GA diffs for 6.1.14 Rhel 83 & CentOS 8 stream

by Frank Batschulat (Oracle), 4 years ago

Attachment: rhel83-trunk-diff2.txt added

diffs for trunk

comment:23 by Frank Batschulat (Oracle), 4 years ago

fixed in Trunk, revision: r140454

Last edited 4 years ago by Frank Batschulat (Oracle) (previous) (diff)

comment:24 by Frank Batschulat (Oracle), 4 years ago

backported to 6.1, revision: r140463

comment:25 by Frank Batschulat (Oracle), 4 years ago

comment:26 by Frank Batschulat (Oracle), 4 years ago

the fix will be contained within the next maintenance release of !Virtualbox following the current 6.1.14 release.

comment:27 by Frank Batschulat (Oracle), 4 years ago

Resolution: fixed
Status: assignedclosed
Summary: Guest additions 6.1.14 won't build in RHEL 8.3 betaGuest additions 6.1.14 won't build in RHEL 8.3 beta (fixed in trunk)
Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use