All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH libdrm 0/4] amdgpu: new approach for ras inject test
@ 2019-08-29  8:59 Guchun Chen
       [not found] ` <20190829085917.20439-1-guchun.chen-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Guchun Chen @ 2019-08-29  8:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Hawking.Zhang-5C7GfCeVMHo, Dennis.Li-5C7GfCeVMHo,
	christian.koenig-5C7GfCeVMHo, alexander.deucher-5C7GfCeVMHo,
	Tao.Zhou1-5C7GfCeVMHo
  Cc: Candice.Li-5C7GfCeVMHo, Guchun Chen

These patches are to remove additional external lib-jsonc
dependence, and to put all test configurations into C code.

Guchun Chen (4):
  amdgpu: remove json package dependence
  amdgpu: delete test configuration file
  amdgpu: add ras inject unit test
  amdgpu: add ras feature capability check in inject test

 configure.ac             |  18 ---
 data/amdgpu_ras.json     | 267 ----------------------------------
 meson.build              |   1 -
 tests/amdgpu/Makefile.am |   5 +-
 tests/amdgpu/meson.build |  16 +-
 tests/amdgpu/ras_tests.c | 305 ++++++++++++++-------------------------
 6 files changed, 116 insertions(+), 496 deletions(-)
 delete mode 100644 data/amdgpu_ras.json

-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH libdrm 1/4] amdgpu: remove json package dependence
       [not found] ` <20190829085917.20439-1-guchun.chen-5C7GfCeVMHo@public.gmane.org>
@ 2019-08-29  8:59   ` Guchun Chen
  2019-08-29  8:59   ` [PATCH libdrm 2/4] amdgpu: delete test configuration file Guchun Chen
                     ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Guchun Chen @ 2019-08-29  8:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Hawking.Zhang-5C7GfCeVMHo, Dennis.Li-5C7GfCeVMHo,
	christian.koenig-5C7GfCeVMHo, alexander.deucher-5C7GfCeVMHo,
	Tao.Zhou1-5C7GfCeVMHo
  Cc: Candice.Li-5C7GfCeVMHo, Guchun Chen

Except CUnit library, no additional external
library should be needed when compiling amdgpu_test.
This will keep this binary self containing.

Change-Id: Id1935ef4431a0674c69391a67813370a3e9348e6
Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Guchun Chen <guchun.chen@amd.com>
---
 configure.ac             |  18 -----
 meson.build              |   1 -
 tests/amdgpu/Makefile.am |   5 +-
 tests/amdgpu/meson.build |  16 +---
 tests/amdgpu/ras_tests.c | 165 +--------------------------------------
 5 files changed, 9 insertions(+), 196 deletions(-)

diff --git a/configure.ac b/configure.ac
index 983b4371..1cf91347 100644
--- a/configure.ac
+++ b/configure.ac
@@ -430,24 +430,10 @@ if test "x$AMDGPU" != xno; then
 			AC_SUBST([CUNIT_CFLAGS])
 		fi
 	fi
-
-	# Detect json-c library
-	PKG_CHECK_MODULES([JSONC], [json-c >= 0.10.1], [have_jsonc=yes], [have_jsonc=no])
-	if test "x${have_jsonc}" = "xno"; then
-		AC_CHECK_LIB([json-c], [json_object_object_get], [have_jsonc=yes], [have_jsonc=no])
-		if test "x${have_jsonc}" = "xyes"; then
-			JSONC_LIBS="-ljson-c"
-			JSONC_CFLAGS=""
-			AC_SUBST([JSONC_LIBS])
-			AC_SUBST([JSONC_CFLAGS])
-		fi
-	fi
 else
 	have_cunit=no
-	have_jsonc=no
 fi
 AM_CONDITIONAL(HAVE_CUNIT, [test "x$have_cunit" != "xno"])
-AM_CONDITIONAL(HAVE_JSONC, [test "x$have_jsonc" != "xno"])
 
 AM_CONDITIONAL(HAVE_AMDGPU, [test "x$AMDGPU" = xyes])
 if test "x$AMDGPU" = xyes; then
@@ -456,10 +442,6 @@ if test "x$AMDGPU" = xyes; then
 	if test "x$have_cunit" = "xno"; then
 		AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests])
 	fi
-
-	if test "x$have_jsonc" = "xno"; then
-		AC_MSG_WARN([Could not find json-c library. Disabling amdgpu tests])
-	fi
 else
 	AC_DEFINE(HAVE_AMDGPU, 0)
 fi
diff --git a/meson.build b/meson.build
index bc5cfc58..e292554a 100644
--- a/meson.build
+++ b/meson.build
@@ -217,7 +217,6 @@ libdrm_c_args = warn_c_args + ['-fvisibility=hidden']
 
 dep_pciaccess = dependency('pciaccess', version : '>= 0.10', required : with_intel)
 dep_cunit = dependency('cunit', version : '>= 2.1', required : false)
-dep_json = dependency('json-c', version : '>= 0.10.1', required : false)
 _cairo_tests = get_option('cairo-tests')
 if _cairo_tests != 'false'
   dep_cairo = dependency('cairo', required : _cairo_tests == 'true')
diff --git a/tests/amdgpu/Makefile.am b/tests/amdgpu/Makefile.am
index 339bb0a9..920882d0 100644
--- a/tests/amdgpu/Makefile.am
+++ b/tests/amdgpu/Makefile.am
@@ -7,8 +7,7 @@ AM_CFLAGS = \
 
 LDADD = $(top_builddir)/libdrm.la \
 	$(top_builddir)/amdgpu/libdrm_amdgpu.la \
-	$(CUNIT_LIBS) \
-	$(JSONC_LIBS)
+	$(CUNIT_LIBS)
 
 if HAVE_INSTALL_TESTS
 bin_PROGRAMS = \
@@ -18,7 +17,7 @@ noinst_PROGRAMS = \
 	amdgpu_test
 endif
 
-amdgpu_test_CPPFLAGS = $(CUNIT_CFLAGS) $(JSONC_CFLAGS)
+amdgpu_test_CPPFLAGS = $(CUNIT_CFLAGS)
 
 amdgpu_test_SOURCES = \
 	amdgpu_test.c \
diff --git a/tests/amdgpu/meson.build b/tests/amdgpu/meson.build
index 4307295e..1726cb43 100644
--- a/tests/amdgpu/meson.build
+++ b/tests/amdgpu/meson.build
@@ -18,7 +18,7 @@
 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 # SOFTWARE.
 
-if dep_cunit.found() and dep_json.found()
+if dep_cunit.found()
   amdgpu_test = executable(
     'amdgpu_test',
     files(
@@ -26,19 +26,9 @@ if dep_cunit.found() and dep_json.found()
       'vce_tests.c', 'uvd_enc_tests.c', 'vcn_tests.c', 'deadlock_tests.c',
       'vm_tests.c', 'ras_tests.c', 'syncobj_tests.c',
     ),
-    dependencies : [dep_cunit, dep_json, dep_threads],
+    dependencies : [dep_cunit, dep_threads],
     include_directories : [inc_root, inc_drm, include_directories('../../amdgpu')],
     link_with : [libdrm, libdrm_amdgpu],
     install : with_install_tests,
   )
-
-  configure_file(input : '../../data/amdgpu_ras.json',
-    output : 'amdgpu_ras.json',
-    configuration : configuration_data())
-
-  install_data(
-    '../../data/amdgpu_ras.json',
-    install_mode : 'rw-r--r--',
-    install_dir : datadir_amdgpu,
-  )
-endif
\ No newline at end of file
+endif
diff --git a/tests/amdgpu/ras_tests.c b/tests/amdgpu/ras_tests.c
index 5309bf64..86b4137b 100644
--- a/tests/amdgpu/ras_tests.c
+++ b/tests/amdgpu/ras_tests.c
@@ -30,7 +30,7 @@
 #include <fcntl.h>
 #include <stdio.h>
 #include "xf86drm.h"
-#include "json.h"
+#include "stdlib.h"
 
 const char *ras_block_string[] = {
 	"umc",
@@ -775,169 +775,12 @@ static void amdgpu_ras_enable_test(void)
 	}
 }
 
