Commit 83be7d764dc4b860712e392197ec27645f9d74a8

Authored by Linus Torvalds

Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86, msr, cpumask: Use struct cpumask rather than the deprecated cpumask_t
  x86, cpuid: Simplify the code in cpuid_open
  x86, cpuid: Remove the bkl from cpuid_open()
  x86, msr: Remove the bkl from msr_open()
  x86: AMD Geode LX optimizations
  x86, msr: Unify rdmsr_on_cpus/wrmsr_on_cpus

Showing 6 changed files Side-by-side Diff

arch/x86/Kconfig.cpu
... ... @@ -406,7 +406,7 @@
406 406 # generates cmov.
407 407 config X86_CMOV
408 408 def_bool y
409   - depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM)
  409 + depends on (MK8 || MK7 || MCORE2 || MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MCRUSOE || MEFFICEON || X86_64 || MATOM || MGEODE_LX)
410 410  
411 411 config X86_MINIMUM_CPU_FAMILY
412 412 int
arch/x86/Makefile_32.cpu
... ... @@ -41,7 +41,7 @@
41 41  
42 42 # Geode GX1 support
43 43 cflags-$(CONFIG_MGEODEGX1) += -march=pentium-mmx
44   -
  44 +cflags-$(CONFIG_MGEODE_LX) += $(call cc-option,-march=geode,-march=pentium-mmx)
45 45 # add at the end to overwrite eventual tuning options from earlier
46 46 # cpu entries
47 47 cflags-$(CONFIG_X86_GENERIC) += $(call tune,generic,$(call tune,i686))
arch/x86/include/asm/msr.h
... ... @@ -247,8 +247,8 @@
247 247 #ifdef CONFIG_SMP
248 248 int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
249 249 int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
250   -void rdmsr_on_cpus(const cpumask_t *mask, u32 msr_no, struct msr *msrs);
251   -void wrmsr_on_cpus(const cpumask_t *mask, u32 msr_no, struct msr *msrs);
  250 +void rdmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs);
  251 +void wrmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs);
