On Mon, 23 May 2022 04:08:41 -0700, Badal Nilawar wrote: > > +static int > +i915_in_read(struct i915_hwmon_drvdata *ddat, u32 attr, long *val) > +{ > + struct i915_hwmon *hwmon = ddat->dd_hwmon; > + intel_wakeref_t wakeref; > + u32 reg_value; > + > + switch (attr) { > + case hwmon_in_input: > + with_intel_runtime_pm(ddat->dd_uncore->rpm, wakeref) > + reg_value = intel_uncore_read(ddat->dd_uncore, hwmon->rg.gt_perf_status); > + *val = DIV_ROUND_CLOSEST(REG_FIELD_GET(GEN12_VOLTAGE_MASK, reg_value) * 25, 10); A comment here that voltage is in units of 2.5 mV would be nice. > @@ -440,12 +495,14 @@ i915_hwmon_get_preregistration_info(struct drm_i915_private *i915) > hwmon->rg.pkg_rapl_limit = PCU_PACKAGE_RAPL_LIMIT; > hwmon->rg.energy_status_all = PCU_PACKAGE_ENERGY_STATUS; > hwmon->rg.energy_status_tile = INVALID_MMIO_REG; > + hwmon->rg.gt_perf_status = GEN12_RPSTAT1; > } else { > hwmon->rg.pkg_power_sku_unit = INVALID_MMIO_REG; > hwmon->rg.pkg_power_sku = INVALID_MMIO_REG; > hwmon->rg.pkg_rapl_limit = INVALID_MMIO_REG; > hwmon->rg.energy_status_all = INVALID_MMIO_REG; > hwmon->rg.energy_status_tile = INVALID_MMIO_REG; > + hwmon->rg.gt_perf_status = INVALID_MMIO_REG; Looks like this is supportable on XEHPSDV too, so let's add that too.