<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEEDINFO "
   title="NEEDINFO --- - nouveau.perflvl kernel parameter doesn't work"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=66176#c5">Comment # 5</a>
              on <a class="bz_bug_link 
          bz_status_NEEDINFO "
   title="NEEDINFO --- - nouveau.perflvl kernel parameter doesn't work"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=66176">bug 66176</a>
              from <span class="vcard"><a class="email" href="mailto:emil.l.velikov@gmail.com" title="Emil Velikov <emil.l.velikov@gmail.com>"> <span class="fn">Emil Velikov</span></a>
</span></b>
        <pre>(In reply to <a href="show_bug.cgi?id=66176#c4">comment #4</a>)
...
<span class="quote">> to be *forced* to MANUAL, regardless of its previous state (which I suspect
> is NONE) and then try and set the fan speed.</span >

I would call it "set", rather than "forced"

In the second part you'll need a "reference point" - which can be one of
* The kernel and/or "...I've also done this "manually" using the pathscale
tools"
* Mmio dump of the blob reclocking the card

Initially I would recommend the former

<span class="quote">> 
> > * pclk->pll_calc seems to return 0, causing nv40_calc_pll() to throw ERANGE</span >

Confirm if the function nv40_calc_pll() is the one throwing ERANGE. Then dwell
into the function, and analyse any differences with your "reff point".  There
may be a typo/inverted logic, as this code moved around in nouveau quite a few
times

<span class="quote">> > * Some of the functions called within nouveau_mem_timing_calc() may need
> > tweaking depending on now well we generate the appropriate memory timings</span >

nouveau_mem_timing_calc()
* parses the memory timing table stored in vbios - nouveau_perf_timing()
* generates the appropriate values based on the card generation -
nv**_mem_timing_calc()
* and the memory type - nouveau_mem_*ddr*()
* On newer cards (iirc nvc0+) it maps the timings with memory frequency range.
On previous generations the timings are related to the performance level rather
than the memory frequency (range)

<span class="quote">> 
> > P.S.
> > Only one zero is required to change the perflvl - "0" rather than "0,0"
> Well, by looking at the code, the performance level consists of 2 parts - AC
> (power) and DC (battery) separated by a comma (","), so I used "0,0" for the
> sake of completeness.</span >

You got me there, I have no recollection when AC/DC got introduced ^_^</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>