[Nouveau] [To developers and hardcore NV50+ users] Experimental patch to get safer clock changes

Martin Peres martin.peres at free.fr
Tue Nov 2 18:32:39 PDT 2010


Hi folks,

Please do not merge this patch. I'm just asking people with nv50+ to try 
this very experimental patch. Hopefully, the results are good and I can 
start rework the patch to make it run faster and, hopefully, flicker-free.

This patch introduces Ben Skeggs's PMS-based clock changing code that I 
reworked a little. It also introduces the use of the 0xc040 register 
(I'm still REing it, it seems like a PLL supervisor, it is really weird 
but gives dir1212's nv92 way more stability).
This should run fine on nv84 to nv94 but,I have no idea on how it will 
perform on later cards.

To test this patch, you should edit and use the (very small) script 
"test_mode_changes.sh" that is basically changing the clocks every 100ms.
Launch it and then, please do GPU intensive tasks like playing games. If 
it crashes, that's a fail.
I personally can leave my computer in openarena for minutes without 
crashes nor nasty messages in dmesg. I then get bored continue hacking.

So, please report success or failure accompanied with the mmiotrace of 
your card like explained here: 
http://github.com/pathscale/pscnv/wiki/pm_mmiotrace) in the case it fails.

Wish you luck :)

As for what is on my todo list:
  - I may generate a big PMS script to handle all the clock changes. The 
problem is that it takes a lot of time to execute scripts on my card and 
I really want clock changes to happen fast to lower the performance hit 
of the reclock (see the third item).
- If this patch works, I'll rework and send it for inclusion.
- I'll try working on nv40 a bit (see what I can backport).
- Try reverse engineering performance counters so as the clock can be 
changed according to the card's current load. This is supposed to be 
hard (IIRC), so, It should take me a while.

Kindly,

Martin

PS: I really don't want everyone to jump on this patch and try it. Only 
people actually aware of my work and understanding what are the changes 
I made should test this patch. I really don't want dozens of people 
testing this, it is not ready for people other than nouveau devs.


More information about the Nouveau mailing list