inject need a real valid address. Signed-off-by: xinhui pan <xinhui.pan@xxxxxxx> --- tests/amdgpu/ras_tests.c | 53 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/tests/amdgpu/ras_tests.c b/tests/amdgpu/ras_tests.c index 612ad1d7..d3f1750d 100644 --- a/tests/amdgpu/ras_tests.c +++ b/tests/amdgpu/ras_tests.c @@ -29,6 +29,7 @@ #include <unistd.h> #include <fcntl.h> #include <stdio.h> +#include <stdlib.h> #include "xf86drm.h" const char *ras_block_string[] = { @@ -452,6 +453,47 @@ static int amdgpu_ras_query_err_count(enum amdgpu_ras_block block, return 0; } +typedef struct ________ras_inject_internal { + amdgpu_bo_handle bo_handle; + amdgpu_va_handle va_handle; + void *cpu; + uint64_t mc; +} amdgpu_ras_handle; + +static int amdgpu_ras_alloc_vram_page(uint64_t *mc_address, void **handle) +{ + amdgpu_ras_handle h; + int r; + + *handle = malloc(sizeof(amdgpu_ras_handle)); + if (!*handle) + return -1; + + r = amdgpu_bo_alloc_and_map(device_handle, 4096, 4096, + AMDGPU_GEM_DOMAIN_VRAM, 0, + &h.bo_handle, &h.cpu, + &h.mc, &h.va_handle); + if (r) { + free(*handle); + return r; + } + + memset(h.cpu, 4096, 0); + memcpy(*handle, &h, sizeof(h)); + *mc_address = h.mc; + + return 0; +} + +static void amdgpu_ras_free_vram_page(void *handle) +{ + amdgpu_ras_handle h = *(amdgpu_ras_handle *)handle; + + free(handle); + + amdgpu_bo_unmap_and_free(h.bo_handle, h.va_handle, h.mc, 4096); +} + //tests static void amdgpu_ras_features_test(int enable) { @@ -508,6 +550,14 @@ static void __amdgpu_ras_inject_test(void) int ret; int i; unsigned long ue, ce, ue_old, ce_old; + uint64_t mc; + void *handle; + + ret = amdgpu_ras_alloc_vram_page(&mc, &handle); + CU_ASSERT_EQUAL(ret, 0); + + if (ret) + return; data.op = 2; for (i = 0; i < AMDGPU_RAS_BLOCK__LAST; i++) { @@ -519,7 +569,7 @@ static void __amdgpu_ras_inject_test(void) .sub_block_index = 0, .name = "", }, - .address = 0, + .address = mc, .value = 0, }; @@ -563,6 +613,7 @@ loop: CU_ASSERT_EQUAL(ue_old + 1, ue); CU_ASSERT_EQUAL(ce_old, ce); } + amdgpu_ras_free_vram_page(handle); } static void amdgpu_ras_inject_test(void) -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx