Advertisement
Guest User

Untitled

a guest
Sep 5th, 2017
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.71 KB | None | 0 0
  1. --- a/kernel/nv-linux.h 2017-09-05 17:36:41.841513078 +0200
  2. +++ b/kernel/nv-linux.h 2017-09-05 17:37:00.485514679 +0200
  3. @@ -291,7 +291,7 @@ RM_STATUS nvos_forward_error_to_cray(str
  4. extern int nv_pat_mode;
  5.  
  6. #if !defined(NV_VMWARE) && defined(CONFIG_HOTPLUG_CPU)
  7. -#define NV_ENABLE_HOTPLUG_CPU
  8. +//#define NV_ENABLE_HOTPLUG_CPU
  9. #include <linux/cpu.h> /* CPU hotplug support */
  10. #include <linux/notifier.h> /* struct notifier_block, etc */
  11. #endif
  12. --- a/kernel/nv-linux.h 2017-08-30 14:54:42.136888697 +0300
  13. +++ b/kernel/nv-linux.h 2017-08-30 15:29:22.294495893 +0300
  14. @@ -1351,6 +1351,7 @@
  15.  
  16. #define NV_PAGE_MASK (NvU64)(long)PAGE_MASK
  17.  
  18. +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
  19. #define NV_PGD_OFFSET(address, kernel, mm) \
  20. ({ \
  21. struct mm_struct *__mm = (mm); \
  22. @@ -1361,6 +1362,18 @@
  23. __pgd = pgd_offset_k(address); \
  24. __pgd; \
  25. })
  26. +#else
  27. +#define NV_PGD_OFFSET(address, kernel, mm) \
  28. + ({ \
  29. + struct mm_struct *__mm = (mm); \
  30. + pgd_t *__pgd; \
  31. + if (!kernel) \
  32. + __pgd = pgd_offset(__mm, address); \
  33. + else \
  34. + __pgd = NULL; \
  35. + __pgd; \
  36. + })
  37. +#endif
  38.  
  39. #define NV_PGD_PRESENT(pgd) \
  40. ({ \
  41. @@ -1378,7 +1391,23 @@
  42. })
  43. #define NV_PMD_UNMAP(pmd) pmd_unmap(pmd);
  44. #else
  45. -#if defined(PUD_SHIFT) /* 4-level pgtable */
  46. +#if defined(P4D_SHIFT) /* 5-level pgtable */
  47. +#define NV_PMD_OFFSET(address, pgd) \
  48. + ({ \
  49. + pmd_t *__pmd; \
  50. + p4d_t *__p4d; \
  51. + pud_t *__pud; \
  52. + __p4d = p4d_offset(pgd, address); \
  53. + if (__p4d == NULL || \
  54. + (p4d_bad(*__p4d) || p4d_none(*__p4d))) \
  55. + return NULL; \
  56. + __pud = pud_offset(__p4d, address); \
  57. + if (__pud == NULL || \
  58. + (pud_bad(*__pud) || pud_none(*__pud))) \
  59. + return NULL; \
  60. + __pmd = pmd_offset(__pud, address); \
  61. + })
  62. +#elif defined(PUD_SHIFT) /* 4-level pgtable */
  63. #define NV_PMD_OFFSET(address, pgd) \
  64. ({ \
  65. pmd_t *__pmd = NULL; \
  66. diff -ur a/kernel/nv-vtophys.c b/kernel/nv-vtophys.c
  67. --- a/kernel/nv-vtophys.c 2017-01-18 01:26:31.000000000 +0200
  68. +++ b/kernel/nv-vtophys.c 2017-08-30 15:02:33.064755838 +0300
  69. @@ -81,10 +81,20 @@
  70. #endif
  71.  
  72. /* direct-mapped kernel address */
  73. +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
  74. if ((address > PAGE_OFFSET) && (address < VMALLOC_START))
  75. +#else
  76. + if (virt_addr_valid(address))
  77. +#endif
  78. return __pa(address);
  79.  
  80. +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
  81. return nv_get_phys_address(address, TRUE);
  82. +#else
  83. + nv_printf(NV_DBG_ERRORS,
  84. + "NVRM: can't translate address in %s()!\n", __FUNCTION__);
  85. + return 0;
  86. +#endif
  87. }
  88.  
  89. NvU64 NV_API_CALL nv_get_user_address(NvU64 address)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement