Message ID | 1355240131-31173-1-git-send-email-v-stehle@ti.com |
---|---|
State | Changes Requested |
Delegated to: | Tom Rini |
Headers | show |
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 12/11/12 10:35, Vincent Stehlé wrote: > We introduce an OMAP5 specific version of > arm_setup_identity_mapping(), which makes the first page of the > identity mapping invalid. > > We want to unmap the region near address zero on HS OMAP devices, > to avoid speculative accesses. Accessing this region causes > security violations, which we want to avoid. > > Signed-off-by: Vincent Stehlé <v-stehle@ti.com> Cc: Tom Rini > <trini@ti.com> --- Changes for v2: - Fix missing page_table > argument - Add extern definition to fix compilation warning > > arch/arm/cpu/armv7/omap5/Makefile | 1 + > arch/arm/cpu/armv7/omap5/cache-cp15.c | 46 > +++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) > create mode 100644 arch/arm/cpu/armv7/omap5/cache-cp15.c > > diff --git a/arch/arm/cpu/armv7/omap5/Makefile > b/arch/arm/cpu/armv7/omap5/Makefile index 9b261c4..49c454c 100644 > --- a/arch/arm/cpu/armv7/omap5/Makefile +++ > b/arch/arm/cpu/armv7/omap5/Makefile @@ -29,6 +29,7 @@ COBJS += > hwinit.o COBJS += clocks.o COBJS += emif.o COBJS += sdram.o +COBJS > += cache-cp15.o > > SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix > $(obj),$(COBJS) $(SOBJS)) diff --git > a/arch/arm/cpu/armv7/omap5/cache-cp15.c > b/arch/arm/cpu/armv7/omap5/cache-cp15.c new file mode 100644 index > 0000000..6ff4548 --- /dev/null +++ > b/arch/arm/cpu/armv7/omap5/cache-cp15.c @@ -0,0 +1,46 @@ +/* + * > (C) Copyright 2002 + * Wolfgang Denk, DENX Software Engineering, > wd@denx.de. + * + * (C) Copyright 2012 + * Vincent Stehlé, Texas > Instruments, v-stehle@ti.com. + * + * See file CREDITS for list of > people who contributed to this + * project. + * + * This program > is free software; you can redistribute it and/or + * modify it > under the terms of the GNU General Public License as + * published > by the Free Software Foundation; either version 2 of + * the > License, or (at your option) any later version. + * + * This > program is distributed in the hope that it will be useful, + * but > WITHOUT ANY WARRANTY; without even the implied warranty of + * > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * > GNU General Public License for more details. + * + * You should > have received a copy of the GNU General Public License + * along > with this program; if not, write to the Free Software + * > Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA > 02111-1307 USA + */ + +#include <common.h> + +/* OMAP5 specific > function to set up the identity mapping. */ +void > arm_setup_identity_mapping(u32 *page_table) +{ + extern void > __arm_setup_identity_mapping(u32 *page_table); Lets put the extern in arch/arm/include/asm/cache.h and make both files #include <asm/cache.h>. Thanks! - -- Tom -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://www.enigmail.net/ iQIcBAEBAgAGBQJQx1SdAAoJENk4IS6UOR1WmRkQAIfaVp9YOcBPiGmKNDNTBpXL ol4psfAEEg0OGOZdzX4lIW2+NjzLtzzcwx8s8luEt4YMtaSkPlJ+Sf5eQ1Fd9KpG xBteU5PLWqE9mtTRBHylKrwqjysyuypFHfWpU4tiwLWygGI+eybRb0hrRKEplop6 BYjAOhJ8i4J5NYxQucFkLFeCTR7WAFQsxQ58rfDg/7KkVYcK71j+tZs6SmPijhIw oJoGsWnpsljC/4mbTs189Y391CKmYcSNxgRtGc6fU9NJQFJ2Vx8Ajazhasvtl8sU 7yOrxR8ssFhXSSD2/PdcKUi/VHrX/mVXTV9uk4B9ImsQt5e5Jr3c8XTnw+hLdBzz WMBpQNNPxEMibhYn3UZpskWfxR+1T1kCNbq+lVB6KVCboy98/3Bhu8OWGCLUWRk5 IB/LUfrf4uWjO5pA9hHlmzM0ckjLbQd27zGtof1qwB6EsOefL+x83XR4azqHW6Pq 6Iw+RdX7G+KKvJEqHux/fHvxrSqUzSUQJH4Bk6GYVeSNno+XfIAzNSfMfGv94zvN HMrL9AQIhxfl+2+D1siEXG5YHw4COgNhcz55DYMZK9/1HvQ6QWW5WmT/+Ty1+DfB WKX9ZLksdVl9dPgHtxlfaqWIVc2GrbwUgEzdZHVbdzsDfecNFDxxypBXU7U693KW AC/XcVMEiN1rGRL0cRFt =giVG -----END PGP SIGNATURE-----
Tom Rini: > Lets put the extern in arch/arm/include/asm/cache.h and make both files > #include <asm/cache.h>. Sure, here is an updated patches pair: [PATCH v3 1/2] ARM: cache: introduce weak arm_setup_identity_mapping [PATCH v3 2/2] ARM: OMAP5: redefine arm_setup_identity_mapping Thank you for your reviews. Best regards, V.
diff --git a/arch/arm/cpu/armv7/omap5/Makefile b/arch/arm/cpu/armv7/omap5/Makefile index 9b261c4..49c454c 100644 --- a/arch/arm/cpu/armv7/omap5/Makefile +++ b/arch/arm/cpu/armv7/omap5/Makefile @@ -29,6 +29,7 @@ COBJS += hwinit.o COBJS += clocks.o COBJS += emif.o COBJS += sdram.o +COBJS += cache-cp15.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS) $(SOBJS)) diff --git a/arch/arm/cpu/armv7/omap5/cache-cp15.c b/arch/arm/cpu/armv7/omap5/cache-cp15.c new file mode 100644 index 0000000..6ff4548 --- /dev/null +++ b/arch/arm/cpu/armv7/omap5/cache-cp15.c @@ -0,0 +1,46 @@ +/* + * (C) Copyright 2002 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * (C) Copyright 2012 + * Vincent Stehlé, Texas Instruments, v-stehle@ti.com. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> + +/* OMAP5 specific function to set up the identity mapping. */ +void arm_setup_identity_mapping(u32 *page_table) +{ + extern void __arm_setup_identity_mapping(u32 *page_table); + + /* + * Perform default mapping, which sets up an identity-mapping for all + * 4GB, rw for everyone. + */ + __arm_setup_identity_mapping(page_table); + + /* + * First page (starting at 0x0) is made invalid to avoid speculative + * accesses in secure rom. + * TODO: use second level descriptors for finer grained mapping. + */ + page_table[0] = 0; +}
We introduce an OMAP5 specific version of arm_setup_identity_mapping(), which makes the first page of the identity mapping invalid. We want to unmap the region near address zero on HS OMAP devices, to avoid speculative accesses. Accessing this region causes security violations, which we want to avoid. Signed-off-by: Vincent Stehlé <v-stehle@ti.com> Cc: Tom Rini <trini@ti.com> --- Changes for v2: - Fix missing page_table argument - Add extern definition to fix compilation warning arch/arm/cpu/armv7/omap5/Makefile | 1 + arch/arm/cpu/armv7/omap5/cache-cp15.c | 46 +++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 arch/arm/cpu/armv7/omap5/cache-cp15.c