HomeFreeBSD

Fix handling of I-cache sync operations

Description

Fix handling of I-cache sync operations

  • pmap_enter_object() can be used for mapping of executable pages, so it's necessary to handle I-cache synchronization within it.
  • Fix race in I-cache synchronization in pmap_enter(). The current code firstly maps given page to target VA and then do I-cache sync on it. This causes race, because this mapping become visible to other threads, before I-cache is synced. Do sync I-cache firstly (by using DMAP VA) and then map it to target VA.
  • ARM64 ARM permits implementation of aliased (AIVIVT, VIPT) I-cache, but we can use different that final VA for flushing it. So we should use full I-cache flush on affected platforms. For now, and as temporary solution, use full flush always.

Details

Provenance
mmelAuthored on
Parents
rS328509: tools: remove note about diffburst.
Branches
Unknown
Tags
Unknown