|
@@ -1020,8 +1020,8 @@ static ssize_t amdgpu_hwmon_show_power_avg(struct device *dev,
|
|
|
{
|
|
|
struct amdgpu_device *adev = dev_get_drvdata(dev);
|
|
|
struct drm_device *ddev = adev->ddev;
|
|
|
- struct pp_gpu_power query = {0};
|
|
|
- int r, size = sizeof(query);
|
|
|
+ u32 query = 0;
|
|
|
+ int r, size = sizeof(u32);
|
|
|
unsigned uw;
|
|
|
|
|
|
/* Can't get power when the card is off */
|
|
@@ -1041,7 +1041,7 @@ static ssize_t amdgpu_hwmon_show_power_avg(struct device *dev,
|
|
|
return r;
|
|
|
|
|
|
/* convert to microwatts */
|
|
|
- uw = (query.average_gpu_power >> 8) * 1000000;
|
|
|
+ uw = (query >> 8) * 1000000 + (query & 0xff) * 1000;
|
|
|
|
|
|
return snprintf(buf, PAGE_SIZE, "%u\n", uw);
|
|
|
}
|
|
@@ -1752,7 +1752,7 @@ void amdgpu_pm_compute_clocks(struct amdgpu_device *adev)
|
|
|
static int amdgpu_debugfs_pm_info_pp(struct seq_file *m, struct amdgpu_device *adev)
|
|
|
{
|
|
|
uint32_t value;
|
|
|
- struct pp_gpu_power query = {0};
|
|
|
+ uint32_t query = 0;
|
|
|
int size;
|
|
|
|
|
|
/* sanity check PP is enabled */
|
|
@@ -1775,17 +1775,9 @@ static int amdgpu_debugfs_pm_info_pp(struct seq_file *m, struct amdgpu_device *a
|
|
|
seq_printf(m, "\t%u mV (VDDGFX)\n", value);
|
|
|
if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_VDDNB, (void *)&value, &size))
|
|
|
seq_printf(m, "\t%u mV (VDDNB)\n", value);
|
|
|
- size = sizeof(query);
|
|
|
- if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_POWER, (void *)&query, &size)) {
|
|
|
- seq_printf(m, "\t%u.%u W (VDDC)\n", query.vddc_power >> 8,
|
|
|
- query.vddc_power & 0xff);
|
|
|
- seq_printf(m, "\t%u.%u W (VDDCI)\n", query.vddci_power >> 8,
|
|
|
- query.vddci_power & 0xff);
|
|
|
- seq_printf(m, "\t%u.%u W (max GPU)\n", query.max_gpu_power >> 8,
|
|
|
- query.max_gpu_power & 0xff);
|
|
|
- seq_printf(m, "\t%u.%u W (average GPU)\n", query.average_gpu_power >> 8,
|
|
|
- query.average_gpu_power & 0xff);
|
|
|
- }
|
|
|
+ size = sizeof(uint32_t);
|
|
|
+ if (!amdgpu_dpm_read_sensor(adev, AMDGPU_PP_SENSOR_GPU_POWER, (void *)&query, &size))
|
|
|
+ seq_printf(m, "\t%u.%u W (average GPU)\n", query >> 8, query & 0xff);
|
|
|
size = sizeof(value);
|
|
|
seq_printf(m, "\n");
|
|
|
|