-static int _json_get_block_id(json_object *block_obj, const char *name)
-{
-	json_object *item_obj, *index_obj;
-
-	if (!json_object_object_get_ex(block_obj, name, &item_obj))
-		return -1;
-
-	if (!json_object_object_get_ex(item_obj, "index", &index_obj))
-		return -1;
-
-	return json_object_get_int(index_obj);
-}
-
-static int _json_get_subblock_id(json_object *block_obj, const char *block_name,
-				 const char *subblock_name)
-{
-	json_object *item_obj, *subblock_obj, *name_obj;
-
-	if (!json_object_object_get_ex(block_obj, block_name, &item_obj))
-		return -1;
-
-	if (!json_object_object_get_ex(item_obj, "subblock", &subblock_obj))
-		return -1;
-
-	if (!json_object_object_get_ex(subblock_obj, subblock_name, &name_obj))
-		return -1;
-
-	return json_object_get_int(name_obj);
-}
-
 static int amdgpu_ras_get_test_items(struct ras_test_item **pitems, int *size)
 {
-	json_object *root_obj = NULL;
-	json_object *block_obj = NULL;
-	json_object *type_obj = NULL;
-	json_object *tests_obj = NULL;
-	json_object *test_obj = NULL;
-	json_object *tmp_obj = NULL;
-	json_object *tmp_type_obj = NULL;
-	json_object *subblock_obj = NULL;
-	int i, length;
-	struct ras_test_item *items = NULL;
-	int ret = -1;
-
-	root_obj = json_object_from_file("./amdgpu_ras.json");
-	if (!root_obj)
-		root_obj = json_object_from_file(
-			"/usr/share/libdrm/amdgpu_ras.json");
-
-	if (!root_obj) {
-		CU_FAIL_FATAL("Couldn't find amdgpu_ras.json");
-		goto pro_end;
-	}
-
-	/* Check Version */
-	if (!json_object_object_get_ex(root_obj, "version", &tmp_obj)) {
-		CU_FAIL_FATAL("Wrong format of amdgpu_ras.json");
-		goto pro_end;
-	}
+	*pitems = NULL;
+	*size = 0;
 
-	/* Block Definition */
-	if (!json_object_object_get_ex(root_obj, "block", &block_obj)) {
-		fprintf(stderr, "block isn't defined\n");
-		goto pro_end;
-	}
-
-	/* Type Definition */
-	if (!json_object_object_get_ex(root_obj, "type", &type_obj)) {
-		fprintf(stderr, "type isn't defined\n");
-		goto pro_end;
-	}
-
-	/* Enumulate test items */
-	if (!json_object_object_get_ex(root_obj, "tests", &tests_obj)) {
-		fprintf(stderr, "tests are empty\n");
-		goto pro_end;
-	}
-
-	length = json_object_array_length(tests_obj);
-
-	items = malloc(sizeof(struct ras_test_item) * length);
-	if (!items) {
-		fprintf(stderr, "malloc failed\n");
-		goto pro_end;
-	}
-
-	for (i = 0; i < length; i++) {
-		test_obj = json_object_array_get_idx(tests_obj, i);
-
-		/* Name */
-		if (!json_object_object_get_ex(test_obj, "name", &tmp_obj)) {
-			fprintf(stderr, "Test %d has no name\n", i);
-			goto pro_end;
-		}
-		strncpy(items[i].name, json_object_get_string(tmp_obj), 64);
-
-		/* block */
-		if (!json_object_object_get_ex(test_obj, "block", &tmp_obj)) {
-			fprintf(stderr, "Test:%s: block isn't defined\n",
-				items[i].name);
-			goto pro_end;
-		}
-		items[i].block = _json_get_block_id(
-			block_obj, json_object_get_string(tmp_obj));
-
-		/* check block id */
-		if (items[i].block < AMDGPU_RAS_BLOCK__UMC ||
-		    items[i].block >= AMDGPU_RAS_BLOCK__LAST) {
-			fprintf(stderr, "Test:%s: block id %d is invalid\n",
-				items[i].name, items[i].block);
-			goto pro_end;
-		}
-
-		/* subblock */
-		if (json_object_object_get_ex(test_obj, "subblock", &tmp_obj)) {
-			json_object_object_get_ex(test_obj, "block",
-				&subblock_obj);
-
-			items[i].sub_block = _json_get_subblock_id(
-				block_obj,
-				json_object_get_string(subblock_obj),
-				json_object_get_string(tmp_obj));
-			if (items[i].sub_block < 0) {
-				fprintf(stderr, "Test:%s: subblock in block id %d is invalid\n",
-					items[i].name, items[i].block);
-				goto pro_end;
-			}
-		} else
-			items[i].sub_block = 0;
-
-		/* type */
-		if (json_object_object_get_ex(test_obj, "type", &tmp_obj)) {
-			strncpy(items[i].error_type_str,
-				json_object_get_string(tmp_obj), 64);
-
-			if (json_object_object_get_ex(type_obj,
-				json_object_get_string(tmp_obj), &tmp_type_obj))
-				items[i].type = json_object_get_int(tmp_type_obj);
-			else
-				items[i].type = (enum amdgpu_ras_error_type)0;
-		}
-
-		/* address */
-		if (json_object_object_get_ex(test_obj, "address", &tmp_obj))
-			items[i].address = json_object_get_int(tmp_obj);
-		else
-			items[i].address = 0; /* default address 0 */
-
-		/* value */
-		if (json_object_object_get_ex(test_obj, "value", &tmp_obj))
-			items[i].value = json_object_get_int(tmp_obj);
-		else
-			items[i].value = 0; /* default value 0 */
-	}
-
-	*pitems = items;
-	*size = length;
-	ret = 0;
-pro_end:
-	if (root_obj)
-		json_object_put(root_obj);
-
-	return ret;
+	return 0;
 }
 
 static void __amdgpu_ras_inject_test(void)
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH libdrm 2/4] amdgpu: delete test configuration file
       [not found] ` <20190829085917.20439-1-guchun.chen-5C7GfCeVMHo@public.gmane.org>
  2019-08-29  8:59   ` [PATCH libdrm 1/4] amdgpu: remove json package dependence Guchun Chen
@ 2019-08-29  8:59   ` Guchun Chen
  2019-08-29  8:59   ` [PATCH libdrm 3/4] amdgpu: add ras inject unit test Guchun Chen
                     ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Guchun Chen @ 2019-08-29  8:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Hawking.Zhang-5C7GfCeVMHo, Dennis.Li-5C7GfCeVMHo,
	christian.koenig-5C7GfCeVMHo, alexander.deucher-5C7GfCeVMHo,
	Tao.Zhou1-5C7GfCeVMHo
  Cc: Candice.Li-5C7GfCeVMHo, Guchun Chen

Json package dependence is removed from amdgpu_test,
so this json configuration file is not needed any more.

Change-Id: Ibd64c30244c5ae894928d9de5460f1c776408054
Suggested-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Guchun Chen <guchun.chen@amd.com>
---
 data/amdgpu_ras.json | 267 -------------------------------------------
 1 file changed, 267 deletions(-)
 delete mode 100644 data/amdgpu_ras.json

diff --git a/data/amdgpu_ras.json b/data/amdgpu_ras.json
deleted file mode 100644
index 26fd9465..00000000
--- a/data/amdgpu_ras.json
+++ /dev/null
@@ -1,267 +0,0 @@
-{
-    "version": "0.0.1",
-    "block": {
-        "umc": {
-            "index": 0
-        },
-        "gfx": {
-            "index": 2,
-            "subblock": {
-                "gfx_cpc_scratch": 0,
-                "gfx_cpc_ucode": 1,
-                "gfx_dc_state_me1": 2,
-                "gfx_dc_csinvoc_me1": 3,
-                "gfx_dc_restore_me1": 4,
-                "gfx_dc_state_me2": 5,
-                "gfx_dc_csinvoc_me2": 6,
-                "gfx_dc_restore_me2": 7,
-                "gfx_cpf_roq_me2": 8,
-                "gfx_cpf_roq_me1": 9,
-                "gfx_cpf_tag": 10,
-                "gfx_cpg_dma_roq": 11,
-                "gfx_cpg_dma_tag": 12,
-                "gfx_cpg_tag": 13,
-                "gfx_gds_mem": 14,
-                "gfx_gds_input_queue": 15,
-                "gfx_gds_oa_phy_cmd_ram_mem": 16,
-                "gfx_gds_oa_phy_data_ram_mem": 17,
-                "gfx_gds_oa_pipe_mem": 18,
-                "gfx_spi_sr_mem": 19,
-                "gfx_sq_sgpr": 20,
-                "gfx_sq_lds_d": 21,
-                "gfx_sq_lds_i": 22,
-                "gfx_sq_vgpr": 23,
-                "gfx_sqc_inst_utcl1_lfifo": 24,
-                "gfx_sqc_data_cu0_write_data_buf": 25,
-                "gfx_sqc_data_cu0_utcl1_lfifo": 26,
-                "gfx_sqc_data_cu1_write_data_buf": 27,
-                "gfx_sqc_data_cu1_utcl1_lfifo": 28,
-                "gfx_sqc_data_cu2_write_data_buf": 29,
-                "gfx_sqc_data_cu2_utcl1_lfifo": 30,
-                "gfx_sqc_inst_banka_tag_ram": 31,
-                "gfx_sqc_inst_banka_utcl1_miss_fifo": 32,
-                "gfx_sqc_inst_banka_miss_fifo": 33,
-                "gfx_sqc_inst_banka_bank_ram": 34,
-                "gfx_sqc_data_banka_tag_ram": 35,
-                "gfx_sqc_data_banka_hit_fifo": 36,
-                "gfx_sqc_data_banka_miss_fifo": 37,
-                "gfx_sqc_data_banka_dirty_bit_ram": 38,
-                "gfx_sqc_data_banka_bank_ram": 39,
-                "gfx_sqc_inst_bankb_tag_ram": 40,
-                "gfx_sqc_inst_bankb_utcl1_miss_fifo": 41,
-                "gfx_sqc_inst_bankb_miss_fifo": 42,
-                "gfx_sqc_inst_bankb_bank_ram": 43,
-                "gfx_sqc_data_bankb_tag_ram": 44,
-                "gfx_sqc_data_bankb_hit_fifo": 45,
-                "gfx_sqc_data_bankb_miss_fifo": 46,
-                "gfx_sqc_data_bankb_dirty_bit_ram": 47,
-                "gfx_sqc_data_bankb_bank_ram": 48,
-                "gfx_ta_fs_dfifo": 49,
-                "gfx_ta_fs_afifo": 50,
-                "gfx_ta_fl_lfifo": 51,
-                "gfx_ta_fx_lfifo": 52,
-                "gfx_ta_fs_cfifo": 53,
-                "gfx_tca_hole_fifo": 54,
-                "gfx_tca_req_fifo": 55,
-                "gfx_tcc_cache_data": 56,
-                "gfx_tcc_cache_data_bank_0_1": 57,
-                "gfx_tcc_cache_data_bank_1_0": 58,
-                "gfx_tcc_cache_data_bank_1_1": 59,
-                "gfx_tcc_cache_dirty_bank_0": 60,
-                "gfx_tcc_cache_dirty_bank_1": 61,
-                "gfx_tcc_high_rate_tag": 62,
-                "gfx_tcc_low_rate_tag": 63,
-                "gfx_tcc_in_use_dec": 64,
-                "gfx_tcc_in_use_transfer": 65,
-                "gfx_tcc_return_data": 66,
-                "gfx_tcc_return_control": 67,
-                "gfx_tcc_uc_atomic_fifo": 68,
-                "gfx_tcc_write_return": 69,
-                "gfx_tcc_write_cache_read": 70,
-                "gfx_tcc_src_fifo": 71,
-                "gfx_tcc_src_fifo_next_ram": 72,
-                "gfx_tcc_cache_tag_probe_fifo": 73,
-                "gfx_tcc_latency_fifo": 74,
-                "gfx_tcc_latency_fifo_next_ram": 75,
-                "gfx_tcc_wrret_tag_write_return": 76,
-                "gfx_tcc_atomic_return_buffer": 77,
-                "gfx_tci_write_ram": 78,
-                "gfx_tcp_cache_ram": 79,
-                "gfx_tcp_lfifo_ram": 80,
-                "gfx_tcp_cmd_fifo": 81,
-                "gfx_tcp_vm_fifo": 82,
-                "gfx_tcp_db_ram": 83,
-                "gfx_tcp_utcl1_lfifo0": 84,
-                "gfx_tcp_utcl1_lfifo1": 85,
-                "gfx_td_ss_fifo_lo": 86,
-                "gfx_td_ss_fifo_hi": 87,
-                "gfx_td_cs_fifo": 88,
-                "gfx_ea_dramrd_cmdmem": 89,
-                "gfx_ea_dramwr_cmdmem": 90,
-                "gfx_ea_dramwr_datamem": 91,
-                "gfx_ea_rret_tagmem": 92,
-                "gfx_ea_wret_tagmem": 93,
-                "gfx_ea_gmird_cmdmem": 94,
-                "gfx_ea_gmiwr_cmdmem": 95,
-                "gfx_ea_gmiwr_datamem": 96,
-                "gfx_ea_dramrd_pagemem": 97,
-                "gfx_ea_dramwr_pagemem": 98,
-                "gfx_ea_iord_cmdmem": 99,
-                "gfx_ea_iowr_cmdmem": 100,
-                "gfx_ea_iowr_datamem": 101,
-                "gfx_ea_gmird_pagemem": 102,
-                "gfx_ea_gmiwr_pagemem": 103,
-                "gfx_ea_mam_d0mem": 104,
-                "gfx_ea_mam_d1mem": 105,
-                "gfx_ea_mam_d2mem": 106,
-                "gfx_ea_mam_d3mem": 107,
-                "utc_vml2_bank_cache": 108,
-                "utc_vml2_walker": 109,
-                "utc_atcl2_cache_2m_bank": 110,
-                "utc_atcl2_cache_4k_bank": 111
-            }
-        },
-    },
-    "type": {
-        "parity": 1,
-        "single_correctable": 2,
-        "multi_uncorrectable": 4,
-        "poison": 8
-    },
-    "tests": [
-        {
-            "name": "ras_umc.1.0",
-            "block": "umc",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_umc.1.0",
-            "block": "umc",
-            "type": "multi_uncorrectable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.1",
-            "block": "gfx",
-            "subblock": "gfx_cpc_ucode",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.10",
-            "block": "gfx",
-            "subblock": "gfx_cpf_tag",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.13",
-            "block": "gfx",
-            "subblock": "gfx_cpg_tag",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.21",
-            "block": "gfx",
-            "subblock": "gfx_sq_lds_d",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.28",
-            "block": "gfx",
-            "subblock": "gfx_sqc_data_cu1_utcl1_lfifo",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.31",
-            "block": "gfx",
-            "subblock": "gfx_sqc_inst_banka_tag_ram",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.40",
-            "block": "gfx",
-            "subblock": "gfx_sqc_inst_bankb_tag_ram",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.49",
-            "block": "gfx",
-            "subblock": "gfx_ta_fs_dfifo",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.56",
-            "block": "gfx",
-            "subblock": "gfx_tcc_cache_data",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.57",
-            "block": "gfx",
-            "subblock": "gfx_tcc_cache_data_bank_0_1",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.58",
-            "block": "gfx",
-            "subblock": "gfx_tcc_cache_data_bank_1_0",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.59",
-            "block": "gfx",
-            "subblock": "gfx_tcc_cache_data_bank_1_1",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.79",
-            "block": "gfx",
-            "subblock": "gfx_tcp_cache_ram",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.86",
-            "block": "gfx",
-            "subblock": "gfx_td_ss_fifo_lo",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-        {
-            "name": "ras_gfx.2.89",
-            "block": "gfx",
-            "subblock": "gfx_ea_dramrd_cmdmem",
-            "type": "single_correctable",
-            "address": 0,
-            "value": 0
-        },
-    ]
-}
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH libdrm 3/4] amdgpu: add ras inject unit test
       [not found] ` <20190829085917.20439-1-guchun.chen-5C7GfCeVMHo@public.gmane.org>
  2019-08-29  8:59   ` [PATCH libdrm 1/4] amdgpu: remove json package dependence Guchun Chen
  2019-08-29  8:59   ` [PATCH libdrm 2/4] amdgpu: delete test configuration file Guchun Chen
@ 2019-08-29  8:59   ` Guchun Chen
  2019-08-29  8:59   ` [PATCH libdrm 4/4] amdgpu: add ras feature capability check in inject test Guchun Chen
                     ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Guchun Chen @ 2019-08-29  8:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Hawking.Zhang-5C7GfCeVMHo, Dennis.Li-5C7GfCeVMHo,
	christian.koenig-5C7GfCeVMHo, alexander.deucher-5C7GfCeVMHo,
	Tao.Zhou1-5C7GfCeVMHo
  Cc: Candice.Li-5C7GfCeVMHo, Guchun Chen

Both UMC and GFX ras single_correctable
inject tests are added.

Change-Id: I46c29b8761294122fc9acb620441a7aace6509e4
Signed-off-by: Guchun Chen <guchun.chen@amd.com>
---
 tests/amdgpu/ras_tests.c | 144 +++++++++++++++++++++++++++++----------
 1 file changed, 107 insertions(+), 37 deletions(-)

diff --git a/tests/amdgpu/ras_tests.c b/tests/amdgpu/ras_tests.c
index 86b4137b..d510b644 100644
--- a/tests/amdgpu/ras_tests.c
+++ b/tests/amdgpu/ras_tests.c
@@ -30,7 +30,8 @@
 #include <fcntl.h>
 #include <stdio.h>
 #include "xf86drm.h"
-#include "stdlib.h"
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
 
 const char *ras_block_string[] = {
 	"umc",
@@ -311,11 +312,10 @@ enum amdgpu_ras_error_type {
 	AMDGPU_RAS_ERROR__POISON				= 8,
 };
 
-struct ras_test_item {
+struct ras_inject_test_config {
 	char name[64];
-	int block;
+	char block[32];
 	int sub_block;
-	char error_type_str[64];
 	enum amdgpu_ras_error_type type;
 	uint64_t address;
 	uint64_t value;
@@ -390,12 +390,78 @@ struct ras_DID_test_mask{
 	DEFAULT_RAS_BLOCK_MASK_BASIC\
 }
 
+static const struct ras_inject_test_config umc_ras_inject_test[] = {
+	{"ras_umc.1.0", "umc", 0, AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+};
+
+static const struct ras_inject_test_config gfx_ras_inject_test[] = {
+	{"ras_gfx.2.0", "gfx", AMDGPU_RAS_BLOCK__GFX_CPC_UCODE,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.1", "gfx", AMDGPU_RAS_BLOCK__GFX_CPF_TAG,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.2", "gfx", AMDGPU_RAS_BLOCK__GFX_CPG_TAG,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.3", "gfx", AMDGPU_RAS_BLOCK__GFX_SQ_LDS_D,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.4", "gfx", AMDGPU_RAS_BLOCK__GFX_SQC_DATA_CU1_UTCL1_LFIFO,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.5", "gfx", AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKA_TAG_RAM,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.6", "gfx", AMDGPU_RAS_BLOCK__GFX_SQC_INST_BANKB_TAG_RAM,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.7", "gfx", AMDGPU_RAS_BLOCK__GFX_TA_FS_DFIFO,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.8", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.9", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_0_1,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.10", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_1_0,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.11", "gfx", AMDGPU_RAS_BLOCK__GFX_TCC_CACHE_DATA_BANK_1_1,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.12", "gfx", AMDGPU_RAS_BLOCK__GFX_TCP_CACHE_RAM,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.13", "gfx", AMDGPU_RAS_BLOCK__GFX_TD_SS_FIFO_LO,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+	{"ras_gfx.2.14", "gfx", AMDGPU_RAS_BLOCK__GFX_EA_DRAMRD_CMDMEM,
+		AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE, 0, 0},
+};
+
 static const struct ras_DID_test_mask ras_DID_array[] = {
 	{0x66a1, 0x00, RAS_BLOCK_MASK_ALL},
 	{0x66a1, 0x01, RAS_BLOCK_MASK_ALL},
 	{0x66a1, 0x04, RAS_BLOCK_MASK_ALL},
 };
 
+static uint32_t amdgpu_ras_find_block_id_by_name(const char *name)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(ras_block_string); i++) {
+		if (strcmp(name, ras_block_string[i]) == 0)
+			return i;
+	}
+
+	return ARRAY_SIZE(ras_block_string);
+}
+
+static char *amdgpu_ras_get_error_type_id(enum amdgpu_ras_error_type type)
+{
+	switch (type) {
+	case AMDGPU_RAS_ERROR__PARITY:
+		return "parity";
+	case AMDGPU_RAS_ERROR__SINGLE_CORRECTABLE:
+		return "single_correctable";
+	case AMDGPU_RAS_ERROR__MULTI_UNCORRECTABLE:
+		return "multi_uncorrectable";
+	case AMDGPU_RAS_ERROR__POISON:
+		return "poison";
+	case AMDGPU_RAS_ERROR__NONE:
+	default:
+		return NULL;
+	}
+}
+
 static struct ras_test_mask amdgpu_ras_get_test_mask(drmDevicePtr device)
 {
 	int i;
@@ -775,43 +841,36 @@ static void amdgpu_ras_enable_test(void)
 	}
 }
 
-static int amdgpu_ras_get_test_items(struct ras_test_item **pitems, int *size)
+static void __amdgpu_ras_ip_inject_test(const struct ras_inject_test_config *ip_test,
+					uint32_t size)
 {
-	*pitems = NULL;
-	*size = 0;
-
-	return 0;
-}
-
-static void __amdgpu_ras_inject_test(void)
-{
-	struct ras_test_item *items = NULL;
-	int i, size;
-	int ret;
+	int i, ret;
 	unsigned long old_ue, old_ce;
 	unsigned long ue, ce;
+	uint32_t block;
 	int timeout;
 	bool pass;
 
-	ret = amdgpu_ras_get_test_items(&items, &size);
-	CU_ASSERT_EQUAL(ret, 0);
-	if (ret)
-		goto mem_free;
-
-	printf("...\n");
 	for (i = 0; i < size; i++) {
 		timeout = 3;
 		pass = false;
 
-		ret = amdgpu_ras_query_err_count(items[i].block, &old_ue,
-						 &old_ce);
+		block = amdgpu_ras_find_block_id_by_name(ip_test[i].block);
+
+		/* Ensure one valid ip block */
+		if (block == ARRAY_SIZE(ras_block_string))
+			break;
+
+		ret = amdgpu_ras_query_err_count(block, &old_ue, &old_ce);
 		CU_ASSERT_EQUAL(ret, 0);
 		if (ret)
 			break;
 
-		ret = amdgpu_ras_inject(items[i].block, items[i].sub_block,
-					items[i].type, items[i].address,
-					items[i].value);
+		ret = amdgpu_ras_inject(block,
+					ip_test[i].sub_block,
+					ip_test[i].type,
+					ip_test[i].address,
+					ip_test[i].value);
 		CU_ASSERT_EQUAL(ret, 0);
 		if (ret)
 			break;
@@ -819,8 +878,7 @@ static void __amdgpu_ras_inject_test(void)
 		while (timeout > 0) {
 			sleep(5);
 
-			ret = amdgpu_ras_query_err_count(items[i].block, &ue,
-							 &ce);
+			ret = amdgpu_ras_query_err_count(block, &ue, &ce);
 			CU_ASSERT_EQUAL(ret, 0);
 			if (ret)
 				break;
@@ -832,16 +890,28 @@ static void __amdgpu_ras_inject_test(void)
 			}
 			timeout -= 1;
 		}
-		printf("\t Test %s@%s, address %ld, value %ld: %s\n",
-			items[i].name, items[i].error_type_str, items[i].address,
-			items[i].value,	pass ? "Pass" : "Fail");
+		printf("\t Test %s@block %s, subblock %d, error_type %s, address %ld, value %ld: %s\n",
+			ip_test[i].name,
+			ip_test[i].block,
+			ip_test[i].sub_block,
+			amdgpu_ras_get_error_type_id(ip_test[i].type),
+			ip_test[i].address,
+			ip_test[i].value,
+			pass ? "Pass" : "Fail");
 	}
+}
 
-mem_free:
-	if (items) {
-		free(items);
-		items = NULL;
-	}
+static void __amdgpu_ras_inject_test(void)
+{
+	printf("...\n");
+
+	/* run UMC ras inject test */
+	__amdgpu_ras_ip_inject_test(umc_ras_inject_test,
+		ARRAY_SIZE(umc_ras_inject_test));
+
+	/* run GFX ras inject test */
+	__amdgpu_ras_ip_inject_test(gfx_ras_inject_test,
+		ARRAY_SIZE(gfx_ras_inject_test));
 }
 
 static void amdgpu_ras_inject_test(void)
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH libdrm 4/4] amdgpu: add ras feature capability check in inject test
       [not found] ` <20190829085917.20439-1-guchun.chen-5C7GfCeVMHo@public.gmane.org>
                     ` (2 preceding siblings ...)
  2019-08-29  8:59   ` [PATCH libdrm 3/4] amdgpu: add ras inject unit test Guchun Chen
