Engine reclocking is too slow and so artifacts are visible when it happens. We need to make it faster.
Created attachment 32948 [details] [review]
Switch AtomBIOS parser to udelay
Dave noticed we lost a lot of time when sleeping in AtomBIOS. Switching to udelay drastically improves this.
Created attachment 32949 [details] [review]
Switch engine clock setting to registers operations
It may be good idea to perform sensible operations manually, without parsing AtomBIOS commands. Unfortunately it needs rewriting AtomBIOS code for each GPU generation.
Created attachment 32950 [details]
Full results of my speed test
Currently reclocking engine takes averagely .005152s. That's way too long.
Using Dave's patch I went down to averagely .000287s.
With registers patch went down to averagely .000267s.
Using both patches gave even nicer result: .000185s.
Both + my patch hacked (to use "while" op): .000177s.
In every case corruptions were gone.
About hacked version of my patch, I switched to using "while" (just like AtomBIOS does) instead of waiting in "for" for bit in 0x600.