1
0
forked from pool/virtualbox

Accepting request 1045400 from home:lwfinger:branches:Virtualization

To eliminate some VM failures while using the kernel version of vboxvideo.ko for Leap 15.4,
  the build of this module is turned on again. Fixes boo#1206651 - Leap 15.4 guests running
  VirtualBox 7.0.4 crash when run on hosts with certain Intel graphics cards
  File "fixes_for_leap15.5.patch" added to fix chanes needed for backports to the Leap 15.5 kernel

OBS-URL: https://build.opensuse.org/request/show/1045400
OBS-URL: https://build.opensuse.org/package/show/Virtualization/virtualbox?expand=0&rev=670
This commit is contained in:
Larry Finger 2022-12-26 17:18:51 +00:00 committed by Git OBS Bridge
parent b4a9166761
commit d4f0dc43fc
9 changed files with 2650 additions and 42 deletions

File diff suppressed because it is too large Load Diff

83
fixes_for_leap15.5.patch Normal file
View File

@ -0,0 +1,83 @@
Index: VirtualBox-7.0.4/src/VBox/Additions/linux/drm/vbox_drv.h
===================================================================
--- VirtualBox-7.0.4.orig/src/VBox/Additions/linux/drm/vbox_drv.h
+++ VirtualBox-7.0.4/src/VBox/Additions/linux/drm/vbox_drv.h
@@ -166,9 +166,9 @@
# include <drm/drm_device.h>
# include <drm/drm_ioctl.h>
# include <drm/drm_fourcc.h>
-# if RTLNX_VER_MAX(5,15,0) && !RTLNX_RHEL_RANGE(8,7, 8,99) && !RTLNX_RHEL_MAJ_PREREQ(9,1)
-# include <drm/drm_irq.h>
-# endif
+//# if RTLNX_VER_MAX(5,15,0) && !RTLNX_RHEL_RANGE(8,7, 8,99) && !RTLNX_RHEL_MAJ_PREREQ(9,1)
+//# include <drm/drm_irq.h>
+//# endif
# include <drm/drm_vblank.h>
#else /* < 5.5.0 || RHEL < 8.3 || SLES < 15-SP3 */
# include <drm/drmP.h>
Index: VirtualBox-7.0.4/src/VBox/Additions/linux/drm/vbox_drv.c
===================================================================
--- VirtualBox-7.0.4.orig/src/VBox/Additions/linux/drm/vbox_drv.c
+++ VirtualBox-7.0.4/src/VBox/Additions/linux/drm/vbox_drv.c
@@ -52,13 +52,7 @@
/** Detect whether kernel mode setting is OFF. */
#if defined(CONFIG_VGA_CONSOLE)
-# if RTLNX_VER_MIN(5,17,0)
# define VBOX_VIDEO_NOMODESET() drm_firmware_drivers_only() && vbox_modeset == -1
-# elif RTLNX_VER_MIN(4,7,0)
-# define VBOX_VIDEO_NOMODESET() vgacon_text_force() && vbox_modeset == -1
-# else /* < 4.7.0 */
-# define VBOX_VIDEO_NOMODESET() 0
-# endif /* < 4.7.0 */
#else /* !CONFIG_VGA_CONSOLE */
# define VBOX_VIDEO_NOMODESET() 0
#endif /* !CONFIG_VGA_CONSOLE */
@@ -372,7 +366,7 @@ static struct drm_driver driver = {
#endif
.fops = &vbox_fops,
-#if RTLNX_VER_MAX(5,15,0) && !RTLNX_RHEL_RANGE(8,7, 8,99) && !RTLNX_RHEL_MAJ_PREREQ(9,1)
+#if RTLNX_VER_MIN(5,15,0)
.irq_handler = vbox_irq_handler,
#endif
.name = DRIVER_NAME,
Index: VirtualBox-7.0.4/src/VBox/Additions/linux/drm/vbox_irq.c
===================================================================
--- VirtualBox-7.0.4.orig/src/VBox/Additions/linux/drm/vbox_irq.c
+++ VirtualBox-7.0.4/src/VBox/Additions/linux/drm/vbox_irq.c
@@ -205,21 +205,11 @@ int vbox_irq_init(struct vbox_private *v
{
INIT_WORK(&vbox->hotplug_work, vbox_hotplug_worker);
vbox_update_mode_hints(vbox);
-#if RTLNX_VER_MIN(5,15,0) || RTLNX_RHEL_RANGE(8,7, 8,99) || RTLNX_RHEL_MAJ_PREREQ(9,1)
return request_irq(VBOX_DRM_TO_PCI_DEV(vbox->dev)->irq, vbox_irq_handler, IRQF_SHARED, vbox->dev->driver->name, vbox->dev);
-#elif RTLNX_VER_MIN(3,16,0) || RTLNX_RHEL_MAJ_PREREQ(7,1)
- return drm_irq_install(vbox->dev, VBOX_DRM_TO_PCI_DEV(vbox->dev)->irq);
-#else
- return drm_irq_install(vbox->dev);
-#endif
}
void vbox_irq_fini(struct vbox_private *vbox)
{
-#if RTLNX_VER_MIN(5,15,0) || RTLNX_RHEL_RANGE(8,7, 8,99) || RTLNX_RHEL_MAJ_PREREQ(9,1)
free_irq(VBOX_DRM_TO_PCI_DEV(vbox->dev)->irq, vbox->dev);
-#else
- drm_irq_uninstall(vbox->dev);
-#endif
flush_work(&vbox->hotplug_work);
}
Index: VirtualBox-7.0.4/src/VBox/Additions/linux/drm/vbox_ttm.c
===================================================================
--- VirtualBox-7.0.4.orig/src/VBox/Additions/linux/drm/vbox_ttm.c
+++ VirtualBox-7.0.4/src/VBox/Additions/linux/drm/vbox_ttm.c
@@ -320,7 +320,7 @@ static struct ttm_tt *vbox_ttm_tt_create
if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
#elif RTLNX_VER_MAX(5,11,0) && !RTLNX_RHEL_RANGE(8,5, 8,99)
if (ttm_tt_init(tt, bo, page_flags)) {
-#elif RTLNX_VER_MAX(5,19,0)
+#elif RTLNX_VER_MAX(5,14,0)
if (ttm_tt_init(tt, bo, page_flags, ttm_write_combined)) {
#else
if (ttm_tt_init(tt, bo, page_flags, ttm_write_combined, 0)) {

View File

@ -11,7 +11,7 @@ Index: VirtualBox-7.0.4/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDia
#endif #endif
/* Language page: */ /* Language page: */
@@ -224,17 +222,7 @@ void UISettingsDialogGlobal::prepare() @@ -224,17 +222,6 @@ void UISettingsDialogGlobal::prepare()
addPageHelpKeyword(iPageIndex, "preferences"); addPageHelpKeyword(iPageIndex, "preferences");
break; break;
} }
@ -22,7 +22,7 @@ Index: VirtualBox-7.0.4/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDia
- pSettingsPage = new UIGlobalSettingsUpdate; - pSettingsPage = new UIGlobalSettingsUpdate;
- addItem(":/refresh_32px.png", ":/refresh_24px.png", ":/refresh_16px.png", - addItem(":/refresh_32px.png", ":/refresh_24px.png", ":/refresh_16px.png",
- iPageIndex, "#update", pSettingsPage); - iPageIndex, "#update", pSettingsPage);
addPageHelpKeyword(iPageIndex, "preferences"); - addPageHelpKeyword(iPageIndex, "preferences");
- break; - break;
- } - }
-#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */ -#endif /* VBOX_GUI_WITH_NETWORK_MANAGER */

View File

@ -2,7 +2,7 @@ Index: VirtualBox-7.0.4/Config.kmk
=================================================================== ===================================================================
--- VirtualBox-7.0.4.orig/Config.kmk --- VirtualBox-7.0.4.orig/Config.kmk
+++ VirtualBox-7.0.4/Config.kmk +++ VirtualBox-7.0.4/Config.kmk
@@ -6622,6 +6622,9 @@ TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.darwi @@ -6674,6 +6674,9 @@ TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.darwi
ifeq ($(KBUILD_TARGET),linux) ifeq ($(KBUILD_TARGET),linux)
# not necessary except USE_LIB_PCAP is defined in SUPR3HardenedMain.cpp # not necessary except USE_LIB_PCAP is defined in SUPR3HardenedMain.cpp
# TEMPLATE_VBOXR3HARDENEDEXE_LIBS += cap # TEMPLATE_VBOXR3HARDENEDEXE_LIBS += cap
@ -12,7 +12,7 @@ Index: VirtualBox-7.0.4/Config.kmk
endif endif
ifeq ($(KBUILD_TARGET),win) # No CRT! ifeq ($(KBUILD_TARGET),win) # No CRT!
TEMPLATE_VBOXR3HARDENEDEXE_SDKS = VBOX_NTDLL $(TEMPLATE_VBOXR3EXE_SDKS) TEMPLATE_VBOXR3HARDENEDEXE_SDKS = VBOX_NTDLL $(TEMPLATE_VBOXR3EXE_SDKS)
@@ -6654,8 +6657,8 @@ ifeq ($(KBUILD_TARGET),win) # No CRT! @@ -6706,8 +6709,8 @@ ifeq ($(KBUILD_TARGET),win) # No CRT!
TEMPLATE_VBOXR3HARDENEDEXE_VBOX_IMPORT_CHECKER.win = noimports TEMPLATE_VBOXR3HARDENEDEXE_VBOX_IMPORT_CHECKER.win = noimports
else ifn1of ($(KBUILD_TARGET), os2) else ifn1of ($(KBUILD_TARGET), os2)
ifneq ($(KBUILD_TYPE),asan) # Keep RPATH in asan builds so we can find libasan.so.X and libubsan.so.Y. ifneq ($(KBUILD_TYPE),asan) # Keep RPATH in asan builds so we can find libasan.so.X and libubsan.so.Y.

View File

@ -1,13 +0,0 @@
Index: VirtualBox-7.0.4/src/libs/libxml2-2.9.14/libxml.spec.in
===================================================================
--- VirtualBox-7.0.4.orig/src/libs/libxml2-2.9.14/libxml.spec.in
+++ VirtualBox-7.0.4/src/libs/libxml2-2.9.14/libxml.spec.in
@@ -103,7 +103,7 @@ sed -i 's|#!/usr/bin/python |#!%{__pytho
%build
%configure
-make %{_smp_mflags}
+make
find doc -type f -exec chmod 0644 \{\} \;

View File

@ -6,4 +6,4 @@
%{kernel_module_directory}/%2-%1/extra/vboxnetflt.ko %{kernel_module_directory}/%2-%1/extra/vboxnetflt.ko
%{kernel_module_directory}/%2-%1/extra/vboxsf.ko %{kernel_module_directory}/%2-%1/extra/vboxsf.ko
%{kernel_module_directory}/%2-%1/extra/vboxguest.ko %{kernel_module_directory}/%2-%1/extra/vboxguest.ko
#%{kernel_module_directory}/%2-%1/extra/vboxvideo.ko %{kernel_module_directory}/%2-%1/extra/vboxvideo.ko

View File

@ -1,12 +0,0 @@
Index: VirtualBox-7.0.4/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_subr.c
===================================================================
--- VirtualBox-7.0.4.orig/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_subr.c
+++ VirtualBox-7.0.4/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_subr.c
@@ -833,6 +833,7 @@ dt_gmatch(const char *s, const char *p)
#else
return (p == NULL || *p == '\0' || RTStrSimplePatternMatch(p, s)); /** @todo implement gmatch. */
#endif
+ return 0;
}
char *