@ 2019-08-29  8:59   ` Guchun Chen
  2019-08-29  9:03   ` [PATCH libdrm 0/4] amdgpu: new approach for ras " Christian König
  2019-08-29  9:26   ` Zhou1, Tao
  5 siblings, 0 replies; 7+ messages in thread
From: Guchun Chen @ 2019-08-29  8:59 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Hawking.Zhang-5C7GfCeVMHo, Dennis.Li-5C7GfCeVMHo,
	christian.koenig-5C7GfCeVMHo, alexander.deucher-5C7GfCeVMHo,
	Tao.Zhou1-5C7GfCeVMHo
  Cc: Candice.Li-5C7GfCeVMHo, Guchun Chen

When running ras inject test, it's needed to be aligned
with kernel's ras enablement.

Change-Id: I7e69a1a3f6ab7a0053f67f7f1dd3fb9af64f478f
Signed-off-by: Guchun Chen <guchun.chen@amd.com>
---
 tests/amdgpu/ras_tests.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tests/amdgpu/ras_tests.c b/tests/amdgpu/ras_tests.c
index d510b644..c1c543c1 100644
--- a/tests/amdgpu/ras_tests.c
+++ b/tests/amdgpu/ras_tests.c
@@ -861,6 +861,10 @@ static void __amdgpu_ras_ip_inject_test(const struct ras_inject_test_config *ip_
 		if (block == ARRAY_SIZE(ras_block_string))
 			break;
 
+		/* Ensure RAS feature for the IP block is enabled by kernel */
+		if (amdgpu_ras_is_feature_supported(block) <= 0)
+			break;
+
 		ret = amdgpu_ras_query_err_count(block, &old_ue, &old_ce);
 		CU_ASSERT_EQUAL(ret, 0);
 		if (ret)
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH libdrm 0/4] amdgpu: new approach for ras inject test
       [not found] ` <20190829085917.20439-1-guchun.chen-5C7GfCeVMHo@public.gmane.org>
                     ` (3 preceding siblings ...)
  2019-08-29  8:59   ` [PATCH libdrm 4/4] amdgpu: add ras feature capability check in inject test Guchun Chen
