summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common
diff options
context:
space:
mode:
authorScott Long <scottl@nvidia.com>2018-07-02 20:57:21 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-07-30 22:55:16 -0400
commitd32692ae2427693daf85b3c7b4e24cd36471dec6 (patch)
treeb1bb9c697c636847e12afd956b666241176cc1d4 /drivers/gpu/nvgpu/common
parentd9956443820d64ac7f6e2fe7a9d10c1ac4956938 (diff)
gpu: nvgpu: fix MISRA Rule 11.6 issue with _THIS_IP_
The use of the _THIS_IP_ macro in nvgpu introduces two separate MISRA Rule 11.6 violations. The first is when when the label address (which gcc generates as a void *) is cast to an unsigned long and the second is when that unsigned long is cast back to a void * in the timer and kmem code that track the value. Skipping the intermediate use of unsigned long eliminates these violations. To do this, references to _THIS_IP_ are replaced with a new (compliant) _NVGPU_GET_IP_ macro. JIRA NVGPU-895 : MISRA Rule 11.6 violations Change-Id: I5ea999d8e2b467257fa190b485fa971adcbd0a2b Signed-off-by: Scott Long <scottl@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1774531 Reviewed-by: svc-misra-checker <svc-misra-checker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Adeel Raza <araza@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/common')
-rw-r--r--drivers/gpu/nvgpu/common/posix/kmem.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/common/posix/kmem.c b/drivers/gpu/nvgpu/common/posix/kmem.c
index 3c0b9b66..5fe0aeb2 100644
--- a/drivers/gpu/nvgpu/common/posix/kmem.c
+++ b/drivers/gpu/nvgpu/common/posix/kmem.c
@@ -64,17 +64,17 @@ void nvgpu_kmem_cache_free(struct nvgpu_kmem_cache *cache, void *ptr)
64 free(ptr); 64 free(ptr);
65} 65}
66 66
67void *__nvgpu_kmalloc(struct gk20a *g, size_t size, unsigned long ip) 67void *__nvgpu_kmalloc(struct gk20a *g, size_t size, void *ip)
68{ 68{
69 return malloc(size); 69 return malloc(size);
70} 70}
71 71
72void *__nvgpu_kzalloc(struct gk20a *g, size_t size, unsigned long ip) 72void *__nvgpu_kzalloc(struct gk20a *g, size_t size, void *ip)
73{ 73{
74 return calloc(1, size); 74 return calloc(1, size);
75} 75}
76 76
77void *__nvgpu_kcalloc(struct gk20a *g, size_t n, size_t size, unsigned long ip) 77void *__nvgpu_kcalloc(struct gk20a *g, size_t n, size_t size, void *ip)
78{ 78{
79 /* 79 /*
80 * calloc() implicitly zeros mem. So calloc a single member size bytes 80 * calloc() implicitly zeros mem. So calloc a single member size bytes
@@ -91,12 +91,12 @@ void __nvgpu_kfree(struct gk20a *g, void *addr)
91/* 91/*
92 * The concept of vmalloc() does not exist in userspace. 92 * The concept of vmalloc() does not exist in userspace.
93 */ 93 */
94void *__nvgpu_vmalloc(struct gk20a *g, unsigned long size, unsigned long ip) 94void *__nvgpu_vmalloc(struct gk20a *g, unsigned long size, void *ip)
95{ 95{
96 return __nvgpu_kmalloc(g, size, ip); 96 return __nvgpu_kmalloc(g, size, ip);
97} 97}
98 98
99void *__nvgpu_vzalloc(struct gk20a *g, unsigned long size, unsigned long ip) 99void *__nvgpu_vzalloc(struct gk20a *g, unsigned long size, void *ip)
100{ 100{
101 return __nvgpu_kzalloc(g, size, ip); 101 return __nvgpu_kzalloc(g, size, ip);
102} 102}
@@ -113,8 +113,8 @@ void *__nvgpu_big_alloc(struct gk20a *g, size_t size, bool clear)
113 * reuse k[zm]alloc() for this. 113 * reuse k[zm]alloc() for this.
114 */ 114 */
115 return clear ? 115 return clear ?
116 __nvgpu_kzalloc(g, size, _THIS_IP_) : 116 __nvgpu_kzalloc(g, size, _NVGPU_GET_IP_) :
117 __nvgpu_kmalloc(g, size, _THIS_IP_); 117 __nvgpu_kmalloc(g, size, _NVGPU_GET_IP_);
118} 118}
119 119
120void nvgpu_big_free(struct gk20a *g, void *p) 120void nvgpu_big_free(struct gk20a *g, void *p)