]> git.karo-electronics.de Git - linux-beck.git/commitdiff
parisc: Update comment regarding implementation of copy_user_page_asm
authorJohn David Anglin <dave.anglin@bell.net>
Tue, 20 Sep 2016 16:59:39 +0000 (12:59 -0400)
committerHelge Deller <deller@gmx.de>
Tue, 20 Sep 2016 18:00:12 +0000 (20:00 +0200)
The attached patch describes the current implementation of
copy_user_page_asm().  It is possible to implement this routine using
either the kernel page mappings or equivalent aliases.  I tested both
and decided the former was more efficient.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/pacache.S

index b743a80eaba0311e934eda70c76e7acbf8ae6a78..1250c02201bb3b0778337ce046167308bb074b8c 100644 (file)
@@ -573,11 +573,17 @@ ENDPROC(copy_page_asm)
        .endm
 
        /*
-        * We can't do this since copy_user_page is used to bring in
-        * file data that might have instructions. Since the data would
-        * then need to be flushed out so the i-fetch can see it, it
-        * makes more sense to just copy through the kernel translation
-        * and flush it.
+        * copy_user_page_asm() performs a page copy using mappings
+        * equivalent to the user page mappings.  It can be used to
+        * implement copy_user_page() but unfortunately both the `from'
+        * and `to' pages need to be flushed through mappings equivalent
+        * to the user mappings after the copy because the kernel accesses
+        * the `from' page through the kmap kernel mapping and the `to'
+        * page needs to be flushed since code can be copied.  As a
+        * result, this implementation is less efficient than the simpler
+        * copy using the kernel mapping.  It only needs the `from' page
+        * to flushed via the user mapping.  The kunmap routines handle
+        * the flushes needed for the kernel mapping.
         *
         * I'm still keeping this around because it may be possible to
         * use it if more information is passed into copy_user_page().