VirtualBox

Opened 4 years ago

Closed 4 years ago

Last modified 8 months ago

#19516 closed defect (fixed)

Linux kernel version: 5.7 - we need changes (fixed in 6.1.10)

Reported by: Frank Batschulat (Oracle) Owned by: Frank Batschulat (Oracle)
Component: other Version: VirtualBox 6.1.6
Keywords: linux kernel 5.7 Cc:
Guest type: Linux Host type: Linux

Description

From: "Larry Finger" <> To: vbox-dev@… Subject: [vbox-dev] Fixes for kernel 5.7 Date: Fri, 17 Apr 2020 17:47:11 +0200

Hi,

Attached are the fixes required by API changes in kernel 5.7 as follows:

  1. The number of arguments for drm_fb_helper_init() is reduced.
  1. Routine drm_fb_helper_single_add_all_connectors() just did a "return 0"

and has been eliminated.

As usual, these patches are released under the MIT license.

Larry

Attachments (1)

fixes_for_5.7.patch (1.2 KB ) - added by Frank Batschulat (Oracle) 4 years ago.

Download all attachments as: .zip

Change History (11)

by Frank Batschulat (Oracle), 4 years ago

Attachment: fixes_for_5.7.patch added

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

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

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

This bug will be used to track changes required to support the 5.7 linux kernel train. The first issue that cropped up with 5.7-rc1 was:

trunk $ kmk KERN_VER=linux-5.7-rc2 KERN_DIR=/home/ws/linux-5.7-rc2

/home/ws/57vb/trunk/out/linux.amd64/debug/obj/tstvboxvideo-src_mod/vbox_fb.c: In function ‘vbox_fbdev_init’:
/home/ws/57vb/trunk/out/linux.amd64/debug/obj/tstvboxvideo-src_mod/vbox_fb.c:429:8: error: too many arguments to function ‘drm_fb_helper_init’
  ret = drm_fb_helper_init(dev, &fbdev->helper, vbox->num_crtcs);
        ^~~~~~~~~~~~~~~~~~
In file included from /home/ws/57vb/trunk/out/linux.amd64/debug/obj/tstvboxvideo-src_mod/vbox_drv.h:116:0,
                 from /home/ws/57vb/trunk/out/linux.amd64/debug/obj/tstvboxvideo-src_mod/vbox_fb.c:40:
./include/drm/drm_fb_helper.h:216:5: note: declared here
 int drm_fb_helper_init(struct drm_device *dev, struct drm_fb_helper *helper);
     ^~~~~~~~~~~~~~~~~~
kBuild: xpidl XPCOM - /home/ws/57vb/trunk/src/libs/xpcom18a4/xpcom/base/nsIProgrammingLanguage.idl
kBuild: xpidl XPCOM - /home/ws/57vb/trunk/src/libs/xpcom18a4/xpcom/base/nsISupports.idl
/home/ws/57vb/trunk/out/linux.amd64/debug/obj/tstvboxvideo-src_mod/vbox_fb.c:438:8: error: implicit declaration of function ‘drm_fb_helper_single_add_all_connectors’; did you mean ‘drm_fb_helper_initial_config’? [-Werror=implicit-function-declaration]
  ret = drm_fb_helper_single_add_all_connectors(&fbdev->helper);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        drm_fb_helper_initial_config

The fix for this will be:

VBox/Trunk fbatschu@lserver trunk $ svn diff
Index: src/VBox/Additions/linux/drm/vbox_fb.c
===================================================================
--- src/VBox/Additions/linux/drm/vbox_fb.c	(revision 137367)
+++ src/VBox/Additions/linux/drm/vbox_fb.c	(working copy)
@@ -416,7 +416,7 @@
 {
 	struct vbox_private *vbox = dev->dev_private;
 	struct vbox_fbdev *fbdev;
-	int ret;
+	int ret = 0;

 	fbdev = devm_kzalloc(dev->dev, sizeof(*fbdev), GFP_KERNEL);
 	if (!fbdev)
@@ -430,9 +430,11 @@
 #else
 	drm_fb_helper_prepare(dev, &fbdev->helper, &vbox_fb_helper_funcs);
 #endif
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) || defined(RHEL_75)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 7, 0)
+        ret = drm_fb_helper_init(dev, &fbdev->helper);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) || defined(RHEL_75)
 	ret = drm_fb_helper_init(dev, &fbdev->helper, vbox->num_crtcs);
-#else
+#else /* KERNEL_VERSION < 4.11.0 */
 	ret =
 	    drm_fb_helper_init(dev, &fbdev->helper, vbox->num_crtcs,
 			       vbox->num_crtcs);
@@ -440,7 +442,9 @@
 	if (ret)
 		return ret;

+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 7, 0)
 	ret = drm_fb_helper_single_add_all_connectors(&fbdev->helper);
 	if (ret)
 		goto err_fini;
+#endif

This makes it work with 5.7-rc2 from:
https://git.kernel.org/torvalds/t/linux-5.7-rc2.tar.gz

references/background:

1) drm: Remove unused arg from drm_fb_helper_init
https://github.com/torvalds/linux/commit/2dea2d1182179e7dded5352d3ed9f84ad3945b93

2) drm: Remove drm_fb_helper add, add all and remove connector calls
https://github.com/torvalds/linux/commit/ff1f62d35b23ec92fd72f9886e1aa388ff6384f6

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

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

issues 1) and 2) above have been fixed in trunk with revision r137407 and in the 6.1 branch with revision r137420 and in the 6.0.X branch with revision r137422 and in the 5.2.X branch with revision r137424

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

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

For the 6.0.X and 5.2.X branches we also have to backport the changes done in trunk under the revison r128366 "Additions/linux/vboxvideo: Update driver to use drm_dev_register." because drm_get_pci_dev() we used there in vbox_pci_probe() has been made static in 5.7-rc1:

https://elixir.bootlin.com/linux/v5.7-rc1/source/drivers/gpu/drm/drm_pci.c#L195

this has been done in the 6.0.X branch with revision r137455 and in the 5.2.X branch with revision r137462

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

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

fwiw, the current 6.1.X test builds contain the current 5.7-rc2 changes already, pick up:

Guest Additions 6.1.x revision 137519
https://www.virtualbox.org/download/testcase/VBoxGuestAdditions_6.1.7-137519.iso

and for the host from:
https://www.virtualbox.org/wiki/Testbuilds
Linux 64-bit 6.1.x revision 137519
Linux EL6 64-bit 6.1.x revision 137519
Linux EL7 64-bit 6.1.x revision 137519
Linux EL8 64-bit 6.1.x revision 137519

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

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

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

The changes done so far above are part of the offical released versions: VirtualBox 6.1.8, 6.0.22 and 5.2.42

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

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

This still works for the final mainline 5.7 kernel version from: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.7.tar.xz

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

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

Resolution: fixed
Status: acceptedclosed
Summary: Linux kernel version: 5.7 - we need changesLinux kernel version: 5.7 - we need changes (fixed in 6.1.10)

fixed in Virtualbox release 6.1.10

Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use