mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
sh: Ensure all PG_dcache_dirty pages are written back.
With some of the cache rework an address aliasing optimization was added, but this managed to fail on certain mappings resulting in pages with PG_dcache_dirty set never writing back their dcache lines. This patch reverts to the earlier behaviour of simply always writing back when the dirty bit is set. Signed-off-by: Markus Pietrek <Markus.Pietrek@emtrion.de> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
9503e891d2
commit
76382b5bdb
1 changed files with 2 additions and 6 deletions
|
@ -133,12 +133,8 @@ void __update_cache(struct vm_area_struct *vma,
|
||||||
page = pfn_to_page(pfn);
|
page = pfn_to_page(pfn);
|
||||||
if (pfn_valid(pfn)) {
|
if (pfn_valid(pfn)) {
|
||||||
int dirty = test_and_clear_bit(PG_dcache_dirty, &page->flags);
|
int dirty = test_and_clear_bit(PG_dcache_dirty, &page->flags);
|
||||||
if (dirty) {
|
if (dirty)
|
||||||
unsigned long addr = (unsigned long)page_address(page);
|
__flush_purge_region(page_address(page), PAGE_SIZE);
|
||||||
|
|
||||||
if (pages_do_alias(addr, address & PAGE_MASK))
|
|
||||||
__flush_purge_region((void *)addr, PAGE_SIZE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue