[AMD Official Use Only - Internal Distribution Only] Hi all, I know the vbios ioctl discussion is not settled down yet. Please just regard this patch as a proposal to include vbios version string info into discussion. Best regards, Jiawei -----Original Message----- From: Jiawei Gu <Jiawei.Gu@xxxxxxx> Sent: Monday, May 17, 2021 6:22 PM To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx; Koenig, Christian <Christian.Koenig@xxxxxxx>; Nieto, David M <David.Nieto@xxxxxxx>; maraeo@xxxxxxxxx; Deucher, Alexander <Alexander.Deucher@xxxxxxx> Cc: Deng, Emily <Emily.Deng@xxxxxxx>; Gu, JiaWei (Will) <JiaWei.Gu@xxxxxxx> Subject: [PATCH] drm/amdgpu: Add vbios version string Expose XXX.XXX.XXX.XXX.XXXXXX vbios version string in AMDGPU_INFO_VBIOS_INFO ioctl Signed-off-by: Jiawei Gu <Jiawei.Gu@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 ++ drivers/gpu/drm/amd/amdgpu/atom.c | 16 ++++++++++++++++ drivers/gpu/drm/amd/amdgpu/atom.h | 1 + drivers/gpu/drm/amd/include/atomfirmware.h | 1 + include/uapi/drm/amdgpu_drm.h | 1 + 5 files changed, 21 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index e1008a79b441..30e4fed3de22 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c @@ -870,6 +870,8 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) 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.vbios_ver_str, atom_context->vbios_ver_str, + sizeof(atom_context->vbios_ver_str)); memcpy(vbios_info.date, atom_context->date, sizeof(atom_context->date)); vbios_info.serial = adev->unique_id; vbios_info.dev_id = adev->pdev->device; diff --git a/drivers/gpu/drm/amd/amdgpu/atom.c b/drivers/gpu/drm/amd/amdgpu/atom.c index 0e2f0ea13b40..542b2c2414e4 100644 --- a/drivers/gpu/drm/amd/amdgpu/atom.c +++ b/drivers/gpu/drm/amd/amdgpu/atom.c @@ -1438,6 +1438,21 @@ static void atom_get_vbios_pn(struct atom_context *ctx) } } +static void atom_get_vbios_version(struct atom_context *ctx) { + unsigned char *vbios_ver; + + /* find anchor ATOMBIOSBK-AMD */ + vbios_ver = atom_find_str_in_rom(ctx, BIOS_VERSION_PREFIX, 3, 1024, 64); + if (vbios_ver != NULL) { + /* skip ATOMBIOSBK-AMD VER */ + vbios_ver += 18; + memcpy(ctx->vbios_ver_str, vbios_ver, STRLEN_NORMAL); + } else { + ctx->vbios_ver_str[0] = '\0'; + } +} + struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios) { int base; @@ -1511,6 +1526,7 @@ struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios) atom_get_vbios_name(ctx); atom_get_vbios_pn(ctx); atom_get_vbios_date(ctx); + atom_get_vbios_version(ctx); return ctx; } diff --git a/drivers/gpu/drm/amd/amdgpu/atom.h b/drivers/gpu/drm/amd/amdgpu/atom.h index c729f7ceba4f..6463ce6e756d 100644 --- a/drivers/gpu/drm/amd/amdgpu/atom.h +++ b/drivers/gpu/drm/amd/amdgpu/atom.h @@ -148,6 +148,7 @@ struct atom_context { uint8_t name[STRLEN_LONG]; uint8_t vbios_pn[STRLEN_LONG]; uint32_t version; + uint8_t vbios_ver_str[STRLEN_NORMAL]; uint8_t date[STRLEN_NORMAL]; uint32_t sub_dev_id; uint32_t sub_ved_id; diff --git a/drivers/gpu/drm/amd/include/atomfirmware.h b/drivers/gpu/drm/amd/include/atomfirmware.h index 14d0d7d58255..28deecc2f990 100644 --- a/drivers/gpu/drm/amd/include/atomfirmware.h +++ b/drivers/gpu/drm/amd/include/atomfirmware.h @@ -198,6 +198,7 @@ enum atom_dp_vs_preemph_def{ }; #define BIOS_ATOM_PREFIX "ATOMBIOS" +#define BIOS_VERSION_PREFIX "ATOMBIOSBK-AMD" #define BIOS_STRING_LENGTH 43 /* diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h index 2d9e84658bbc..e0f98ca9a755 100644 --- a/include/uapi/drm/amdgpu_drm.h +++ b/include/uapi/drm/amdgpu_drm.h @@ -956,6 +956,7 @@ struct drm_amdgpu_info_vbios { __u32 dbdf; __u8 vbios_pn[64]; __u32 version; + __u8 vbios_ver_str[32]; __u8 date[32]; __u64 serial; __u32 dev_id; -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx