mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-25 11:04:51 +03:00
gpu: nvgpu: fix zbc MISRA 10.1 violations
The gr_gk20a_add_zbc() routine returns a signed error (errno) status value. Current callers of this function use a bitwise OR to collect the returned error status values to generate a single value to return. Bitwise OR on signed status values is flagged as a violation of MISRA Rule 10.1 (not to mention that in this case it potentially results in a garbage return value). To eliminate such violations this change modifies the following routines to fail immediately on the first error from a call to gr_gk20a_add_zbc(): * gr_gk20a_load_zbc_default_table() * gr_gv11b_load_stencil_default_tbl() JIRA NVGPU-650 Change-Id: If733c1bb0e05943ff5d0355de729133c89233583 Signed-off-by: Scott Long <scottl@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1805501 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
cded55940e
commit
bc6625b9b2
@@ -3985,7 +3985,8 @@ static int gr_gk20a_load_zbc_table(struct gk20a *g, struct gr_gk20a *gr)
|
||||
int gr_gk20a_load_zbc_default_table(struct gk20a *g, struct gr_gk20a *gr)
|
||||
{
|
||||
struct zbc_entry zbc_val;
|
||||
u32 i, err;
|
||||
u32 i;
|
||||
int err;
|
||||
|
||||
nvgpu_mutex_init(&gr->zbc_lock);
|
||||
|
||||
@@ -4001,6 +4002,9 @@ int gr_gk20a_load_zbc_default_table(struct gk20a *g, struct gr_gk20a *gr)
|
||||
zbc_val.color_l2[0] = 0xff000000;
|
||||
zbc_val.color_ds[3] = 0x3f800000;
|
||||
err = gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
if (err != 0) {
|
||||
goto color_fail;
|
||||
}
|
||||
|
||||
/* Transparent black = (fmt 1 = zero) */
|
||||
zbc_val.format = gr_ds_zbc_color_fmt_val_zero_v();
|
||||
@@ -4008,7 +4012,10 @@ int gr_gk20a_load_zbc_default_table(struct gk20a *g, struct gr_gk20a *gr)
|
||||
zbc_val.color_ds[i] = 0;
|
||||
zbc_val.color_l2[i] = 0;
|
||||
}
|
||||
err |= gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
err = gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
if (err != 0) {
|
||||
goto color_fail;
|
||||
}
|
||||
|
||||
/* Opaque white (i.e. solid white) = (fmt 2 = uniform 1) */
|
||||
zbc_val.format = gr_ds_zbc_color_fmt_val_unorm_one_v();
|
||||
@@ -4016,42 +4023,47 @@ int gr_gk20a_load_zbc_default_table(struct gk20a *g, struct gr_gk20a *gr)
|
||||
zbc_val.color_ds[i] = 0x3f800000;
|
||||
zbc_val.color_l2[i] = 0xffffffff;
|
||||
}
|
||||
err |= gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
|
||||
if (!err)
|
||||
gr->max_default_color_index = 3;
|
||||
else {
|
||||
nvgpu_err(g,
|
||||
"fail to load default zbc color table");
|
||||
return err;
|
||||
err = gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
if (err != 0) {
|
||||
goto color_fail;
|
||||
}
|
||||
|
||||
gr->max_default_color_index = 3;
|
||||
|
||||
/* load default depth table */
|
||||
zbc_val.type = GK20A_ZBC_TYPE_DEPTH;
|
||||
|
||||
zbc_val.format = gr_ds_zbc_z_fmt_val_fp32_v();
|
||||
zbc_val.depth = 0x3f800000;
|
||||
err = gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
if (err != 0) {
|
||||
goto depth_fail;
|
||||
}
|
||||
|
||||
zbc_val.format = gr_ds_zbc_z_fmt_val_fp32_v();
|
||||
zbc_val.depth = 0;
|
||||
err |= gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
|
||||
if (!err)
|
||||
gr->max_default_depth_index = 2;
|
||||
else {
|
||||
nvgpu_err(g,
|
||||
"fail to load default zbc depth table");
|
||||
return err;
|
||||
err = gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
if (err != 0) {
|
||||
goto depth_fail;
|
||||
}
|
||||
|
||||
gr->max_default_depth_index = 2;
|
||||
|
||||
if (g->ops.gr.load_zbc_s_default_tbl) {
|
||||
err = g->ops.gr.load_zbc_s_default_tbl(g, gr);
|
||||
if (err)
|
||||
if (err != 0) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
color_fail:
|
||||
nvgpu_err(g, "fail to load default zbc color table");
|
||||
return err;
|
||||
depth_fail:
|
||||
nvgpu_err(g, "fail to load default zbc depth table");
|
||||
return err;
|
||||
}
|
||||
|
||||
int _gk20a_gr_zbc_set_table(struct gk20a *g, struct gr_gk20a *gr,
|
||||
|
||||
@@ -1121,7 +1121,7 @@ int gr_gv11b_load_stencil_default_tbl(struct gk20a *g,
|
||||
struct gr_gk20a *gr)
|
||||
{
|
||||
struct zbc_entry zbc_val;
|
||||
u32 err;
|
||||
int err;
|
||||
|
||||
/* load default stencil table */
|
||||
zbc_val.type = GV11B_ZBC_TYPE_STENCIL;
|
||||
@@ -1129,23 +1129,30 @@ int gr_gv11b_load_stencil_default_tbl(struct gk20a *g,
|
||||
zbc_val.depth = 0x0;
|
||||
zbc_val.format = ZBC_STENCIL_CLEAR_FMT_U8;
|
||||
err = gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
|
||||
if (err != 0) {
|
||||
goto fail;
|
||||
}
|
||||
zbc_val.depth = 0x1;
|
||||
zbc_val.format = ZBC_STENCIL_CLEAR_FMT_U8;
|
||||
err |= gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
err = gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
if (err != 0) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
zbc_val.depth = 0xff;
|
||||
zbc_val.format = ZBC_STENCIL_CLEAR_FMT_U8;
|
||||
err |= gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
|
||||
if (!err) {
|
||||
gr->max_default_s_index = 3;
|
||||
} else {
|
||||
nvgpu_err(g, "fail to load default zbc stencil table");
|
||||
return err;
|
||||
err = gr_gk20a_add_zbc(g, gr, &zbc_val);
|
||||
if (err != 0) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
gr->max_default_s_index = 3;
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
nvgpu_err(g, "fail to load default zbc stencil table");
|
||||
return err;
|
||||
}
|
||||
|
||||
int gr_gv11b_load_stencil_tbl(struct gk20a *g, struct gr_gk20a *gr)
|
||||
|
||||
Reference in New Issue
Block a user