Re: 2.5.74-mm1 (p4-clockmod does not compile)

William Lee Irwin III
2003-07-03T10:53:18Z

On Thu, Jul 03, 2003 at 01:45:41PM +0300, Dumitru Ciobarcianu wrote:
> Here are the errors:
> CC arch/i386/kernel/cpu/cpufreq/p4-clockmod.o
> arch/i386/kernel/cpu/cpufreq/p4-clockmod.c: In function `cpufreq_p4_setdc':
> arch/i386/kernel/cpu/cpufreq/p4-clockmod.c:67: error: incompatible types in assignment
> arch/i386/kernel/cpu/cpufreq/p4-clockmod.c:78: error: incompatible type for argument 2 of `set_cpus_allowed'
> arch/i386/kernel/cpu/cpufreq/p4-clockmod.c:90: error: incompatible type for argument 2 of `set_cpus_allowed'
> arch/i386/kernel/cpu/cpufreq/p4-clockmod.c:131: error: incompatible type for argument 2 of `set_cpus_allowed'
> make[3]: *** [arch/i386/kernel/cpu/cpufreq/p4-clockmod.o] Error 1
> make[2]: *** [arch/i386/kernel/cpu/cpufreq] Error 2
> make[1]: *** [arch/i386/kernel/cpu] Error 2
> make: *** [arch/i386/kernel] Error 2

Would something like this help?

-- wli

===== arch/i386/kernel/cpu/cpufreq/p4-clockmod.c 1.16 vs edited =====
--- 1.16/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c Mon May 12 21:23:13 2003
+++ edited/arch/i386/kernel/cpu/cpufreq/p4-clockmod.c Thu Jul 3 04:07:01 2003
@@ -53,10 +53,9 @@
static int cpufreq_p4_setdc(unsigned int cpu, unsigned int newstate)
{
u32 l, h;
- unsigned long cpus_allowed;
+ cpumask_t cpus_allowed, affected_cpu_map;
struct cpufreq_freqs freqs;
int hyperthreading = 0;
- int affected_cpu_map = 0;
int sibling = 0;

if (!cpu_online(cpu) || (newstate > DC_DISABLE) ||
@@ -67,16 +66,17 @@
cpus_allowed = current->cpus_allowed;

/* only run on CPU to be set, or on its sibling */
- affected_cpu_map = 1 << cpu;
+ affected_cpu_map = cpumask_of_cpu(cpu);
#ifdef CONFIG_X86_HT
hyperthreading = ((cpu_has_ht) && (smp_num_siblings == 2));
if (hyperthreading) {
sibling = cpu_sibling_map[cpu];
- affected_cpu_map |= (1 << sibling);
+ cpu_set(sibling, affected_cpu_map);
}
#endif
set_cpus_allowed(current, affected_cpu_map);
BUG_ON(!(affected_cpu_map & (1 << smp_processor_id())));
+ BUG_ON(!cpu_isset(smp_processor_id(), affected_cpu_map));

/* get current state */
rdmsr(MSR_IA32_THERM_CONTROL, l, h);