aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386
diff options
context:
space:
mode:
authorDave Jones <davej@redhat.com>2006-03-05 03:35:00 -0500
committerDave Jones <davej@redhat.com>2006-03-05 03:35:00 -0500
commit2a1c1c877ecb446dbdf1715248e151db8719a87b (patch)
treed265e90cdbcbfc9b76a1c183a03688eddb5d0e6f /arch/i386
parent32ee8c3e470d86588b51dc42ed01e85c5fa0f180 (diff)
[CPUFREQ] powernow-k8: Let cpufreq driver handle affected CPUs
powernow-k8: Let cpufreq driver handle affected CPUs Let the cpufreq driver manage AMD Dual-Core CPUs being tied together. Since cpufreq driver's affected CPUs data, cpufreq_policy->cpus, already knows about which cores are tied together, powernow driver does not have keep its internal data for every core. (even a pointer.. it will never be called on) Telling cpufreq driver about cpu_core_map at init time is sufficient. Signed-off-by: Jacob Shin <jacob.shin@amd.com> Signed-off-by: Dave Jones <davej@redhat.com>
Diffstat (limited to 'arch/i386')
-rw-r--r--arch/i386/kernel/cpu/cpufreq/powernow-k8.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
index e85e90524df7..9a8ec03cde90 100644
--- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
+++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
@@ -45,7 +45,7 @@
45 45
46#define PFX "powernow-k8: " 46#define PFX "powernow-k8: "
47#define BFX PFX "BIOS error: " 47#define BFX PFX "BIOS error: "
48#define VERSION "version 1.60.0" 48#define VERSION "version 1.60.1"
49#include "powernow-k8.h" 49#include "powernow-k8.h"
50 50
51/* serialize freq changes */ 51/* serialize freq changes */
@@ -908,7 +908,6 @@ static int powernowk8_target(struct cpufreq_policy *pol, unsigned targfreq, unsi
908 u32 checkvid = data->currvid; 908 u32 checkvid = data->currvid;
909 unsigned int newstate; 909 unsigned int newstate;
910 int ret = -EIO; 910 int ret = -EIO;
911 int i;
912 911
913 /* only run on specific CPU from here on */ 912 /* only run on specific CPU from here on */
914 oldmask = current->cpus_allowed; 913 oldmask = current->cpus_allowed;
@@ -954,12 +953,6 @@ static int powernowk8_target(struct cpufreq_policy *pol, unsigned targfreq, unsi
954 up(&fidvid_sem); 953 up(&fidvid_sem);
955 goto err_out; 954 goto err_out;
956 } 955 }
957
958 /* Update all the fid/vids of our siblings */
959 for_each_cpu_mask(i, cpu_core_map[pol->cpu]) {
960 powernow_data[i]->currvid = data->currvid;
961 powernow_data[i]->currfid = data->currfid;
962 }
963 up(&fidvid_sem); 956 up(&fidvid_sem);
964 957
965 pol->cur = find_khz_freq_from_fid(data->currfid); 958 pol->cur = find_khz_freq_from_fid(data->currfid);
@@ -983,7 +976,7 @@ static int __cpuinit powernowk8_cpu_init(struct cpufreq_policy *pol)
983{ 976{
984 struct powernow_k8_data *data; 977 struct powernow_k8_data *data;
985 cpumask_t oldmask = CPU_MASK_ALL; 978 cpumask_t oldmask = CPU_MASK_ALL;
986 int rc, i; 979 int rc;
987 980
988 if (!cpu_online(pol->cpu)) 981 if (!cpu_online(pol->cpu))
989 return -ENODEV; 982 return -ENODEV;
@@ -1069,9 +1062,7 @@ static int __cpuinit powernowk8_cpu_init(struct cpufreq_policy *pol)
1069 printk("cpu_init done, current fid 0x%x, vid 0x%x\n", 1062 printk("cpu_init done, current fid 0x%x, vid 0x%x\n",
1070 data->currfid, data->currvid); 1063 data->currfid, data->currvid);
1071 1064
1072 for_each_cpu_mask(i, cpu_core_map[pol->cpu]) { 1065 powernow_data[pol->cpu] = data;
1073 powernow_data[i] = data;
1074 }
1075 1066
1076 return 0; 1067 return 0;
1077 1068