mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 18:43:33 +02:00
drm/xe/hwmon: Expose powerX_cap_interval
Expose powerX_cap_interval to manage burst power limit time window. Signed-off-by: Karthik Poosa <karthik.poosa@intel.com> Reviewed-by: Badal Nilawar <badal.nilawar@intel.com> Link: https://lore.kernel.org/r/20250529163458.2354509-5-karthik.poosa@intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
parent
c713b9a23c
commit
719d8a5959
|
|
@ -178,3 +178,21 @@ Description: RW. Package burst (PL2) power limit in microwatts.
|
|||
compared to PL1.
|
||||
|
||||
Only supported for particular Intel Xe graphics platforms.
|
||||
|
||||
What: /sys/bus/pci/drivers/xe/.../hwmon/hwmon<i>/power1_cap_interval
|
||||
Date: May 2025
|
||||
KernelVersion: 6.15
|
||||
Contact: intel-xe@lists.freedesktop.org
|
||||
Description: RW. Card burst power limit interval (Tau in PL2/Tau) in
|
||||
milliseconds over which sustained power is averaged.
|
||||
|
||||
Only supported for particular Intel Xe graphics platforms.
|
||||
|
||||
What: /sys/bus/pci/drivers/xe/.../hwmon/hwmon<i>/power2_cap_interval
|
||||
Date: May 2025
|
||||
KernelVersion: 6.15
|
||||
Contact: intel-xe@lists.freedesktop.org
|
||||
Description: RW. Package burst power limit interval (Tau in PL2/Tau) in
|
||||
milliseconds over which sustained power is averaged.
|
||||
|
||||
Only supported for particular Intel Xe graphics platforms.
|
||||
|
|
|
|||
|
|
@ -474,7 +474,7 @@ xe_hwmon_power_max_interval_show(struct device *dev, struct device_attribute *at
|
|||
u32 x, y, x_w = 2; /* 2 bits */
|
||||
u64 r, tau4, out;
|
||||
int channel = (to_sensor_dev_attr(attr)->index % 2) ? CHANNEL_PKG : CHANNEL_CARD;
|
||||
u32 power_attr = PL1_HWMON_ATTR;
|
||||
u32 power_attr = (to_sensor_dev_attr(attr)->index > 1) ? PL2_HWMON_ATTR : PL1_HWMON_ATTR;
|
||||
|
||||
int ret = 0;
|
||||
|
||||
|
|
@ -529,7 +529,7 @@ xe_hwmon_power_max_interval_store(struct device *dev, struct device_attribute *a
|
|||
u64 tau4, r, max_win;
|
||||
unsigned long val;
|
||||
int channel = (to_sensor_dev_attr(attr)->index % 2) ? CHANNEL_PKG : CHANNEL_CARD;
|
||||
u32 power_attr = PL1_HWMON_ATTR;
|
||||
u32 power_attr = (to_sensor_dev_attr(attr)->index > 1) ? PL2_HWMON_ATTR : PL1_HWMON_ATTR;
|
||||
int ret;
|
||||
|
||||
ret = kstrtoul(buf, 0, &val);
|
||||
|
|
@ -607,10 +607,20 @@ static SENSOR_DEVICE_ATTR(power1_max_interval, 0664,
|
|||
static SENSOR_DEVICE_ATTR(power2_max_interval, 0664,
|
||||
xe_hwmon_power_max_interval_show,
|
||||
xe_hwmon_power_max_interval_store, SENSOR_INDEX_PKG_PL1);
|
||||
/* PSYS PL2 */
|
||||
static SENSOR_DEVICE_ATTR(power1_cap_interval, 0664,
|
||||
xe_hwmon_power_max_interval_show,
|
||||
xe_hwmon_power_max_interval_store, SENSOR_INDEX_PSYS_PL2);
|
||||
/* PKG PL2 */
|
||||
static SENSOR_DEVICE_ATTR(power2_cap_interval, 0664,
|
||||
xe_hwmon_power_max_interval_show,
|
||||
xe_hwmon_power_max_interval_store, SENSOR_INDEX_PKG_PL2);
|
||||
|
||||
static struct attribute *hwmon_attributes[] = {
|
||||
&sensor_dev_attr_power1_max_interval.dev_attr.attr,
|
||||
&sensor_dev_attr_power2_max_interval.dev_attr.attr,
|
||||
&sensor_dev_attr_power1_cap_interval.dev_attr.attr,
|
||||
&sensor_dev_attr_power2_cap_interval.dev_attr.attr,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
@ -621,7 +631,7 @@ static umode_t xe_hwmon_attributes_visible(struct kobject *kobj,
|
|||
struct xe_hwmon *hwmon = dev_get_drvdata(dev);
|
||||
int ret = 0;
|
||||
int channel = (index % 2) ? CHANNEL_PKG : CHANNEL_CARD;
|
||||
u32 power_attr = PL1_HWMON_ATTR;
|
||||
u32 power_attr = (index > 1) ? PL2_HWMON_ATTR : PL1_HWMON_ATTR;
|
||||
u32 uval;
|
||||
|
||||
xe_pm_runtime_get(hwmon->xe);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user