View | Details | Raw Unified | Return to bug 183859
Collapse All | Expand All

(-)b/sys/dev/drm2/i915/i915_irq.c (-2 / +7 lines)
Lines 395-400 gen6_pm_rps_work_func(void *arg, int pending) Link Here
395
	drm_i915_private_t *dev_priv;
395
	drm_i915_private_t *dev_priv;
396
	u8 new_delay;
396
	u8 new_delay;
397
	u32 pm_iir, pm_imr;
397
	u32 pm_iir, pm_imr;
398
	bool was_locked = false;
398
399
399
	dev_priv = (drm_i915_private_t *)arg;
400
	dev_priv = (drm_i915_private_t *)arg;
400
	dev = dev_priv->dev;
401
	dev = dev_priv->dev;
Lines 410-416 gen6_pm_rps_work_func(void *arg, int pending) Link Here
410
	if (!pm_iir)
411
	if (!pm_iir)
411
		return;
412
		return;
412
413
413
	DRM_LOCK(dev);
414
	/* DRM_LOCK(dev); */
415
	if (!sx_try_xlock(&dev->dev_struct_lock))
416
		was_locked = true;
417
414
	if (pm_iir & GEN6_PM_RP_UP_THRESHOLD) {
418
	if (pm_iir & GEN6_PM_RP_UP_THRESHOLD) {
415
		if (dev_priv->cur_delay != dev_priv->max_delay)
419
		if (dev_priv->cur_delay != dev_priv->max_delay)
416
			new_delay = dev_priv->cur_delay + 1;
420
			new_delay = dev_priv->cur_delay + 1;
Lines 442-448 gen6_pm_rps_work_func(void *arg, int pending) Link Here
442
	 * an *extremely* unlikely race with gen6_rps_enable() that is prevented
446
	 * an *extremely* unlikely race with gen6_rps_enable() that is prevented
443
	 * by holding struct_mutex for the duration of the write.
447
	 * by holding struct_mutex for the duration of the write.
444
	 */
448
	 */
445
	DRM_UNLOCK(dev);
449
	if (!was_locked)
450
		DRM_UNLOCK(dev);
446
}
451
}
447
452
448
static void pch_irq_handler(struct drm_device *dev)
453
static void pch_irq_handler(struct drm_device *dev)

Return to bug 183859