View File

@ -1,4 +1,14 @@
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Dec 23 23:24:21 UTC 2022 - Larry Finger <Larry.Finger@gmail.com>
To eliminate some VM failures while using the kernel version of vboxvideo.ko for Leap 15.4,
the build of this module is turned on again. Fixes boo#1206651 - Leap 15.4 guests running
VirtualBox 7.0.4 crash when run on hosts with certain Intel graphics cards
File "virtualbox-snpritnf-buffer-overflow.patch" deleted.
File "vbox_remove_smp_mflags.patch" deleted.
File "fixes_for_leap15.5.patch" added to fix chanes needed for backports to the Leap 15.5 kernel
-------------------------------------------------------------------
Wed Nov 30 17:22:42 UTC 2022 - Larry Finger <Larry.Finger@gmail.com> Wed Nov 30 17:22:42 UTC 2022 - Larry Finger <Larry.Finger@gmail.com>
Fixes boo#1205868 - VirtualBox 7.0.4 crashes when machine log is requested from GUI Fixes boo#1205868 - VirtualBox 7.0.4 crashes when machine log is requested from GUI

View File

@ -120,8 +120,6 @@ Patch12: smap.diff
Patch13: gcc5-real-support.patch Patch13: gcc5-real-support.patch
# Patch to build with gnu sed correctly # Patch to build with gnu sed correctly
Patch14: virtualbox-sed-params.patch Patch14: virtualbox-sed-params.patch
# Patch to use snprintf correcty and not overflow dst buffer
Patch15: virtualbox-snpritnf-buffer-overflow.patch
# Patch to add code to explain USB Passthru # Patch to add code to explain USB Passthru
Patch16: vbox-usb-warning.diff Patch16: vbox-usb-warning.diff
# Patch to ensure that VirtualBoxVM is SUID # Patch to ensure that VirtualBoxVM is SUID
@ -130,8 +128,6 @@ Patch17: vbox-suid-warning.diff
Patch18: fix_conflict_between_host_and_guest.patch Patch18: fix_conflict_between_host_and_guest.patch
# Fix change in kernel API for ttm_bo_move_memcpy() # Fix change in kernel API for ttm_bo_move_memcpy()
Patch19: modify_for_4_8_bo_move.patch Patch19: modify_for_4_8_bo_move.patch
# Remove all mention of _smp_mflags
Patch20: vbox_remove_smp_mflags.patch
# Disable experimental and incomplete CLOUD_NET # Disable experimental and incomplete CLOUD_NET
Patch21: turn_off_cloud_net.patch Patch21: turn_off_cloud_net.patch
# Fix rpmlint error for script /lib/usr/virtualbox/vboxshell.py # Fix rpmlint error for script /lib/usr/virtualbox/vboxshell.py
@ -141,7 +137,6 @@ Patch23: vbox-python-py310.patch
# fix build of Python and dev package on openSUSE 11.3 (was vbox-detection.diff) # fix build of Python and dev package on openSUSE 11.3 (was vbox-detection.diff)
# use plain python3 interpreter of the distro (part of former switch_to_pyton3.4+.patch), # use plain python3 interpreter of the distro (part of former switch_to_pyton3.4+.patch),
Patch24: vbox-python-selection.patch Patch24: vbox-python-selection.patch
# Use build parameters to control video driver problems
Patch25: remove_vbox_video_build.patch Patch25: remove_vbox_video_build.patch
# Fixes for modified kernel in Leap 42.3 # Fixes for modified kernel in Leap 42.3
Patch26: VirtualBox-5.2.10-xclient.patch Patch26: VirtualBox-5.2.10-xclient.patch
@ -160,6 +155,8 @@ Patch32: handle_gsoap_208103.patch
# Fix for struct file_operations backport in 15.3 # Fix for struct file_operations backport in 15.3
Patch33: fixes_for_leap15.3.patch Patch33: fixes_for_leap15.3.patch
Patch34: fix_kmp_build.patch Patch34: fix_kmp_build.patch
# Fix for backports to 15.5
Patch35: fixes_for_leap15.5.patch
# #
# Common BuildRequires for both virtualbox and virtualbox-kmp # Common BuildRequires for both virtualbox and virtualbox-kmp
BuildRequires: %{kernel_module_package_buildreqs} BuildRequires: %{kernel_module_package_buildreqs}
@ -298,6 +295,25 @@ and others, and limited virtualization of macOS guests on Apple
hardware. VirtualBox is freely available as Open Source Software under hardware. VirtualBox is freely available as Open Source Software under
the terms of the GNU Public License (GPL). the terms of the GNU Public License (GPL).
########################################## ##########################################
@ -318,6 +334,25 @@ Obsoletes: %{name}-ose-qt < %{version}
%description qt %description qt
This package contains the code for the GUI used to control VMs. This package contains the code for the GUI used to control VMs.
######################################### #########################################
@ -334,6 +369,25 @@ Obsoletes: %{name}-vboxwebsrv < %{version}
The VirtualBox web server is used to control headless VMs using a browser. The VirtualBox web server is used to control headless VMs using a browser.
########################################### ###########################################
@ -357,6 +411,25 @@ Requires(pre): net-tools-deprecated
%description guest-tools %description guest-tools
VirtualBox guest addition tools. VirtualBox guest addition tools.
########################################### ###########################################
@ -378,6 +451,25 @@ Obsoletes: python3-%{name}-ose < %{version}
%description -n python3-%{name} %description -n python3-%{name}
Python XPCOM bindings to %{name}. Used e.g. by vboxgtk package. Python XPCOM bindings to %{name}. Used e.g. by vboxgtk package.
########################################### ###########################################
@ -394,6 +486,25 @@ Obsoletes: %{name}-ose-devel < %{version}
%description devel %description devel
Development file for %{name} Development file for %{name}
########################################### ###########################################
@ -427,6 +538,25 @@ Source files for %{name} guest kernel modules
These can be built for custom kernels using These can be built for custom kernels using
sudo %{_sbindir}/vboxguestconfig sudo %{_sbindir}/vboxguestconfig
########################################### ###########################################
@ -441,6 +571,25 @@ BuildArch: noarch
%description guest-desktop-icons %description guest-desktop-icons
This package contains icons for guest desktop files that were created on the desktop. This package contains icons for guest desktop files that were created on the desktop.
########################################### ###########################################
@ -481,12 +630,10 @@ This package contains the kernel-modules that VirtualBox uses to create or run v
%patch12 -p1 %patch12 -p1
%patch13 -p1 %patch13 -p1
%patch14 -p1 %patch14 -p1
%patch15 -p1
%patch16 -p1 %patch16 -p1
%patch17 -p1 %patch17 -p1
%patch18 -p1 %patch18 -p1
%patch19 -p1 %patch19 -p1
%patch20 -p1
%patch21 -p1 %patch21 -p1
%patch22 -p1 %patch22 -p1
%patch23 -p1 %patch23 -p1
@ -508,6 +655,9 @@ This package contains the kernel-modules that VirtualBox uses to create or run v
%patch33 -p1 %patch33 -p1
%endif %endif
%patch34 -p1 %patch34 -p1
%if 0%{?sle_version} == 150500 && 0%{?is_opensuse}
%patch35 -p1
%endif
### Documents for virtualbox main package ### ### Documents for virtualbox main package ###
%if %{main_package} %if %{main_package}
@ -1182,10 +1332,10 @@ COMMON_KMK_FLAGS="
# #
# build kernel modules for guest and host (check novel-kmp package as example) # build kernel modules for guest and host (check novel-kmp package as example)
# host modules : vboxdrv,vboxnetflt,vboxnetadp # host modules : vboxdrv,vboxnetflt,vboxnetadp
# guest modules : vboxguest,vboxsf # guest modules : vboxguest,vboxsf,vboxvideo
echo "build kernel modules" echo "build kernel modules"
for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp} \ for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp} \
out/linux.*/release/bin/additions/src/vbox{guest,sf}; do out/linux.*/release/bin/additions/src/vbox{guest,sf,video}; do
#get the module name from path #get the module name from path
module_name=$(basename "$vbox_module") module_name=$(basename "$vbox_module")
@ -1211,7 +1361,7 @@ for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp} \
$PWD/modules_build_dir/$flavor/$module_name $PWD/modules_build_dir/$flavor/$module_name
SYMBOLS="$PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers" SYMBOLS="$PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers"
fi fi
# copy vboxguest (for guest) module symbols which are used by vboxsf km: # copy vboxguest (for guest) module symbols which are used by vboxsf and vboxvideo km's:
if [ "$module_name" = "vboxsf" -o \ if [ "$module_name" = "vboxsf" -o \
"$module_name" = "vboxvideo" ] ; then "$module_name" = "vboxvideo" ] ; then
cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \ cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \
@ -1228,9 +1378,9 @@ done
export INSTALL_MOD_PATH=%{buildroot} export INSTALL_MOD_PATH=%{buildroot}
export INSTALL_MOD_DIR=extra export INSTALL_MOD_DIR=extra
#to install modules we use here similar steps like in build phase, go through all the modules : #to install modules we use here similar steps like in build phase, go through all the modules :
for module_name in vbox{drv,netflt,netadp,guest,sf} for module_name in vbox{drv,netflt,netadp,guest,sf,video}
do do
#and through the all flavors #and through all flavors
for flavor in %{flavors_to_build}; do for flavor in %{flavors_to_build}; do
make -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor modules_install M=$PWD/modules_build_dir/$flavor/$module_name make -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor modules_install M=$PWD/modules_build_dir/$flavor/$module_name
done done