@@ -67,22 +67,24 @@ ULONG get_GPU_frequency()
67
67
68
68
void outputClocks ()
69
69
{
70
+ if (!wanted_mp )
71
+ wanted_mp ++ ;
70
72
calc_clock_params (wanted_fsb , & wanted_n , & wanted_m );
71
73
hidden_fsb = (BASE_CLOCK_FLOAT / wanted_m ) * wanted_n ;
72
-
74
+
73
75
ULONG cpu_clk = (int )(wanted_fsb * CPU_BASE_MULTIPLIER );
74
76
ULONG mem_clk = ((BASE_CLOCK_FLOAT / wanted_m ) * (wanted_p * 2 * wanted_n )) / (2 * wanted_mp );
75
77
76
78
cpu_coeff = (pci_buff & ~0x00FFFFFF ) | (wanted_mp << 20 ) | (wanted_p << 16 ) | (wanted_n << 8 ) | wanted_m ;
77
79
78
- debugPrint ("\nFSB: %03luMHz, CPU: %03luMHz, RAM: %03luMHz \n" , wanted_fsb , cpu_clk , mem_clk );
80
+ debugPrint ("\nFSB: %03luMHz, CPU: %03luMHz, RAM: %3luMHz \n" , wanted_fsb , cpu_clk , mem_clk );
79
81
debugPrint ("NVCLK : %03luMHz\n" , wanted_nvclk );
80
82
}
81
83
82
84
static inline void writeCPUClocks (ULONG coeff )
83
85
{
84
86
// wait and disable interrupts
85
- Sleep ( 1000 );
87
+ KeStallExecutionProcessor ( 10000 );
86
88
__asm__("cli\n\t"
87
89
"sfence\n\t"
88
90
"nop\n\t"
@@ -103,7 +105,7 @@ static inline void writeCPUClocks(ULONG coeff)
103
105
"sfence\n\t"
104
106
"sti\n\t"
105
107
);
106
- Sleep ( 1000 );
108
+ KeStallExecutionProcessor ( 10000 );
107
109
}
108
110
109
111
int main (void )
@@ -189,8 +191,8 @@ int main(void)
189
191
Sleep (500 );
190
192
}
191
193
192
- // We MUST set this before CPU clocks
193
- if (wanted_mp != original_mp ) {
194
+ // If we're overclocking we need to make sure we write this first
195
+ if (wanted_mp != original_mp && wanted_fsb > original_fsb ) {
194
196
debugClearScreen ();
195
197
debugPrint ("Setting MemDiv to: %d\n" , wanted_mp );
196
198
0 commit comments