mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-12 07:06:40 +07:00
sh: Optimise flush_dcache_page() on SH4
If the page is not mapped into any process's address space then aliases cannot exist in the cache. So reduce the amount of flushing we perform. Signed-off-by: Matt Fleming <matt@console-pimps.org>
This commit is contained in:
parent
3f5ab76816
commit
b4c8927623
@ -109,6 +109,7 @@ static inline void flush_cache_one(unsigned long start, unsigned long phys)
|
||||
static void sh4_flush_dcache_page(void *arg)
|
||||
{
|
||||
struct page *page = arg;
|
||||
unsigned long addr = (unsigned long)page_address(page);
|
||||
#ifndef CONFIG_SMP
|
||||
struct address_space *mapping = page_mapping(page);
|
||||
|
||||
@ -116,16 +117,8 @@ static void sh4_flush_dcache_page(void *arg)
|
||||
set_bit(PG_dcache_dirty, &page->flags);
|
||||
else
|
||||
#endif
|
||||
{
|
||||
unsigned long phys = page_to_phys(page);
|
||||
unsigned long addr = CACHE_OC_ADDRESS_ARRAY;
|
||||
int i, n;
|
||||
|
||||
/* Loop all the D-cache */
|
||||
n = boot_cpu_data.dcache.n_aliases;
|
||||
for (i = 0; i < n; i++, addr += PAGE_SIZE)
|
||||
flush_cache_one(addr, phys);
|
||||
}
|
||||
flush_cache_one(CACHE_OC_ADDRESS_ARRAY |
|
||||
(addr & shm_align_mask), page_to_phys(page));
|
||||
|
||||
wmb();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user