VirtualBox

Opened 4 years ago

Closed 4 years ago

Last modified 15 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

Version 0, edited 4 years ago by Frank Batschulat (Oracle) (next)

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.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette