All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Gu, JiaWei (Will)" <JiaWei.Gu@amd.com>
To: "amd-gfx@lists.freedesktop.org" <amd-gfx@lists.freedesktop.org>
Cc: "Deucher, Alexander" <Alexander.Deucher@amd.com>
Subject: Re: [PATCH] drm/amdgpu: Add vbios info ioctl interface
Date: Thu, 22 Apr 2021 13:09:41 +0000	[thread overview]
Message-ID: <BE86C24E-8E22-47C8-B737-E7F58F8B9326@amd.com> (raw)
In-Reply-To: <20210422023448.24689-1-Jiawei.Gu@amd.com>

[-- Attachment #1: Type: text/plain, Size: 11132 bytes --]


UMR patch which calls this new IOCTL attached.

Best regards,
Jiawei

> On Apr 22, 2021, at 10:34, Jiawei Gu <JiaWei.Gu@amd.com> wrote:
> 
> Add AMDGPU_INFO_VBIOS_INFO subquery id for detailed vbios info.
> 
> Signed-off-by: Jiawei Gu <Jiawei.Gu@amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c    |  19 +++
> drivers/gpu/drm/amd/amdgpu/atom.c          | 158 +++++++++++++++++++++
> drivers/gpu/drm/amd/amdgpu/atom.h          |  11 ++
> drivers/gpu/drm/amd/include/atomfirmware.h |  16 ++-
> include/uapi/drm/amdgpu_drm.h              |  15 ++
> 5 files changed, 213 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> index 39ee88d29cca..a20b016b05ab 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
> @@ -861,6 +861,25 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
> 					    min((size_t)size, (size_t)(bios_size - bios_offset)))
> 					? -EFAULT : 0;
> 		}
> +		case AMDGPU_INFO_VBIOS_INFO: {
> +			struct drm_amdgpu_info_vbios vbios_info = {};
> +			struct atom_context *atom_context;
> +
> +			atom_context = adev->mode_info.atom_context;
> +			memcpy(vbios_info.name, atom_context->name, sizeof(atom_context->name));
> +			vbios_info.dbdf = PCI_DEVID(adev->pdev->bus->number, adev->pdev->devfn);
> +			memcpy(vbios_info.vbios_pn, atom_context->vbios_pn, sizeof(atom_context->vbios_pn));
> +			vbios_info.version = atom_context->version;
> +			memcpy(vbios_info.date, atom_context->date, sizeof(atom_context->date));
> +			memcpy(vbios_info.serial, adev->serial, sizeof(adev->serial));
> +			vbios_info.dev_id = adev->pdev->device;
> +			vbios_info.rev_id = adev->pdev->revision;
> +			vbios_info.sub_dev_id = atom_context->sub_dev_id;
> +			vbios_info.sub_ved_id = atom_context->sub_ved_id;
> +
> +			return copy_to_user(out, &vbios_info,
> +						min((size_t)size, sizeof(vbios_info))) ? -EFAULT : 0;
> +		}
> 		default:
> 			DRM_DEBUG_KMS("Invalid request %d\n",
> 					info->vbios_info.type);
> diff --git a/drivers/gpu/drm/amd/amdgpu/atom.c b/drivers/gpu/drm/amd/amdgpu/atom.c
> index 3dcb8b32f48b..0e2f0ea13b40 100644
> --- a/drivers/gpu/drm/amd/amdgpu/atom.c
> +++ b/drivers/gpu/drm/amd/amdgpu/atom.c
> @@ -31,6 +31,7 @@
> 
> #define ATOM_DEBUG
> 
> +#include "atomfirmware.h"
> #include "atom.h"
> #include "atom-names.h"
> #include "atom-bits.h"
> @@ -1299,12 +1300,153 @@ static void atom_index_iio(struct atom_context *ctx, int base)
> 	}
> }
> 
> +static void atom_get_vbios_name(struct atom_context *ctx)
> +{
> +	unsigned char *p_rom;
> +	unsigned char str_num;
> +	unsigned short off_to_vbios_str;
> +	unsigned char *c_ptr;
> +	int name_size;
> +	int i;
> +
> +	const char *na = "--N/A--";
> +	char *back;
> +
> +	p_rom = ctx->bios;
> +
> +	str_num = *(p_rom + OFFSET_TO_GET_ATOMBIOS_NUMBER_OF_STRINGS);
> +	if (str_num != 0) {
> +		off_to_vbios_str =
> +			*(unsigned short *)(p_rom + OFFSET_TO_GET_ATOMBIOS_STRING_START);
> +
> +		c_ptr = (unsigned char *)(p_rom + off_to_vbios_str);
> +	} else {
> +		/* do not know where to find name */
> +		memcpy(ctx->name, na, 7);
> +		ctx->name[7] = 0;
> +		return;
> +	}
> +
> +	/*
> +	 * skip the atombios strings, usually 4
> +	 * 1st is P/N, 2nd is ASIC, 3rd is PCI type, 4th is Memory type
> +	 */
> +	for (i = 0; i < str_num; i++) {
> +		while (*c_ptr != 0)
> +			c_ptr++;
> +		c_ptr++;
> +	}
> +
> +	/* skip the following 2 chars: 0x0D 0x0A */
> +	c_ptr += 2;
> +
> +	name_size = strnlen(c_ptr, STRLEN_LONG - 1);
> +	memcpy(ctx->name, c_ptr, name_size);
> +	back = ctx->name + name_size;
> +	while ((*--back) == ' ')
> +		;
> +	*(back + 1) = '\0';
> +}
> +
> +static void atom_get_vbios_date(struct atom_context *ctx)
> +{
> +	unsigned char *p_rom;
> +	unsigned char *date_in_rom;
> +
> +	p_rom = ctx->bios;
> +
> +	date_in_rom = p_rom + OFFSET_TO_VBIOS_DATE;
> +
> +	ctx->date[0] = '2';
> +	ctx->date[1] = '0';
> +	ctx->date[2] = date_in_rom[6];
> +	ctx->date[3] = date_in_rom[7];
> +	ctx->date[4] = '/';
> +	ctx->date[5] = date_in_rom[0];
> +	ctx->date[6] = date_in_rom[1];
> +	ctx->date[7] = '/';
> +	ctx->date[8] = date_in_rom[3];
> +	ctx->date[9] = date_in_rom[4];
> +	ctx->date[10] = ' ';
> +	ctx->date[11] = date_in_rom[9];
> +	ctx->date[12] = date_in_rom[10];
> +	ctx->date[13] = date_in_rom[11];
> +	ctx->date[14] = date_in_rom[12];
> +	ctx->date[15] = date_in_rom[13];
> +	ctx->date[16] = '\0';
> +}
> +
> +static unsigned char *atom_find_str_in_rom(struct atom_context *ctx, char *str, int start,
> +					   int end, int maxlen)
> +{
> +	unsigned long str_off;
> +	unsigned char *p_rom;
> +	unsigned short str_len;
> +
> +	str_off = 0;
> +	str_len = strnlen(str, maxlen);
> +	p_rom = ctx->bios;
> +
> +	for (; start <= end; ++start) {
> +		for (str_off = 0; str_off < str_len; ++str_off) {
> +			if (str[str_off] != *(p_rom + start + str_off))
> +				break;
> +		}
> +
> +		if (str_off == str_len || str[str_off] == 0)
> +			return p_rom + start;
> +	}
> +	return NULL;
> +}
> +
> +static void atom_get_vbios_pn(struct atom_context *ctx)
> +{
> +	unsigned char *p_rom;
> +	unsigned short off_to_vbios_str;
> +	unsigned char *vbios_str;
> +	int count;
> +
> +	off_to_vbios_str = 0;
> +	p_rom = ctx->bios;
> +
> +	if (*(p_rom + OFFSET_TO_GET_ATOMBIOS_NUMBER_OF_STRINGS) != 0) {
> +		off_to_vbios_str =
> +			*(unsigned short *)(p_rom + OFFSET_TO_GET_ATOMBIOS_STRING_START);
> +
> +		vbios_str = (unsigned char *)(p_rom + off_to_vbios_str);
> +	} else {
> +		vbios_str = p_rom + OFFSET_TO_VBIOS_PART_NUMBER;
> +	}
> +
> +	if (*vbios_str == 0) {
> +		vbios_str = atom_find_str_in_rom(ctx, BIOS_ATOM_PREFIX, 3, 1024, 64);
> +		if (vbios_str == NULL)
> +			vbios_str += sizeof(BIOS_ATOM_PREFIX) - 1;
> +	}
> +	if (vbios_str != NULL && *vbios_str == 0)
> +		vbios_str++;
> +
> +	if (vbios_str != NULL) {
> +		count = 0;
> +		while ((count < BIOS_STRING_LENGTH) && vbios_str[count] >= ' ' &&
> +		       vbios_str[count] <= 'z') {
> +			ctx->vbios_pn[count] = vbios_str[count];
> +			count++;
> +		}
> +
> +		ctx->vbios_pn[count] = 0;
> +	}
> +}
> +
> struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios)
> {
> 	int base;
> 	struct atom_context *ctx =
> 	    kzalloc(sizeof(struct atom_context), GFP_KERNEL);
> 	char *str;
> +	struct _ATOM_ROM_HEADER *atom_rom_header;
> +	struct _ATOM_MASTER_DATA_TABLE *master_table;
> +	struct _ATOM_FIRMWARE_INFO *atom_fw_info;
> 	u16 idx;
> 
> 	if (!ctx)
> @@ -1353,6 +1495,22 @@ struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios)
> 		strlcpy(ctx->vbios_version, str, sizeof(ctx->vbios_version));
> 	}
> 
> +	atom_rom_header = (struct _ATOM_ROM_HEADER *)CSTR(base);
> +	ctx->sub_dev_id = atom_rom_header->usSubsystemVendorID;
> +	ctx->sub_ved_id = atom_rom_header->usSubsystemID;
> +	if (atom_rom_header->usMasterDataTableOffset != 0) {
> +		master_table = (struct _ATOM_MASTER_DATA_TABLE *)
> +				CSTR(atom_rom_header->usMasterDataTableOffset);
> +		if (master_table->ListOfDataTables.FirmwareInfo != 0) {
> +			atom_fw_info = (struct _ATOM_FIRMWARE_INFO *)
> +					CSTR(master_table->ListOfDataTables.FirmwareInfo);
> +			ctx->version = atom_fw_info->ulFirmwareRevision;
> +		}
> +	}
> +
> +	atom_get_vbios_name(ctx);
> +	atom_get_vbios_pn(ctx);
> +	atom_get_vbios_date(ctx);
> 
> 	return ctx;
> }
> diff --git a/drivers/gpu/drm/amd/amdgpu/atom.h b/drivers/gpu/drm/amd/amdgpu/atom.h
> index d279759cab47..c729f7ceba4f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/atom.h
> +++ b/drivers/gpu/drm/amd/amdgpu/atom.h
> @@ -112,6 +112,10 @@ struct drm_device;
> #define ATOM_IO_SYSIO		2
> #define ATOM_IO_IIO		0x80
> 
> +#define STRLEN_NORMAL		32
> +#define STRLEN_LONG		64
> +#define STRLEN_VERYLONG		254
> +
> struct card_info {
> 	struct drm_device *dev;
> 	void (* reg_write)(struct card_info *, uint32_t, uint32_t);   /*  filled by driver */
> @@ -140,6 +144,13 @@ struct atom_context {
> 	uint32_t *scratch;
> 	int scratch_size_bytes;
> 	char vbios_version[20];
> +
> +	uint8_t name[STRLEN_LONG];
> +	uint8_t vbios_pn[STRLEN_LONG];
> +	uint32_t version;
> +	uint8_t date[STRLEN_NORMAL];
> +	uint32_t sub_dev_id;
> +	uint32_t sub_ved_id;
> };
> 
> extern int amdgpu_atom_debug;
> diff --git a/drivers/gpu/drm/amd/include/atomfirmware.h b/drivers/gpu/drm/amd/include/atomfirmware.h
> index c77ed38c20fb..3a8e404099b0 100644
> --- a/drivers/gpu/drm/amd/include/atomfirmware.h
> +++ b/drivers/gpu/drm/amd/include/atomfirmware.h
> @@ -197,6 +197,8 @@ enum atom_dp_vs_preemph_def{
>   DP_VS_LEVEL0_PREEMPH_LEVEL3 = 0x18,
> };
> 
> +#define BIOS_ATOM_PREFIX   "ATOMBIOS"
> +#define BIOS_STRING_LENGTH 43
> 
> /*
> enum atom_string_def{
> @@ -209,12 +211,14 @@ atom_bios_string          = "ATOM"
> #pragma pack(1)                          /* BIOS data must use byte aligment*/
> 
> enum atombios_image_offset{
> -OFFSET_TO_ATOM_ROM_HEADER_POINTER          =0x00000048,
> -OFFSET_TO_ATOM_ROM_IMAGE_SIZE              =0x00000002,
> -OFFSET_TO_ATOMBIOS_ASIC_BUS_MEM_TYPE       =0x94,
> -MAXSIZE_OF_ATOMBIOS_ASIC_BUS_MEM_TYPE      =20,  /*including the terminator 0x0!*/
> -OFFSET_TO_GET_ATOMBIOS_NUMBER_OF_STRINGS   =0x2f,
> -OFFSET_TO_GET_ATOMBIOS_STRING_START        =0x6e,
> +  OFFSET_TO_ATOM_ROM_HEADER_POINTER          = 0x00000048,
> +  OFFSET_TO_ATOM_ROM_IMAGE_SIZE              = 0x00000002,
> +  OFFSET_TO_ATOMBIOS_ASIC_BUS_MEM_TYPE       = 0x94,
> +  MAXSIZE_OF_ATOMBIOS_ASIC_BUS_MEM_TYPE      = 20,  /*including the terminator 0x0!*/
> +  OFFSET_TO_GET_ATOMBIOS_NUMBER_OF_STRINGS   = 0x2f,
> +  OFFSET_TO_GET_ATOMBIOS_STRING_START        = 0x6e,
> +  OFFSET_TO_VBIOS_PART_NUMBER                = 0x80,
> +  OFFSET_TO_VBIOS_DATE                       = 0x50,
> };
> 
> /****************************************************************************   
> diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h
> index 8b832f7458f2..77980445d486 100644
> --- a/include/uapi/drm/amdgpu_drm.h
> +++ b/include/uapi/drm/amdgpu_drm.h
> @@ -758,6 +758,8 @@ struct drm_amdgpu_cs_chunk_data {
> 	#define AMDGPU_INFO_VBIOS_SIZE		0x1
> 	/* Subquery id: Query vbios image */
> 	#define AMDGPU_INFO_VBIOS_IMAGE		0x2
> +	/* Subquery id: Query vbios info */
> +	#define AMDGPU_INFO_VBIOS_INFO		0x3
> /* Query UVD handles */
> #define AMDGPU_INFO_NUM_HANDLES			0x1C
> /* Query sensor related information */
> @@ -951,6 +953,19 @@ struct drm_amdgpu_info_firmware {
> 	__u32 feature;
> };
> 
> +struct drm_amdgpu_info_vbios {
> +	__u8 name[64];
> +	__u32 dbdf;
> +	__u8 vbios_pn[64];
> +	__u32 version;
> +	__u8 date[32];
> +	__u8 serial[16];
> +	__u32 dev_id;
> +	__u32 rev_id;
> +	__u32 sub_dev_id;
> +	__u32 sub_ved_id;
> +};
> +
> #define AMDGPU_VRAM_TYPE_UNKNOWN 0
> #define AMDGPU_VRAM_TYPE_GDDR1 1
> #define AMDGPU_VRAM_TYPE_DDR2  2
> -- 
> 2.17.1
> 


[-- Attachment #2: [v2][umr]add-vbios-info-query.patch --]
[-- Type: application/octet-stream, Size: 6968 bytes --]

From ca5f9c21869317ac8c8df752b8c8e17d15ebb803 Mon Sep 17 00:00:00 2001
From: Jiawei Gu <Jiawei.Gu@amd.com>
Date: Tue, 20 Apr 2021 16:39:42 +0800
Subject: [PATCH] add vbios info query

Signed-off-by: Jiawei Gu <Jiawei.Gu@amd.com>
---
 src/app/CMakeLists.txt             |  1 +
 src/app/main.c                     |  8 +++++
 src/app/vbios.c                    | 58 ++++++++++++++++++++++++++++++
 src/lib/lowlevel/linux/query_drm.c | 11 ++++++
 src/umr.h                          | 15 ++++++++
 src/umrapp.h                       |  1 +
 6 files changed, 94 insertions(+)
 create mode 100644 src/app/vbios.c

diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt
index ca7d46b..462e4fc 100644
--- a/src/app/CMakeLists.txt
+++ b/src/app/CMakeLists.txt
@@ -35,6 +35,7 @@ add_library(umrapp STATIC
   pp_table.c
   navi10_ppt.c
   read_metrics.c
+  vbios.c
   ${GUI_SOURCE}
 )
 
diff --git a/src/app/main.c b/src/app/main.c
index 5692f6a..86c4d67 100644
--- a/src/app/main.c
+++ b/src/app/main.c
@@ -825,6 +825,11 @@ int main(int argc, char **argv)
 				asic = get_asic();
 			ih_self_test(asic);
 #endif
+		} else if (!strcmp(argv[i], "--vbios_info") || !strcmp(argv[i], "-vi")) {
+			if (!asic)
+				asic = get_asic();
+			if (umr_print_vbios_info(asic) != 0)
+				fprintf(stderr, "[ERROR]: Cannot print vbios info.\n");
 		} else if (!strcmp(argv[i], "--help") || !strcmp(argv[i], "-h")) {
 			printf("User Mode Register debugger v%s for AMDGPU devices (build: %s [%s]), Copyright (c) 2021, AMD Inc.\n"
 "\n*** Device Selection ***\n"
@@ -951,6 +956,9 @@ printf(
 	"\n\t\tPrint the GPU metrics table for the device."
 "\n\t--power, -p \n\t\tRead the conetent of clocks, temperature, gpu loading at runtime"
 	"\n\t\toptions 'use_colour' to colourize output \n");
+printf(
+"\n*** Video BIOS Information ***\n"
+"\n\t--vbios_info, -vi \n\t\tPrint Video BIOS information\n");
 
 #if UMR_GUI
 printf(
diff --git a/src/app/vbios.c b/src/app/vbios.c
new file mode 100644
index 0000000..b2e65e4
--- /dev/null
+++ b/src/app/vbios.c
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2021 Advanced Micro Devices, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors: Tom St Denis <tom.stdenis@amd.com>
+ *
+ */
+#include "umrapp.h"
+
+#define AMDGPU_INFO_VBIOS			0x1B
+#define AMDGPU_INFO_VBIOS_INFO			0x3
+int umr_print_vbios_info(struct umr_asic *asic)
+{
+	char fname[64];
+	int r;
+	struct umr_vbios_info vbios_info;
+
+	if (asic->fd.drm < 0) {
+		snprintf(fname, sizeof(fname)-1, "/dev/dri/card%d", asic->instance);
+		asic->fd.drm = open(fname, O_RDWR);
+	}
+
+	r = umr_query_drm_vbios(asic, AMDGPU_INFO_VBIOS, AMDGPU_INFO_VBIOS_INFO,
+			&vbios_info, sizeof(vbios_info));
+	if (r)
+		return r;
+
+	printf("vbios name          : %s\n", vbios_info.name);
+	printf("vbios dbdf          : 0x%x\n", vbios_info.dbdf);
+	printf("vbios pn            : %s\n", vbios_info.vbios_pn);
+	printf("vbios version       : %d\n", vbios_info.version);
+	printf("vbios date          : %s\n", vbios_info.date);
+	printf("vbios serial        : %s\n", vbios_info.serial);
+	printf("vbios dev_id        : 0x%x\n", vbios_info.dev_id);
+	printf("vbios rev_id        : 0x%x\n", vbios_info.rev_id);
+	printf("vbios sub_dev_id    : 0x%x\n", vbios_info.sub_dev_id);
+	printf("vbios sub_ved_id    : 0x%x\n", vbios_info.sub_ved_id);
+
+	close(asic->fd.drm);
+	return 0;
+}
\ No newline at end of file
diff --git a/src/lib/lowlevel/linux/query_drm.c b/src/lib/lowlevel/linux/query_drm.c
index d0c82d4..f4ab709 100644
--- a/src/lib/lowlevel/linux/query_drm.c
+++ b/src/lib/lowlevel/linux/query_drm.c
@@ -49,7 +49,18 @@ int umr_query_drm(struct umr_asic *asic, int field, void *ret, int size)
 	inf.return_size = size;
 	inf.query = field;
 	return ioctl(asic->fd.drm, DRM_IOC(DRM_IOC_WRITE, DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_AMDGPU_INFO, sizeof(inf)), &inf);
+}
 
+int umr_query_drm_vbios(struct umr_asic *asic, int field, int type, void *ret, int size)
+{
+	struct drm_amdgpu_info inf;
+
+	memset(&inf, 0, sizeof inf);
+	inf.return_pointer = (uintptr_t)ret;
+	inf.return_size = size;
+	inf.query = field;
+	inf.vbios_info.type = type;
+	return ioctl(asic->fd.drm, DRM_IOC(DRM_IOC_WRITE, DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_AMDGPU_INFO, sizeof(inf)), &inf);
 }
 
 #else
diff --git a/src/umr.h b/src/umr.h
index 026f466..625f93e 100644
--- a/src/umr.h
+++ b/src/umr.h
@@ -973,6 +973,7 @@ void umr_free_asic(struct umr_asic *asic);
 void umr_free_maps(struct umr_asic *asic);
 void umr_close_asic(struct umr_asic *asic); // call this to close a fully open asic
 int umr_query_drm(struct umr_asic *asic, int field, void *ret, int size);
+int umr_query_drm_vbios(struct umr_asic *asic, int field, int type, void *ret, int size);
 void umr_enumerate_devices(void);
 int umr_update(struct umr_asic *asic, char *script);
 int umr_update_string(struct umr_asic *asic, char *sdata);
@@ -1337,6 +1338,20 @@ struct umr_soc15_database {
 	struct umr_soc15_database *next;
 };
 
+// vbios
+struct umr_vbios_info {
+	uint8_t name[64];
+	uint32_t dbdf;
+	uint8_t vbios_pn[64];
+	uint32_t version;
+	uint8_t date[32];
+	uint8_t serial[16];
+	uint32_t dev_id;
+	uint32_t rev_id;
+	uint32_t sub_dev_id;
+	uint32_t sub_ved_id;
+};
+
 FILE *umr_database_open(char *path, char *filename);
 struct umr_soc15_database *umr_database_read_soc15(char *path, char *filename);
 void umr_database_free_soc15(struct umr_soc15_database *soc15);
diff --git a/src/umrapp.h b/src/umrapp.h
index 14457fe..1336e07 100644
--- a/src/umrapp.h
+++ b/src/umrapp.h
@@ -57,5 +57,6 @@ void umr_clock_scan(struct umr_asic *asic, const char* clock_name);
 void umr_clock_manual(struct umr_asic *asic, const char* clock_name, void* value);
 int umr_print_pp_table(struct umr_asic *asic, const char* param);
 int umr_print_gpu_metrics(struct umr_asic *asic);
+int umr_print_vbios_info(struct umr_asic *asic);
 
 void run_server_loop(const char *url, struct umr_asic * asic);
-- 
2.17.1


[-- Attachment #3: Type: text/plain, Size: 154 bytes --]

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

  reply	other threads:[~2021-04-22 13:09 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-22  2:34 [PATCH] drm/amdgpu: Add vbios info ioctl interface Jiawei Gu
2021-04-22 13:09 ` Gu, JiaWei (Will) [this message]
2021-04-22 13:18   ` Gu, JiaWei (Will)
2021-04-22 13:27     ` Christian König
2021-04-23  3:25       ` Gu, JiaWei (Will)
2021-04-28  6:47         ` Nieto, David M
2021-04-28  7:15           ` Christian König
2021-04-28  7:25             ` Nieto, David M
2021-04-28  7:42               ` Christian König
2021-04-28  8:21                 ` Gu, JiaWei (Will)
2021-04-28 10:38                   ` Gu, JiaWei (Will)
2021-04-28 11:30                     ` StDenis, Tom
2021-04-28 20:53                       ` Alex Deucher
2021-04-28 21:18                         ` StDenis, Tom
2021-05-08  4:28 ` Kees Cook
2021-05-08  4:28   ` Kees Cook
2021-05-08  6:01   ` Gu, JiaWei (Will)
2021-05-08  6:01     ` Gu, JiaWei (Will)
2021-05-08  9:51     ` Kees Cook
2021-05-08  9:51       ` Kees Cook
2021-05-09  5:35       ` Nieto, David M
  -- strict thread matches above, loose matches on Subject: below --
2021-05-20  2:58 Jiawei Gu
2021-05-20  3:24 ` Alex Deucher
2021-05-18 12:16 Jiawei Gu
2021-05-18 12:19 ` Gu, JiaWei (Will)
2021-05-18 13:17   ` Christian König
2021-05-18 13:25     ` StDenis, Tom
2021-05-19  2:41       ` Gu, JiaWei (Will)
2021-05-19  3:10         ` Marek Olšák
2021-05-17 12:08 Jiawei Gu
2021-05-17 12:17 ` Gu, JiaWei (Will)
2021-05-17 12:25   ` Christian König
2021-05-18  2:11     ` Gu, JiaWei (Will)
2021-05-18  2:44       ` Nieto, David M
2021-05-18  3:07         ` Gu, JiaWei (Will)
2021-05-18  4:40           ` Nieto, David M
2021-05-18  5:58             ` Gu, JiaWei (Will)
2021-05-18  7:23               ` Nieto, David M
2021-05-18 10:50               ` Lazar, Lijo
2021-05-19  3:17                 ` Nieto, David M
2021-05-19 13:09               ` Deucher, Alexander
2021-05-19 13:23                 ` Christian König
2021-05-20  1:30                   ` Gu, JiaWei (Will)
2021-05-20 10:58                     ` Christian König
2021-04-28  8:18 Jiawei Gu
2021-04-14  9:08 Jiawei Gu
2021-04-14 13:01 ` Alex Deucher

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BE86C24E-8E22-47C8-B737-E7F58F8B9326@amd.com \
    --to=jiawei.gu@amd.com \
    --cc=Alexander.Deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.