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
/* Language page: */
@@ -224,17 +222,7 @@ void UISettingsDialogGlobal::prepare()
@@ -224,17 +222,6 @@ void UISettingsDialogGlobal::prepare()
addPageHelpKeyword(iPageIndex, "preferences");
break;
}
@ -22,7 +22,7 @@ Index: VirtualBox-7.0.4/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDia
- pSettingsPage = new UIGlobalSettingsUpdate;
- addItem(":/refresh_32px.png", ":/refresh_24px.png", ":/refresh_16px.png",
- iPageIndex, "#update", pSettingsPage);
addPageHelpKeyword(iPageIndex, "preferences");
- addPageHelpKeyword(iPageIndex, "preferences");
- break;
- }
-#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/Config.kmk
@@ -6622,6 +6622,9 @@ TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.darwi
@@ -6674,6 +6674,9 @@ TEMPLATE_VBOXR3HARDENEDEXE_LDFLAGS.darwi
ifeq ($(KBUILD_TARGET),linux)
# not necessary except USE_LIB_PCAP is defined in SUPR3HardenedMain.cpp
# TEMPLATE_VBOXR3HARDENEDEXE_LIBS += cap
@ -12,7 +12,7 @@ Index: VirtualBox-7.0.4/Config.kmk
endif
ifeq ($(KBUILD_TARGET),win) # No CRT!
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
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.

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/vboxsf.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>
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
# Patch to build with gnu sed correctly
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
Patch16: vbox-usb-warning.diff
# Patch to ensure that VirtualBoxVM is SUID
@ -130,8 +128,6 @@ Patch17: vbox-suid-warning.diff
Patch18: fix_conflict_between_host_and_guest.patch
# Fix change in kernel API for ttm_bo_move_memcpy()
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
Patch21: turn_off_cloud_net.patch
# 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)
# use plain python3 interpreter of the distro (part of former switch_to_pyton3.4+.patch),
Patch24: vbox-python-selection.patch
# Use build parameters to control video driver problems
Patch25: remove_vbox_video_build.patch
# Fixes for modified kernel in Leap 42.3
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
Patch33: fixes_for_leap15.3.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
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
the terms of the GNU Public License (GPL).
##########################################
@ -318,6 +334,25 @@ Obsoletes: %{name}-ose-qt < %{version}
%description qt
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.
###########################################
@ -357,6 +411,25 @@ Requires(pre): net-tools-deprecated
%description guest-tools
VirtualBox guest addition tools.
###########################################
@ -378,6 +451,25 @@ Obsoletes: python3-%{name}-ose < %{version}
%description -n python3-%{name}
Python XPCOM bindings to %{name}. Used e.g. by vboxgtk package.
###########################################
@ -394,6 +486,25 @@ Obsoletes: %{name}-ose-devel < %{version}
%description devel
Development file for %{name}
###########################################
@ -427,6 +538,25 @@ Source files for %{name} guest kernel modules
These can be built for custom kernels using
sudo %{_sbindir}/vboxguestconfig
###########################################
@ -441,6 +571,25 @@ BuildArch: noarch
%description guest-desktop-icons
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
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
@ -508,6 +655,9 @@ This package contains the kernel-modules that VirtualBox uses to create or run v
%patch33 -p1
%endif
%patch34 -p1
%if 0%{?sle_version} == 150500 && 0%{?is_opensuse}
%patch35 -p1
%endif
### Documents for virtualbox 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)
# host modules : vboxdrv,vboxnetflt,vboxnetadp
# guest modules : vboxguest,vboxsf
# guest modules : vboxguest,vboxsf,vboxvideo
echo "build kernel modules"
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
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
SYMBOLS="$PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers"
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 \
"$module_name" = "vboxvideo" ] ; then
cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \
@ -1228,9 +1378,9 @@ done
export INSTALL_MOD_PATH=%{buildroot}
export INSTALL_MOD_DIR=extra
#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
#and through the all flavors
#and through all flavors
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
done