Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- a/kernel/nv-linux.h 2017-09-05 17:36:41.841513078 +0200
- +++ b/kernel/nv-linux.h 2017-09-05 17:37:00.485514679 +0200
- @@ -291,7 +291,7 @@ RM_STATUS nvos_forward_error_to_cray(str
- extern int nv_pat_mode;
- #if !defined(NV_VMWARE) && defined(CONFIG_HOTPLUG_CPU)
- -#define NV_ENABLE_HOTPLUG_CPU
- +//#define NV_ENABLE_HOTPLUG_CPU
- #include <linux/cpu.h> /* CPU hotplug support */
- #include <linux/notifier.h> /* struct notifier_block, etc */
- #endif
- --- a/kernel/nv-linux.h 2017-08-30 14:54:42.136888697 +0300
- +++ b/kernel/nv-linux.h 2017-08-30 15:29:22.294495893 +0300
- @@ -1351,6 +1351,7 @@
- #define NV_PAGE_MASK (NvU64)(long)PAGE_MASK
- +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
- #define NV_PGD_OFFSET(address, kernel, mm) \
- ({ \
- struct mm_struct *__mm = (mm); \
- @@ -1361,6 +1362,18 @@
- __pgd = pgd_offset_k(address); \
- __pgd; \
- })
- +#else
- +#define NV_PGD_OFFSET(address, kernel, mm) \
- + ({ \
- + struct mm_struct *__mm = (mm); \
- + pgd_t *__pgd; \
- + if (!kernel) \
- + __pgd = pgd_offset(__mm, address); \
- + else \
- + __pgd = NULL; \
- + __pgd; \
- + })
- +#endif
- #define NV_PGD_PRESENT(pgd) \
- ({ \
- @@ -1378,7 +1391,23 @@
- })
- #define NV_PMD_UNMAP(pmd) pmd_unmap(pmd);
- #else
- -#if defined(PUD_SHIFT) /* 4-level pgtable */
- +#if defined(P4D_SHIFT) /* 5-level pgtable */
- +#define NV_PMD_OFFSET(address, pgd) \
- + ({ \
- + pmd_t *__pmd; \
- + p4d_t *__p4d; \
- + pud_t *__pud; \
- + __p4d = p4d_offset(pgd, address); \
- + if (__p4d == NULL || \
- + (p4d_bad(*__p4d) || p4d_none(*__p4d))) \
- + return NULL; \
- + __pud = pud_offset(__p4d, address); \
- + if (__pud == NULL || \
- + (pud_bad(*__pud) || pud_none(*__pud))) \
- + return NULL; \
- + __pmd = pmd_offset(__pud, address); \
- + })
- +#elif defined(PUD_SHIFT) /* 4-level pgtable */
- #define NV_PMD_OFFSET(address, pgd) \
- ({ \
- pmd_t *__pmd = NULL; \
- diff -ur a/kernel/nv-vtophys.c b/kernel/nv-vtophys.c
- --- a/kernel/nv-vtophys.c 2017-01-18 01:26:31.000000000 +0200
- +++ b/kernel/nv-vtophys.c 2017-08-30 15:02:33.064755838 +0300
- @@ -81,10 +81,20 @@
- #endif
- /* direct-mapped kernel address */
- +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
- if ((address > PAGE_OFFSET) && (address < VMALLOC_START))
- +#else
- + if (virt_addr_valid(address))
- +#endif
- return __pa(address);
- +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
- return nv_get_phys_address(address, TRUE);
- +#else
- + nv_printf(NV_DBG_ERRORS,
- + "NVRM: can't translate address in %s()!\n", __FUNCTION__);
- + return 0;
- +#endif
- }
- NvU64 NV_API_CALL nv_get_user_address(NvU64 address)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement