On Tue, Jul 18, 2023 at 2:03 PM Mario Limonciello <mario.limonciello@xxxxxxx> wrote: > > The VBIOS part number is read both in amdgpu_atom_parse() as well > as in atom_get_vbios_pn() and stored twice in the `struct atom_context` > structure. Remove the first unnecessary read and move the `pr_info` > line from that read into the second. > > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> Reviewed-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | 2 +- > .../gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c | 20 +++++++++---------- > drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 8 ++++---- > .../gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c | 8 ++++---- > drivers/gpu/drm/amd/amdgpu/atom.c | 13 ++---------- > drivers/gpu/drm/amd/amdgpu/atom.h | 2 -- > 7 files changed, 22 insertions(+), 33 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c > index f4e3c133a16ca..dce9e7d5e4ec6 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c > @@ -1776,7 +1776,7 @@ static ssize_t amdgpu_atombios_get_vbios_version(struct device *dev, > struct amdgpu_device *adev = drm_to_adev(ddev); > struct atom_context *ctx = adev->mode_info.atom_context; > > - return sysfs_emit(buf, "%s\n", ctx->vbios_version); > + return sysfs_emit(buf, "%s\n", ctx->vbios_pn); > } > > static DEVICE_ATTR(vbios_version, 0444, amdgpu_atombios_get_vbios_version, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c > index 4620c4712ce32..c9f16eab0f3d0 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c > @@ -60,10 +60,10 @@ static bool is_fru_eeprom_supported(struct amdgpu_device *adev, u32 *fru_addr) > switch (adev->asic_type) { > case CHIP_VEGA20: > /* D161 and D163 are the VG20 server SKUs */ > - if (strnstr(atom_ctx->vbios_version, "D161", > - sizeof(atom_ctx->vbios_version)) || > - strnstr(atom_ctx->vbios_version, "D163", > - sizeof(atom_ctx->vbios_version))) { > + if (strnstr(atom_ctx->vbios_pn, "D161", > + sizeof(atom_ctx->vbios_pn)) || > + strnstr(atom_ctx->vbios_pn, "D163", > + sizeof(atom_ctx->vbios_pn))) { > if (fru_addr) > *fru_addr = FRU_EEPROM_MADDR_6; > return true; > @@ -72,16 +72,16 @@ static bool is_fru_eeprom_supported(struct amdgpu_device *adev, u32 *fru_addr) > } > case CHIP_ALDEBARAN: > /* All Aldebaran SKUs have an FRU */ > - if (!strnstr(atom_ctx->vbios_version, "D673", > - sizeof(atom_ctx->vbios_version))) > + if (!strnstr(atom_ctx->vbios_pn, "D673", > + sizeof(atom_ctx->vbios_pn))) > if (fru_addr) > *fru_addr = FRU_EEPROM_MADDR_6; > return true; > case CHIP_SIENNA_CICHLID: > - if (strnstr(atom_ctx->vbios_version, "D603", > - sizeof(atom_ctx->vbios_version))) { > - if (strnstr(atom_ctx->vbios_version, "D603GLXE", > - sizeof(atom_ctx->vbios_version))) { > + if (strnstr(atom_ctx->vbios_pn, "D603", > + sizeof(atom_ctx->vbios_pn))) { > + if (strnstr(atom_ctx->vbios_pn, "D603GLXE", > + sizeof(atom_ctx->vbios_pn))) { > return false; > } else { > if (fru_addr) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > index cca5a495611f3..46844082762a6 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > @@ -1719,7 +1719,7 @@ static int amdgpu_debugfs_firmware_info_show(struct seq_file *m, void *unused) > seq_printf(m, "MES feature version: %u, firmware version: 0x%08x\n", > fw_info.feature, fw_info.ver); > > - seq_printf(m, "VBIOS version: %s\n", ctx->vbios_version); > + seq_printf(m, "VBIOS version: %s\n", ctx->vbios_pn); > > return 0; > } > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > index 8aaa427f8c0f6..5055c14d6b426 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c > @@ -2440,10 +2440,10 @@ static void amdgpu_ras_get_quirks(struct amdgpu_device *adev) > if (!ctx) > return; > > - if (strnstr(ctx->vbios_version, "D16406", > - sizeof(ctx->vbios_version)) || > - strnstr(ctx->vbios_version, "D36002", > - sizeof(ctx->vbios_version))) > + if (strnstr(ctx->vbios_pn, "D16406", > + sizeof(ctx->vbios_pn)) || > + strnstr(ctx->vbios_pn, "D36002", > + sizeof(ctx->vbios_pn))) > adev->ras_hw_enabled |= (1 << AMDGPU_RAS_BLOCK__GFX); > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > index 0648dfe559afc..4287743e12124 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c > @@ -194,9 +194,9 @@ static bool __get_eeprom_i2c_addr(struct amdgpu_device *adev, > /* VEGA20 and ARCTURUS */ > if (adev->asic_type == CHIP_VEGA20) > control->i2c_address = EEPROM_I2C_MADDR_0; > - else if (strnstr(atom_ctx->vbios_version, > + else if (strnstr(atom_ctx->vbios_pn, > "D342", > - sizeof(atom_ctx->vbios_version))) > + sizeof(atom_ctx->vbios_pn))) > control->i2c_address = EEPROM_I2C_MADDR_0; > else > control->i2c_address = EEPROM_I2C_MADDR_4; > @@ -205,8 +205,8 @@ static bool __get_eeprom_i2c_addr(struct amdgpu_device *adev, > control->i2c_address = EEPROM_I2C_MADDR_0; > return true; > case IP_VERSION(13, 0, 2): > - if (strnstr(atom_ctx->vbios_version, "D673", > - sizeof(atom_ctx->vbios_version))) > + if (strnstr(atom_ctx->vbios_pn, "D673", > + sizeof(atom_ctx->vbios_pn))) > control->i2c_address = EEPROM_I2C_MADDR_4; > else > control->i2c_address = EEPROM_I2C_MADDR_0; > diff --git a/drivers/gpu/drm/amd/amdgpu/atom.c b/drivers/gpu/drm/amd/amdgpu/atom.c > index 5f610e9a5f0f8..edbb862c1025a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/atom.c > +++ b/drivers/gpu/drm/amd/amdgpu/atom.c > @@ -1438,6 +1438,8 @@ static void atom_get_vbios_pn(struct atom_context *ctx) > > ctx->vbios_pn[count] = 0; > } > + > + pr_info("ATOM BIOS: %s\n", ctx->vbios_pn); > } > > static void atom_get_vbios_version(struct atom_context *ctx) > @@ -1460,7 +1462,6 @@ 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; > @@ -1502,16 +1503,6 @@ struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios) > return NULL; > } > > - idx = CU16(ATOM_ROM_PART_NUMBER_PTR); > - if (idx == 0) > - idx = 0x80; > - > - str = CSTR(idx); > - if (*str != '\0') { > - pr_info("ATOM BIOS: %s\n", str); > - strscpy(ctx->vbios_version, str, sizeof(ctx->vbios_version)); > - } > - > atom_rom_header = (struct _ATOM_ROM_HEADER *)CSTR(base); > if (atom_rom_header->usMasterDataTableOffset != 0) { > master_table = (struct _ATOM_MASTER_DATA_TABLE *) > diff --git a/drivers/gpu/drm/amd/amdgpu/atom.h b/drivers/gpu/drm/amd/amdgpu/atom.h > index 0c18398245206..55bf99d5288d0 100644 > --- a/drivers/gpu/drm/amd/amdgpu/atom.h > +++ b/drivers/gpu/drm/amd/amdgpu/atom.h > @@ -33,7 +33,6 @@ struct drm_device; > #define ATOM_ATI_MAGIC_PTR 0x30 > #define ATOM_ATI_MAGIC " 761295520" > #define ATOM_ROM_TABLE_PTR 0x48 > -#define ATOM_ROM_PART_NUMBER_PTR 0x6E > > #define ATOM_ROM_MAGIC "ATOM" > #define ATOM_ROM_MAGIC_PTR 4 > @@ -143,7 +142,6 @@ struct atom_context { > int io_mode; > uint32_t *scratch; > int scratch_size_bytes; > - char vbios_version[20]; > > uint8_t name[STRLEN_LONG]; > uint8_t vbios_pn[STRLEN_LONG]; > -- > 2.34.1 >