[parisc-linux] Re: [parisc-linux-cvs] linux-2.6 jejb
James Bottomley
James.Bottomley at steeleye.com
Mon Apr 12 09:55:47 MDT 2004
On Mon, 2004-04-12 at 10:48, James Bottomley wrote:
> CVSROOT: /var/cvs
> Module name: linux-2.6
> Changes by: jejb 04/04/12 09:48:00
>
> Modified files:
> . : Makefile
> arch/parisc/kernel: cache.c
>
> Log message:
> According to recent discussion on the parisc list, it's far more
> expensive to walk the i_mmap_shared list to find our current mm than
> it is simply to change the space registers to flush the first mm we
> find. This change updates __flush_dcache_page() accordingly.
Index: arch/parisc/kernel/cache.c
===================================================================
RCS file: /var/cvs/linux-2.6/arch/parisc/kernel/cache.c,v
retrieving revision 1.8
diff -u -r1.8 cache.c
--- a/arch/parisc/kernel/cache.c 7 Apr 2004 00:49:01 -0000 1.8
+++ b/arch/parisc/kernel/cache.c 12 Apr 2004 15:44:55 -0000
@@ -229,9 +229,7 @@
void __flush_dcache_page(struct page *page)
{
- struct mm_struct *mm = current->active_mm;
struct list_head *l;
- struct vm_area_struct *anyvma = NULL;
flush_kernel_dcache_page(page_address(page));
@@ -265,31 +263,10 @@
if (!translation_exists(mpnt, addr))
continue;
- anyvma = mpnt;
-
- /*
- * We try first to find a page in our current user process
- */
- if (mpnt->vm_mm != mm)
- continue;
-
-
__flush_cache_page(mpnt, addr);
- /* All user shared mappings should be equivalently mapped,
- * so once we've flushed one we should be ok
- */
- goto flush_unshared;
+ break;
}
-
- /* OK, shared page but not in our current process' address space */
- if (anyvma) {
- unsigned long addr = anyvma->vm_start
- + ((page->index - anyvma->vm_pgoff) << PAGE_SHIFT);
- __flush_cache_page(anyvma, addr);
- }
-
- flush_unshared:
/* Private mappings will not have congruent addresses, so we
* have to flush each of them individually to make the change
More information about the parisc-linux
mailing list