diff options
Diffstat (limited to 'arch/arm/mm/flush.c')
| -rw-r--r-- | arch/arm/mm/flush.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index c9a03981b785..330695b6b19d 100644 --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c | |||
| @@ -155,14 +155,19 @@ static void __flush_dcache_aliases(struct address_space *mapping, struct page *p | |||
| 155 | * space mappings, we can be lazy and remember that we may have dirty | 155 | * space mappings, we can be lazy and remember that we may have dirty |
| 156 | * kernel cache lines for later. Otherwise, we assume we have | 156 | * kernel cache lines for later. Otherwise, we assume we have |
| 157 | * aliasing mappings. | 157 | * aliasing mappings. |
| 158 | * | ||
| 159 | * Note that we disable the lazy flush for SMP. | ||
| 158 | */ | 160 | */ |
| 159 | void flush_dcache_page(struct page *page) | 161 | void flush_dcache_page(struct page *page) |
| 160 | { | 162 | { |
| 161 | struct address_space *mapping = page_mapping(page); | 163 | struct address_space *mapping = page_mapping(page); |
| 162 | 164 | ||
| 165 | #ifndef CONFIG_SMP | ||
| 163 | if (mapping && !mapping_mapped(mapping)) | 166 | if (mapping && !mapping_mapped(mapping)) |
| 164 | set_bit(PG_dcache_dirty, &page->flags); | 167 | set_bit(PG_dcache_dirty, &page->flags); |
| 165 | else { | 168 | else |
| 169 | #endif | ||
| 170 | { | ||
| 166 | __flush_dcache_page(mapping, page); | 171 | __flush_dcache_page(mapping, page); |
| 167 | if (mapping && cache_is_vivt()) | 172 | if (mapping && cache_is_vivt()) |
| 168 | __flush_dcache_aliases(mapping, page); | 173 | __flush_dcache_aliases(mapping, page); |
