Over the course of a buildworld on a 16-core Cortex-A72 machine, ~78M broadcast invalidations were replaced by local ones, and there were only 13 spurious write faults.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
pmap_enter() should similarly be using a local invalidation when it is upgrading a R/O mapping to R/W. Comparing the amd64 and arm64 pmap_enter()s is what led me to discover all of this.
P.S. I found that Linux made similar changes last November: https://lkml.org/lkml/2025/11/4/601
Comment Actions
amd64 will do a (targeted) remote invalidation when upgrading a R/O mapping, I believe. Do you mean that it too should only issue a local invalidation in that case?
Comment Actions
Oh, amd64 doesn't issue an invalidation at all in that case. arm64 can't get away with that but a local invalidation there makes more sense.
Comment Actions
Yes. On a page fault, amd64 processors automatically flush any TLB entry for the faulting address, but arm64 processors do not.