On 01/26/2015 11:36 AM, James Hogan wrote:
>
>> + raw_current_cpu_data.htw_seq++; \
>
> not "if (!raw_current_cpu_data.htw_seq++)) {"?
Why?
on _stop() calls you just increment it. The _start() will do the right
thing then.
I think what you suggest it to move the if() condition from the _start()
to _stop().
>
>> write_c0_pwctl(read_c0_pwctl() & \
>> ~(1 << MIPS_PWCTL_PWEN_SHIFT)); \
>> back_to_back_c0_hazard(); \
>> + local_irq_restore(flags); \
>> } \
>> } while(0)
>>
>> #define htw_start() \
>> do {
>> \
>> + unsigned long flags; \
>> + \
>> if (cpu_has_htw) { \
>> - write_c0_pwctl(read_c0_pwctl() | \
>> - (1 << MIPS_PWCTL_PWEN_SHIFT)); \
>> - back_to_back_c0_hazard(); \
>> + local_irq_save(flags); \
>> + if (!--raw_current_cpu_data.htw_seq) { \
>> + write_c0_pwctl(read_c0_pwctl() | \
>> + (1 << MIPS_PWCTL_PWEN_SHIFT)); \
>> + back_to_back_c0_hazard(); \
>> + } \
>> + local_irq_restore(flags); \
>> } \
>> } while(0)
>>
>> diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
>> index dc49cf30c2db..5d6e59f20750 100644
>> --- a/arch/mips/kernel/cpu-probe.c
>> +++ b/arch/mips/kernel/cpu-probe.c
>> @@ -367,8 +367,10 @@ static inline unsigned int decode_config3(struct
>> cpuinfo_mips *c)
>> if (config3 & MIPS_CONF3_MSA)
>> c->ases |= MIPS_ASE_MSA;
>> /* Only tested on 32-bit cores */
>> - if ((config3 & MIPS_CONF3_PW) && config_enabled(CONFIG_32BIT))
>> + if ((config3 & MIPS_CONF3_PW) && config_enabled(CONFIG_32BIT)) {
>> + c->htw_seq = 0;
>
> is that necessary, since cpu_data[] is global?
I checked and it is not placed in the .data instead of .bss section so i
was not sure if it is initialized properly.
--
markos
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html