Module Name: src Committed By: skrll Date: Sun Oct 10 07:15:25 UTC 2021
Modified Files: src/sys/arch/aarch64/aarch64: pmap.c src/sys/arch/aarch64/conf: files.aarch64 src/sys/arch/aarch64/include: cpu.h pmap.h pte.h types.h Added Files: src/sys/arch/aarch64/aarch64: aarch64_tlb.c Log Message: Use sys/uvm/pmap/pmap_tlb.c on Aarch64 in the same way that some Arm, MIPS, and some PPC kernels do. This removes the limitation of 256 processes on CPUs with 8bit ASID field, e.g. Apple M1. Additionally the following changes have been made - removed a couple of unnecessary aarch64_tlbi_all calls - removed any invalidation after freeing page tables due to _pmap_sweep_pdp. This was never necessary afaict. - all kernel mappings are marked global and userland mapping not-global. Performance testing hasn't show a significant difference. The data here is from building a kernel on an lx2k system with nvme. before 1489.6u 400.4s 2:40.65 1176.5% 228+224k 0+32289io 57pf+0w 1482.6u 403.2s 2:38.49 1189.9% 228+222k 0+32274io 46pf+0w 1485.4u 402.2s 2:37.27 1200.2% 228+222k 0+32275io 12pf+0w after 1493.9u 404.6s 2:37.50 1205.4% 227+221k 0+32265io 48pf+0w 1485.0u 408.0s 2:38.54 1194.0% 227+222k 0+32272io 36pf+0w 1484.3u 407.0s 2:35.88 1213.3% 228+224k 0+32268io 14pf+0w >>> stats.ttest_ind([160.65,158.49,157.27], [157.5,158.54,155.88]) Ttest_indResult(statistic=1.1923622711296888, pvalue=0.2990182944606766) >>> To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/sys/arch/aarch64/aarch64/aarch64_tlb.c cvs rdiff -u -r1.116 -r1.117 src/sys/arch/aarch64/aarch64/pmap.c cvs rdiff -u -r1.33 -r1.34 src/sys/arch/aarch64/conf/files.aarch64 cvs rdiff -u -r1.39 -r1.40 src/sys/arch/aarch64/include/cpu.h cvs rdiff -u -r1.48 -r1.49 src/sys/arch/aarch64/include/pmap.h cvs rdiff -u -r1.12 -r1.13 src/sys/arch/aarch64/include/pte.h cvs rdiff -u -r1.19 -r1.20 src/sys/arch/aarch64/include/types.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.