i did some testing on a mt-34 windows system with prime and rmclock. i added voltage steps for each multiplier from 4 to 9 and tested each 7hrs+ with prime, with no problems whatsoever. 800, 1000 and 1200 would make 3 steps below 1400, can you tell me why this is working perfectly fine?
morfic is trying to add more intermediate steps in his patch too, so who is right here?

Table 69 and Table 70 provide the core frequency-to-VCO frequency relationship for AMD Athlon 64 and AMD Opteron processors. These processors do not support frequency transitions in VCO frequency steps greater than 200 MHz. The processor driver, and the AMD PowerNow! driver use these tables when making P-state transitions.

Only one P-state is allowed in Table 69. The one P-state consists of a frequency from the Minimum Core Frequency column in Table 69 and is the minimum P-State supported by the processor. For processors that support P-state transitions, the power and thermal data sheet has a table of valid Pstates based on ordering part number that dictates which frequency in Table 69 is used for the minimum P-state supported by the processor.

Also, when transitioning from a low-fid frequency, you're supposed to go to one of the "portal frequencies" (and same thing in the reverse order to go back to a low-fid state). So you can't transition between two low-fid frequencies directly.

That's the specifications. It does not mean the CPU can't do it, but it does mean that AMD doesn't certify that the CPUs can use multiple low-fid frequencies, or switch between low-fid states without going through a portal. It probably can be done, but it's not guaranteed to be stable. There are probably good reasons for those rules. If you follow the rules, you never change the VCO frequency by more than 200 MHz for each transition. If you don't follow them, the frequency jump might cause the PLL in the clock generator to lose lock for too much time, and the result could be a hard hang, or weird behavior.

Dio-Sama wrote:

i did some testing on a mt-34 windows system with prime and rmclock. i added voltage steps for each multiplier from 4 to 9 and tested each 7hrs+ with prime, with no problems whatsoever. 800, 1000 and 1200 would make 3 steps below 1400, can you tell me why this is working perfectly fine?

The problem is not that the CPU can or can't work at the low frequencies (there is no reason why it would not). The problem is that doing some of the transitions is not guaranteed to work 100% of the time. It will work at constant frequency, but it could hang when switching.

so all in all the worst that could happen when adding more steps is a little whacky behaviour like crashes at some of the transitions...
i'm fine with that, so i guess i'll just wait for morfic to update his patch then._________________"Death is but perchance to dream."

I just tried out this hack by manually changing the kernel sources. This is really a good hint. I just saved about 10 degrees of temperature under heavy load. I am now running a 1.350 V@2GHz. I made a mistake at first and accidentally my machine runs a 1.1V@2GHz But I could recompile my kernel modules without crash and now it is running save with 1.35V. This is really "cool", because the fan power management was broken since a certain time and i am running now the heatpipe fan at constant RPM with 5V. With this hack it will be not risky even at summer temperatures.

at first i patched a 2.6.15-r7 kernel and it borked. after some testing i realized that my system crashed the instant it changed frequencies. later i realized that it crashed only when i changed the voltage of the slowest mode. so i did the following:
original -> now
2ghz/1500mv -> 2ghz/1300mv
1.8ghz/1400mv -> 1.8ghz/1250mv
1ghz/1200mv -> 1ghz/1200mv
full load: 40/44 deg -> 34/37 deg (cpu0/cpu1)

and everything works fine!

then i simply copied the powernow-k8.c from 2.6.15 to 2.6.14 because i can't use 2.6.15. it kills my cordless desktop set, pptp tunnels don't work anymore and (most important) i can't watch tv anymore!!

of course i diffed the two at first, but the differences are minimal.

now i have a running system at 2.6.14, undervolting works perfect with ondemand governor, vpn with pptp and mppe works again but i still can't watch tv that worked last with 2.6.14-r3.

so long and happy undervolting,
andy_________________bill who? micro what?

at first i patched a 2.6.15-r7 kernel and it borked. after some testing i realized that my system crashed the instant it changed frequencies. later i realized that it crashed only when i changed the voltage of the slowest mode. so i did the following:
original -> now
2ghz/1500mv -> 2ghz/1300mv
1.8ghz/1400mv -> 1.8ghz/1250mv
1ghz/1200mv -> 1ghz/1200mv
full load: 40/44 deg -> 34/37 deg (cpu0/cpu1)

and everything works fine!

then i simply copied the powernow-k8.c from 2.6.15 to 2.6.14 because i can't use 2.6.15. it kills my cordless desktop set, pptp tunnels don't work anymore and (most important) i can't watch tv anymore!!

of course i diffed the two at first, but the differences are minimal.

now i have a running system at 2.6.14, undervolting works perfect with ondemand governor, vpn with pptp and mppe works again but i still can't watch tv that worked last with 2.6.14-r3.

so long and happy undervolting,
andy

This is really interesting to me. I also have a tyan tiger k8w (2875). and even using the default scaling I get lockups. Perhaps you could help me narrow things down.

Did you get lockups with regular scaling with no undervolting patch.

What Bios do you run