@ 2019-08-29  9:03   ` Christian König
  2019-08-29  9:26   ` Zhou1, Tao
  5 siblings, 0 replies; 7+ messages in thread
From: Christian König @ 2019-08-29  9:03 UTC (permalink / raw)
  To: Guchun Chen, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
	Hawking.Zhang-5C7GfCeVMHo, Dennis.Li-5C7GfCeVMHo,
	christian.koenig-5C7GfCeVMHo, alexander.deucher-5C7GfCeVMHo,
	Tao.Zhou1-5C7GfCeVMHo
  Cc: Candice.Li-5C7GfCeVMHo

Only skimmed over the patches, but in general looks good to me.

Feel free to add an Acked-by: Christian König <christian.koenig@amd.com> 
to the whole series.

But somebody with more ras knowledge than I have should probably take a 
look as well.

Christian.

Am 29.08.19 um 10:59 schrieb Guchun Chen:
> These patches are to remove additional external lib-jsonc
> dependence, and to put all test configurations into C code.
>
> Guchun Chen (4):
>    amdgpu: remove json package dependence
>    amdgpu: delete test configuration file
>    amdgpu: add ras inject unit test
>    amdgpu: add ras feature capability check in inject test
>
>   configure.ac             |  18 ---
>   data/amdgpu_ras.json     | 267 ----------------------------------
>   meson.build              |   1 -
>   tests/amdgpu/Makefile.am |   5 +-
>   tests/amdgpu/meson.build |  16 +-
>   tests/amdgpu/ras_tests.c | 305 ++++++++++++++-------------------------
>   6 files changed, 116 insertions(+), 496 deletions(-)
>   delete mode 100644 data/amdgpu_ras.json
>

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [PATCH libdrm 0/4] amdgpu: new approach for ras inject test
       [not found] ` <20190829085917.20439-1-guchun.chen-5C7GfCeVMHo@public.gmane.org>
                     ` (4 preceding siblings ...)
  2019-08-29  9:03   ` [PATCH libdrm 0/4] amdgpu: new approach for ras " Christian König
@ 2019-08-29  9:26   ` Zhou1, Tao
  5 siblings, 0 replies; 7+ messages in thread
