Bug 68150 - [ILK RC6] DebugFS reporting wrong RC-state
Summary: [ILK RC6] DebugFS reporting wrong RC-state
Status: CLOSED INVALID
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: XOrg git
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Jesse Barnes
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-08-15 14:43 UTC by Joe Kappus
Modified: 2017-07-24 22:57 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Joe Kappus 2013-08-15 14:43:20 UTC
Patched in this series of patches from bwidawsk to test RC6 state on ILK. http://lists.freedesktop.org/archives/intel-gfx/2013-July/030263.html

Issue was seeing if it ever reached RC6 state, sysfs has no interface for this anymore.  I poked around in debugFS and found i915_drpc_info.

cat /sys/kernel/debug/dri/64/i915_drpc_info
HD boost: yes
Boost freq: 9
HW control enabled: no
SW control enabled: yes
Gated voltage change: no
Starting frequency: P8
Max P-state: P0
Min P-state: P10
RS1 VID: 0
RS2 VID: 8
Render standby enabled: yes
Current RS state: RC1


It also shows RS state: on if performing activity on the GPU.  Tried polling repeatedly using:

while [ 1 ] ; do grep "Current" /sys/kernel/debug/dri/0/i915_drpc_info >> out.txt ; sleep .01; done

Still bounced between RC1 and on, never hitting RC6


However, if I use intel-gpu-tools and run:

intel_reg_read 0x111b8
I see:

0x111B8 : 0x474C3000 (RS2/RC6)
or
0x111B8 : 0x471C3000 (RS1)
or 
0x111B8 : 0x470C3000 (on)

Though today I'm seeing just:

0x111B8 : 0x0
0x111B8 : 0x100000
Comment 1 Paulo Zanoni 2013-08-16 21:13:55 UTC
Reassigning to the newer Jesse :)
Comment 2 Ben Widawsky 2013-09-04 17:58:00 UTC
Hmm. Just a guess, can you try this:
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index a6f4cb5..b0347cc 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -1020,8 +1020,8 @@ static int ironlake_drpc_info(struct seq_file *m)
        if (ret)
                return ret;
 
-       rgvmodectl = I915_READ(MEMMODECTL);
        rstdbyctl = I915_READ(RSTDBYCTL);
+       rgvmodectl = I915_READ(MEMMODECTL);
        crstandvid = I915_READ16(CRSTANDVID);
 
        mutex_unlock(&dev->struct_mutex);
Comment 3 Jesse Barnes 2013-11-18 22:35:09 UTC
timed out on this one.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.