From 61bb9dc40395257fa1dc15d267496e3deb32a3e5 Mon Sep 17 00:00:00 2001 From: Preetham Chandru Ramchandra Date: Thu, 17 Jan 2019 22:37:39 +0530 Subject: gpu: nvgpu: nvgpu locks to vanilla Linux locks Replace nvgpu locks to vanilla Linux locks. For the custom kernel driver when they include nv-p2p.h, nvgpu/linux/lock.h will not be available because nvgpu/linux/lock.h is not copied to /usr/src/kernel_header_file. Bug 200438879 Change-Id: I55b52c6f791970650388b7d51c4d30b5fe75bbb8 Signed-off-by: Preetham Chandru Ramchandra Reviewed-on: https://git-master.nvidia.com/r/1997950 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Alex Waterman GVS: Gerrit_Virtual_Submit Reviewed-by: Bibek Basu Reviewed-by: mobile promotions Tested-by: mobile promotions (cherry picked from commit eb887094e4f4446e6eed9c17e88f4a36ac5ae972) Reviewed-on: https://git-master.nvidia.com/r/2000831 --- drivers/gpu/nvgpu/os/linux/nvidia_p2p.c | 22 +++++++++++----------- include/linux/nv-p2p.h | 5 ++--- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/nvgpu/os/linux/nvidia_p2p.c b/drivers/gpu/nvgpu/os/linux/nvidia_p2p.c index 7289f311..11d27b47 100644 --- a/drivers/gpu/nvgpu/os/linux/nvidia_p2p.c +++ b/drivers/gpu/nvgpu/os/linux/nvidia_p2p.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -101,7 +101,7 @@ int nvidia_p2p_get_pages(u64 vaddr, u64 size, (*page_table)->free_callback = free_callback; (*page_table)->data = data; (*page_table)->vaddr = vaddr; - nvgpu_mutex_init(&(*page_table)->lock); + mutex_init(&(*page_table)->lock); (*page_table)->mapped = NVIDIA_P2P_PINNED; ret = mmu_notifier_register(&(*page_table)->mn, (*page_table)->mm); @@ -143,7 +143,7 @@ int nvidia_p2p_free_page_table(struct nvidia_p2p_page_table *page_table) return 0; } - nvgpu_mutex_acquire(&page_table->lock); + mutex_lock(&page_table->lock); if (page_table->mapped & NVIDIA_P2P_MAPPED) { WARN(1, "Attempting to free unmapped pages"); @@ -161,7 +161,7 @@ int nvidia_p2p_free_page_table(struct nvidia_p2p_page_table *page_table) page_table->mapped &= (u32)~NVIDIA_P2P_PINNED; } - nvgpu_mutex_release(&page_table->lock); + mutex_unlock(&page_table->lock); return 0; } @@ -183,18 +183,18 @@ int nvidia_p2p_map_pages(struct device *dev, return -EINVAL; } - nvgpu_mutex_acquire(&page_table->lock); + mutex_lock(&page_table->lock); pages = page_table->pages; nr_pages = page_table->entries; if (nr_pages <= 0) { - nvgpu_mutex_release(&page_table->lock); + mutex_unlock(&page_table->lock); return -EINVAL; } *dma_mapping = kzalloc(sizeof(**dma_mapping), GFP_KERNEL); if (!*dma_mapping) { - nvgpu_mutex_release(&page_table->lock); + mutex_unlock(&page_table->lock); return -ENOMEM; } sgt = kzalloc(sizeof(*sgt), GFP_KERNEL); @@ -235,7 +235,7 @@ int nvidia_p2p_map_pages(struct device *dev, (*dma_mapping)->hw_len[i] = sg_dma_len(sg); } (*dma_mapping)->page_table->mapped |= NVIDIA_P2P_MAPPED; - nvgpu_mutex_release(&page_table->lock); + mutex_unlock(&page_table->lock); return 0; free_hw_address: @@ -250,7 +250,7 @@ free_sgt: free_dma_mapping: kfree(*dma_mapping); *dma_mapping = NULL; - nvgpu_mutex_release(&page_table->lock); + mutex_unlock(&page_table->lock); return ret; } @@ -269,7 +269,7 @@ int nvidia_p2p_unmap_pages(struct nvidia_p2p_dma_mapping *dma_mapping) return -EFAULT; } - nvgpu_mutex_acquire(&page_table->lock); + mutex_lock(&page_table->lock); if (page_table->mapped & NVIDIA_P2P_MAPPED) { kfree(dma_mapping->hw_len); kfree(dma_mapping->hw_address); @@ -283,7 +283,7 @@ int nvidia_p2p_unmap_pages(struct nvidia_p2p_dma_mapping *dma_mapping) kfree(dma_mapping); page_table->mapped &= (u32)~NVIDIA_P2P_MAPPED; } - nvgpu_mutex_release(&page_table->lock); + mutex_unlock(&page_table->lock); return 0; } diff --git a/include/linux/nv-p2p.h b/include/linux/nv-p2p.h index c1dee7cf..40e82796 100644 --- a/include/linux/nv-p2p.h +++ b/include/linux/nv-p2p.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -40,7 +40,6 @@ #include #include #include -#include #define NVIDIA_P2P_UNINITIALIZED 0x0 #define NVIDIA_P2P_PINNED 0x1 @@ -64,7 +63,7 @@ struct nvidia_p2p_page_table { struct mm_struct *mm; struct mmu_notifier mn; - struct nvgpu_mutex lock; + struct mutex lock; void (*free_callback)(void *data); void *data; }; -- cgit v1.2.2