gpu: nvgpu: API updates for newer kernel

access_ok, totalram_pages and zap_vma_ptes are updated in the newer
kernel. Update accordingly.

Bug 2834141

Change-Id: I3097308740f1af3092ac0a5ac2f0146db8148e12
Signed-off-by: Sagar Kamble <skamble@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2294097
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: Debarshi Dutta <ddutta@nvidia.com>
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Sagar Kamble
2020-02-13 15:46:21 +05:30
committed by Alex Waterman
parent d0d8ef79d1
commit 6c4a0bb6cd
4 changed files with 25 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2019, NVIDIA CORPORATION. All rights reserved.
* Copyright (c) 2016-2020, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
@@ -112,7 +112,11 @@ static void nvgpu_init_gr_vars(struct gk20a *g)
{
nvgpu_gr_init(g);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
nvgpu_log_info(g, "total ram pages : %lu", totalram_pages());
#else
nvgpu_log_info(g, "total ram pages : %lu", totalram_pages);
#endif
g->max_comptag_mem = totalram_size_in_mb;
}

View File

@@ -1633,8 +1633,13 @@ static int nvgpu_gpu_set_deterministic_opts(struct gk20a *g,
}
/* Trivial sanity check first */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
if (!access_ok(user_channels,
args->num_channels * sizeof(int))) {
#else
if (!access_ok(VERIFY_READ, user_channels,
args->num_channels * sizeof(int))) {
#endif
err = -EFAULT;
goto out;
}
@@ -2095,8 +2100,13 @@ static void alter_usermode_mapping(struct gk20a *g,
* b) !poweroff and vmap_mapped -> do nothing as already mapped
*/
if (poweroff && vma_mapped) {
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0)
zap_vma_ptes(vma, vma->vm_start, vma->vm_end - vma->vm_start);
err = 0;
#else
err = zap_vma_ptes(vma, vma->vm_start,
vma->vm_end - vma->vm_start);
#endif
if (err == 0) {
vma->vm_flags = VM_NONE;
priv->usermode_vma.vma_mapped = false;

View File

@@ -21,6 +21,7 @@
#include <linux/iommu.h>
#include <linux/hashtable.h>
#include <linux/notifier.h>
#include <linux/version.h>
#include <nvgpu/gk20a.h>
@@ -188,6 +189,10 @@ static inline struct device *dev_from_gk20a(struct gk20a *g)
#define INTERFACE_NAME "nvhost%s-gpu"
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
#define totalram_size_in_mb (totalram_pages() >> (10 - (PAGE_SHIFT - 10)))
#else
#define totalram_size_in_mb (totalram_pages >> (10 - (PAGE_SHIFT - 10)))
#endif
#endif

View File

@@ -1,7 +1,7 @@
/*
* Virtualized GPU for Linux
*
* Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved.
* Copyright (c) 2018-2020, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
@@ -470,7 +470,11 @@ int vgpu_probe(struct platform_device *pdev)
vgpu_create_sysfs(dev);
nvgpu_gr_init(gk20a);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
nvgpu_log_info(gk20a, "total ram pages : %lu", totalram_pages());
#else
nvgpu_log_info(gk20a, "total ram pages : %lu", totalram_pages);
#endif
gk20a->max_comptag_mem = totalram_size_in_mb;
nvgpu_ref_init(&gk20a->refcount);