From 81868a187fa3b217368206f17b19309846e8e7fb Mon Sep 17 00:00:00 2001 From: Debarshi Dutta Date: Fri, 18 Aug 2017 16:22:29 +0530 Subject: gpu: nvgpu: Nvgpu abstraction for linux barriers. construct wrapper nvgpu_* methods to replace mb,rmb,wmb,smp_mb,smp_rmb,smp_wmb,read_barrier_depends and smp_read_barrier_depends. NVGPU-122 Change-Id: I8d24dd70fef5cb0fadaacc15f3ab11531667a0df Signed-off-by: Debarshi Reviewed-on: https://git-master.nvidia.com/r/1541199 Reviewed-by: svccoveritychecker Reviewed-by: svc-mobile-coverity GVS: Gerrit_Virtual_Submit Reviewed-by: Sourab Gupta Reviewed-by: Vijayakumar Subbu --- drivers/gpu/nvgpu/include/nvgpu/barrier.h | 40 +++++++++++++++++++++++++ drivers/gpu/nvgpu/include/nvgpu/linux/barrier.h | 33 ++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 drivers/gpu/nvgpu/include/nvgpu/barrier.h create mode 100644 drivers/gpu/nvgpu/include/nvgpu/linux/barrier.h (limited to 'drivers/gpu/nvgpu/include') diff --git a/drivers/gpu/nvgpu/include/nvgpu/barrier.h b/drivers/gpu/nvgpu/include/nvgpu/barrier.h new file mode 100644 index 00000000..26eec3ed --- /dev/null +++ b/drivers/gpu/nvgpu/include/nvgpu/barrier.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2017, 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, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* This file contains NVGPU_* high-level abstractions for various + * memor-barrier operations available in linux/kernel. Every OS + * should provide their own OS specific calls under this common API + */ + +#ifndef __NVGPU_BARRIER_H__ +#define __NVGPU_BARRIER_H__ + +#ifdef __KERNEL__ +#include +#endif + +#define nvgpu_mb() __nvgpu_mb() +#define nvgpu_rmb() __nvgpu_rmb() +#define nvgpu_wmb() __nvgpu_wmb() + +#define nvgpu_smp_mb() __nvgpu_smp_mb() +#define nvgpu_smp_rmb() __nvgpu_smp_rmb() +#define nvgpu_smp_wmb() __nvgpu_smp_wmb() + +#define nvgpu_read_barrier_depends() __nvgpu_read_barrier_depends() +#define nvgpu_smp_read_barrier_depends() __nvgpu_smp_read_barrier_depends() + +#endif /* __NVGPU_BARRIER_H__ */ diff --git a/drivers/gpu/nvgpu/include/nvgpu/linux/barrier.h b/drivers/gpu/nvgpu/include/nvgpu/linux/barrier.h new file mode 100644 index 00000000..e7b83ee8 --- /dev/null +++ b/drivers/gpu/nvgpu/include/nvgpu/linux/barrier.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2017, 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, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __NVGPU_BARRIER_LINUX_H__ +#define __NVGPU_BARRIER_LINUX_H__ + +#include + +#define __nvgpu_mb() mb() +#define __nvgpu_rmb() rmb() +#define __nvgpu_wmb() wmb() + +#define __nvgpu_smp_mb() smp_mb() +#define __nvgpu_smp_rmb() smp_rmb() +#define __nvgpu_smp_wmb() smp_wmb() + +#define __nvgpu_read_barrier_depends() read_barrier_depends() +#define __nvgpu_smp_read_barrier_depends() smp_read_barrier_depends() + +#endif /* __NVGPU_BARRIER_LINUX_H__ */ -- cgit v1.2.2