On Tue, 12 Apr 2011, Michael Bohan wrote: > Hi, > > In arch/arm/kernel/traps.c:set_tls() and arch/arm/include/asm/tls.h, some > configurations allow for a assignment of address 0xffff0ff0. This address > falls within the MT_HIGH_VECTORS mapping setup in devicemaps_init(). That > mapping is explicitly made read-only. Thus, the kernel takes a segfault when > writing in set_tls(). If set_tls() writes to 0xffff0ff0 in your case, then you must have an ARM core which is prior ARMv6k. > It looks like this disparity may have been introduced in this commit: > > commit 36bb94ba36f332de767cfaa3af6a5136435a3a9c > Author: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> > Date: Tue Nov 16 08:40:36 2010 +0000 > > ARM: pgtable: provide RDONLY page table bit rather than WRITE bit > > Signed-off-by: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> > > Is there a reason this mapping must be read-only? It is read-only for user space to prevent user space from messing with the vector table. In the kernel, it is read-only _only_ when CONFIG_CPU_USE_DOMAINS is not enabled which may happen with ARMv6k and above. Otherwise, if you are pre ARMv6k, you do use domains, and then the vector page is read-write for the kernel. > Perhaps we could apply write > access for these special cases only? I'd rather suggest you investigate what changes you did to your kernel tree that would explain the apparent inconsistency in your kernel config. Nicolas -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html