According to Section D5.10.3 "Maintenance requirements on changing System register values" of the architecture manual, an isb instruction should be executed after updating ttbr0_el1 and before invalidating the TLB.
Details
Details
After adding the isb instruction into pmap_activate(), I can replace the pmap_invalidate_page() in pmap_enter_quick_locked() with a dsb ishst instruction and not suffer from spurious bus errors.
Diff Detail
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Comment Actions
efi_arch_enter() and _leave() have the isb following the TLB invalidation.
Perhaps we should add a cpufunc.h intrinsic for these two instructions?
Comment Actions
I believe that the isb instruction must be executed before and after TLB invalidation.
Perhaps we should add a cpufunc.h intrinsic for these two instructions?
Probably.