252 252 int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
253 253 int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
254 254 int rdmsr_safe_regs_on_cpu(unsigned int cpu, u32 regs[8]);
255 255  
... ... @@ -264,12 +264,12 @@
264 264 wrmsr(msr_no, l, h);
265 265 return 0;
266 266 }
267   -static inline void rdmsr_on_cpus(const cpumask_t *m, u32 msr_no,
  267 +static inline void rdmsr_on_cpus(const struct cpumask *m, u32 msr_no,
268 268 struct msr *msrs)
269 269 {
270 270 rdmsr_on_cpu(0, msr_no, &(msrs[0].l), &(msrs[0].h));
271 271 }
272   -static inline void wrmsr_on_cpus(const cpumask_t *m, u32 msr_no,
  272 +static inline void wrmsr_on_cpus(const struct cpumask *m, u32 msr_no,
273 273 struct msr *msrs)
274 274 {
275 275 wrmsr_on_cpu(0, msr_no, msrs[0].l, msrs[0].h);
arch/x86/kernel/cpuid.c
... ... @@ -116,21 +116,16 @@
116 116 {
117 117 unsigned int cpu;
118 118 struct cpuinfo_x86 *c;
119   - int ret = 0;
120 119  
121   - lock_kernel();
122   -
123 120 cpu = iminor(file->f_path.dentry->d_inode);
124   - if (cpu >= nr_cpu_ids || !cpu_online(cpu)) {
125   - ret = -ENXIO; /* No such CPU */
126   - goto out;
127   - }
  121 + if (cpu >= nr_cpu_ids || !cpu_online(cpu))
  122 + return -ENXIO; /* No such CPU */
  123 +
128 124 c = &cpu_data(cpu);
129 125 if (c->cpuid_level < 0)
130   - ret = -EIO; /* CPUID not supported */
131   -out:
132   - unlock_kernel();
133   - return ret;
  126 + return -EIO; /* CPUID not supported */
  127 +
  128 + return 0;
134 129 }
135 130  
136 131 /*
arch/x86/kernel/msr.c
... ... @@ -174,21 +174,17 @@
174 174 {
175 175 unsigned int cpu = iminor(file->f_path.dentry->d_inode);
176 176 struct cpuinfo_x86 *c = &cpu_data(cpu);
177   - int ret = 0;
178 177  
179   - lock_kernel();
180 178 cpu = iminor(file->f_path.dentry->d_inode);
181 179  
182   - if (cpu >= nr_cpu_ids || !cpu_online(cpu)) {
183   - ret = -ENXIO; /* No such CPU */
184   - goto out;
185   - }
  180 + if (cpu >= nr_cpu_ids || !cpu_online(cpu))
  181 + return -ENXIO; /* No such CPU */
  182 +
186 183 c = &cpu_data(cpu);
187 184 if (!cpu_has(c, X86_FEATURE_MSR))
188   - ret = -EIO; /* MSR not supported */
189   -out:
190   - unlock_kernel();
191   - return ret;
  185 + return -EIO; /* MSR not supported */
  186 +
  187 + return 0;
192 188 }
193 189  
194 190 /*
... ... @@ -71,14 +71,9 @@
71 71 }
72 72 EXPORT_SYMBOL(wrmsr_on_cpu);
73 73  
74   -/* rdmsr on a bunch of CPUs
75   - *
76   - * @mask: which CPUs
77   - * @msr_no: which MSR
78   - * @msrs: array of MSR values
79   - *
80   - */
81   -void rdmsr_on_cpus(const cpumask_t *mask, u32 msr_no, struct msr *msrs)
  74 +static void __rwmsr_on_cpus(const struct cpumask *mask, u32 msr_no,
  75 + struct msr *msrs,
  76 + void (*msr_func) (void *info))
82 77 {
83 78 struct msr_info rv;
84 79 int this_cpu;
85 80  
86 81  
... ... @@ -92,11 +87,23 @@
92 87 this_cpu = get_cpu();
93 88  
94 89 if (cpumask_test_cpu(this_cpu, mask))
95   - __rdmsr_on_cpu(&rv);
  90 + msr_func(&rv);
96 91  
97   - smp_call_function_many(mask, __rdmsr_on_cpu, &rv, 1);
  92 + smp_call_function_many(mask, msr_func, &rv, 1);
98 93 put_cpu();
99 94 }
  95 +
  96 +/* rdmsr on a bunch of CPUs
  97 + *
  98 + * @mask: which CPUs
  99 + * @msr_no: which MSR
  100 + * @msrs: array of MSR values
  101 + *
  102 + */
  103 +void rdmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs)
  104 +{
  105 + __rwmsr_on_cpus(mask, msr_no, msrs, __rdmsr_on_cpu);
  106 +}
100 107 EXPORT_SYMBOL(rdmsr_on_cpus);
101 108  
102 109 /*
103 110  
... ... @@ -107,24 +114,9 @@
107 114 * @msrs: array of MSR values
108 115 *
109 116 */
110   -void wrmsr_on_cpus(const cpumask_t *mask, u32 msr_no, struct msr *msrs)
  117 +void wrmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs)
111 118 {
112   - struct msr_info rv;
113   - int this_cpu;
114   -
115   - memset(&rv, 0, sizeof(rv));
116   -
117   - rv.off = cpumask_first(mask);
118   - rv.msrs = msrs;
119   - rv.msr_no = msr_no;
120   -
121   - this_cpu = get_cpu();
122   -
123   - if (cpumask_test_cpu(this_cpu, mask))
124   - __wrmsr_on_cpu(&rv);
125   -
126   - smp_call_function_many(mask, __wrmsr_on_cpu, &rv, 1);
127   - put_cpu();
  119 + __rwmsr_on_cpus(mask, msr_no, msrs, __wrmsr_on_cpu);
128 120 }
129 121 EXPORT_SYMBOL(wrmsr_on_cpus);
130 122