Hi Andrzej,
[...]
+static ssize_t act_freq_mhz_show(struct device *dev,
struct device_attribute *attr, char *buff)
+{
- s64 actual_freq = sysfs_gt_attribute_r_func(dev, attr,
__act_freq_mhz_show);
- return sysfs_emit(buff, "%u\n", (u32) actual_freq);
Again, variable can be just u32.
yes
[...]
+static int __boost_freq_mhz_store(struct intel_gt *gt, u32 val) +{
- struct intel_rps *rps = >->rps;
- bool boost = false;
- /* Validate against (static) hardware limits */
- val = intel_freq_opcode(rps, val);
- if (val < rps->min_freq || val > rps->max_freq)
return -EINVAL;
- mutex_lock(&rps->lock);
- if (val != rps->boost_freq) {
rps->boost_freq = val;
boost = atomic_read(&rps->num_waiters);
- }
- mutex_unlock(&rps->lock);
- if (boost)
schedule_work(&rps->work);
- return 0;
Why not intel_rps_set_boost_frequency? Why copy/paste from rps_set_boost_freq?
you are right... this must be some ugly leftover. Thanks!
[...]
+/* For now we have a static number of RP states */ +static ssize_t rps_rp_mhz_show(struct device *dev,
struct device_attribute *attr,
char *buff)
+{
- struct intel_gt *gt = intel_gt_sysfs_get_drvdata(dev, attr->attr.name);
- struct intel_rps *rps = >->rps;
- u32 val;
- if (attr == &dev_attr_gt_RP0_freq_mhz ||
attr == &dev_attr_rps_RP0_freq_mhz) {
val = intel_rps_get_rp0_frequency(rps);
- } else if (attr == &dev_attr_gt_RP1_freq_mhz ||
attr == &dev_attr_rps_RP1_freq_mhz) {
val = intel_rps_get_rp1_frequency(rps);
- } else if (attr == &dev_attr_gt_RPn_freq_mhz ||
attr == &dev_attr_rps_RPn_freq_mhz) {
val = intel_rps_get_rpn_frequency(rps);
- } else {
GEM_WARN_ON(1);
return -ENODEV;
I guess this is not necessary, otherwise similar path should be in other helpers.
yeah... it's a bit hacky, I must agree... will split it properly.
[...]
Thanks, Andi