Its been suggested that my lockups are actually libata related somehow. Do you boot linux on a SATA or legacy IDE HD

There is a new beta BIOS which may resolve the problem but I'm unable to use it as it says my BIOS is write protected.

i use bios 3.02 since the day it was released and it solved a lot of different problems. the board was always stable with windows, but performance was another thing. i like to max my computers out so windows is just for some real special compatibility problems for some customers. but for quite some time there was (alas!) no linux for me with that board. that was because of the agp design of the 8511 chip from amd. there is a huge compatibility problem with that agp-chip and a lot of power-demanding graphic-cards. back then i used a radeon 9800xt (till today the topmost energy-demanding card of all). since i switched to a x700pro and flashed to 3.02 everything simply works. my problems were mostly with my addon-cards. the board itself is (except for the poor memory performance with just one memory bus) a very nice and fine thing. it's a pity that there will be no dual-core support.

i always had a sata harddisk with this board, but my cdrw and dvdrw drives are pata. there were never any problems.

I did have one small disappointment, though. I was hoping to increase voltage over the max provided by my BIOS settings with this. No luck, I am still limited to 1.40V (default +.05). Using a kernel patch (powernow-k8-vcore_list-2.6.16-rc2.diff) to allow me to select the C&Q voltages also doesn't allow >1.40V. Not sure if this is a hardware limitation (I know you can modify the motherboard for up to 1.55V by shorting VID pins), but it would be nice if cpupw could override this limit.

I remember using the first version to set the current CPU voltage from the command line, but now I can't remember what the syntax was. Could you add that info to the --help listing?

Also, since I am overclocking, the frequency listed is incorrect. Perhaps the current frequency could be output (from /proc/cpuinfo) as well as the FID.

If modifying the kernel and this program didn't work it might be because a hardware limitation. In my laptop I have the full range of voltage but in my desktop the voltage will never go under 1.1v and VID will never decrease 18. But I haven't have time to investigate what causes this.

I just realised that I didn't program any way to just set a different voltage from the command line. I will to it very soon, I promise! (probably version 0.1.2)

About the speed and voltage... I just calculate it from the FID and VID. For K8 I always suppose a 100 Mhz speed bus. I don't know how to guess the FSB (or HT link) speed... (any ideas) Las option will be calculate it form /proc/cpuinfo

I did have one small disappointment, though. I was hoping to increase voltage over the max provided by my BIOS settings with this. No luck, I am still limited to 1.40V (default +.05). Not sure if this is a hardware limitation.

It is a hardware limit AFAIK. Revision E CPUs seem to have a limited voltage range. On an X2 3800+:

Look at the "voltage range", it's what the CPU reports as accepted voltages. If you try to set lower than the minimum, the CPU will set that minimum instead.

brihall wrote:

(I know you can modify the motherboard for up to 1.55V by shorting VID pins), but it would be nice if cpupw could override this limit.

You can tweak it on the motherboard because it's either forcing the VID pins to a given value (so what the processor says doesn't matter to the VRM) or introducing a bias in the VRM reference voltage (like up all VIDs by 100 mV). That can't be done easily through software (the BIOS knows how to program that, but it's motherboard-specific).

Elmo234 wrote:

I don't know how to guess the FSB (or HT link) speed...

You would have to read it from the chipset or the clock generator. There is no generic way AFAIK.

a64-vid seems to indicate that 1.55V is available, but trying to get there fails.

It's not available. It's just that my program doesn't check for the 0x00 value, that means there is no limit reported by the CPU for that value. In your case it means you can set the voltage as low as you want, there is no lower limit.

Edit: It should be fixed now, it should show the corresponding limit of the VRM spec (800 mV -> 1550 mV) when the CPU reports no limit.

I've just tried the patch and discovered that the lockups on my tyan k8w (2875) disappear if I set the lowest voltage to 1300 rather than the default 1200. Whilst I have not tested extensively 1300 works at all frequencies for my dual opteron 248's.

Now I had thought that cpufreq scaled the cpu's in tandem but this no longer seems to be true. Frequencies scale independently. However if I manually set both cpu's to the same frequency, 1200 and maybe lower seems to be doable.

I have no idea how to automatically scale them in tandem, or even if that is worth it. It may be better to let them scale inbependently at 1300mv.

So I don't have all the answers, I have no idea if this is a bug or a hardware issue, but the info may help others at some point.

Note that even without this patch default voltages hang my system when scaled independently on all recent kernels

on my system powernow_k8 does not load ("mp systems not supported by psb bios structure") but i'd like to clock down my cpu when idle. the powernow driver for windows does not load either. but i can change fid and vid using rightmark's rmclock. so there should be a way make it work under linux. perhaps a patch for this module. i can test the voltages when running windows, so i would be satisfied when i can define the voltages in a kernel source file (as i do it with the speedstep_centrino module on my notebook). but i don't know how to change the powernow_k8 module

and change them to world readable - for convenience - if your root user doesn¨t do it by default. There really should be no hinder for you to run userspace programs to manipulate the msr... but I could be wrong...