diff --git a/drivers/gpu/nvgpu/Makefile b/drivers/gpu/nvgpu/Makefile index 680a9f4f2..d70c44e8a 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 01bd30230..03a14a99e 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 b20f94621..ef867c44f 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__ */