VirtualBox

Ticket #19516 (closed defect: fixed)

Opened 3 years ago

Last modified 3 years ago

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

Reported by: fbatschu Owned by: fbatschu
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

fixes_for_5.7.patch Download (1.2 KB) - added by fbatschu 3 years ago.

Change History

Changed 3 years ago by fbatschu

comment:1 Changed 3 years ago by fbatschu

  • Owner set to fbatschu
  • Status changed from new to accepted

comment:2 Changed 3 years ago by fbatschu

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 3 years ago by fbatschu (previous) (diff)

comment:3 Changed 3 years ago by fbatschu

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 3 years ago by fbatschu (previous) (diff)

comment:4 Changed 3 years ago by fbatschu

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 3 years ago by fbatschu (previous) (diff)

comment:5 Changed 3 years ago by fbatschu

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 3 years ago by fbatschu (previous) (diff)

comment:6 Changed 3 years ago by fbatschu

comment:7 Changed 3 years ago by fbatschu

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 Changed 3 years ago by fbatschu

comment:9 Changed 3 years ago by fbatschu

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 3 years ago by fbatschu (previous) (diff)

comment:10 Changed 3 years ago by fbatschu

  • Status changed from accepted to closed
  • Resolution set to fixed
  • Summary changed from Linux kernel version: 5.7 - we need changes to Linux 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.

www.oracle.com
ContactPrivacy policyTerms of Use