RE: [PATCH] drm/amdgpu: Fix vbios version string search

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[AMD Official Use Only - General]

Reviewed-by: Hawking Zhang <Hawking.Zhang@xxxxxxx>

Regards,
Hawking
-----Original Message-----
From: Lazar, Lijo <Lijo.Lazar@xxxxxxx>
Sent: Thursday, September 14, 2023 17:24
To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: Zhang, Hawking <Hawking.Zhang@xxxxxxx>; Deucher, Alexander <Alexander.Deucher@xxxxxxx>
Subject: [PATCH] drm/amdgpu: Fix vbios version string search

Search for vbios version string in STRING_OFFSET-ATOM_ROM_HEADER region first. If those offsets are not populated, use the hardcoded region.

Signed-off-by: Lijo Lazar <lijo.lazar@xxxxxxx>
---
 drivers/gpu/drm/amd/amdgpu/atom.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/atom.c b/drivers/gpu/drm/amd/amdgpu/atom.c
index 9f63ddb89b75..2c221000782c 100644
--- a/drivers/gpu/drm/amd/amdgpu/atom.c
+++ b/drivers/gpu/drm/amd/amdgpu/atom.c
@@ -1444,10 +1444,27 @@ static void atom_get_vbios_pn(struct atom_context *ctx)

 static void atom_get_vbios_version(struct atom_context *ctx)  {
+       unsigned short start = 3, end;
        unsigned char *vbios_ver;
+       unsigned char *p_rom;
+
+       p_rom = ctx->bios;
+       /* Search from strings offset if it's present */
+       start = *(unsigned short *)(p_rom +
+                                   OFFSET_TO_GET_ATOMBIOS_STRING_START);
+
+       /* Search till atom rom header start point */
+       end = *(unsigned short *)(p_rom + OFFSET_TO_ATOM_ROM_HEADER_POINTER);
+
+       /* Use hardcoded offsets, if the offsets are not populated */
+       if (end <= start) {
+               start = 3;
+               end = 1024;
+       }

        /* find anchor ATOMBIOSBK-AMD */
-       vbios_ver = atom_find_str_in_rom(ctx, BIOS_VERSION_PREFIX, 3, 1024, 64);
+       vbios_ver =
+               atom_find_str_in_rom(ctx, BIOS_VERSION_PREFIX, start, end, 64);
        if (vbios_ver != NULL) {
                /* skip ATOMBIOSBK-AMD VER */
                vbios_ver += 18;
--
2.25.1





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux