From: "Joel Soete" <soete.joel@tiscali.be>
To: "James Bottomley" <James.Bottomley@steeleye.com>
Cc: parisc-linux@lists.parisc-linux.org
Subject: RE: [parisc-linux] Re: [parisc-linux-cvs] linux-2.6 jejb
Date: Thu, 8 Apr 2004 08:15:57 +0200 [thread overview]
Message-ID: <40711E55000025BC@ocpmta2.freegates.net> (raw)
In-Reply-To: <1081299262.1837.47.camel@mulgrave>
Hi all,
Sorry first for bad wrapping (known pb with webmail interface :( ).
Now as far as remember .h files are headers and so should only contains declaration
of function and not their definition excepted if they are very short (imho
3 line max) but that is a personal limit: does it exist a common agreement
on this limit?
And here why changing translation_exists() definition location?
That said, I tested 2.6.5-pa5 32bit on a b2k and 64bits (gcc-3.0.4 from ftp.p-l.org)
on a n4k and they works fine. (I couldn't just reproduce Grant pb because
no usb device available :( )
Sorry if I annoye with philosophical question and thanks for great job as
well as additional for info,
Joel
> -- Original Message --
> From: James Bottomley <James.Bottomley@steeleye.com>
> To: PARISC list <parisc-linux@lists.parisc-linux.org>
> Date: 06 Apr 2004 19:54:21 -0500
> Cc: parisc-linux-cvs@lists.parisc-linux.org
> Subject: [parisc-linux] Re: [parisc-linux-cvs] linux-2.6 jejb
>
>
> On Tue, 2004-04-06 at 19:49, James Bottomley wrote:
> CVSROOT: /var/cvs
> Module name: linux-2.6
> Changes by: jejb 04/04/06 18:49:01
>
> Modified files:
> . : Makefile
> arch/parisc/kernel: cache.c
> include/asm-parisc: cach
> flush.h
>
> Log message:
> Optimise flush_cache_page
>
> Now that we have a way of checking translations for a page, don't bother
> flushing if there's no translation.
Index: arch/parisc/kernel/cache.c
=====================================
> =============================
RCS file: /var/cvs/linux-2.6/arch/parisc/kernel/cache.c,v
retrieving revision 1.7
diff -u -r1.7 cache.c
--- a/arch/parisc/kernel/cache.c 6 Apr 2004 21:34:46 -0000 1.7
+++ b/arch/parisc/kernel/cache.c 7 Apr 2004 00:16:
> 5 -0000
@@ -227,32 +227,6 @@
disable_sr_hashing_asm(srhash_type);
}
-/* Simple function to work out if we have an existing address translation
- * for a user space vma. */
-static inline int translation_exists(struct vm_area_struct *vma,
-
> unsigned long addr)
-{
- pgd_t *pgd = pgd_offset(vma->vm_mm, addr);
- pmd_t *pmd;
- pte_t *pte;
-
- if(pgd_none(*pgd))
- return 0;
-
- pmd = pmd_offset(pgd, addr);
- if(pmd_none(*pmd) || pmd_bad(*pmd))
- return 0;
-
- pte = pte_o
> fset_map(pmd, addr);
-
- /* The PA flush mappings show up as pte_none, but they're
- * valid none the less */
- if(pte_none(*pte) && ((pte_val(*pte) & _PAGE_FLUSH) == 0))
- return 0;
- return 1;
-}
-
-
void __flush_dcache_page(struct p
> ge *page)
{
struct mm_struct *mm = current->active_mm;
@@ -300,7 +274,7 @@
continue;
- flush_cache_page(mpnt, addr);
+ __flush_cache_page(mpnt, addr);
/* All user shared mappings should be equivalently mapped,
* so once
> e've flushed one we should be ok
@@ -312,7 +286,7 @@
if (anyvma) {
unsigned long addr = anyvma->vm_start
+ ((page->index - anyvma->vm_pgoff) << PAGE_SHIFT);
- flush_cache_page(anyvma, addr);
+ __flush_cache_page(anyvma, addr);
}
> flush_unshared:
@@ -341,7 +315,7 @@
if(!translation_exists(mpnt, addr))
continue;
- flush_cache_page(mpnt, addr);
+ __flush_cache_page(mpnt, addr);
}
}
EXPORT_SYMBOL(__flush_dcache_page);
Index: include/asm-parisc/cacheflush.
>
===================================================================
RCS file: /var/cvs/linux-2.6/include/asm-parisc/cacheflush.h,v
retrieving revision 1.8
diff -u -r1.8 cacheflush.h
--- a/include/asm-parisc/cacheflush.h 5 Apr 2004 17:41:30 -0000
> .8
+++ b/include/asm-parisc/cacheflush.h 7 Apr 2004 00:17:15 -0000
@@ -107,6 +107,32 @@
}
}
+/* Simple function to work out if we have an existing address translation
+ * for a user space vma. */
+static inline int translation_exists(struc
> vm_area_struct *vma,
+ unsigned long addr)
+{
+ pgd_t *pgd = pgd_offset(vma->vm_mm, addr);
+ pmd_t *pmd;
+ pte_t *pte;
+
+ if(pgd_none(*pgd))
+ return 0;
+
+ pmd = pmd_offset(pgd, addr);
+ if(pmd_none(*pmd) || pmd_bad(*pmd))
+ re
> urn 0;
+
+ pte = pte_offset_map(pmd, addr);
+
+ /* The PA flush mappings show up as pte_none, but they're
+ * valid none the less */
+ if(pte_none(*pte) && ((pte_val(*pte) & _PAGE_FLUSH) == 0))
+ return 0;
+ return 1;
+}
+
+
/* Private f
> nction to flush a page from the cache of a non-current
* process. cr25 contains the Page Directory of the current user
* process; we're going to hijack both it and the user space %sr3 to
@@ -141,17 +167,25 @@
}
static inline void
-flush
> cache_page(struct vm_area_struct *vma, unsigned long vmaddr)
+__flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr)
{
- BUG_ON(!vma->vm_mm->context);
-
- if (vma->vm_mm->context == mfsp(3)) {
+ if (likely(vma->vm_mm->context == mf
> p(3))) {
flush_user_dcache_page(vmaddr);
if (vma->vm_flags & VM_EXEC)
flush_user_icache_page(vmaddr);
} else {
flush_user_cache_page_non_current(vma, vmaddr);
}
+}
+
+static inline void
+flush_cache_page(struct vm_area_struct
> *vma, unsigned long vmaddr)
+{
+ BUG_ON(!vma->vm_mm->context);
+
+ if(likely(translation_exists(vma, vmaddr)))
+ __flush_cache_page(vma, vmaddr);
+
}
#endif
_______________________________________________
parisc-linux mailing list
pa
> isc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux
----------------------------------------------------------------------------------------
Tiscali ADSL: 35 /mois, la meilleure offre du marché!
http://reg.tiscali.be/default.asp?lg=fr
next prev parent reply other threads:[~2004-04-08 6:16 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20040407004901.031D3494194@palinux.hppa>
2004-04-07 0:54 ` [parisc-linux] Re: [parisc-linux-cvs] linux-2.6 jejb James Bottomley
2004-04-08 6:15 ` Joel Soete [this message]
2004-04-08 12:36 ` James Bottomley
[not found] <20040505204811.27F0C4945E4@palinux.hppa>
2004-05-05 20:50 ` James Bottomley
2004-05-06 5:05 ` Randolph Chung
2004-05-06 5:22 ` Randolph Chung
2004-05-06 9:33 ` M. Grabert
2004-05-06 13:25 ` Kyle McMartin
[not found] <20040502161601.DC7C24945C7@palinux.hppa>
2004-05-03 20:51 ` James Bottomley
[not found] <20040501200312.40BB74945E1@palinux.hppa>
2004-05-01 20:09 ` James Bottomley
2004-05-03 8:57 ` Joel Soete
[not found] <20040501160556.D07DC4945CA@palinux.hppa>
2004-05-01 16:13 ` James Bottomley
[not found] <20040430162037.9D2B94945CD@palinux.hppa>
2004-04-30 16:25 ` James Bottomley
[not found] <20040427171140.706074945BD@palinux.hppa>
2004-04-27 17:15 ` James Bottomley
[not found] <20040425145051.10F5C4942B8@palinux.hppa>
2004-04-25 14:55 ` James Bottomley
[not found] <20040414174535.81173494194@palinux.hppa>
2004-04-14 17:53 ` James Bottomley
[not found] <20040412154800.D31F6494194@palinux.hppa>
2004-04-12 15:55 ` James Bottomley
[not found] <20040406213446.CB675494194@palinux.hppa>
2004-04-06 21:37 ` James Bottomley
[not found] <20040405174131.84BF1494194@palinux.hppa>
2004-04-06 13:21 ` Carlos O'Donell
2004-04-06 14:18 ` James Bottomley
2004-04-06 15:40 ` Randolph Chung
[not found] <20040405024740.9330F494194@palinux.hppa>
2004-04-05 2:49 ` James Bottomley
2004-04-05 2:54 ` James Bottomley
[not found] <20040320210116.7A727494553@palinux.hppa>
2004-03-20 21:04 ` James Bottomley
2004-03-20 21:10 ` Helge Deller
2004-03-20 21:13 ` Helge Deller
[not found] <20040228212407.DB126494190@palinux.hppa>
2004-02-28 22:21 ` Joel Soete
2004-02-28 22:42 ` James Bottomley
2004-02-29 9:39 ` Joel Soete
2004-03-04 16:39 ` Joel Soete
2004-02-06 7:31 [parisc-linux] " Joel Soete
2004-02-06 17:50 ` Grant Grundler
2004-02-06 18:06 ` bame
2004-02-06 19:16 ` Randolph Chung
2004-02-06 17:08 ` Joel Soete
2004-02-07 6:40 ` Randolph Chung
2004-02-09 7:26 ` Joel Soete
[not found] <20040204182455.1CC11494191@palinux.hppa>
2004-02-05 9:20 ` [parisc-linux] " Randolph Chung
2004-02-05 15:19 ` James Bottomley
2004-02-05 15:29 ` [parisc-linux] " Joel Soete
2004-02-05 20:31 ` Randolph Chung
2004-02-05 18:49 ` Joel Soete
[not found] <20040113155603.CBCC249425A@palinux.hppa>
2004-01-13 15:58 ` [parisc-linux] " James Bottomley
[not found] <20030924175431.D51BC49408B@palinux.hppa>
2003-09-24 18:01 ` James Bottomley
[not found] <20030919010356.148684940A4@palinux.hppa>
2003-09-19 1:06 ` James Bottomley
2003-09-19 11:24 ` Randolph Chung
2003-09-19 14:02 ` James Bottomley
2003-09-19 18:24 ` Jim Hull
[not found] <20030903200300.8B7B7494064@palinux.hppa>
2003-09-03 20:07 ` James Bottomley
[not found] <20030903165113.138BF494064@palinux.hppa>
2003-09-03 16:56 ` James Bottomley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=40711E55000025BC@ocpmta2.freegates.net \
--to=soete.joel@tiscali.be \
--cc=James.Bottomley@steeleye.com \
--cc=parisc-linux@lists.parisc-linux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox