
ERR009604
Chip Errata for the i.MX 6Dual/6Quad and i.MX 6DualPlus/6QuadPlus, Rev. 6.1, 06/2016
78
NXP Semiconductors
Description:
Under very rare timing circumstances, a data corruption might occur on a dirty cache line that is
evicted from the L1 Data Cache due to another cache line being entirely written.
The erratum requires the following conditions:
• The CPU contains a dirty line in its data cache.
• The CPU performs at least four full cache line writes, one of which is causing the eviction of
the dirty line.
• Another CPU, or the ACP, is performing a read or write operation on the dirty line.
The defect requires very rare timing conditions to reach the point of failure. These timing
conditions depend on the CPU micro-architecture, and are not controllable in software:
• The CPU must be in a transitional mode that might be triggered by the detection of the first two
full cache line writes.
• The evicted line must remain stalled in the eviction buffer, which is likely to be caused by a
congested write traffic.
• The other coherent agent, either another CPU in the cluster or the ACP, must perform its
coherency request on the evicted line while it is in the eviction buffer.
This erratum only occurs when two or more processors are enabled.
Projected Impact:
The erratum might lead to data corruption.
Workarounds:
This erratum can be worked round by setting bit[22] of the undocumented Diagnostic Control
Register to 1. This register is encoded as CP15 c15 0 c0 1.
The bit can be written in Secure state only, with the following Read/Modify/Write code sequence:
MRC p15,0,rt,c15,c0,1
ORR rt,rt,#0x00400000
MCR p15,0,rt,c15,c0,1
When this bit is set, the processor is unable to switch into Read-Allocate (streaming) mode, which
means this erratum cannot occur.
Setting this bit could possibly result in a visible drop in performance for routines that perform
intensive memory accesses, such as memset() or memcpy(). However, the workaround is not
expected to create any significant performance degradation in most standard applications.
Proposed Solution:
No fix scheduled
ERR009604
ARM (CA9): 845369 — Under very rare timing circumstances,
transition into streaming mode might create a data corruption