Ticket #19516 (closed defect: fixed)
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:
- 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
Change History
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
comment:3 Changed 3 years ago by fbatschu
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
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
comment:6 Changed 3 years ago by fbatschu
still works for 5.7-rc4 from:
https://git.kernel.org/torvalds/t/linux-5.7-rc4.tar.gz
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: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
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