mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-05-02 18:15:03 -04:00
drm/i915: Kick the rps worker when changing the boost frequency
The boost frequency is only applied from the RPS worker while someone is
waiting on a request and requested a boost. As such, when the user
wishes to change the frequency, we have to kick the worker in order to
re-evaluate whether to apply the boost frequency.
v2: Check num_waiters to decide if we should kick the worker to handle
boosting.
Fixes: 29ecd78d3b ("drm/i915: Define a separate variable and control for RPS waitboost frequency")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180308142648.4016-1-chris@chris-wilson.co.uk
This commit is contained in:
@@ -304,8 +304,9 @@ static ssize_t gt_boost_freq_mhz_store(struct device *kdev,
|
|||||||
{
|
{
|
||||||
struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
|
struct drm_i915_private *dev_priv = kdev_minor_to_i915(kdev);
|
||||||
struct intel_rps *rps = &dev_priv->gt_pm.rps;
|
struct intel_rps *rps = &dev_priv->gt_pm.rps;
|
||||||
u32 val;
|
bool boost = false;
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
|
u32 val;
|
||||||
|
|
||||||
ret = kstrtou32(buf, 0, &val);
|
ret = kstrtou32(buf, 0, &val);
|
||||||
if (ret)
|
if (ret)
|
||||||
@@ -317,8 +318,13 @@ static ssize_t gt_boost_freq_mhz_store(struct device *kdev,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
mutex_lock(&dev_priv->pcu_lock);
|
mutex_lock(&dev_priv->pcu_lock);
|
||||||
rps->boost_freq = val;
|
if (val != rps->boost_freq) {
|
||||||
|
rps->boost_freq = val;
|
||||||
|
boost = atomic_read(&rps->num_waiters);
|
||||||
|
}
|
||||||
mutex_unlock(&dev_priv->pcu_lock);
|
mutex_unlock(&dev_priv->pcu_lock);
|
||||||
|
if (boost)
|
||||||
|
schedule_work(&rps->work);
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user