Performance: use cache zeroing function to pmap_zero_page This improves page zeroing (a rather common occurance) by over 8x.
The only restriction is that pagezero_cache occurs on cached pages, but the pmap_zero_page always uses cached pages. Index: arm64/pmap.c =================================================================== RCS file: /cvs/src/sys/arch/arm64/arm64/pmap.c,v retrieving revision 1.37 diff -u -p -r1.37 pmap.c --- arm64/pmap.c 9 Aug 2017 05:53:11 -0000 1.37 +++ arm64/pmap.c 27 Aug 2017 18:25:28 -0000 @@ -769,8 +769,7 @@ pmap_zero_page(struct vm_page *pg) pmap_kenter_pa(zero_page, pa, PROT_READ|PROT_WRITE); - /* XXX use better zero operation? */ - bzero((void *)zero_page, PAGE_SIZE); + pagezero_cache(zero_page); pmap_kremove_pg(zero_page); } Index: include/pmap.h =================================================================== RCS file: /cvs/src/sys/arch/arm64/include/pmap.h,v retrieving revision 1.5 diff -u -p -r1.5 pmap.h --- include/pmap.h 10 May 2017 21:58:55 -0000 1.5 +++ include/pmap.h 27 Aug 2017 18:25:28 -0000 @@ -59,6 +59,8 @@ extern paddr_t zero_page; extern paddr_t copy_src_page; extern paddr_t copy_dst_page; +void pagezero_cache(vaddr_t); + /* * Pmap stuff */ Dale Rahn dr...@dalerahn.com