[Nouveau] [To developers and hardcore NV50+ users] Experimental patch to get safer clock changes
martin.peres at free.fr
Tue Nov 2 18:32:39 PDT 2010
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.
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