[arch-commits] Commit in virtualbox/trunk (010-linux-4.12.patch PKGBUILD)

Christian Hesse eworm at archlinux.org
Thu Jul 13 21:45:48 UTC 2017


    Date: Thursday, July 13, 2017 @ 21:45:47
  Author: eworm
Revision: 245028

upgpkg: virtualbox 5.1.22-5

Updated patch for linux 4.12, thanks again to Ike Devolder!

Modified:
  virtualbox/trunk/010-linux-4.12.patch
  virtualbox/trunk/PKGBUILD

----------------------+
 010-linux-4.12.patch |  146 ++++++++++++++++++++++++++++---------------------
 PKGBUILD             |    4 -
 2 files changed, 86 insertions(+), 64 deletions(-)

Modified: 010-linux-4.12.patch
===================================================================
--- 010-linux-4.12.patch	2017-07-13 21:10:59 UTC (rev 245027)
+++ 010-linux-4.12.patch	2017-07-13 21:45:47 UTC (rev 245028)
@@ -1,86 +1,108 @@
-From 73a6d28417871bd5b7535e88a50a3ce60fa1ecfc Mon Sep 17 00:00:00 2001
-From: Christian Hesse <mail at eworm.de>
-Date: Wed, 5 Jul 2017 14:15:18 +0200
-Subject: [PATCH 1/1] linux 4.12
----
- src/VBox/Additions/linux/drm/vbox_ttm.c           |  6 ++++++
- src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c | 19 +++++++++++++++++++
- src/VBox/Runtime/r0drv/linux/the-linux-kernel.h   |  5 +++++
- 3 files changed, 30 insertions(+)
-
-diff --git a/src/VBox/Additions/linux/drm/vbox_ttm.c b/src/VBox/Additions/linux/drm/vbox_ttm.c
-index 57dd087..83f8122 100644
---- a/src/VBox/Additions/linux/drm/vbox_ttm.c
-+++ b/src/VBox/Additions/linux/drm/vbox_ttm.c
-@@ -275,11 +275,17 @@ struct ttm_bo_driver vbox_bo_driver = {
-     .ttm_tt_populate = vbox_ttm_tt_populate,
-     .ttm_tt_unpopulate = vbox_ttm_tt_unpopulate,
-     .init_mem_type = vbox_bo_init_mem_type,
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)
-+    .eviction_valuable = ttm_bo_eviction_valuable,
-+#endif
-     .evict_flags = vbox_bo_evict_flags,
-     .move = vbox_bo_move,
-     .verify_access = vbox_bo_verify_access,
-     .io_mem_reserve = &vbox_ttm_io_mem_reserve,
-     .io_mem_free = &vbox_ttm_io_mem_free,
+diff --git a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+index 0beb736..20cae7c 100644
+--- a/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
++++ b/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+@@ -1397,7 +1397,7 @@ RTDECL(int) SUPR0Printf(const char *pszFormat, ...)
+ SUPR0DECL(uint32_t) SUPR0GetKernelFeatures(void)
+ {
+     uint32_t fFlags = 0;
+-#ifdef CONFIG_PAX_KERNEXEC
++#if defined(CONFIG_PAX_KERNEXEC) || LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+     fFlags |= SUPKERNELFEATURES_GDT_READ_ONLY;
+ #endif
+ #if defined(VBOX_STRICT) || defined(VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV)
+diff --git a/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c b/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
+index e011867..4576a74 100644
+--- a/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
++++ b/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
+@@ -35,6 +35,9 @@
+ #include <iprt/assert.h>
+ #include <iprt/err.h>
+ #include "r0drv/alloc-r0drv.h"
 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
-+    .io_mem_pfn = ttm_bo_default_io_mem_pfn,
++#include <asm/set_memory.h>
 +#endif
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0)
-     .lru_tail = &ttm_bo_default_lru_tail,
-     .swap_lru_tail = &ttm_bo_default_swap_lru_tail,
+ 
+ 
+ #if (defined(RT_ARCH_AMD64) || defined(DOXYGEN_RUNNING)) && !defined(RTMEMALLOC_EXEC_HEAP)
 diff --git a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
-index 4bc2a9b..0f74ada 100644
+index 4bc2a9b..2b5af61 100644
 --- a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
 +++ b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
