From 6a7a47a41588ab4b88c8093de55844826fd5e4a7 Mon Sep 17 00:00:00 2001 From: Will Deacon Date: Fri, 1 Jul 2011 14:36:19 +0100 Subject: [PATCH] --- yaml --- r: 254783 b: refs/heads/master c: 38a8914f9ac2379293944f613e6ca24b61373de8 h: refs/heads/master i: 254781: 86486719c56acce140a008cd11842ae58619f882 254779: 3a1392f9fe112f35fc43c7faf530a0c528cfc229 254775: 3b9db5ae8c3030c6b91a6a1db31accdd3ad79695 254767: 5cd633e06cf9508324fa1b7545eb264e233b3cf8 254751: 183b2ebc38c954b9f3221ee9a294113ac5a16396 254719: 48ecc375c4994583df18fed4665ca11c4ef17770 v: v3 --- [refs] | 2 +- trunk/arch/arm/mm/cache-l2x0.c | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 28772eb2dbfd..a9cbf6c736f1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 186dcaa448c0a7a99933efac2af225fc4fe82c53 +refs/heads/master: 38a8914f9ac2379293944f613e6ca24b61373de8 diff --git a/trunk/arch/arm/mm/cache-l2x0.c b/trunk/arch/arm/mm/cache-l2x0.c index ef59099a5463..44c086710d2b 100644 --- a/trunk/arch/arm/mm/cache-l2x0.c +++ b/trunk/arch/arm/mm/cache-l2x0.c @@ -120,17 +120,22 @@ static void l2x0_cache_sync(void) spin_unlock_irqrestore(&l2x0_lock, flags); } -static void l2x0_flush_all(void) +static void __l2x0_flush_all(void) { - unsigned long flags; - - /* clean all ways */ - spin_lock_irqsave(&l2x0_lock, flags); debug_writel(0x03); writel_relaxed(l2x0_way_mask, l2x0_base + L2X0_CLEAN_INV_WAY); cache_wait_way(l2x0_base + L2X0_CLEAN_INV_WAY, l2x0_way_mask); cache_sync(); debug_writel(0x00); +} + +static void l2x0_flush_all(void) +{ + unsigned long flags; + + /* clean all ways */ + spin_lock_irqsave(&l2x0_lock, flags); + __l2x0_flush_all(); spin_unlock_irqrestore(&l2x0_lock, flags); } @@ -266,7 +271,9 @@ static void l2x0_disable(void) unsigned long flags; spin_lock_irqsave(&l2x0_lock, flags); - writel(0, l2x0_base + L2X0_CTRL); + __l2x0_flush_all(); + writel_relaxed(0, l2x0_base + L2X0_CTRL); + dsb(); spin_unlock_irqrestore(&l2x0_lock, flags); }