On 11/22/2017 05:07 PM, Martin Peres wrote:
> Hey,
> Thanks for your answer, Andy!
> On 22/11/17 04:06, Ilia Mirkin wrote:
>> On Tue, Nov 21, 2017 at 8:29 PM, Andy Ritger <arit...@nvidia.com> wrote:
>> Martin's question was very long, but it boils down to this:
>> How do we compute the correct values to write into the e114/e118 pwm
>> registers based on the VBIOS contents and current state of the board
>> (like temperature).
> Unfortunately, it can also be the e11c/e120 couple, or 0x200d8/dc on
> GF119+, or 0x200cd/d0 on Kepler+.
> At least, it looks like we know which PWM controler we need to drive, so
> I did not want to muddy the water even more by giving register
> addresses, rather concentrating on the problem at hand: How to compute
> the duty value for the PWM controler.
>> We generally do this right, but appear to get it extra-wrong for certain 
>> GPUs.
> Yes... So far, we are always safe, but users tend to mind when their
> computer sound like a jumbo jet at take off... Who would have thought? :D
> Anyway, looking forward to your answer!
> Cheers,
> Martin

Hi Martin,

One of our firmware engineers thinks that this looks a lot like PWM inversion.
For some SKUs, the interpretation of the PWM duty cycle is inverted. That 
would probably make it *very* difficult to find a sensible algorithm that 
covered all the SKUs, given that some are inverted and others are not.

For the noisy GPUs, a very useful experiment would be to try inverting it, 
like this:

        pwmDutyCycle = pwmPeriod - pwmDutyCycle;

...and then see if fan control starts behaving closer to how you've actually 
programmed it.

Would that be easy enough to try out? It should help narrow down the
problem at least.

John Hubbard
Nouveau mailing list

Reply via email to