From a2b7d2ab53ac298fa7c45e081b400c5217525baf Mon Sep 17 00:00:00 2001 From: Eugeni Dodonov Date: Thu, 10 Nov 2011 13:55:15 -0200 Subject: [PATCH] --- yaml --- r: 276735 b: refs/heads/master c: 4ed0b577457eb6aeb7cdc7e7316576e63d15abb2 h: refs/heads/master i: 276733: 679b061a0402091fa59a74a27f3f317c41cfdca8 276731: b383925bd9ef78c69624992558cba896200847dc 276727: ffcf82dbc6a5130291b5fdedd6281d9882a7c20d 276719: 9f1ccd72f8976f1eccbfb0de3d46ef5bdb154032 276703: 6eb2827504c6028b97582e84b227151ae022310b 276671: 3d04eb3a53174e7b95724f29d91b23aa4ec117f6 276607: 53df5b3927dcf5b0d48598703961628512e46ef5 276479: fb4d3be6a95f9de1b4e69d9f5ccc5225b084aa7d v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/i915/i915_dma.c | 10 ++++++++++ trunk/drivers/gpu/drm/i915/i915_drv.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index cd4740798e7f..54a2b2fc354e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 03d00ac53f9bcde06ff7e33d6676083c18d569a4 +refs/heads/master: 4ed0b577457eb6aeb7cdc7e7316576e63d15abb2 diff --git a/trunk/drivers/gpu/drm/i915/i915_dma.c b/trunk/drivers/gpu/drm/i915/i915_dma.c index a9533c54c93c..a9ae374861e7 100644 --- a/trunk/drivers/gpu/drm/i915/i915_dma.c +++ b/trunk/drivers/gpu/drm/i915/i915_dma.c @@ -1454,6 +1454,14 @@ unsigned long i915_chipset_val(struct drm_i915_private *dev_priv) diff1 = now - dev_priv->last_time1; + /* Prevent division-by-zero if we are asking too fast. + * Also, we don't get interesting results if we are polling + * faster than once in 10ms, so just return the saved value + * in such cases. + */ + if (diff1 <= 10) + return dev_priv->chipset_power; + count1 = I915_READ(DMIEC); count2 = I915_READ(DDREC); count3 = I915_READ(CSIEC); @@ -1484,6 +1492,8 @@ unsigned long i915_chipset_val(struct drm_i915_private *dev_priv) dev_priv->last_count1 = total_count; dev_priv->last_time1 = now; + dev_priv->chipset_power = ret; + return ret; } diff --git a/trunk/drivers/gpu/drm/i915/i915_drv.h b/trunk/drivers/gpu/drm/i915/i915_drv.h index 8ba88cfc36de..39a72f642b33 100644 --- a/trunk/drivers/gpu/drm/i915/i915_drv.h +++ b/trunk/drivers/gpu/drm/i915/i915_drv.h @@ -713,6 +713,7 @@ typedef struct drm_i915_private { u64 last_count1; unsigned long last_time1; + unsigned long chipset_power; u64 last_count2; struct timespec last_time2; unsigned long gfx_power;