diff options
author | John David Anglin <dave.anglin@bell.net> | 2016-09-20 12:59:39 -0400 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2016-09-20 14:00:12 -0400 |
commit | 910a86435dd75d7c04d9fbd49aa92e1842d6e88d (patch) | |
tree | 3eb21f6c3e9bc48f1642a7bd39a06440fe95da8d /arch/parisc | |
parent | c4351d980ed88ac290136bfe59c8bd2b95f12b63 (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.S | 16 |
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(). |