[PATCH umr] Add vbios_version to config data and print out with 'umr -c'

Tom St Denis tom.stdenis at amd.com
Fri Aug 25 14:18:53 UTC 2017


Signed-off-by: Tom St Denis <tom.stdenis at amd.com>
---
 src/app/print_config.c |  8 ++++++--
 src/lib/discover.c     | 23 +++++++++++++++--------
 src/lib/scan_config.c  |  9 +++++++++
 src/umr.h              |  1 +
 4 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/src/app/print_config.c b/src/app/print_config.c
index 051666d52e02..1e481906a3be 100644
--- a/src/app/print_config.c
+++ b/src/app/print_config.c
@@ -100,8 +100,12 @@ void umr_print_config(struct umr_asic *asic)
 {
 	int r, x;
 
-	printf("\tasic.instance == %d\n\n", asic->instance);
-	printf("\tumr.version == %s\n\n", UMR_BUILD_REV);
+	printf("\tasic.instance == %d\n", asic->instance);
+	printf("\tasic.devname == %s\n", asic->options.pci.name);
+
+	printf("\n\tumr.version == %s\n\n", UMR_BUILD_REV);
+
+	printf("\tvbios.version == %s\n\n", asic->config.vbios_version);
 
 	for (r = 0; asic->config.fw[r].name[0]; r++) {
 		printf("\tfw.%s == .feature==%lu .firmware==0x%08lx\n",
diff --git a/src/lib/discover.c b/src/lib/discover.c
index 31ff25b06f9f..dcc212fc39e4 100644
--- a/src/lib/discover.c
+++ b/src/lib/discover.c
@@ -101,7 +101,7 @@ struct umr_asic *umr_discover_asic(struct umr_options *options)
 	unsigned did;
 	struct umr_asic *asic;
 	long trydid = options->forcedid;
-	int busmatch = 0, parsed_did;
+	int busmatch = 0, parsed_did, need_config_scan = 0;
 
 	// Try to map to instance if we have a specific pci device
 	if (options->pci.domain || options->pci.bus ||
@@ -169,13 +169,16 @@ struct umr_asic *umr_discover_asic(struct umr_options *options)
 		if (strstr(name, "dev="))
 			memmove(name, name+4, strlen(name)-3);
 
-		// read the PCI info
-		strcpy(options->pci.name, name);
-		sscanf(name, "%04x:%02x:%02x.%x",
-			&options->pci.domain,
-			&options->pci.bus,
-			&options->pci.slot,
-			&options->pci.func);
+		if (!strlen(options->pci.name)) {
+			// read the PCI info
+			strcpy(options->pci.name, name);
+			sscanf(name, "%04x:%02x:%02x.%x",
+				&options->pci.domain,
+				&options->pci.bus,
+				&options->pci.slot,
+				&options->pci.func);
+			need_config_scan = 1;
+		}
 	}
 
 	if (trydid < 0) {
@@ -321,6 +324,10 @@ struct umr_asic *umr_discover_asic(struct umr_options *options)
 			asic->pci.mem = pcimem_v;
 		}
 	}
+
+	if (need_config_scan)
+		umr_scan_config(asic);
+
 	return asic;
 err_pci:
 	umr_close_asic(asic);
diff --git a/src/lib/scan_config.c b/src/lib/scan_config.c
index 5d2975f33e34..ade2d6e032bf 100644
--- a/src/lib/scan_config.c
+++ b/src/lib/scan_config.c
@@ -87,6 +87,15 @@ int umr_scan_config(struct umr_asic *asic)
 	if (asic->options.no_kernel)
 		return -1;
 
+	// read vbios version
+	snprintf(fname, sizeof(fname)-1, "/sys/bus/pci/devices/%s/vbios_version", asic->options.pci.name);
+	f = fopen(fname, "r");
+	if (f) {
+		fgets(asic->config.vbios_version, sizeof(asic->config.vbios_version)-1, f);
+		asic->config.vbios_version[strlen(asic->config.vbios_version)-1] = 0; // remove newline...
+		fclose(f);
+	}
+
 	/* process FW block */
 	snprintf(fname, sizeof(fname)-1, "/sys/kernel/debug/dri/%d/amdgpu_firmware_info", asic->instance);
 	f = fopen(fname, "r");
diff --git a/src/umr.h b/src/umr.h
index fa89b92a4b8c..b6fe4ee876a7 100644
--- a/src/umr.h
+++ b/src/umr.h
@@ -232,6 +232,7 @@ struct umr_asic {
 		struct umr_gfx_config gfx;
 		struct umr_fw_config fw[UMR_MAX_FW];
 		struct umr_pci_config pci;
+		char vbios_version[128];
 	} config;
 	struct {
 		int mmio,
-- 
2.12.0



More information about the amd-gfx mailing list