From: Zhou1, Tao @ 2019-08-29  9:26 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org,
	Zhang, Hawking, Li, Dennis, Koenig, Christian, Deucher, Alexander
  Cc: Li, Candice, Chen, Guchun

The series is:

Reviewed-by: Tao Zhou <tao.zhou1@amd.com>

> -----Original Message-----
> From: Guchun Chen <guchun.chen@amd.com>
> Sent: 2019年8月29日 16:59
> To: amd-gfx@lists.freedesktop.org; Zhang, Hawking
> <Hawking.Zhang@amd.com>; Li, Dennis <Dennis.Li@amd.com>; Koenig,
> Christian <Christian.Koenig@amd.com>; Deucher, Alexander
> <Alexander.Deucher@amd.com>; Zhou1, Tao <Tao.Zhou1@amd.com>
> Cc: Li, Candice <Candice.Li@amd.com>; Chen, Guchun
> <Guchun.Chen@amd.com>
> Subject: [PATCH libdrm 0/4] amdgpu: new approach for ras inject test
> 
> These patches are to remove additional external lib-jsonc dependence, and
> to put all test configurations into C code.
> 
> Guchun Chen (4):
>   amdgpu: remove json package dependence
>   amdgpu: delete test configuration file
>   amdgpu: add ras inject unit test
>   amdgpu: add ras feature capability check in inject test
> 
>  configure.ac             |  18 ---
>  data/amdgpu_ras.json     | 267 ----------------------------------
>  meson.build              |   1 -
>  tests/amdgpu/Makefile.am |   5 +-
>  tests/amdgpu/meson.build |  16 +-
>  tests/amdgpu/ras_tests.c | 305 ++++++++++++++-------------------------
>  6 files changed, 116 insertions(+), 496 deletions(-)  delete mode 100644
> data/amdgpu_ras.json
> 
> --
> 2.17.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-08-29  9:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-08-29  8:59 [PATCH libdrm 0/4] amdgpu: new approach for ras inject test Guchun Chen
     [not found] ` <20190829085917.20439-1-guchun.chen-5C7GfCeVMHo@public.gmane.org>
2019-08-29  8:59   ` [PATCH libdrm 1/4] amdgpu: remove json package dependence Guchun Chen
2019-08-29  8:59   ` [PATCH libdrm 2/4] amdgpu: delete test configuration file Guchun Chen
2019-08-29  8:59   ` [PATCH libdrm 3/4] amdgpu: add ras inject unit test Guchun Chen
2019-08-29  8:59   ` [PATCH libdrm 4/4] amdgpu: add ras feature capability check in inject test Guchun Chen
2019-08-29  9:03   ` [PATCH libdrm 0/4] amdgpu: new approach for ras " Christian König
2019-08-29  9:26   ` Zhou1, Tao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.