From: Patrick Delaunay <patrick.delaunay@foss.st.com>
To: u-boot@lists.denx.de
Subject: [PATCH 5/8] arm: cp15: update DACR value to activate access control
Date: Fri, 5 Feb 2021 13:53:36 +0100 [thread overview]
Message-ID: <20210205135332.5.I7ab5a1fc95ca9fae01a4ec194a67374ba6872638@changeid> (raw)
In-Reply-To: <20210205125339.24721-1-patrick.delaunay@foss.st.com>
Update the initial value of Domain Access Control Register (DACR)
and set by default the access permission to client (DACR_Dn_CLIENT = 1U)
for each of the 16 domains and no more to all-supervisor
(DACR_Dn_MANAGER = 3U).
This patch allows to activate the domain checking in MMU against the
permission bits in the translation tables and avoids prefetching issue
on ARMv7 [1].
Today it was already done for OMAP2 architecture
./arch/arm/mach-omap2/omap-cache.c::arm_init_domains
introduced by commit de63ac278cba ("ARM: mmu: Set domain permissions
to client access") which fixes lot of speculative prefetch aborts seen
on OMAP5 secure devices.
[1] https://developer.arm.com/documentation/ddi0406/b/System-Level-Architecture/Virtual-Memory-System-Architecture--VMSA-/Memory-access-control/The-Execute-Never--XN--attribute-and-instruction-prefetching
Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Reported-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
---
arch/arm/lib/cache-cp15.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/arch/arm/lib/cache-cp15.c b/arch/arm/lib/cache-cp15.c
index abd81d21c7..f78ce33b18 100644
--- a/arch/arm/lib/cache-cp15.c
+++ b/arch/arm/lib/cache-cp15.c
@@ -202,9 +202,12 @@ static inline void mmu_setup(void)
asm volatile("mcr p15, 0, %0, c2, c0, 0"
: : "r" (gd->arch.tlb_addr) : "memory");
#endif
- /* Set the access control to all-supervisor */
+ /*
+ * initial value of Domain Access Control Register (DACR)
+ * Set the access control to client (1U) for each of the 16 domains
+ */
asm volatile("mcr p15, 0, %0, c3, c0, 0"
- : : "r" (~0));
+ : : "r" (0x55555555));
arm_init_domains();
--
2.17.1
next prev parent reply other threads:[~2021-02-05 12:53 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-05 12:53 [PATCH 0/8] Patrick Delaunay
2021-02-05 12:53 ` [PATCH 1/8] stm32mp: update MMU config before the relocation Patrick Delaunay
2021-03-03 19:08 ` Tom Rini
2021-02-05 12:53 ` [PATCH 2/8] stm32mp: update the mmu configuration for SPL and prereloc Patrick Delaunay
2021-03-03 19:08 ` Tom Rini
2021-02-05 12:53 ` [PATCH 3/8] arm: remove TTB_SECT_XN_MASK in DCACHE_WRITETHROUGH Patrick Delaunay
2021-03-03 19:08 ` Tom Rini
2021-02-05 12:53 ` [PATCH 4/8] arm: cosmetic: align TTB_SECT define value Patrick Delaunay
2021-03-03 19:09 ` Tom Rini
2021-02-05 12:53 ` Patrick Delaunay [this message]
2021-03-03 19:09 ` [PATCH 5/8] arm: cp15: update DACR value to activate access control Tom Rini
2021-02-05 12:53 ` [PATCH 6/8] arm: omap2: remove arm_init_domains Patrick Delaunay
2021-03-03 19:09 ` Tom Rini
2021-02-05 12:53 ` [PATCH 7/8] arm: cp15: remove weak function arm_init_domains Patrick Delaunay
2021-03-03 19:09 ` Tom Rini
2021-02-05 12:53 ` [PATCH 8/8] arm: remove set_dacr/get_dacr functions Patrick Delaunay
2021-03-03 19:09 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210205135332.5.I7ab5a1fc95ca9fae01a4ec194a67374ba6872638@changeid \
--to=patrick.delaunay@foss.st.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.