From 30d85fc4e9901923b3e12f0406f1b19570470339 Mon Sep 17 00:00:00 2001 From: Jan Palus Date: Thu, 21 Jan 2021 20:11:08 +0100 Subject: [PATCH] up to 6.1.18 --- VirtualBox.spec | 10 ++- kernel-5.10.patch | 158 ---------------------------------------------- 2 files changed, 4 insertions(+), 164 deletions(-) delete mode 100644 kernel-5.10.patch diff --git a/VirtualBox.spec b/VirtualBox.spec index 93e73f5..3e78c6c 100644 --- a/VirtualBox.spec +++ b/VirtualBox.spec @@ -47,19 +47,19 @@ exit 1 %define qtver 5.6.0 -%define rel 3 +%define rel 1 %define pname VirtualBox Summary: VirtualBox - x86 hardware virtualizer Summary(pl.UTF-8): VirtualBox - wirtualizator sprzętu x86 Name: %{pname}%{?_pld_builder:%{?with_kernel:-kernel}}%{_alt_kernel} -Version: 6.1.16 +Version: 6.1.18 Release: %{rel}%{?_pld_builder:%{?with_kernel:@%{_kernel_ver_str}}} License: GPL v2 Group: Applications/Emulators Source0: http://download.virtualbox.org/virtualbox/%{version}/%{pname}-%{version}.tar.bz2 -# Source0-md5: a12a647f6c114f2cb1571089b36841fe +# Source0-md5: c61001386eb3822ab8f06d688a82e84b Source1: http://download.virtualbox.org/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso -# Source1-md5: 5710cdc38e4d7185b3df1c969b4cb267 +# Source1-md5: dc3c3f818d27a78f1accfcda05e13f85 Source2: vboxservice.init Source3: vboxservice.service Source4: vboxservice.sysconfig @@ -87,7 +87,6 @@ Patch14: %{pname}-multipython.patch Patch15: %{pname}-lightdm-1.19.2.patch Patch16: %{pname}-no-vboxvideo.patch Patch17: qt5-gl.patch -Patch18: kernel-5.10.patch URL: http://www.virtualbox.org/ %if %{with userspace} %ifarch %{x8664} @@ -554,7 +553,6 @@ echo override vboxsf %{_kernel_ver} misc >> kernel/installed/etc/depmod.d/%{_ker %patch15 -p0 %patch16 -p0 %patch17 -p1 -%patch18 -p1 %{__sed} -i -e 's,@VBOX_DOC_PATH@,%{_docdir}/%{name}-%{version},' \ -e 's/Categories=.*/Categories=Utility;Emulator;/' src/VBox/Installer/common/virtualbox.desktop.in diff --git a/kernel-5.10.patch b/kernel-5.10.patch deleted file mode 100644 index 729235d..0000000 --- a/kernel-5.10.patch +++ /dev/null @@ -1,158 +0,0 @@ -Index: b/src/VBox/Additions/linux/sharedfolders/regops.c -=================================================================== ---- a/src/VBox/Additions/linux/sharedfolders/regops.c -+++ b/src/VBox/Additions/linux/sharedfolders/regops.c -@@ -1401,7 +1401,10 @@ static int vbsf_lock_user_pages_failed_c - /* - * Check that this is valid user memory that is actually in the kernel range. - */ --#if RTLNX_VER_MIN(5,0,0) || RTLNX_RHEL_MIN(8,1) -+#if RTLNX_VER_MIN(5,10,0) -+ if ( access_ok((void *)uPtrFrom, cPages << PAGE_SHIFT) -+ && uPtrFrom >= TASK_SIZE_MAX) -+#elif RTLNX_VER_MIN(5,0,0) || RTLNX_RHEL_MIN(8,1) - if ( access_ok((void *)uPtrFrom, cPages << PAGE_SHIFT) - && uPtrFrom >= USER_DS.seg) - #else -Index: b/src/VBox/Additions/linux/drm/vbox_drv.h -=================================================================== ---- a/src/VBox/Additions/linux/drm/vbox_drv.h -+++ b/src/VBox/Additions/linux/drm/vbox_drv.h -@@ -205,6 +205,13 @@ static inline void drm_gem_object_put(st - } - #endif - -+#ifndef TTM_PL_FLAG_SYSTEM -+#define TTM_PL_FLAG_SYSTEM (1 << TTM_PL_SYSTEM) -+#endif -+#ifndef TTM_PL_FLAG_VRAM -+#define TTM_PL_FLAG_VRAM (1 << TTM_PL_VRAM) -+#endif -+ - #define DRIVER_AUTHOR VBOX_VENDOR - - #define DRIVER_NAME "vboxvideo" -Index: b/src/VBox/Additions/linux/drm/vbox_ttm.c -=================================================================== ---- a/src/VBox/Additions/linux/drm/vbox_ttm.c -+++ b/src/VBox/Additions/linux/drm/vbox_ttm.c -@@ -373,11 +373,23 @@ void vbox_ttm_placement(struct vbox_bo * - bo->placement.busy_placement = bo->placements; - - if (domain & TTM_PL_FLAG_VRAM) -+#if RTLNX_VER_MIN(5,10,0) -+ bo->placements[c].mem_type = TTM_PL_VRAM; -+ PLACEMENT_FLAGS(bo->placements[c++]) = -+ TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED; -+#else - PLACEMENT_FLAGS(bo->placements[c++]) = - TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_VRAM; -+#endif - if (domain & TTM_PL_FLAG_SYSTEM) -+#if RTLNX_VER_MIN(5,10,0) -+ bo->placements[c].mem_type = TTM_PL_SYSTEM; -+ PLACEMENT_FLAGS(bo->placements[c++]) = -+ TTM_PL_MASK_CACHING; -+#else - PLACEMENT_FLAGS(bo->placements[c++]) = - TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; -+#endif - if (!c) - PLACEMENT_FLAGS(bo->placements[c++]) = - TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM; -Index: src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c -=================================================================== ---- a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c (Revision 141658) -+++ b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c (Arbeitskopie) -@@ -56,9 +56,12 @@ - * Whether we use alloc_vm_area (3.2+) for executable memory. - * This is a must for 5.8+, but we enable it all the way back to 3.2.x for - * better W^R compliance (fExecutable flag). */ --#if RTLNX_VER_MIN(3,2,0) || defined(DOXYGEN_RUNNING) -+#if RTLNX_VER_RANGE(3,2,0, 5,10,0) || defined(DOXYGEN_RUNNING) - # define IPRT_USE_ALLOC_VM_AREA_FOR_EXEC - #endif -+#if RTLNX_VER_MIN(5,10,0) || defined(DOXYGEN_RUNNING) -+# define IPRT_USE_APPLY_TO_PAGE_RANGE_FOR_EXEC -+#endif - - /* - * 2.6.29+ kernels don't work with remap_pfn_range() anymore because -@@ -502,7 +505,43 @@ - } - - -+#ifdef IPRT_USE_APPLY_TO_PAGE_RANGE_FOR_EXEC - /** -+ * User data passed to the apply_to_page_range() callback. -+ */ -+typedef struct LNXAPPLYPGRANGE -+{ -+ /** Pointer to the memory object. */ -+ PRTR0MEMOBJLNX pMemLnx; -+ /** The page protection flags to apply. */ -+ pgprot_t fPg; -+} LNXAPPLYPGRANGE; -+/** Pointer to the user data. */ -+typedef LNXAPPLYPGRANGE *PLNXAPPLYPGRANGE; -+/** Pointer to the const user data. */ -+typedef const LNXAPPLYPGRANGE *PCLNXAPPLYPGRANGE; -+ -+/** -+ * Callback called in apply_to_page_range(). -+ * -+ * @returns Linux status code. -+ * @param pPte Pointer to the page table entry for the given address. -+ * @param uAddr The address to apply the new protection to. -+ * @param pvUser The opaque user data. -+ */ -+static int rtR0MemObjLinuxApplyPageRange(pte_t *pPte, unsigned long uAddr, void *pvUser) -+{ -+ PCLNXAPPLYPGRANGE pArgs = (PCLNXAPPLYPGRANGE)pvUser; -+ PRTR0MEMOBJLNX pMemLnx = pArgs->pMemLnx; -+ uint32_t idxPg = (uAddr - (unsigned long)pMemLnx->Core.pv) >> PAGE_SHIFT; -+ -+ set_pte(pPte, mk_pte(pMemLnx->apPages[idxPg], pArgs->fPg)); -+ return 0; -+} -+#endif -+ -+ -+/** - * Maps the allocation into ring-0. - * - * This will update the RTR0MEMOBJLNX::Core.pv and RTR0MEMOBJ::fMappedToRing0 members. -@@ -584,6 +623,11 @@ - else - # endif - { -+# if defined(IPRT_USE_APPLY_TO_PAGE_RANGE_FOR_EXEC) -+ if (fExecutable) -+ pgprot_val(fPg) |= _PAGE_NX; /* Uses RTR0MemObjProtect to clear NX when memory ready, W^X fashion. */ -+# endif -+ - # ifdef VM_MAP - pMemLnx->Core.pv = vmap(&pMemLnx->apPages[0], pMemLnx->cPages, VM_MAP, fPg); - # else -@@ -1851,6 +1895,21 @@ - preempt_enable(); - return VINF_SUCCESS; - } -+# elif defined(IPRT_USE_APPLY_TO_PAGE_RANGE_FOR_EXEC) -+ PRTR0MEMOBJLNX pMemLnx = (PRTR0MEMOBJLNX)pMem; -+ if ( pMemLnx->fExecutable -+ && pMemLnx->fMappedToRing0) -+ { -+ LNXAPPLYPGRANGE Args; -+ Args.pMemLnx = pMemLnx; -+ Args.fPg = rtR0MemObjLinuxConvertProt(fProt, true /*fKernel*/); -+ int rcLnx = apply_to_page_range(current->active_mm, (unsigned long)pMemLnx->Core.pv + offSub, cbSub, -+ rtR0MemObjLinuxApplyPageRange, (void *)&Args); -+ if (rcLnx) -+ return VERR_NOT_SUPPORTED; -+ -+ return VINF_SUCCESS; -+ } - # endif - - NOREF(pMem); -- 2.43.0