Opened 4 years ago
Closed 4 years 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:
- The number of arguments for drm_fb_helper_init() is reduced.
- 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)
Change History (11)
by , 4 years ago
| Attachment: | fixes_for_5.7.patch added |
|---|
comment:1 by , 4 years ago
| Owner: | set to |
|---|---|
| Status: | new → accepted |
comment:3 by , 4 years ago
comment:4 by , 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
comment:5 by , 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
comment:6 by , 4 years ago
still works for 5.7-rc4 from:
https://git.kernel.org/torvalds/t/linux-5.7-rc4.tar.gz
comment:7 by , 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:9 by , 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
comment:10 by , 4 years ago
| Resolution: | → fixed |
|---|---|
| Status: | accepted → closed |
| Summary: | Linux kernel version: 5.7 - we need changes → Linux kernel version: 5.7 - we need changes (fixed in 6.1.10) |
fixed in Virtualbox release 6.1.10


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_configThe 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; +#endifThis 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