[RFC/PATCH 7/7] ARM: ARM11 MPCore: cpu_v6_set_pte_ext is not preempt safe
Russell King - ARM Linux
linux at arm.linux.org.uk
Thu Oct 6 03:46:47 EDT 2011
On Thu, Oct 06, 2011 at 01:08:34AM -0400, gdavis at mvista.com wrote:
> diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S
> index a923aa0..dd2e5e5 100644
> --- a/arch/arm/mm/proc-v6.S
> +++ b/arch/arm/mm/proc-v6.S
> @@ -122,7 +122,18 @@ ENTRY(cpu_v6_switch_mm)
>
> ENTRY(cpu_v6_set_pte_ext)
> #ifdef CONFIG_MMU
> +#ifdef CONFIG_PREEMPT
> + ALT_SMP(stmdb sp!, {r4, r10, r11})
> + ALT_SMP(get_thread_info r10)
> + ALT_SMP(ldr r4, [r10, #TI_PREEMPT]) @ get preempt count
> + ALT_SMP(add r11, r4, #1) @ increment it
> + ALT_SMP(str r11, [r10, #TI_PREEMPT]) @ disable preempt
> +#endif
> armv6_set_pte_ext cpu_v6
> +#ifdef CONFIG_PREEMPT
> + ALT_SMP(str r4, [r10, #TI_PREEMPT]) @ restore preempt count
> + ALT_SMP(ldmia sp!, {r4, r10, r11})
> +#endif
> #endif
And what effect do you expect the above to have? Do you understand
the purpose of the ALT_SMP macro? Do you understand that it should
be paired with ALT_UP ?
More information about the linux-arm-kernel
mailing list