diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/boardobj/boardobj.c | 18 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/boardobj/boardobjgrp.c | 156 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/boardobj/boardobjgrp_e255.c | 12 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/boardobj/boardobjgrp_e32.c | 12 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/boardobj/boardobjgrpmask.c | 105 |
5 files changed, 202 insertions, 101 deletions
diff --git a/drivers/gpu/nvgpu/boardobj/boardobj.c b/drivers/gpu/nvgpu/boardobj/boardobj.c index f38c7c4a..5f726935 100644 --- a/drivers/gpu/nvgpu/boardobj/boardobj.c +++ b/drivers/gpu/nvgpu/boardobj/boardobj.c | |||
@@ -34,13 +34,15 @@ u32 boardobj_construct_super(struct gk20a *g, struct boardobj **ppboardobj, | |||
34 | 34 | ||
35 | nvgpu_log_info(g, " "); | 35 | nvgpu_log_info(g, " "); |
36 | 36 | ||
37 | if (devtmp == NULL) | 37 | if (devtmp == NULL) { |
38 | return -EINVAL; | 38 | return -EINVAL; |
39 | } | ||
39 | 40 | ||
40 | if (*ppboardobj == NULL) { | 41 | if (*ppboardobj == NULL) { |
41 | *ppboardobj = nvgpu_kzalloc(g, size); | 42 | *ppboardobj = nvgpu_kzalloc(g, size); |
42 | if (*ppboardobj == NULL) | 43 | if (*ppboardobj == NULL) { |
43 | return -ENOMEM; | 44 | return -ENOMEM; |
45 | } | ||
44 | (*ppboardobj)->allocated = true; | 46 | (*ppboardobj)->allocated = true; |
45 | } | 47 | } |
46 | 48 | ||
@@ -64,12 +66,14 @@ u32 boardobj_destruct_super(struct boardobj *pboardobj) | |||
64 | struct gk20a *g = pboardobj->g; | 66 | struct gk20a *g = pboardobj->g; |
65 | 67 | ||
66 | nvgpu_log_info(g, " "); | 68 | nvgpu_log_info(g, " "); |
67 | if (pboardobj == NULL) | 69 | if (pboardobj == NULL) { |
68 | return -EINVAL; | 70 | return -EINVAL; |
71 | } | ||
69 | 72 | ||
70 | nvgpu_list_del(&pboardobj->node); | 73 | nvgpu_list_del(&pboardobj->node); |
71 | if (pboardobj->allocated) | 74 | if (pboardobj->allocated) { |
72 | nvgpu_kfree(pboardobj->g, pboardobj); | 75 | nvgpu_kfree(pboardobj->g, pboardobj); |
76 | } | ||
73 | 77 | ||
74 | return 0; | 78 | return 0; |
75 | } | 79 | } |
@@ -86,10 +90,12 @@ u32 boardobj_pmudatainit_super(struct gk20a *g, struct boardobj *pboardobj, | |||
86 | struct nv_pmu_boardobj *pmudata) | 90 | struct nv_pmu_boardobj *pmudata) |
87 | { | 91 | { |
88 | nvgpu_log_info(g, " "); | 92 | nvgpu_log_info(g, " "); |
89 | if (pboardobj == NULL) | 93 | if (pboardobj == NULL) { |
90 | return -EINVAL; | 94 | return -EINVAL; |
91 | if (pmudata == NULL) | 95 | } |
96 | if (pmudata == NULL) { | ||
92 | return -EINVAL; | 97 | return -EINVAL; |
98 | } | ||
93 | pmudata->type = pboardobj->type; | 99 | pmudata->type = pboardobj->type; |
94 | nvgpu_log_info(g, " Done"); | 100 | nvgpu_log_info(g, " Done"); |
95 | return 0; | 101 | return 0; |
diff --git a/drivers/gpu/nvgpu/boardobj/boardobjgrp.c b/drivers/gpu/nvgpu/boardobj/boardobjgrp.c index 7343f66c..e0ab67be 100644 --- a/drivers/gpu/nvgpu/boardobj/boardobjgrp.c +++ b/drivers/gpu/nvgpu/boardobj/boardobjgrp.c | |||
@@ -52,14 +52,17 @@ u32 boardobjgrp_construct_super(struct gk20a *g, struct boardobjgrp *pboardobjgr | |||
52 | { | 52 | { |
53 | nvgpu_log_info(g, " "); | 53 | nvgpu_log_info(g, " "); |
54 | 54 | ||
55 | if (pboardobjgrp == NULL) | 55 | if (pboardobjgrp == NULL) { |
56 | return -EINVAL; | 56 | return -EINVAL; |
57 | } | ||
57 | 58 | ||
58 | if (pboardobjgrp->ppobjects == NULL) | 59 | if (pboardobjgrp->ppobjects == NULL) { |
59 | return -EINVAL; | 60 | return -EINVAL; |
61 | } | ||
60 | 62 | ||
61 | if (pboardobjgrp->mask == NULL) | 63 | if (pboardobjgrp->mask == NULL) { |
62 | return -EINVAL; | 64 | return -EINVAL; |
65 | } | ||
63 | 66 | ||
64 | pboardobjgrp->g = g; | 67 | pboardobjgrp->g = g; |
65 | pboardobjgrp->objmask = 0; | 68 | pboardobjgrp->objmask = 0; |
@@ -105,11 +108,13 @@ u32 boardobjgrp_destruct_impl(struct boardobjgrp *pboardobjgrp) | |||
105 | 108 | ||
106 | nvgpu_log_info(g, " "); | 109 | nvgpu_log_info(g, " "); |
107 | 110 | ||
108 | if (pboardobjgrp == NULL) | 111 | if (pboardobjgrp == NULL) { |
109 | return -EINVAL; | 112 | return -EINVAL; |
113 | } | ||
110 | 114 | ||
111 | if (!pboardobjgrp->bconstructed) | 115 | if (!pboardobjgrp->bconstructed) { |
112 | return 0; | 116 | return 0; |
117 | } | ||
113 | 118 | ||
114 | return pboardobjgrp->destruct(pboardobjgrp); | 119 | return pboardobjgrp->destruct(pboardobjgrp); |
115 | } | 120 | } |
@@ -124,15 +129,18 @@ u32 boardobjgrp_destruct_super(struct boardobjgrp *pboardobjgrp) | |||
124 | 129 | ||
125 | nvgpu_log_info(g, " "); | 130 | nvgpu_log_info(g, " "); |
126 | 131 | ||
127 | if (pboardobjgrp->mask == NULL) | 132 | if (pboardobjgrp->mask == NULL) { |
128 | return -EINVAL; | 133 | return -EINVAL; |
129 | if (pboardobjgrp->ppobjects == NULL) | 134 | } |
135 | if (pboardobjgrp->ppobjects == NULL) { | ||
130 | return -EINVAL; | 136 | return -EINVAL; |
137 | } | ||
131 | 138 | ||
132 | BOARDOBJGRP_FOR_EACH(pboardobjgrp, struct boardobj*, pboardobj, index) { | 139 | BOARDOBJGRP_FOR_EACH(pboardobjgrp, struct boardobj*, pboardobj, index) { |
133 | stat = pboardobjgrp->objremoveanddestroy(pboardobjgrp, index); | 140 | stat = pboardobjgrp->objremoveanddestroy(pboardobjgrp, index); |
134 | if (status == 0) | 141 | if (status == 0) { |
135 | status = stat; | 142 | status = stat; |
143 | } | ||
136 | 144 | ||
137 | pboardobjgrp->ppobjects[index] = NULL; | 145 | pboardobjgrp->ppobjects[index] = NULL; |
138 | pboardobjgrp->objmask &= ~BIT(index); | 146 | pboardobjgrp->objmask &= ~BIT(index); |
@@ -141,20 +149,23 @@ u32 boardobjgrp_destruct_super(struct boardobjgrp *pboardobjgrp) | |||
141 | pboardobjgrp->objmask = 0; | 149 | pboardobjgrp->objmask = 0; |
142 | 150 | ||
143 | if (pboardobjgrp->objmaxidx != CTRL_BOARDOBJ_IDX_INVALID) { | 151 | if (pboardobjgrp->objmaxidx != CTRL_BOARDOBJ_IDX_INVALID) { |
144 | if (status == 0) | 152 | if (status == 0) { |
145 | status = -EINVAL; | 153 | status = -EINVAL; |
154 | } | ||
146 | 155 | ||
147 | WARN_ON(true); | 156 | WARN_ON(true); |
148 | } | 157 | } |
149 | 158 | ||
150 | /* Destroy the PMU CMD data */ | 159 | /* Destroy the PMU CMD data */ |
151 | stat = boardobjgrp_pmucmd_destroy_impl(g, &pboardobjgrp->pmu.set); | 160 | stat = boardobjgrp_pmucmd_destroy_impl(g, &pboardobjgrp->pmu.set); |
152 | if (status == 0) | 161 | if (status == 0) { |
153 | status = stat; | 162 | status = stat; |
163 | } | ||
154 | 164 | ||
155 | stat = boardobjgrp_pmucmd_destroy_impl(g, &pboardobjgrp->pmu.getstatus); | 165 | stat = boardobjgrp_pmucmd_destroy_impl(g, &pboardobjgrp->pmu.getstatus); |
156 | if (status == 0) | 166 | if (status == 0) { |
157 | status = stat; | 167 | status = stat; |
168 | } | ||
158 | 169 | ||
159 | nvgpu_list_del(&pboardobjgrp->node); | 170 | nvgpu_list_del(&pboardobjgrp->node); |
160 | 171 | ||
@@ -210,8 +221,9 @@ int is_boardobjgrp_pmucmd_id_valid_v0(struct gk20a *g, | |||
210 | { | 221 | { |
211 | int err = 0; | 222 | int err = 0; |
212 | 223 | ||
213 | if (pcmd->id == BOARDOBJGRP_GRP_CMD_ID_INVALID) | 224 | if (pcmd->id == BOARDOBJGRP_GRP_CMD_ID_INVALID) { |
214 | err = -EINVAL; | 225 | err = -EINVAL; |
226 | } | ||
215 | 227 | ||
216 | return err; | 228 | return err; |
217 | } | 229 | } |
@@ -223,8 +235,9 @@ int is_boardobjgrp_pmucmd_id_valid_v1(struct gk20a *g, | |||
223 | int err = 0; | 235 | int err = 0; |
224 | 236 | ||
225 | if (pboardobjgrp->pmu.rpc_func_id == | 237 | if (pboardobjgrp->pmu.rpc_func_id == |
226 | BOARDOBJGRP_GRP_RPC_FUNC_ID_INVALID) | 238 | BOARDOBJGRP_GRP_RPC_FUNC_ID_INVALID) { |
227 | err = -EINVAL; | 239 | err = -EINVAL; |
240 | } | ||
228 | 241 | ||
229 | return err; | 242 | return err; |
230 | } | 243 | } |
@@ -239,11 +252,13 @@ u32 boardobjgrp_pmucmd_pmuinithandle_impl(struct gk20a *g, | |||
239 | nvgpu_log_info(g, " "); | 252 | nvgpu_log_info(g, " "); |
240 | 253 | ||
241 | if (g->ops.pmu_ver.boardobj.is_boardobjgrp_pmucmd_id_valid(g, | 254 | if (g->ops.pmu_ver.boardobj.is_boardobjgrp_pmucmd_id_valid(g, |
242 | pboardobjgrp, pcmd)) | 255 | pboardobjgrp, pcmd)) { |
243 | goto boardobjgrp_pmucmd_pmuinithandle_exit; | 256 | goto boardobjgrp_pmucmd_pmuinithandle_exit; |
257 | } | ||
244 | 258 | ||
245 | if (!pcmd->fbsize) | 259 | if (!pcmd->fbsize) { |
246 | goto boardobjgrp_pmucmd_pmuinithandle_exit; | 260 | goto boardobjgrp_pmucmd_pmuinithandle_exit; |
261 | } | ||
247 | 262 | ||
248 | nvgpu_pmu_sysmem_surface_alloc(g, sysmem_desc, pcmd->fbsize); | 263 | nvgpu_pmu_sysmem_surface_alloc(g, sysmem_desc, pcmd->fbsize); |
249 | /* we only have got sysmem later this will get copied to vidmem | 264 | /* we only have got sysmem later this will get copied to vidmem |
@@ -280,13 +295,15 @@ u32 boardobjgrp_pmuinithandle_impl(struct gk20a *g, | |||
280 | /* If the GRP_SET CMD has not been allocated, nothing left to do. */ | 295 | /* If the GRP_SET CMD has not been allocated, nothing left to do. */ |
281 | if ((g->ops.pmu_ver.boardobj.is_boardobjgrp_pmucmd_id_valid(g, | 296 | if ((g->ops.pmu_ver.boardobj.is_boardobjgrp_pmucmd_id_valid(g, |
282 | pboardobjgrp, &pboardobjgrp->pmu.set))|| | 297 | pboardobjgrp, &pboardobjgrp->pmu.set))|| |
283 | (BOARDOBJGRP_IS_EMPTY(pboardobjgrp))) | 298 | (BOARDOBJGRP_IS_EMPTY(pboardobjgrp))) { |
284 | goto boardobjgrp_pmuinithandle_exit; | 299 | goto boardobjgrp_pmuinithandle_exit; |
300 | } | ||
285 | 301 | ||
286 | /* Send the BOARDOBJGRP to the pmu via RM_PMU_BOARDOBJ_CMD_GRP. */ | 302 | /* Send the BOARDOBJGRP to the pmu via RM_PMU_BOARDOBJ_CMD_GRP. */ |
287 | status = pboardobjgrp->pmuset(g, pboardobjgrp); | 303 | status = pboardobjgrp->pmuset(g, pboardobjgrp); |
288 | if (status) | 304 | if (status) { |
289 | nvgpu_err(g, "failed to send boardobg grp to PMU"); | 305 | nvgpu_err(g, "failed to send boardobg grp to PMU"); |
306 | } | ||
290 | 307 | ||
291 | boardobjgrp_pmuinithandle_exit: | 308 | boardobjgrp_pmuinithandle_exit: |
292 | return status; | 309 | return status; |
@@ -299,10 +316,12 @@ u32 boardobjgrp_pmuhdrdatainit_super(struct gk20a *g, struct boardobjgrp | |||
299 | { | 316 | { |
300 | nvgpu_log_info(g, " "); | 317 | nvgpu_log_info(g, " "); |
301 | 318 | ||
302 | if (pboardobjgrp == NULL) | 319 | if (pboardobjgrp == NULL) { |
303 | return -EINVAL; | 320 | return -EINVAL; |
304 | if (pboardobjgrppmu == NULL) | 321 | } |
322 | if (pboardobjgrppmu == NULL) { | ||
305 | return -EINVAL; | 323 | return -EINVAL; |
324 | } | ||
306 | pboardobjgrppmu->type = pboardobjgrp->type; | 325 | pboardobjgrppmu->type = pboardobjgrp->type; |
307 | pboardobjgrppmu->class_id = pboardobjgrp->classid; | 326 | pboardobjgrppmu->class_id = pboardobjgrp->classid; |
308 | pboardobjgrppmu->obj_slots = BOARDOBJGRP_PMU_SLOTS_GET(pboardobjgrp); | 327 | pboardobjgrppmu->obj_slots = BOARDOBJGRP_PMU_SLOTS_GET(pboardobjgrp); |
@@ -340,10 +359,12 @@ u32 boardobjgrp_pmudatainit_legacy(struct gk20a *g, | |||
340 | 359 | ||
341 | nvgpu_log_info(g, " "); | 360 | nvgpu_log_info(g, " "); |
342 | 361 | ||
343 | if (pboardobjgrp == NULL) | 362 | if (pboardobjgrp == NULL) { |
344 | return -EINVAL; | 363 | return -EINVAL; |
345 | if (pboardobjgrppmu == NULL) | 364 | } |
365 | if (pboardobjgrppmu == NULL) { | ||
346 | return -EINVAL; | 366 | return -EINVAL; |
367 | } | ||
347 | 368 | ||
348 | boardobjgrpe32hdrset((struct nv_pmu_boardobjgrp *)pboardobjgrppmu, | 369 | boardobjgrpe32hdrset((struct nv_pmu_boardobjgrp *)pboardobjgrppmu, |
349 | pboardobjgrp->objmask); | 370 | pboardobjgrp->objmask); |
@@ -390,10 +411,12 @@ u32 boardobjgrp_pmudatainit_super(struct gk20a *g, struct boardobjgrp | |||
390 | 411 | ||
391 | nvgpu_log_info(g, " "); | 412 | nvgpu_log_info(g, " "); |
392 | 413 | ||
393 | if (pboardobjgrp == NULL) | 414 | if (pboardobjgrp == NULL) { |
394 | return -EINVAL; | 415 | return -EINVAL; |
395 | if (pboardobjgrppmu == NULL) | 416 | } |
417 | if (pboardobjgrppmu == NULL) { | ||
396 | return -EINVAL; | 418 | return -EINVAL; |
419 | } | ||
397 | 420 | ||
398 | /* Initialize the PMU HDR data.*/ | 421 | /* Initialize the PMU HDR data.*/ |
399 | status = pboardobjgrp->pmuhdrdatainit(g, pboardobjgrp, pboardobjgrppmu, | 422 | status = pboardobjgrp->pmuhdrdatainit(g, pboardobjgrp, pboardobjgrppmu, |
@@ -429,21 +452,26 @@ boardobjgrppmudatainit_super_done: | |||
429 | static int check_boardobjgrp_param(struct gk20a *g, | 452 | static int check_boardobjgrp_param(struct gk20a *g, |
430 | struct boardobjgrp *pboardobjgrp) | 453 | struct boardobjgrp *pboardobjgrp) |
431 | { | 454 | { |
432 | if (pboardobjgrp == NULL) | 455 | if (pboardobjgrp == NULL) { |
433 | return -EINVAL; | 456 | return -EINVAL; |
457 | } | ||
434 | 458 | ||
435 | if (!pboardobjgrp->bconstructed) | 459 | if (!pboardobjgrp->bconstructed) { |
436 | return -EINVAL; | 460 | return -EINVAL; |
461 | } | ||
437 | 462 | ||
438 | if (pboardobjgrp->pmu.unitid == BOARDOBJGRP_UNIT_ID_INVALID) | 463 | if (pboardobjgrp->pmu.unitid == BOARDOBJGRP_UNIT_ID_INVALID) { |
439 | return -EINVAL; | 464 | return -EINVAL; |
465 | } | ||
440 | 466 | ||
441 | if (pboardobjgrp->pmu.classid == BOARDOBJGRP_GRP_CLASS_ID_INVALID) | 467 | if (pboardobjgrp->pmu.classid == BOARDOBJGRP_GRP_CLASS_ID_INVALID) { |
442 | return -EINVAL; | 468 | return -EINVAL; |
469 | } | ||
443 | 470 | ||
444 | /* If no objects in the group, return early */ | 471 | /* If no objects in the group, return early */ |
445 | if (BOARDOBJGRP_IS_EMPTY(pboardobjgrp)) | 472 | if (BOARDOBJGRP_IS_EMPTY(pboardobjgrp)) { |
446 | return -EINVAL; | 473 | return -EINVAL; |
474 | } | ||
447 | 475 | ||
448 | return 0; | 476 | return 0; |
449 | } | 477 | } |
@@ -456,16 +484,19 @@ u32 boardobjgrp_pmuset_impl(struct gk20a *g, struct boardobjgrp *pboardobjgrp) | |||
456 | 484 | ||
457 | nvgpu_log_info(g, " "); | 485 | nvgpu_log_info(g, " "); |
458 | 486 | ||
459 | if (check_boardobjgrp_param(g, pboardobjgrp)) | 487 | if (check_boardobjgrp_param(g, pboardobjgrp)) { |
460 | return -EINVAL; | 488 | return -EINVAL; |
489 | } | ||
461 | 490 | ||
462 | if (pboardobjgrp->pmu.set.id == BOARDOBJGRP_GRP_CMD_ID_INVALID) | 491 | if (pboardobjgrp->pmu.set.id == BOARDOBJGRP_GRP_CMD_ID_INVALID) { |
463 | return -EINVAL; | 492 | return -EINVAL; |
493 | } | ||
464 | 494 | ||
465 | if ((pcmd->hdrsize == 0) || | 495 | if ((pcmd->hdrsize == 0) || |
466 | (pcmd->entrysize == 0) || | 496 | (pcmd->entrysize == 0) || |
467 | (pcmd->buf == NULL)) | 497 | (pcmd->buf == NULL)) { |
468 | return -EINVAL; | 498 | return -EINVAL; |
499 | } | ||
469 | 500 | ||
470 | /* Initialize PMU buffer with BOARDOBJGRP data. */ | 501 | /* Initialize PMU buffer with BOARDOBJGRP data. */ |
471 | memset(pcmd->buf, 0x0, pcmd->fbsize); | 502 | memset(pcmd->buf, 0x0, pcmd->fbsize); |
@@ -515,13 +546,15 @@ u32 boardobjgrp_pmuset_impl_v1(struct gk20a *g, struct boardobjgrp *pboardobjgrp | |||
515 | 546 | ||
516 | nvgpu_log_info(g, " "); | 547 | nvgpu_log_info(g, " "); |
517 | 548 | ||
518 | if (check_boardobjgrp_param(g, pboardobjgrp)) | 549 | if (check_boardobjgrp_param(g, pboardobjgrp)) { |
519 | return -EINVAL; | 550 | return -EINVAL; |
551 | } | ||
520 | 552 | ||
521 | if ((pcmd->buf == NULL) && | 553 | if ((pcmd->buf == NULL) && |
522 | (pboardobjgrp->pmu.rpc_func_id == | 554 | (pboardobjgrp->pmu.rpc_func_id == |
523 | BOARDOBJGRP_GRP_RPC_FUNC_ID_INVALID)) | 555 | BOARDOBJGRP_GRP_RPC_FUNC_ID_INVALID)) { |
524 | return -EINVAL; | 556 | return -EINVAL; |
557 | } | ||
525 | 558 | ||
526 | /* Initialize PMU buffer with BOARDOBJGRP data. */ | 559 | /* Initialize PMU buffer with BOARDOBJGRP data. */ |
527 | memset(pcmd->buf, 0x0, pcmd->fbsize); | 560 | memset(pcmd->buf, 0x0, pcmd->fbsize); |
@@ -572,23 +605,27 @@ boardobjgrp_pmugetstatus_impl(struct gk20a *g, struct boardobjgrp *pboardobjgrp, | |||
572 | 605 | ||
573 | nvgpu_log_info(g, " "); | 606 | nvgpu_log_info(g, " "); |
574 | 607 | ||
575 | if (check_boardobjgrp_param(g, pboardobjgrp)) | 608 | if (check_boardobjgrp_param(g, pboardobjgrp)) { |
576 | return -EINVAL; | 609 | return -EINVAL; |
610 | } | ||
577 | 611 | ||
578 | if (pset->id == BOARDOBJGRP_GRP_CMD_ID_INVALID) | 612 | if (pset->id == BOARDOBJGRP_GRP_CMD_ID_INVALID) { |
579 | return -EINVAL; | 613 | return -EINVAL; |
614 | } | ||
580 | 615 | ||
581 | if ((pcmd->hdrsize == 0) || | 616 | if ((pcmd->hdrsize == 0) || |
582 | (pcmd->entrysize == 0) || | 617 | (pcmd->entrysize == 0) || |
583 | (pcmd->buf == NULL)) | 618 | (pcmd->buf == NULL)) { |
584 | return -EINVAL; | 619 | return -EINVAL; |
620 | } | ||
585 | 621 | ||
586 | /* | 622 | /* |
587 | * Can only GET_STATUS if the BOARDOBJGRP has been previously SET to the | 623 | * Can only GET_STATUS if the BOARDOBJGRP has been previously SET to the |
588 | * PMU | 624 | * PMU |
589 | */ | 625 | */ |
590 | if (!pboardobjgrp->pmu.bset) | 626 | if (!pboardobjgrp->pmu.bset) { |
591 | return -EINVAL; | 627 | return -EINVAL; |
628 | } | ||
592 | 629 | ||
593 | /* | 630 | /* |
594 | * alloc mem in vidmem & copy constructed pmu boardobjgrp data from | 631 | * alloc mem in vidmem & copy constructed pmu boardobjgrp data from |
@@ -639,20 +676,23 @@ boardobjgrp_pmugetstatus_impl_v1(struct gk20a *g, struct boardobjgrp *pboardobjg | |||
639 | 676 | ||
640 | nvgpu_log_info(g, " "); | 677 | nvgpu_log_info(g, " "); |
641 | 678 | ||
642 | if (check_boardobjgrp_param(g, pboardobjgrp)) | 679 | if (check_boardobjgrp_param(g, pboardobjgrp)) { |
643 | return -EINVAL; | 680 | return -EINVAL; |
681 | } | ||
644 | 682 | ||
645 | if ((pcmd->buf == NULL) && | 683 | if ((pcmd->buf == NULL) && |
646 | (pboardobjgrp->pmu.rpc_func_id == | 684 | (pboardobjgrp->pmu.rpc_func_id == |
647 | BOARDOBJGRP_GRP_RPC_FUNC_ID_INVALID)) | 685 | BOARDOBJGRP_GRP_RPC_FUNC_ID_INVALID)) { |
648 | return -EINVAL; | 686 | return -EINVAL; |
687 | } | ||
649 | 688 | ||
650 | /* | 689 | /* |
651 | * Can only GET_STATUS if the BOARDOBJGRP has been | 690 | * Can only GET_STATUS if the BOARDOBJGRP has been |
652 | * previously SET to the PMU | 691 | * previously SET to the PMU |
653 | */ | 692 | */ |
654 | if (!pboardobjgrp->pmu.bset) | 693 | if (!pboardobjgrp->pmu.bset) { |
655 | return -EINVAL; | 694 | return -EINVAL; |
695 | } | ||
656 | 696 | ||
657 | /* | 697 | /* |
658 | * Initialize PMU buffer with the mask of | 698 | * Initialize PMU buffer with the mask of |
@@ -696,24 +736,29 @@ boardobjgrp_objinsert_final(struct boardobjgrp *pboardobjgrp, | |||
696 | 736 | ||
697 | nvgpu_log_info(g, " "); | 737 | nvgpu_log_info(g, " "); |
698 | 738 | ||
699 | if (pboardobjgrp == NULL) | 739 | if (pboardobjgrp == NULL) { |
700 | return -EINVAL; | 740 | return -EINVAL; |
741 | } | ||
701 | 742 | ||
702 | if (pboardobj == NULL) | 743 | if (pboardobj == NULL) { |
703 | return -EINVAL; | 744 | return -EINVAL; |
745 | } | ||
704 | 746 | ||
705 | if (index > pboardobjgrp->objslots) | 747 | if (index > pboardobjgrp->objslots) { |
706 | return -EINVAL; | 748 | return -EINVAL; |
749 | } | ||
707 | 750 | ||
708 | if (pboardobjgrp->ppobjects[index] != NULL) | 751 | if (pboardobjgrp->ppobjects[index] != NULL) { |
709 | return -EINVAL; | 752 | return -EINVAL; |
753 | } | ||
710 | 754 | ||
711 | /* | 755 | /* |
712 | * Check that this BOARDOBJ has not already been added to a | 756 | * Check that this BOARDOBJ has not already been added to a |
713 | * BOARDOBJGRP | 757 | * BOARDOBJGRP |
714 | */ | 758 | */ |
715 | if (pboardobj->idx != CTRL_BOARDOBJ_IDX_INVALID) | 759 | if (pboardobj->idx != CTRL_BOARDOBJ_IDX_INVALID) { |
716 | return -EINVAL; | 760 | return -EINVAL; |
761 | } | ||
717 | 762 | ||
718 | pboardobjgrp->ppobjects[index] = pboardobj; | 763 | pboardobjgrp->ppobjects[index] = pboardobj; |
719 | pboardobjgrp->objmaxidx = BOARDOBJGRP_IS_EMPTY(pboardobjgrp) ? | 764 | pboardobjgrp->objmaxidx = BOARDOBJGRP_IS_EMPTY(pboardobjgrp) ? |
@@ -730,8 +775,9 @@ boardobjgrp_objinsert_final(struct boardobjgrp *pboardobjgrp, | |||
730 | static struct boardobj *boardobjgrp_objgetbyidx_final( | 775 | static struct boardobj *boardobjgrp_objgetbyidx_final( |
731 | struct boardobjgrp *pboardobjgrp, u8 index) | 776 | struct boardobjgrp *pboardobjgrp, u8 index) |
732 | { | 777 | { |
733 | if (!boardobjgrp_idxisvalid(pboardobjgrp, index)) | 778 | if (!boardobjgrp_idxisvalid(pboardobjgrp, index)) { |
734 | return NULL; | 779 | return NULL; |
780 | } | ||
735 | return pboardobjgrp->ppobjects[index]; | 781 | return pboardobjgrp->ppobjects[index]; |
736 | } | 782 | } |
737 | 783 | ||
@@ -743,11 +789,13 @@ static struct boardobj *boardobjgrp_objgetnext_final( | |||
743 | u8 objmaxidx; | 789 | u8 objmaxidx; |
744 | u8 index; | 790 | u8 index; |
745 | 791 | ||
746 | if (currentindex == NULL) | 792 | if (currentindex == NULL) { |
747 | return NULL; | 793 | return NULL; |
794 | } | ||
748 | 795 | ||
749 | if (pboardobjgrp == NULL) | 796 | if (pboardobjgrp == NULL) { |
750 | return NULL; | 797 | return NULL; |
798 | } | ||
751 | 799 | ||
752 | /* Search from next element unless first object was requested */ | 800 | /* Search from next element unless first object was requested */ |
753 | index = (*currentindex != CTRL_BOARDOBJ_IDX_INVALID) ? | 801 | index = (*currentindex != CTRL_BOARDOBJ_IDX_INVALID) ? |
@@ -759,8 +807,9 @@ static struct boardobj *boardobjgrp_objgetnext_final( | |||
759 | 807 | ||
760 | /* Validate provided mask */ | 808 | /* Validate provided mask */ |
761 | if (mask != NULL) { | 809 | if (mask != NULL) { |
762 | if (!(boardobjgrpmask_sizeeq(pboardobjgrp->mask, mask))) | 810 | if (!(boardobjgrpmask_sizeeq(pboardobjgrp->mask, mask))) { |
763 | return NULL; | 811 | return NULL; |
812 | } | ||
764 | } | 813 | } |
765 | 814 | ||
766 | objmaxidx = pboardobjgrp->objmaxidx; | 815 | objmaxidx = pboardobjgrp->objmaxidx; |
@@ -796,11 +845,13 @@ static u32 boardobjgrp_objremoveanddestroy_final( | |||
796 | 845 | ||
797 | nvgpu_log_info(g, " "); | 846 | nvgpu_log_info(g, " "); |
798 | 847 | ||
799 | if (!boardobjgrp_idxisvalid(pboardobjgrp, index)) | 848 | if (!boardobjgrp_idxisvalid(pboardobjgrp, index)) { |
800 | return -EINVAL; | 849 | return -EINVAL; |
850 | } | ||
801 | 851 | ||
802 | if (pboardobjgrp->objmaxidx == CTRL_BOARDOBJ_IDX_INVALID) | 852 | if (pboardobjgrp->objmaxidx == CTRL_BOARDOBJ_IDX_INVALID) { |
803 | return -EINVAL; | 853 | return -EINVAL; |
854 | } | ||
804 | 855 | ||
805 | status = pboardobjgrp->ppobjects[index]->destruct( | 856 | status = pboardobjgrp->ppobjects[index]->destruct( |
806 | pboardobjgrp->ppobjects[index]); | 857 | pboardobjgrp->ppobjects[index]); |
@@ -811,8 +862,9 @@ static u32 boardobjgrp_objremoveanddestroy_final( | |||
811 | 862 | ||
812 | stat = boardobjgrpmask_bitclr(pboardobjgrp->mask, index); | 863 | stat = boardobjgrpmask_bitclr(pboardobjgrp->mask, index); |
813 | if (stat) { | 864 | if (stat) { |
814 | if (status == 0) | 865 | if (status == 0) { |
815 | status = stat; | 866 | status = stat; |
867 | } | ||
816 | } | 868 | } |
817 | 869 | ||
818 | /* objmaxidx requires update only if that very object was removed */ | 870 | /* objmaxidx requires update only if that very object was removed */ |
diff --git a/drivers/gpu/nvgpu/boardobj/boardobjgrp_e255.c b/drivers/gpu/nvgpu/boardobj/boardobjgrp_e255.c index 1f2cd836..a7da8064 100644 --- a/drivers/gpu/nvgpu/boardobj/boardobjgrp_e255.c +++ b/drivers/gpu/nvgpu/boardobj/boardobjgrp_e255.c | |||
@@ -37,8 +37,9 @@ u32 boardobjgrpconstruct_e255(struct gk20a *g, | |||
37 | 37 | ||
38 | objslots = 255; | 38 | objslots = 255; |
39 | status = boardobjgrpmask_e255_init(&pboardobjgrp_e255->mask, NULL); | 39 | status = boardobjgrpmask_e255_init(&pboardobjgrp_e255->mask, NULL); |
40 | if (status) | 40 | if (status) { |
41 | goto boardobjgrpconstruct_e255_exit; | 41 | goto boardobjgrpconstruct_e255_exit; |
42 | } | ||
42 | 43 | ||
43 | pboardobjgrp_e255->super.type = CTRL_BOARDOBJGRP_TYPE_E255; | 44 | pboardobjgrp_e255->super.type = CTRL_BOARDOBJGRP_TYPE_E255; |
44 | pboardobjgrp_e255->super.ppobjects = pboardobjgrp_e255->objects; | 45 | pboardobjgrp_e255->super.ppobjects = pboardobjgrp_e255->objects; |
@@ -46,8 +47,9 @@ u32 boardobjgrpconstruct_e255(struct gk20a *g, | |||
46 | pboardobjgrp_e255->super.mask = &(pboardobjgrp_e255->mask.super); | 47 | pboardobjgrp_e255->super.mask = &(pboardobjgrp_e255->mask.super); |
47 | 48 | ||
48 | status = boardobjgrp_construct_super(g, &pboardobjgrp_e255->super); | 49 | status = boardobjgrp_construct_super(g, &pboardobjgrp_e255->super); |
49 | if (status) | 50 | if (status) { |
50 | goto boardobjgrpconstruct_e255_exit; | 51 | goto boardobjgrpconstruct_e255_exit; |
52 | } | ||
51 | 53 | ||
52 | pboardobjgrp_e255->super.pmuhdrdatainit = | 54 | pboardobjgrp_e255->super.pmuhdrdatainit = |
53 | boardobjgrp_pmuhdrdatainit_e255; | 55 | boardobjgrp_pmuhdrdatainit_e255; |
@@ -67,11 +69,13 @@ u32 boardobjgrp_pmuhdrdatainit_e255(struct gk20a *g, | |||
67 | 69 | ||
68 | nvgpu_log_info(g, " "); | 70 | nvgpu_log_info(g, " "); |
69 | 71 | ||
70 | if (pboardobjgrp == NULL) | 72 | if (pboardobjgrp == NULL) { |
71 | return -EINVAL; | 73 | return -EINVAL; |
74 | } | ||
72 | 75 | ||
73 | if (pboardobjgrppmu == NULL) | 76 | if (pboardobjgrppmu == NULL) { |
74 | return -EINVAL; | 77 | return -EINVAL; |
78 | } | ||
75 | 79 | ||
76 | status = boardobjgrpmask_export(mask, | 80 | status = boardobjgrpmask_export(mask, |
77 | mask->bitcount, | 81 | mask->bitcount, |
diff --git a/drivers/gpu/nvgpu/boardobj/boardobjgrp_e32.c b/drivers/gpu/nvgpu/boardobj/boardobjgrp_e32.c index 6d4b4520..60e5caf6 100644 --- a/drivers/gpu/nvgpu/boardobj/boardobjgrp_e32.c +++ b/drivers/gpu/nvgpu/boardobj/boardobjgrp_e32.c | |||
@@ -38,8 +38,9 @@ u32 boardobjgrpconstruct_e32(struct gk20a *g, | |||
38 | objslots = 32; | 38 | objslots = 32; |
39 | 39 | ||
40 | status = boardobjgrpmask_e32_init(&pboardobjgrp_e32->mask, NULL); | 40 | status = boardobjgrpmask_e32_init(&pboardobjgrp_e32->mask, NULL); |
41 | if (status) | 41 | if (status) { |
42 | goto boardobjgrpconstruct_e32_exit; | 42 | goto boardobjgrpconstruct_e32_exit; |
43 | } | ||
43 | 44 | ||
44 | pboardobjgrp_e32->super.type = CTRL_BOARDOBJGRP_TYPE_E32; | 45 | pboardobjgrp_e32->super.type = CTRL_BOARDOBJGRP_TYPE_E32; |
45 | pboardobjgrp_e32->super.ppobjects = pboardobjgrp_e32->objects; | 46 | pboardobjgrp_e32->super.ppobjects = pboardobjgrp_e32->objects; |
@@ -47,8 +48,9 @@ u32 boardobjgrpconstruct_e32(struct gk20a *g, | |||
47 | pboardobjgrp_e32->super.mask = &(pboardobjgrp_e32->mask.super); | 48 | pboardobjgrp_e32->super.mask = &(pboardobjgrp_e32->mask.super); |
48 | 49 | ||
49 | status = boardobjgrp_construct_super(g, &pboardobjgrp_e32->super); | 50 | status = boardobjgrp_construct_super(g, &pboardobjgrp_e32->super); |
50 | if (status) | 51 | if (status) { |
51 | goto boardobjgrpconstruct_e32_exit; | 52 | goto boardobjgrpconstruct_e32_exit; |
53 | } | ||
52 | 54 | ||
53 | pboardobjgrp_e32->super.pmuhdrdatainit = boardobjgrp_pmuhdrdatainit_e32; | 55 | pboardobjgrp_e32->super.pmuhdrdatainit = boardobjgrp_pmuhdrdatainit_e32; |
54 | 56 | ||
@@ -67,11 +69,13 @@ u32 boardobjgrp_pmuhdrdatainit_e32(struct gk20a *g, | |||
67 | 69 | ||
68 | nvgpu_log_info(g, " "); | 70 | nvgpu_log_info(g, " "); |
69 | 71 | ||
70 | if (pboardobjgrp == NULL) | 72 | if (pboardobjgrp == NULL) { |
71 | return -EINVAL; | 73 | return -EINVAL; |
74 | } | ||
72 | 75 | ||
73 | if (pboardobjgrppmu == NULL) | 76 | if (pboardobjgrppmu == NULL) { |
74 | return -EINVAL; | 77 | return -EINVAL; |
78 | } | ||
75 | status = boardobjgrpmask_export(mask, | 79 | status = boardobjgrpmask_export(mask, |
76 | mask->bitcount, | 80 | mask->bitcount, |
77 | &pgrpe32->obj_mask.super); | 81 | &pgrpe32->obj_mask.super); |
diff --git a/drivers/gpu/nvgpu/boardobj/boardobjgrpmask.c b/drivers/gpu/nvgpu/boardobj/boardobjgrpmask.c index 849abe16..c3f4f4a5 100644 --- a/drivers/gpu/nvgpu/boardobj/boardobjgrpmask.c +++ b/drivers/gpu/nvgpu/boardobj/boardobjgrpmask.c | |||
@@ -32,11 +32,13 @@ | |||
32 | u32 boardobjgrpmask_init(struct boardobjgrpmask *mask, u8 bitsize, | 32 | u32 boardobjgrpmask_init(struct boardobjgrpmask *mask, u8 bitsize, |
33 | struct ctrl_boardobjgrp_mask *extmask) | 33 | struct ctrl_boardobjgrp_mask *extmask) |
34 | { | 34 | { |
35 | if (mask == NULL) | 35 | if (mask == NULL) { |
36 | return -EINVAL; | 36 | return -EINVAL; |
37 | } | ||
37 | if ((bitsize != CTRL_BOARDOBJGRP_E32_MAX_OBJECTS) && | 38 | if ((bitsize != CTRL_BOARDOBJGRP_E32_MAX_OBJECTS) && |
38 | (bitsize != CTRL_BOARDOBJGRP_E255_MAX_OBJECTS)) | 39 | (bitsize != CTRL_BOARDOBJGRP_E255_MAX_OBJECTS)) { |
39 | return -EINVAL; | 40 | return -EINVAL; |
41 | } | ||
40 | 42 | ||
41 | mask->bitcount = bitsize; | 43 | mask->bitcount = bitsize; |
42 | mask->maskdatacount = CTRL_BOARDOBJGRP_MASK_DATA_SIZE(bitsize); | 44 | mask->maskdatacount = CTRL_BOARDOBJGRP_MASK_DATA_SIZE(bitsize); |
@@ -56,12 +58,15 @@ u32 boardobjgrpmask_import(struct boardobjgrpmask *mask, u8 bitsize, | |||
56 | { | 58 | { |
57 | u8 index; | 59 | u8 index; |
58 | 60 | ||
59 | if (mask == NULL) | 61 | if (mask == NULL) { |
60 | return -EINVAL; | 62 | return -EINVAL; |
61 | if (extmask == NULL) | 63 | } |
64 | if (extmask == NULL) { | ||
62 | return -EINVAL; | 65 | return -EINVAL; |
63 | if (mask->bitcount != bitsize) | 66 | } |
67 | if (mask->bitcount != bitsize) { | ||
64 | return -EINVAL; | 68 | return -EINVAL; |
69 | } | ||
65 | 70 | ||
66 | for (index = 0; index < mask->maskdatacount; index++) { | 71 | for (index = 0; index < mask->maskdatacount; index++) { |
67 | mask->data[index] = extmask->data[index]; | 72 | mask->data[index] = extmask->data[index]; |
@@ -77,12 +82,15 @@ u32 boardobjgrpmask_export(struct boardobjgrpmask *mask, u8 bitsize, | |||
77 | { | 82 | { |
78 | u8 index; | 83 | u8 index; |
79 | 84 | ||
80 | if (mask == NULL) | 85 | if (mask == NULL) { |
81 | return -EINVAL; | 86 | return -EINVAL; |
82 | if (extmask == NULL) | 87 | } |
88 | if (extmask == NULL) { | ||
83 | return -EINVAL; | 89 | return -EINVAL; |
84 | if (mask->bitcount != bitsize) | 90 | } |
91 | if (mask->bitcount != bitsize) { | ||
85 | return -EINVAL; | 92 | return -EINVAL; |
93 | } | ||
86 | 94 | ||
87 | for (index = 0; index < mask->maskdatacount; index++) { | 95 | for (index = 0; index < mask->maskdatacount; index++) { |
88 | extmask->data[index] = mask->data[index]; | 96 | extmask->data[index] = mask->data[index]; |
@@ -95,8 +103,9 @@ u32 boardobjgrpmask_clr(struct boardobjgrpmask *mask) | |||
95 | { | 103 | { |
96 | u8 index; | 104 | u8 index; |
97 | 105 | ||
98 | if (mask == NULL) | 106 | if (mask == NULL) { |
99 | return -EINVAL; | 107 | return -EINVAL; |
108 | } | ||
100 | for (index = 0; index < mask->maskdatacount; index++) { | 109 | for (index = 0; index < mask->maskdatacount; index++) { |
101 | mask->data[index] = 0; | 110 | mask->data[index] = 0; |
102 | } | 111 | } |
@@ -108,8 +117,9 @@ u32 boardobjgrpmask_set(struct boardobjgrpmask *mask) | |||
108 | { | 117 | { |
109 | u8 index; | 118 | u8 index; |
110 | 119 | ||
111 | if (mask == NULL) | 120 | if (mask == NULL) { |
112 | return -EINVAL; | 121 | return -EINVAL; |
122 | } | ||
113 | for (index = 0; index < mask->maskdatacount; index++) { | 123 | for (index = 0; index < mask->maskdatacount; index++) { |
114 | mask->data[index] = 0xFFFFFFFF; | 124 | mask->data[index] = 0xFFFFFFFF; |
115 | } | 125 | } |
@@ -121,8 +131,9 @@ u32 boardobjgrpmask_inv(struct boardobjgrpmask *mask) | |||
121 | { | 131 | { |
122 | u8 index; | 132 | u8 index; |
123 | 133 | ||
124 | if (mask == NULL) | 134 | if (mask == NULL) { |
125 | return -EINVAL; | 135 | return -EINVAL; |
136 | } | ||
126 | for (index = 0; index < mask->maskdatacount; index++) { | 137 | for (index = 0; index < mask->maskdatacount; index++) { |
127 | mask->data[index] = ~mask->data[index]; | 138 | mask->data[index] = ~mask->data[index]; |
128 | } | 139 | } |
@@ -134,11 +145,13 @@ bool boardobjgrpmask_iszero(struct boardobjgrpmask *mask) | |||
134 | { | 145 | { |
135 | u8 index; | 146 | u8 index; |
136 | 147 | ||
137 | if (mask == NULL) | 148 | if (mask == NULL) { |
138 | return true; | 149 | return true; |
150 | } | ||
139 | for (index = 0; index < mask->maskdatacount; index++) { | 151 | for (index = 0; index < mask->maskdatacount; index++) { |
140 | if (mask->data[index] != 0) | 152 | if (mask->data[index] != 0) { |
141 | return false; | 153 | return false; |
154 | } | ||
142 | } | 155 | } |
143 | return true; | 156 | return true; |
144 | } | 157 | } |
@@ -148,8 +161,9 @@ u8 boardobjgrpmask_bitsetcount(struct boardobjgrpmask *mask) | |||
148 | u8 index; | 161 | u8 index; |
149 | u8 result = 0; | 162 | u8 result = 0; |
150 | 163 | ||
151 | if (mask == NULL) | 164 | if (mask == NULL) { |
152 | return result; | 165 | return result; |
166 | } | ||
153 | 167 | ||
154 | for (index = 0; index < mask->maskdatacount; index++) { | 168 | for (index = 0; index < mask->maskdatacount; index++) { |
155 | u32 m = mask->data[index]; | 169 | u32 m = mask->data[index]; |
@@ -166,8 +180,9 @@ u8 boardobjgrpmask_bitidxlowest(struct boardobjgrpmask *mask) | |||
166 | u8 index; | 180 | u8 index; |
167 | u8 result = CTRL_BOARDOBJ_IDX_INVALID; | 181 | u8 result = CTRL_BOARDOBJ_IDX_INVALID; |
168 | 182 | ||
169 | if (mask == NULL) | 183 | if (mask == NULL) { |
170 | return result; | 184 | return result; |
185 | } | ||
171 | 186 | ||
172 | for (index = 0; index < mask->maskdatacount; index++) { | 187 | for (index = 0; index < mask->maskdatacount; index++) { |
173 | u32 m = mask->data[index]; | 188 | u32 m = mask->data[index]; |
@@ -188,8 +203,9 @@ u8 boardobjgrpmask_bitidxhighest(struct boardobjgrpmask *mask) | |||
188 | u8 index; | 203 | u8 index; |
189 | u8 result = CTRL_BOARDOBJ_IDX_INVALID; | 204 | u8 result = CTRL_BOARDOBJ_IDX_INVALID; |
190 | 205 | ||
191 | if (mask == NULL) | 206 | if (mask == NULL) { |
192 | return result; | 207 | return result; |
208 | } | ||
193 | 209 | ||
194 | for (index = 0; index < mask->maskdatacount; index++) { | 210 | for (index = 0; index < mask->maskdatacount; index++) { |
195 | u32 m = mask->data[index]; | 211 | u32 m = mask->data[index]; |
@@ -210,10 +226,12 @@ u32 boardobjgrpmask_bitclr(struct boardobjgrpmask *mask, u8 bitidx) | |||
210 | u8 index; | 226 | u8 index; |
211 | u8 offset; | 227 | u8 offset; |
212 | 228 | ||
213 | if (mask == NULL) | 229 | if (mask == NULL) { |
214 | return -EINVAL; | 230 | return -EINVAL; |
215 | if (bitidx >= mask->bitcount) | 231 | } |
232 | if (bitidx >= mask->bitcount) { | ||
216 | return -EINVAL; | 233 | return -EINVAL; |
234 | } | ||
217 | 235 | ||
218 | index = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX(bitidx); | 236 | index = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX(bitidx); |
219 | offset = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET(bitidx); | 237 | offset = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET(bitidx); |
@@ -228,10 +246,12 @@ u32 boardobjgrpmask_bitset(struct boardobjgrpmask *mask, u8 bitidx) | |||
228 | u8 index; | 246 | u8 index; |
229 | u8 offset; | 247 | u8 offset; |
230 | 248 | ||
231 | if (mask == NULL) | 249 | if (mask == NULL) { |
232 | return -EINVAL; | 250 | return -EINVAL; |
233 | if (bitidx >= mask->bitcount) | 251 | } |
252 | if (bitidx >= mask->bitcount) { | ||
234 | return -EINVAL; | 253 | return -EINVAL; |
254 | } | ||
235 | 255 | ||
236 | index = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX(bitidx); | 256 | index = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX(bitidx); |
237 | offset = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET(bitidx); | 257 | offset = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET(bitidx); |
@@ -246,10 +266,12 @@ u32 boardobjgrpmask_bitinv(struct boardobjgrpmask *mask, u8 bitidx) | |||
246 | u8 index; | 266 | u8 index; |
247 | u8 offset; | 267 | u8 offset; |
248 | 268 | ||
249 | if (mask == NULL) | 269 | if (mask == NULL) { |
250 | return -EINVAL; | 270 | return -EINVAL; |
251 | if (bitidx >= mask->bitcount) | 271 | } |
272 | if (bitidx >= mask->bitcount) { | ||
252 | return -EINVAL; | 273 | return -EINVAL; |
274 | } | ||
253 | 275 | ||
254 | index = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX(bitidx); | 276 | index = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX(bitidx); |
255 | offset = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET(bitidx); | 277 | offset = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET(bitidx); |
@@ -264,10 +286,12 @@ bool boardobjgrpmask_bitget(struct boardobjgrpmask *mask, u8 bitidx) | |||
264 | u8 index; | 286 | u8 index; |
265 | u8 offset; | 287 | u8 offset; |
266 | 288 | ||
267 | if (mask == NULL) | 289 | if (mask == NULL) { |
268 | return false; | 290 | return false; |
269 | if (bitidx >= mask->bitcount) | 291 | } |
292 | if (bitidx >= mask->bitcount) { | ||
270 | return false; | 293 | return false; |
294 | } | ||
271 | 295 | ||
272 | index = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX(bitidx); | 296 | index = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX(bitidx); |
273 | offset = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET(bitidx); | 297 | offset = CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET(bitidx); |
@@ -281,10 +305,12 @@ u32 boardobjgrpmask_and(struct boardobjgrpmask *dst, | |||
281 | { | 305 | { |
282 | u8 index; | 306 | u8 index; |
283 | 307 | ||
284 | if (!boardobjgrpmask_sizeeq(dst, op1)) | 308 | if (!boardobjgrpmask_sizeeq(dst, op1)) { |
285 | return -EINVAL; | 309 | return -EINVAL; |
286 | if (!boardobjgrpmask_sizeeq(dst, op2)) | 310 | } |
311 | if (!boardobjgrpmask_sizeeq(dst, op2)) { | ||
287 | return -EINVAL; | 312 | return -EINVAL; |
313 | } | ||
288 | 314 | ||
289 | for (index = 0; index < dst->maskdatacount; index++) { | 315 | for (index = 0; index < dst->maskdatacount; index++) { |
290 | dst->data[index] = op1->data[index] & op2->data[index]; | 316 | dst->data[index] = op1->data[index] & op2->data[index]; |
@@ -299,10 +325,12 @@ u32 boardobjgrpmask_or(struct boardobjgrpmask *dst, | |||
299 | { | 325 | { |
300 | u8 index; | 326 | u8 index; |
301 | 327 | ||
302 | if (!boardobjgrpmask_sizeeq(dst, op1)) | 328 | if (!boardobjgrpmask_sizeeq(dst, op1)) { |
303 | return -EINVAL; | 329 | return -EINVAL; |
304 | if (!boardobjgrpmask_sizeeq(dst, op2)) | 330 | } |
331 | if (!boardobjgrpmask_sizeeq(dst, op2)) { | ||
305 | return -EINVAL; | 332 | return -EINVAL; |
333 | } | ||
306 | 334 | ||
307 | for (index = 0; index < dst->maskdatacount; index++) { | 335 | for (index = 0; index < dst->maskdatacount; index++) { |
308 | dst->data[index] = op1->data[index] | op2->data[index]; | 336 | dst->data[index] = op1->data[index] | op2->data[index]; |
@@ -317,10 +345,12 @@ u32 boardobjgrpmask_xor(struct boardobjgrpmask *dst, | |||
317 | { | 345 | { |
318 | u8 index; | 346 | u8 index; |
319 | 347 | ||
320 | if (!boardobjgrpmask_sizeeq(dst, op1)) | 348 | if (!boardobjgrpmask_sizeeq(dst, op1)) { |
321 | return -EINVAL; | 349 | return -EINVAL; |
322 | if (!boardobjgrpmask_sizeeq(dst, op2)) | 350 | } |
351 | if (!boardobjgrpmask_sizeeq(dst, op2)) { | ||
323 | return -EINVAL; | 352 | return -EINVAL; |
353 | } | ||
324 | 354 | ||
325 | for (index = 0; index < dst->maskdatacount; index++) { | 355 | for (index = 0; index < dst->maskdatacount; index++) { |
326 | dst->data[index] = op1->data[index] ^ op2->data[index]; | 356 | dst->data[index] = op1->data[index] ^ op2->data[index]; |
@@ -334,8 +364,9 @@ u32 boardobjgrpmask_copy(struct boardobjgrpmask *dst, | |||
334 | { | 364 | { |
335 | u8 index; | 365 | u8 index; |
336 | 366 | ||
337 | if (!boardobjgrpmask_sizeeq(dst, src)) | 367 | if (!boardobjgrpmask_sizeeq(dst, src)) { |
338 | return -EINVAL; | 368 | return -EINVAL; |
369 | } | ||
339 | 370 | ||
340 | for (index = 0; index < dst->maskdatacount; index++) { | 371 | for (index = 0; index < dst->maskdatacount; index++) { |
341 | dst->data[index] = src->data[index]; | 372 | dst->data[index] = src->data[index]; |
@@ -347,10 +378,12 @@ u32 boardobjgrpmask_copy(struct boardobjgrpmask *dst, | |||
347 | bool boardobjgrpmask_sizeeq(struct boardobjgrpmask *op1, | 378 | bool boardobjgrpmask_sizeeq(struct boardobjgrpmask *op1, |
348 | struct boardobjgrpmask *op2) | 379 | struct boardobjgrpmask *op2) |
349 | { | 380 | { |
350 | if (op1 == NULL) | 381 | if (op1 == NULL) { |
351 | return false; | 382 | return false; |
352 | if (op2 == NULL) | 383 | } |
384 | if (op2 == NULL) { | ||
353 | return false; | 385 | return false; |
386 | } | ||
354 | 387 | ||
355 | return op1->bitcount == op2->bitcount; | 388 | return op1->bitcount == op2->bitcount; |
356 | } | 389 | } |
@@ -360,15 +393,17 @@ bool boardobjgrpmask_issubset(struct boardobjgrpmask *op1, | |||
360 | { | 393 | { |
361 | u8 index; | 394 | u8 index; |
362 | 395 | ||
363 | if (!boardobjgrpmask_sizeeq(op2, op1)) | 396 | if (!boardobjgrpmask_sizeeq(op2, op1)) { |
364 | return false; | 397 | return false; |
398 | } | ||
365 | 399 | ||
366 | for (index = 0; index < op1->maskdatacount; index++) { | 400 | for (index = 0; index < op1->maskdatacount; index++) { |
367 | u32 op_1 = op1->data[index]; | 401 | u32 op_1 = op1->data[index]; |
368 | u32 op_2 = op2->data[index]; | 402 | u32 op_2 = op2->data[index]; |
369 | 403 | ||
370 | if ((op_1 & op_2) != op_1) | 404 | if ((op_1 & op_2) != op_1) { |
371 | return false; | 405 | return false; |
406 | } | ||
372 | } | 407 | } |
373 | 408 | ||
374 | return true; | 409 | return true; |