gpu: nvgpu: unit: fix mutex acquire fail for l4t

In hal.mm.mmu_fault UT, some tests are dependent on each other. Reset
environment variables at the end of test_gv11b_mm_mmu_fault_setup_sw(),
Modify test_gv11b_mm_mmu_fault_setup_hw() to avoid destroying mmu_fault
setup for branch coverage.

Jira NVGPU-4987

Change-Id: I2e6904cb5304285123a29c24d00bd4dcd035e0ff
Signed-off-by: Vedashree Vidwans <vvidwans@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2306652
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: Philip Elcan <pelcan@nvidia.com>
Reviewed-by: Alex Waterman <alexw@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
GVS: Gerrit_Virtual_Submit
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Vedashree Vidwans
2020-03-03 20:48:31 -08:00
committed by Alex Waterman
parent dc32307c13
commit ad227d9c31

View File

@@ -263,34 +263,38 @@ done:
f_mmu_fault_setup_sw[branch]); f_mmu_fault_setup_sw[branch]);
} }
nvgpu_posix_enable_fault_injection(l_dma_fi, false, 0); nvgpu_posix_enable_fault_injection(l_dma_fi, false, 0);
err = gv11b_mm_mmu_fault_setup_sw(g);
if (err != 0) {
unit_return_fail(m, "mmu_fault_setup_sw failed");
}
return ret; return ret;
} }
static void stub_fb_fault_buf_configure_hw(struct gk20a *g, u32 index) static void stub_fb_fault_buf_configure_hw(struct gk20a *g, u32 index)
{ {
count = global_count++; count = global_count;
} }
int test_gv11b_mm_mmu_fault_setup_hw(struct unit_module *m, struct gk20a *g, int test_gv11b_mm_mmu_fault_setup_hw(struct unit_module *m, struct gk20a *g,
void *args) void *args)
{ {
int ret = UNIT_FAIL; int ret = UNIT_FAIL;
int err; enum nvgpu_aperture fb_aperture_orig = APERTURE_INVALID;
global_count = 0U; global_count = 0U;
count = 1U;
g->ops.fb.fault_buf_configure_hw = stub_fb_fault_buf_configure_hw; g->ops.fb.fault_buf_configure_hw = stub_fb_fault_buf_configure_hw;
err = gv11b_mm_mmu_fault_setup_sw(g); gv11b_mm_mmu_fault_setup_hw(g);
unit_assert(err == 0, goto done); unit_assert(count == global_count, goto done);
global_count++;
fb_aperture_orig = g->mm.hw_fault_buf[NVGPU_MMU_FAULT_NONREPLAY_INDX].aperture;
g->mm.hw_fault_buf[NVGPU_MMU_FAULT_NONREPLAY_INDX].aperture = APERTURE_INVALID;
gv11b_mm_mmu_fault_setup_hw(g); gv11b_mm_mmu_fault_setup_hw(g);
unit_assert(count == global_count - 1U, goto done); unit_assert(count != global_count, goto done);
gv11b_mm_mmu_fault_info_mem_destroy(g);
gv11b_mm_mmu_fault_setup_hw(g);
unit_assert(count == global_count - 1U, goto done);
ret = UNIT_SUCCESS; ret = UNIT_SUCCESS;
@@ -298,6 +302,7 @@ done:
if (ret != UNIT_SUCCESS) { if (ret != UNIT_SUCCESS) {
unit_err(m, "%s failed\n", __func__); unit_err(m, "%s failed\n", __func__);
} }
g->mm.hw_fault_buf[NVGPU_MMU_FAULT_NONREPLAY_INDX].aperture = fb_aperture_orig;
return ret; return ret;
} }
@@ -329,6 +334,7 @@ int test_gv11b_mm_mmu_fault_disable_hw(struct unit_module *m, struct gk20a *g,
struct gpu_ops gops = g->ops; struct gpu_ops gops = g->ops;
global_count = 0U; global_count = 0U;
count = 1U;
g->ops.fb.is_fault_buf_enabled = stub_fb_is_fault_buf_enabled; g->ops.fb.is_fault_buf_enabled = stub_fb_is_fault_buf_enabled;
g->ops.fb.fault_buf_set_state_hw = stub_fb_fault_buf_set_state_hw; g->ops.fb.fault_buf_set_state_hw = stub_fb_fault_buf_set_state_hw;