aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm53xx/patches-4.1/073-ARM-l2c-only-unlock-caches-if-NS_LOCKDOWN-bit-is-set.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm53xx/patches-4.1/073-ARM-l2c-only-unlock-caches-if-NS_LOCKDOWN-bit-is-set.patch')
-rw-r--r--target/linux/bcm53xx/patches-4.1/073-ARM-l2c-only-unlock-caches-if-NS_LOCKDOWN-bit-is-set.patch149
1 files changed, 0 insertions, 149 deletions
diff --git a/target/linux/bcm53xx/patches-4.1/073-ARM-l2c-only-unlock-caches-if-NS_LOCKDOWN-bit-is-set.patch b/target/linux/bcm53xx/patches-4.1/073-ARM-l2c-only-unlock-caches-if-NS_LOCKDOWN-bit-is-set.patch
deleted file mode 100644
index 852dd028d7..0000000000
--- a/target/linux/bcm53xx/patches-4.1/073-ARM-l2c-only-unlock-caches-if-NS_LOCKDOWN-bit-is-set.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From e946a8cbe4a47a7c2615ffb0d45712e72c7d0f3a Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel@arm.linux.org.uk>
-Date: Fri, 15 May 2015 11:51:51 +0100
-Subject: [PATCH 73/74] ARM: l2c: only unlock caches if NS_LOCKDOWN bit is set
-
-Some L2C caches have a bit which allows non-secure software to control
-the cache lockdown. Some platforms are unable to set this bit. To
-avoid receiving an abort while trying to unlock the cache lines, check
-the state of this bit before unlocking. We do this by providing a new
-method in the l2c_init_data to perform the unlocking.
-
-Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
----
- arch/arm/mm/cache-l2x0.c | 26 +++++++++++++++++++++++++-
- 1 file changed, 25 insertions(+), 1 deletion(-)
-
---- a/arch/arm/mm/cache-l2x0.c
-+++ b/arch/arm/mm/cache-l2x0.c
-@@ -42,6 +42,7 @@ struct l2c_init_data {
- void (*fixup)(void __iomem *, u32, struct outer_cache_fns *);
- void (*save)(void __iomem *);
- void (*configure)(void __iomem *);
-+ void (*unlock)(void __iomem *, unsigned);
- struct outer_cache_fns outer_cache;
- };
-
-@@ -128,7 +129,7 @@ static void l2c_enable(void __iomem *bas
- else
- l2x0_data->configure(base);
-
-- l2c_unlock(base, num_lock);
-+ l2x0_data->unlock(base, num_lock);
-
- local_irq_save(flags);
- __l2c_op_way(base + L2X0_INV_WAY);
-@@ -249,6 +250,7 @@ static const struct l2c_init_data l2c210
- .enable = l2c_enable,
- .save = l2c_save,
- .configure = l2c_configure,
-+ .unlock = l2c_unlock,
- .outer_cache = {
- .inv_range = l2c210_inv_range,
- .clean_range = l2c210_clean_range,
-@@ -400,6 +402,12 @@ static void l2c220_enable(void __iomem *
- l2c_enable(base, aux, num_lock);
- }
-
-+static void l2c220_unlock(void __iomem *base, unsigned num_lock)
-+{
-+ if (readl_relaxed(base + L2X0_AUX_CTRL) & L220_AUX_CTRL_NS_LOCKDOWN)
-+ l2c_unlock(base, num_lock);
-+}
-+
- static const struct l2c_init_data l2c220_data = {
- .type = "L2C-220",
- .way_size_0 = SZ_8K,
-@@ -407,6 +415,7 @@ static const struct l2c_init_data l2c220
- .enable = l2c220_enable,
- .save = l2c_save,
- .configure = l2c_configure,
-+ .unlock = l2c220_unlock,
- .outer_cache = {
- .inv_range = l2c220_inv_range,
- .clean_range = l2c220_clean_range,
-@@ -755,6 +764,12 @@ static void l2c310_resume(void)
- set_auxcr(get_auxcr() | BIT(3) | BIT(2) | BIT(1));
- }
-
-+static void l2c310_unlock(void __iomem *base, unsigned num_lock)
-+{
-+ if (readl_relaxed(base + L2X0_AUX_CTRL) & L310_AUX_CTRL_NS_LOCKDOWN)
-+ l2c_unlock(base, num_lock);
-+}
-+
- static const struct l2c_init_data l2c310_init_fns __initconst = {
- .type = "L2C-310",
- .way_size_0 = SZ_8K,
-@@ -763,6 +778,7 @@ static const struct l2c_init_data l2c310
- .fixup = l2c310_fixup,
- .save = l2c310_save,
- .configure = l2c310_configure,
-+ .unlock = l2c310_unlock,
- .outer_cache = {
- .inv_range = l2c210_inv_range,
- .clean_range = l2c210_clean_range,
-@@ -1067,6 +1083,7 @@ static const struct l2c_init_data of_l2c
- .enable = l2c_enable,
- .save = l2c_save,
- .configure = l2c_configure,
-+ .unlock = l2c_unlock,
- .outer_cache = {
- .inv_range = l2c210_inv_range,
- .clean_range = l2c210_clean_range,
-@@ -1086,6 +1103,7 @@ static const struct l2c_init_data of_l2c
- .enable = l2c220_enable,
- .save = l2c_save,
- .configure = l2c_configure,
-+ .unlock = l2c220_unlock,
- .outer_cache = {
- .inv_range = l2c220_inv_range,
- .clean_range = l2c220_clean_range,
-@@ -1213,6 +1231,7 @@ static const struct l2c_init_data of_l2c
- .fixup = l2c310_fixup,
- .save = l2c310_save,
- .configure = l2c310_configure,
-+ .unlock = l2c310_unlock,
- .outer_cache = {
- .inv_range = l2c210_inv_range,
- .clean_range = l2c210_clean_range,
-@@ -1242,6 +1261,7 @@ static const struct l2c_init_data of_l2c
- .fixup = l2c310_fixup,
- .save = l2c310_save,
- .configure = l2c310_configure,
-+ .unlock = l2c310_unlock,
- .outer_cache = {
- .inv_range = l2c210_inv_range,
- .clean_range = l2c210_clean_range,
-@@ -1419,6 +1439,7 @@ static const struct l2c_init_data of_aur
- .fixup = aurora_fixup,
- .save = aurora_save,
- .configure = l2c_configure,
-+ .unlock = l2c_unlock,
- .outer_cache = {
- .inv_range = aurora_inv_range,
- .clean_range = aurora_clean_range,
-@@ -1439,6 +1460,7 @@ static const struct l2c_init_data of_aur
- .fixup = aurora_fixup,
- .save = aurora_save,
- .configure = l2c_configure,
-+ .unlock = l2c_unlock,
- .outer_cache = {
- .resume = l2c_resume,
- },
-@@ -1589,6 +1611,7 @@ static const struct l2c_init_data of_bcm
- .enable = l2c310_enable,
- .save = l2c310_save,
- .configure = l2c310_configure,
-+ .unlock = l2c310_unlock,
- .outer_cache = {
- .inv_range = bcm_inv_range,
- .clean_range = bcm_clean_range,
-@@ -1626,6 +1649,7 @@ static const struct l2c_init_data of_tau
- .enable = l2c_enable,
- .save = tauros3_save,
- .configure = tauros3_configure,
-+ .unlock = l2c_unlock,
- /* Tauros3 broadcasts L1 cache operations to L2 */
- .outer_cache = {
- .resume = l2c_resume,