aboutsummaryrefslogtreecommitdiff
path: root/lua/(developers-only)
diff options
context:
space:
mode:
authorPiotr Kubaj <pkubaj@FreeBSD.org>2026-09-08 11:22:58 +0000
committerPiotr Kubaj <pkubaj@FreeBSD.org>2026-09-17 08:08:11 +0000
commit1d4a00d455617e150da5a7c3076579a7e612d33d (patch)
treecdca61e6e26a1c56c6d68dc526f3ca4cb6c68a2c /lua/(developers-only)
parentd38e0889d20eed3885a020993b72dc9855148ba3 (diff)
powerpc/pmap: Use dcbz to zero pages in the radix pmapHEADmain
pagezero() was a plain store loop (bzero), which under the kernel build flags (-mno-vsx -msoft-float) compiles to byte stores. dcbz establishes a zeroed cache line directly in the cache without a read-for-ownership fetch from memory, roughly halving the memory transactions of page zeroing. Measured on POWER9 (Raptor Blackbird, DD2.3, bare metal), zeroing a cold 256 MB buffer with 128-byte scalar loops: byte stores (current libkern memset) 8.6 GB/s doubleword (std) stores 26.8 GB/s dcbz 34.6 GB/s dcbz raises an alignment interrupt on caching-inhibited mappings, and the kernel does not emulate it, so mmu_radix_zero_page() falls back to bzero() for any page whose memattr is not the write-back default. The internal pagezero() callers only touch freshly allocated page-table pages, which are always write-back. Note: dcbz helps only zeroing, where there is no source to read. For page copying it is a pessimization (it adds a redundant zeroing pass on top of the mandatory source read), so mmu_radix_copy_page() is left as a plain bcopy(). Differential Revision: https://reviews.freebsd.org/D59507 Reviewed by: jhibbits
Diffstat (limited to 'lua/(developers-only)')
0 files changed, 0 insertions, 0 deletions