aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@bell.net>2016-09-20 12:59:39 -0400
committerHelge Deller <deller@gmx.de>2016-09-20 14:00:12 -0400
commit910a86435dd75d7c04d9fbd49aa92e1842d6e88d (patch)
tree3eb21f6c3e9bc48f1642a7bd39a06440fe95da8d /arch/parisc
parentc4351d980ed88ac290136bfe59c8bd2b95f12b63 (diff)
parisc: Update comment regarding implementation of copy_user_page_asm
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>
Diffstat (limited to 'arch/parisc')
-rw-r--r--arch/parisc/kernel/pacache.S16
1 files changed, 11 insertions, 5 deletions
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S
index b743a80eaba0..1250c02201bb 100644
--- a/arch/parisc/kernel/pacache.S
+++ b/arch/parisc/kernel/pacache.S
@@ -573,11 +573,17 @@ ENDPROC(copy_page_asm)
573 .endm 573 .endm
574 574
575 /* 575 /*
576 * We can't do this since copy_user_page is used to bring in 576 * copy_user_page_asm() performs a page copy using mappings
577 * file data that might have instructions. Since the data would 577 * equivalent to the user page mappings. It can be used to
578 * then need to be flushed out so the i-fetch can see it, it 578 * implement copy_user_page() but unfortunately both the `from'
579 * makes more sense to just copy through the kernel translation 579 * and `to' pages need to be flushed through mappings equivalent
580 * and flush it. 580 * to the user mappings after the copy because the kernel accesses
581 * the `from' page through the kmap kernel mapping and the `to'
582 * page needs to be flushed since code can be copied. As a
583 * result, this implementation is less efficient than the simpler
584 * copy using the kernel mapping. It only needs the `from' page
585 * to flushed via the user mapping. The kunmap routines handle
586 * the flushes needed for the kernel mapping.
581 * 587 *
582 * I'm still keeping this around because it may be possible to 588 * I'm still keeping this around because it may be possible to
583 * use it if more information is passed into copy_user_page(). 589 * use it if more information is passed into copy_user_page().