From 43dbbaaad7b49036a507b7e04af67b766adc41be Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Wed, 13 Dec 2017 16:25:46 -0800 Subject: nvgpu: gpu: Add speculation barrier macro Provide a macro for preventing CPU speculation. bug 2039126 CVE-2017-5753 Change-Id: Ifa936c079d9f2a0231d0cf35c4d8bdd18d54b238 Signed-off-by: Alex Waterman Reviewed-on: https://git-master.nvidia.com/r/1640497 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/Makefile | 3 +++ drivers/gpu/nvgpu/include/nvgpu/barrier.h | 9 +++++++++ drivers/gpu/nvgpu/include/nvgpu/linux/barrier.h | 2 ++ 3 files changed, 14 insertions(+) (limited to 'drivers/gpu/nvgpu') diff --git a/drivers/gpu/nvgpu/Makefile b/drivers/gpu/nvgpu/Makefile index 680a9f4f..d70c44e8 100644 --- a/drivers/gpu/nvgpu/Makefile +++ b/drivers/gpu/nvgpu/Makefile @@ -14,6 +14,9 @@ ifeq ($(VERSION),4) ccflags-y += -Wextra -Wno-unused-parameter -Wno-missing-field-initializers endif +# Turn off when this is fixed upstream, if ever. +ccflags-y += -D__NVGPU_PREVENT_UNTRUSTED_SPECULATION + obj-$(CONFIG_GK20A) := nvgpu.o nvgpu-y := \ diff --git a/drivers/gpu/nvgpu/include/nvgpu/barrier.h b/drivers/gpu/nvgpu/include/nvgpu/barrier.h index 01bd3023..03a14a99 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/barrier.h +++ b/drivers/gpu/nvgpu/include/nvgpu/barrier.h @@ -47,4 +47,13 @@ #define NV_ACCESS_ONCE(x) __NV_ACCESS_ONCE(x) +/* + * Sometimes we want to prevent speculation. + */ +#ifdef __NVGPU_PREVENT_UNTRUSTED_SPECULATION +#define nvgpu_speculation_barrier() __nvgpu_speculation_barrier() +#else +#define nvgpu_speculation_barrier() +#endif + #endif /* __NVGPU_BARRIER_H__ */ diff --git a/drivers/gpu/nvgpu/include/nvgpu/linux/barrier.h b/drivers/gpu/nvgpu/include/nvgpu/linux/barrier.h index b20f9462..ef867c44 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/linux/barrier.h +++ b/drivers/gpu/nvgpu/include/nvgpu/linux/barrier.h @@ -32,4 +32,6 @@ #define __NV_ACCESS_ONCE(x) ACCESS_ONCE(x) +#define __nvgpu_speculation_barrier() speculation_barrier() + #endif /* __NVGPU_BARRIER_LINUX_H__ */ -- cgit v1.2.2