From 32db53d4e156cc0e14a254395f54d18a47f3e522 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Wed, 25 Mar 2020 10:38:10 -0700 Subject: [PATCH] gpu: nvgpu: posix: Pass atomic types to atomic ops Atomic functions require the type of manipulated atomic to be of _Atomic type. Change-Id: I8cf417a2b15ef34488b82560b65d5abfbe67fde8 Signed-off-by: Terje Bergstrom Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2318385 Reviewed-by: automaticguardword Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-misra Reviewed-by: svc-mobile-cert Reviewed-by: Alex Waterman Reviewed-by: mobile promotions GVS: Gerrit_Virtual_Submit Tested-by: mobile promotions --- drivers/gpu/nvgpu/os/posix/bitmap.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/nvgpu/os/posix/bitmap.c b/drivers/gpu/nvgpu/os/posix/bitmap.c index 87d3cbb51..64f7cf045 100644 --- a/drivers/gpu/nvgpu/os/posix/bitmap.c +++ b/drivers/gpu/nvgpu/os/posix/bitmap.c @@ -230,7 +230,8 @@ bool nvgpu_test_bit(unsigned int nr, const volatile unsigned long *addr) bool nvgpu_test_and_set_bit(unsigned int nr, volatile unsigned long *addr) { unsigned long mask = BIT_MASK(nr); - volatile unsigned long *p = addr + BIT_WORD(nr); + volatile unsigned _Atomic long *p = + (volatile unsigned _Atomic long *)addr + BIT_WORD(nr); return (atomic_fetch_or(p, mask) & mask) != 0ULL; } @@ -238,7 +239,8 @@ bool nvgpu_test_and_set_bit(unsigned int nr, volatile unsigned long *addr) bool nvgpu_test_and_clear_bit(unsigned int nr, volatile unsigned long *addr) { unsigned long mask = BIT_MASK(nr); - volatile unsigned long *p = addr + BIT_WORD(nr); + volatile unsigned _Atomic long *p = + (volatile unsigned _Atomic long *)addr + BIT_WORD(nr); return (atomic_fetch_and(p, ~mask) & mask) != 0ULL; } @@ -246,7 +248,8 @@ bool nvgpu_test_and_clear_bit(unsigned int nr, volatile unsigned long *addr) void nvgpu_set_bit(unsigned int nr, volatile unsigned long *addr) { unsigned long mask = BIT_MASK(nr); - volatile unsigned long *p = addr + BIT_WORD(nr); + volatile unsigned _Atomic long *p = + (unsigned volatile _Atomic long *)addr + BIT_WORD(nr); (void)atomic_fetch_or(p, mask); } @@ -254,7 +257,8 @@ void nvgpu_set_bit(unsigned int nr, volatile unsigned long *addr) void nvgpu_clear_bit(unsigned int nr, volatile unsigned long *addr) { unsigned long mask = BIT_MASK(nr); - volatile unsigned long *p = addr + BIT_WORD(nr); + volatile unsigned _Atomic long *p = + (volatile unsigned _Atomic long *)addr + BIT_WORD(nr); (void)atomic_fetch_and(p, ~mask); }