|
@@ -382,7 +382,13 @@ static void gen6_pm_rps_work(struct work_struct *work)
|
|
else
|
|
else
|
|
new_delay = dev_priv->rps.cur_delay - 1;
|
|
new_delay = dev_priv->rps.cur_delay - 1;
|
|
|
|
|
|
- gen6_set_rps(dev_priv->dev, new_delay);
|
|
|
|
|
|
+ /* sysfs frequency interfaces may have snuck in while servicing the
|
|
|
|
+ * interrupt
|
|
|
|
+ */
|
|
|
|
+ if (!(new_delay > dev_priv->rps.max_delay ||
|
|
|
|
+ new_delay < dev_priv->rps.min_delay)) {
|
|
|
|
+ gen6_set_rps(dev_priv->dev, new_delay);
|
|
|
|
+ }
|
|
|
|
|
|
mutex_unlock(&dev_priv->dev->struct_mutex);
|
|
mutex_unlock(&dev_priv->dev->struct_mutex);
|
|
}
|
|
}
|