Agilex™ 5 ES Device Errata and User Guidelines

ID 825514
Date 12/09/2024
Public
Document Table of Contents

3.4.1. 1162044: Incorrect ordering of data cache maintenance operations

Description

When using Cortex-A55 cores or Cortex-A75 cores with certain uncommon memory types that are not cached in the cluster, the DSU might perform a data Cache Maintenance Operation (CMO) before a store instruction to the same address, even when the Arm architecture requires that these instructions occur in program order. The types of memory and CMOs that are affected depend on the configuration of the system. Instruction CMOs, branch prediction maintenance operations, and data CMOs by set/way are not affected.

Conditions

1. A Cortex-A55 core or Cortex-A75 core executes a store instruction to memory that is one of the types listed below.

2. The same core subsequently executes an affected CMO to the same cache line address without a DMB or DSB instruction in between.

If the Clean to the Point of Persistence instruction (DC CVAP) is affected, then the erratum can occur when used with one the following memory types:

  • For AArch64 only
    • Inner Write-Back, Outer Write-Through
    • Inner Write-Back, Outer Non-cacheable
    • Inner Write-Through, Outer Write-Back
    • Inner Write-Through, Outer Write-Through
    • Inner Write-Through, Outer Non-cacheable

If other types of CMO are affected, then the erratum can occur when used with one of the following memory types:

  • For AArch64:
    • Inner Write-Back, Outer Write-Through
    • Inner Write-Through, Outer Write-Back
    • Inner Write-Through, Outer Write-Through
  • For AArch32:
    • Inner Write-Back, Outer Write-Through
    • Inner Write-Through, Outer Write-Back
    • Inner Write-Through, Outer Write-Through
    • Inner Non-cacheable, Outer Write-Back
    • Inner Non-cacheable, Outer Write-Through

Impact

These memory types are not expected to be common, so most software should not be affected. If these memory types are used, then the CMO might occur before the store, even though they should occur in program order.

Where CMOs to the Point of Persistence are affected, the CMO does not guarantee that a previous store to the same address has reached the Point of Persistence. As a result, some stores might not have reached persistent memory when software believes they have, which might lead to corruption of persistent storage during powerdown or a power failure.

Where other types of CMOs are affected, the cache line might not be cleaned or invalidated from the system cache. As a result, software using CMOs might lose coherency between the DSU and other masters that access memory without accessing the system cache.

Workaround

If possible, software should use Inner Write-Back, Outer Write-Back memory or Inner Non-Cacheable, Outer Non-Cacheable memory. If this is not possible, then software can work around this erratum by inserting a DMB instruction before an affected CMO, which ensures that any previous stores are ordered before the CMO.

Category

Category B