-@@ -902,6 +902,9 @@ static struct page *rtR0MemObjLinuxVirtToPage(void *pv)
+@@ -899,6 +899,9 @@ static struct page *rtR0MemObjLinuxVirtToPage(void *pv)
+     unsigned long   pfn;
+     struct page    *pPage;
+     pte_t          *pEntry;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
++    p4d_t	    p4d;
++#endif
      union
      {
          pgd_t       Global;
+@@ -917,9 +920,18 @@ static struct page *rtR0MemObjLinuxVirtToPage(void *pv)
+     u.Global = *pgd_offset(current->active_mm, ulAddr);
+     if (RT_UNLIKELY(pgd_none(u.Global)))
+         return NULL;
 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
-+        p4d_t       Four;
++    p4d = *p4d_offset(&u.Global, ulAddr);
++    if (RT_UNLIKELY(p4d_none(p4d) || p4d_large(p4d) || !p4d_present(p4d)))
++        return NULL;
 +#endif
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11)
-         pud_t       Upper;
- #endif
-@@ -919,7 +922,23 @@ static struct page *rtR0MemObjLinuxVirtToPage(void *pv)
-         return NULL;
  
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11)
-+# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
-+    u.Four  = *p4d_offset(&u.Global, ulAddr);
-+    if (RT_UNLIKELY(p4d_none(u.Four)))
-+        return NULL;
-+    if (p4d_large(u.Four))
-+    {
-+        pPage = p4d_page(u.Four);
-+        AssertReturn(pPage, NULL);
-+        pfn   = page_to_pfn(pPage);      /* doing the safe way... */
-+        AssertCompile(P4D_SHIFT - PAGE_SHIFT < 31);
-+        pfn  += (ulAddr >> PAGE_SHIFT) & ((UINT32_C(1) << (P4D_SHIFT - PAGE_SHIFT)) - 1);
-+        return pfn_to_page(pfn);
-+    }
-+    u.Upper = *pud_offset(&u.Four, ulAddr);
-+# else /* < 4.12 */
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
++    u.Upper = *pud_offset(&p4d, ulAddr);
++#else
      u.Upper = *pud_offset(&u.Global, ulAddr);
-+# endif /* < 4.12 */
++#endif
      if (RT_UNLIKELY(pud_none(u.Upper)))
          return NULL;
  # if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)
+@@ -1463,13 +1475,23 @@ static int rtR0MemObjLinuxFixPte(struct mm_struct *mm, unsigned long ulAddr, RTH
+ {
+     int rc = -ENOMEM;
+     pgd_t *pgd;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
++    p4d_t *p4d;
++#endif
+ 
+     spin_lock(&mm->page_table_lock);
+ 
+     pgd = pgd_offset(mm, ulAddr);
+     if (!pgd_none(*pgd) && !pgd_bad(*pgd))
+     {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
++	p4d = p4d_offset(*pgd, ulAddr);
++	if (p4d_none(*p4d))
++	    goto exit;
++	pmd_t *pmd = pmd_offset(p4d, ulAddr);
++#else
+         pmd_t *pmd = pmd_offset(pgd, ulAddr);
++#endif
+         if (!pmd_none(*pmd))
+         {
+             pte_t *ptep = pte_offset_map(pmd, ulAddr);
+@@ -1487,6 +1509,9 @@ static int rtR0MemObjLinuxFixPte(struct mm_struct *mm, unsigned long ulAddr, RTH
+         }
+     }
+ 
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
++exit:
++#endif
+     spin_unlock(&mm->page_table_lock);
+     return rc;
+ }
 diff --git a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
-index 5a7ccb2..3a17bd1 100644
+index 5a7ccb2..a07a22a 100644
 --- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
 +++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
-@@ -159,6 +159,11 @@
- # include <asm/tlbflush.h>
+@@ -320,6 +320,9 @@ DECLINLINE(unsigned long) msecs_to_jiffies(unsigned int cMillies)
  #endif
  
-+/* for set_pages_x() */
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)
 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
-+# include <asm/set_memory.h>
++#include <asm/cacheflush.h>
 +#endif
-+
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0)
- # include <asm/smap.h>
+ # define MY_SET_PAGES_EXEC(pPages, cPages)    set_pages_x(pPages, cPages)
+ # define MY_SET_PAGES_NOEXEC(pPages, cPages)  set_pages_nx(pPages, cPages)
  #else

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2017-07-13 21:10:59 UTC (rev 245027)
+++ PKGBUILD	2017-07-13 21:45:47 UTC (rev 245028)
@@ -11,7 +11,7 @@
          'virtualbox-guest-utils-nox'
          'virtualbox-ext-vnc')
 pkgver=5.1.22
-pkgrel=4
+pkgrel=5
 arch=('i686' 'x86_64')
 url='http://virtualbox.org'
 license=('GPL' 'custom')
@@ -92,7 +92,7 @@
             '6bdb017459532537199c399eefd3d84d8dc7f1786e79997caebd3b6eb5c75d9f'
             '8b7f241107863f82a5b0ae336aead0b3366a40103ff72dbebf33f54b512a0cbc'
             '0f5cb04362be022bba71295867aac9eaddf9ece0d3ce82c083d70829564ec8d2'
-            'e606144f6629070b6aefddf93c44173cd87bc2fa0a7c3512e6296a805705b90b'
+            'a2f7e23f9956ac28783061d75b4854492c6a015acc42328cee951e9165f9a505'
             )
 
 prepare() {



More information about the arch-commits mailing list