[Public] Hi Mario, Comments inline. Thanks. Best Regards, Tim Huang -----Original Message----- From: Limonciello, Mario <Mario.Limonciello@xxxxxxx> Sent: Friday, October 14, 2022 5:35 AM To: Huang, Tim <Tim.Huang@xxxxxxx>; amd-gfx@xxxxxxxxxxxxxxxxxxxxx Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx>; Zhang, Yifan <Yifan1.Zhang@xxxxxxx>; Du, Xiaojian <Xiaojian.Du@xxxxxxx>; Gong, Richard <Richard.Gong@xxxxxxx> Subject: Re: [1/2] drm/amd/pm: update SMU IP v13.0.4 driver interface version On 10/13/2022 00:46, Tim Huang wrote: > Update the SMU driver interface version to V7. > > Signed-off-by: Tim Huang <tim.huang@xxxxxxx> > --- > .../swsmu/inc/pmfw_if/smu13_driver_if_v13_0_4.h | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git > a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_4.h > b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_4.h > index ae2d337158f3..f77401709d83 100644 > --- > a/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_4.h > +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu13_driver_if_v13_0_4 > +++ .h > @@ -27,7 +27,7 @@ > // *** IMPORTANT *** > // SMU TEAM: Always increment the interface version if > // any structure is changed in this file -#define > PMFW_DRIVER_IF_VERSION 5 > +#define PMFW_DRIVER_IF_VERSION 7 > > typedef struct { > int32_t value; > @@ -163,8 +163,8 @@ typedef struct { > uint16_t DclkFrequency; //[MHz] > uint16_t MemclkFrequency; //[MHz] > uint16_t spare; //[centi] > - uint16_t UvdActivity; //[centi] > uint16_t GfxActivity; //[centi] > + uint16_t UvdActivity; //[centi] This is unfortunate, it means that these two flipped based on PMFW driver interface version! With 13.0.4 in 6.0, this should probably come back. >> This flipping already happened in the PMFW driver interface version V6. So, should notice this compatible issue from V6. Cc: stable@xxxxxxxxxxxxxxx #6.0 Reviewed-by: Mario Limonciello <mario.limonciello@xxxxxxx> > > uint16_t Voltage[2]; //[mV] indices: VDDCR_VDD, VDDCR_SOC > uint16_t Current[2]; //[mA] indices: VDDCR_VDD, VDDCR_SOC > @@ -199,6 +199,19 @@ typedef struct { > uint16_t DeviceState; > uint16_t CurTemp; //[centi-Celsius] > uint16_t spare2; > + > + uint16_t AverageGfxclkFrequency; > + uint16_t AverageFclkFrequency; > + uint16_t AverageGfxActivity; > + uint16_t AverageSocclkFrequency; > + uint16_t AverageVclkFrequency; > + uint16_t AverageVcnActivity; > + uint16_t AverageDRAMReads; //Filtered DF Bandwidth::DRAM Reads > + uint16_t AverageDRAMWrites; //Filtered DF Bandwidth::DRAM Writes > + uint16_t AverageSocketPower; //Filtered value of CurrentSocketPower > + uint16_t AverageCorePower; //Filtered of [sum of CorePower[8]]) > + uint16_t AverageCoreC0Residency[8]; //Filtered of [average C0 residency % per core] > + uint32_t MetricsCounter; //Counts the # of metrics table parameter reads per update to the metrics table, i.e. if the metrics table update happens every 1 second, this value could be up to 1000 if the smu collected metrics data every cycle, or as low as 0 if the smu was asleep the whole time. Reset to 0 after writing. > } SmuMetrics_t; > > typedef struct {