<div class="gmail_quote">On Tue, Nov 29, 2011 at 12:12, Daniel Vetter <span dir="ltr"><<a href="mailto:daniel@ffwll.ch">daniel@ffwll.ch</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">On Tue, Nov 29, 2011 at 01:05:03PM +0000, Chris Wilson wrote:<br>
> On Tue, 29 Nov 2011 10:55:05 -0200, Eugeni Dodonov <<a href="mailto:eugeni.dodonov@intel.com">eugeni.dodonov@intel.com</a>> wrote:<br>
> > This allows to enable/disable rps and rc6 from userspace. This is<br>
> > necessary for to have predictable results from hardware counters, and also<br>
> > to provide a finer granularity over power control from userspace.<br>
><br>
> Reading registers and counters is handled with i915_forcewake_user. So<br>
> the question is what benefit does htis give over module reload. It looks<br>
> far riskier...<br>
<br>
</div>The observation architecture bspec says that we need to disable rc6,<br>
otherwise we'll get garbage in the gpu perf counters. But imo I think this<br>
should be handled in the kernel (we neeed to write tons of funny registers<br>
to set things up anyway), at least for the time-based perf counter<br>
sampling. For prototyping things with intel_reg_write disabling rc6 at<br>
module load time seems sufficient to me.<br></blockquote><div><br>The major idea behind this was to provide additional facilities for controlling power and performance-related details of the driver from userspace, without module reloading or reboot.<br>

<br>Currently, both the GPU turbo and rc6/fbc operations are mostly autonomous, there is not much we can influence on their behavior without a reboot or module reload. So my idea was to have a way to toggle - and in some future, ideally, fine-tune their behavior from userspace during the execution. For GPU turbo, we can control it to some point from userspace via i915_max_freq. And with this patch, we could also control the rps/rc6 behavior to some point as well.<br>

</div></div><br>For the perf counters, I thought on the following flow of execution with this patch:<br>1. prev_val=$(cat /sys/kernel/debug/dri/0/i915_enable_rc6)<br>2. echo 0 > /sys/kernel/debug/dri/0/i915_enable_rc6<br>

3. do the perf counters aquisition and testing<br>4. echo $(prev_val) > /sys/kernel/debug/dri/0/i915_enable_rc6<br><br>Comments?<br clear="all"><br>-- <br>Eugeni Dodonov<a href="http://eugeni.dodonov.net/" target="_blank"><br>

</a><br>