From 41a47e64a1e80c27107851bd336643e224c97946 Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Mon, 10 Mar 2003 15:07:10 -0100 Subject: [PATCH] [CPUFREQ] powernow-k7 lazy voltage setting. --- arch/i386/kernel/cpu/cpufreq/powernow-k7.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k7.c b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c index 664ff84f5903e..43562ebfd2a5b 100644 --- a/arch/i386/kernel/cpu/cpufreq/powernow-k7.c +++ b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c @@ -239,12 +239,17 @@ static void change_speed (unsigned int index) __asm__("\tcli\n"); rdmsrl (MSR_K7_FID_VID_CTL, fidvidctl.val); fidvidctl.bits.SGTC = latency; /* Stop grant timeout counter */ + fidvidctl.bits.FID = fid; - fidvidctl.bits.VID = vid; - /* Note, we could set these lazily. Ie, only do voltage transition - if its changed since last time (Some speeds have the same voltage) */ fidvidctl.bits.FIDC = 1; - fidvidctl.bits.VIDC = 1; + + /* Set the voltage lazily. Ie, only do voltage transition + if its changed since last time (Some speeds have the same voltage) */ + if (fidvidctl.bits.VID != vid) { + fidvidctl.bits.VID = vid; + fidvidctl.bits.VIDC = 1; + } + wrmsrl (MSR_K7_FID_VID_CTL, fidvidctl.val); if (have_a0 == 1) __asm__("\tsti\n"); -- 2.53.0