gpu: nvgpu: Mark read_ptimer() HAL as NON_FUSA

Remove read_ptimer() API from safety build as GPU_GET_TIME DEVCTL got
removed. This functionality is entirely implemented inside nvrm_gpu.
Remove related unit-tests.

JIRA NVGPU-4922

Change-Id: I3c1d2e16ddf170d4f08d6bf4826ee683ea0d9e19
Signed-off-by: Tejal Kudav <tkudav@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2608654
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com>
Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com>
Reviewed-by: Vijayakumar Subbu <vsubbu@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:
Tejal Kudav
2021-10-11 11:19:15 +00:00
committed by mobile promotions
parent 69ffeeaa26
commit 6a1fd53b54
15 changed files with 14 additions and 116 deletions

View File

@@ -1004,7 +1004,6 @@ test_set_ppriv_timeout_settings.priv_ring_set_ppriv_timeout_settings=0
test_free_env.ptimer_free_env=0
test_ptimer_isr.ptimer_isr=0
test_ptimer_scaling.ptimer_scaling=0
test_read_ptimer.ptimer_read_ptimer=0
test_setup_env.ptimer_setup_env=0
[ramin_gk20a_fusa]

View File

@@ -87,7 +87,6 @@ int test_setup_env(struct unit_module *m,
struct gk20a *g, void *args)
{
/* Setup HAL */
g->ops.ptimer.read_ptimer = gk20a_read_ptimer;
g->ops.ptimer.isr = gk20a_ptimer_isr;
g->ops.cic_mon.init = gv11b_cic_mon_init;
@@ -126,68 +125,6 @@ int test_free_env(struct unit_module *m,
return UNIT_SUCCESS;
}
int test_read_ptimer(struct unit_module *m,
struct gk20a *g, void *args)
{
int ret = UNIT_SUCCESS;
u32 timer0; /* low bits */
u32 timer1; /* high bits */
u64 time;
int err; /* return from API */
/* Standard, successful, easy case where there's no wrap */
timer0 = 1;
timer1 = 2;
nvgpu_posix_io_writel_reg_space(g, timer_time_0_r(), timer0);
timer1_index = 0;
timer1_values[timer1_index] = timer1;
timer1_values[timer1_index + 1] = timer1;
err = g->ops.ptimer.read_ptimer(g, &time);
if ((err != 0) || (time != ((u64)timer1 << 32 | timer0))) {
unit_err(m, "ptimer read_timer failed simple test, err=%d, time=0x%016llx\n",
err, time);
ret = UNIT_FAIL;
}
/* Wrap timer1 once */
timer0 = 1;
nvgpu_posix_io_writel_reg_space(g, timer_time_0_r(), timer0);
timer1 = 3;
timer1_index = 0;
timer1_values[timer1_index] = timer1 + 1;
timer1_values[timer1_index + 1] = timer1;
timer1_values[timer1_index + 2] = timer1;
timer1_values[timer1_index + 3] = timer1 - 1;
err = g->ops.ptimer.read_ptimer(g, &time);
if ((err != 0) || (time != ((u64)timer1 << 32 | timer0))) {
unit_err(m, "ptimer read_timer failed single wrap test, err=%d, time=0x%016llx\n",
err, time);
ret = UNIT_FAIL;
}
/* Wrap timer1 every time to timeout */
timer0 = 1;
nvgpu_posix_io_writel_reg_space(g, timer_time_0_r(), timer0);
timer1_index = 0;
timer1_values[timer1_index] = 4;
timer1_values[timer1_index + 1] = 3;
timer1_values[timer1_index + 2] = 2;
timer1_values[timer1_index + 3] = 1;
err = g->ops.ptimer.read_ptimer(g, &time);
if (err == 0) {
unit_err(m, "ptimer read_timer failed multiple wrap test\n");
ret = UNIT_FAIL;
}
/* branch testing */
err = g->ops.ptimer.read_ptimer(g, NULL);
if (err == 0) {
unit_err(m, "ptimer read_timer failed branch test\n");
ret = UNIT_FAIL;
}
return ret;
}
static u32 received_error_code;
static void mock_decode_error_code(struct gk20a *g, u32 error_code)
@@ -315,7 +252,6 @@ int test_ptimer_scaling(struct unit_module *m,
struct unit_module_test ptimer_tests[] = {
UNIT_TEST(ptimer_setup_env, test_setup_env, NULL, 0),
UNIT_TEST(ptimer_read_ptimer, test_read_ptimer, NULL, 0),
UNIT_TEST(ptimer_isr, test_ptimer_isr, NULL, 0),
UNIT_TEST(ptimer_scaling, test_ptimer_scaling, NULL, 0),
UNIT_TEST(ptimer_free_env, test_free_env, NULL, 0),

View File

@@ -71,44 +71,6 @@ int test_setup_env(struct unit_module *m,
int test_free_env(struct unit_module *m,
struct gk20a *g, void *args);
/**
* Test specification for: test_read_ptimer
*
* Description: Verify the read_ptimer API.
*
* Test Type: Feature Based
*
* Targets: gops_ptimer.read_ptimer, gk20a_read_ptimer
*
* Input: None
*
* Steps:
* - Test case where the ptimer time values do not wrap.
* - Write values to ptimer regs timer_time_0 and timer_time_1 in mockio
* register space.
* - Call read_timer API.
* - Verify the expected value is returned.
* - Test case where ptimer time values wrap once.
* - Configure mockio so that the timer_time_1 register reads a different
* value after the 1st read, but is consistent after 2nd read.
* - Call read_timer API.
* - Verify the expected value is returned.
* - Test case where ptimer time values wrap once.
* - Configure mockio so that the timer_time_1 register reads a different
* value for up to 4 reads.
* - Call read_timer API.
* - Verify API returns an error.
* - Test parameter checking of the API
* - Call read_timer API with a NULL pointer for the time parameter.
* - Verify API returns an error.
*
* Output:
* - UNIT_FAIL if encounters an error creating reg space
* - UNIT_SUCCESS otherwise
*/
int test_read_ptimer(struct unit_module *m,
struct gk20a *g, void *args);
/**
* Test specification for: test_ptimer_isr
*