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 [email protected]