diff --git a/kernel/common/inc/nv-linux.h b/kernel/common/inc/nv-linux.h index ac5bb95..3d2f0b7 100644 --- a/kernel/common/inc/nv-linux.h +++ b/kernel/common/inc/nv-linux.h @@ -531,7 +531,11 @@ extern int nv_pat_mode; static inline void *nv_vmalloc(unsigned long size) { +#if defined(NV_VMALLOC_HAS_PGPROT_T_ARG) void *ptr = __vmalloc(size, GFP_KERNEL, PAGE_KERNEL); +#else + void *ptr = __vmalloc(size, GFP_KERNEL); +#endif if (ptr) NV_MEMDBG_ADD(ptr, size); return ptr; diff --git a/kernel/common/inc/nv-mm.h b/kernel/common/inc/nv-mm.h index 1270bf3..d2d7657 100644 --- a/kernel/common/inc/nv-mm.h +++ b/kernel/common/inc/nv-mm.h @@ -29,6 +29,10 @@ typedef int vm_fault_t; #endif +#if defined(NV_MM_HAS_MMAP_LOCK) +#define mmap_sem mmap_lock +#endif + /* get_user_pages * * The 8-argument version of get_user_pages was deprecated by commit diff --git a/kernel/conftest.sh b/kernel/conftest.sh index 7da7505..7793dd6 100755 --- a/kernel/conftest.sh +++ b/kernel/conftest.sh @@ -4067,6 +4067,44 @@ compile_test() { compile_check_conftest "$CODE" "NV_KTIME_GET_REAL_TS64_PRESENT" "" "functions" ;; + vmalloc_has_pgprot_t_arg) + # + # Determine if __vmalloc has the 'pgprot' argument. + # + # The third argument to __vmalloc, page protection + # 'pgprot_t prot', was removed by commit 88dca4ca5a93 + # (mm: remove the pgprot argument to __vmalloc) + # in v5.8-rc1 (2020-06-01). + CODE=" + #include + + void conftest_vmalloc_has_pgprot_t_arg(void) { + pgprot_t prot; + (void)__vmalloc(0, 0, prot); + }" + + compile_check_conftest "$CODE" "NV_VMALLOC_HAS_PGPROT_T_ARG" "" "types" + + ;; + + mm_has_mmap_lock) + # + # Determine if the 'mm_struct' structure has a 'mmap_lock' field. + # + # Kernel commit da1c55f1b272 ("mmap locking API: rename mmap_sem + # to mmap_lock") replaced the field 'mmap_sem' by 'mmap_lock' + # in v5.8-rc1 (2020-06-08). + CODE=" + #include + + int conftest_mm_has_mmap_lock(void) { + return offsetof(struct mm_struct, mmap_lock); + }" + + compile_check_conftest "$CODE" "NV_MM_HAS_MMAP_LOCK" "" "types" + + ;; + pci_dev_has_skip_bus_pm) # # Determine if skip_bus_pm flag is present in struct pci_dev. diff --git a/kernel/nvidia/nvidia.Kbuild b/kernel/nvidia/nvidia.Kbuild index 63e369f..656db7b 100644 --- a/kernel/nvidia/nvidia.Kbuild +++ b/kernel/nvidia/nvidia.Kbuild @@ -192,7 +192,9 @@ NV_CONFTEST_TYPE_COMPILE_TESTS += iterate_dir NV_CONFTEST_TYPE_COMPILE_TESTS += kstrtoull NV_CONFTEST_TYPE_COMPILE_TESTS += backlight_properties_type NV_CONFTEST_TYPE_COMPILE_TESTS += proc_ops +NV_CONFTEST_TYPE_COMPILE_TESTS += vmalloc_has_pgprot_t_arg NV_CONFTEST_TYPE_COMPILE_TESTS += timeval +NV_CONFTEST_TYPE_COMPILE_TESTS += mm_has_mmap_lock NV_CONFTEST_TYPE_COMPILE_TESTS += kmem_cache_has_kobj_remove_work NV_CONFTEST_TYPE_COMPILE_TESTS += sysfs_slab_unlink NV_CONFTEST_TYPE_COMPILE_TESTS += pci_dev_has_skip_bus_pm -- 2.25.1