edac: ibecc: Refactor error inject code

Refactor code removing duplicated parts.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
This commit is contained in:
Andrei Emeltchenko 2021-12-07 14:07:45 +02:00 committed by Anas Nashif
commit 69ac4b29de

View file

@ -256,7 +256,7 @@ static int check_values(void *p1, void *p2, void *p3)
return 0; return 0;
} }
static void test_ibecc_error_inject_test_cor(void) static void ibecc_error_inject_test(uint64_t addr, uint64_t mask, uint64_t type)
{ {
int ret; int ret;
@ -264,40 +264,30 @@ static void test_ibecc_error_inject_test_cor(void)
zassert_equal(ret, 0, "Error setting notification callback"); zassert_equal(ret, 0, "Error setting notification callback");
/* Test injecting correctable error at address TEST_ADDRESS1 */ /* Test injecting correctable error at address TEST_ADDRESS1 */
test_inject(TEST_ADDRESS1, TEST_ADDRESS_MASK, EDAC_ERROR_TYPE_DRAM_COR); test_inject(addr, mask, type);
#if defined(CONFIG_USERSPACE) #if defined(CONFIG_USERSPACE)
k_thread_user_mode_enter((k_thread_entry_t)check_values, k_thread_user_mode_enter((k_thread_entry_t)check_values,
(void *)TEST_ADDRESS1, (void *)addr,
(void *)EDAC_ERROR_TYPE_DRAM_COR, (void *)type,
NULL); NULL);
#else #else
check_values((void *)TEST_ADDRESS1, (void *)EDAC_ERROR_TYPE_DRAM_COR, check_values((void *)addr, (void *)type, NULL);
NULL);
#endif #endif
} }
static void test_ibecc_error_inject_test_cor(void)
{
ibecc_error_inject_test(TEST_ADDRESS1, TEST_ADDRESS_MASK,
EDAC_ERROR_TYPE_DRAM_COR);
}
static void test_ibecc_error_inject_test_uc(void) static void test_ibecc_error_inject_test_uc(void)
{ {
int ret; ibecc_error_inject_test(TEST_ADDRESS2, TEST_ADDRESS_MASK,
EDAC_ERROR_TYPE_DRAM_UC);
ret = edac_notify_callback_set(dev, callback);
zassert_equal(ret, 0, "Error setting notification callback");
/* Test injecting uncorrectable error at address TEST_ADDRESS2 */
test_inject(TEST_ADDRESS2, TEST_ADDRESS_MASK, EDAC_ERROR_TYPE_DRAM_UC);
#if defined(CONFIG_USERSPACE)
k_thread_user_mode_enter((k_thread_entry_t)check_values,
(void *)TEST_ADDRESS2,
(void *)EDAC_ERROR_TYPE_DRAM_UC,
NULL);
#else
check_values((void *)TEST_ADDRESS2, (void *)EDAC_ERROR_TYPE_DRAM_UC,
NULL);
#endif
} }
#else #else /* CONFIG_EDAC_ERROR_INJECT */
static void test_ibecc_error_inject_test_cor(void) static void test_ibecc_error_inject_test_cor(void)
{ {
ztest_test_skip(); ztest_test_skip();