ERR007008
Chip Errata for the i.MX 6Dual/6Quad and i.MX 6DualPlus/6QuadPlus, Rev. 6.1, 06/2016
NXP Semiconductors
77
DMB
; ensure all previous accesses are observed before the
communication variable is cleared
STR r0, [r1]
; clear the communication variable with normal store
STR r2, [r1,#0x4]
; previous STR might merge and be sent again, which might cause
undesired release of the communication variable.
This scenario is valid when the communication variable is a byte, a half-word, or a word.
Workarounds:
There are several possible workarounds:
1. Add a DMB after clearing a communication variable:
STR r0, [r1] ; clear the communication variable
DMB ; ensure the previous STR is complete
Also, any IRQ or FIQ handler must execute a DMB at the start to ensure the clearing of any
communication variable is complete.
2. Ensure there is no other data using the same naturally aligned 64-bit memory location as the
communication variable:
ALIGN 64
communication_variable DCD 0
unused_data DCD 0
LDR r1,= communication_variable
3. Use a Store-Exclusive to clear the communication variable, rather than a non-Exclusive store.
Proposed Solution:
No fix scheduled
Linux BSP Status:
Software workaround not implemented in Linux BSP. Functionality or mode of operation in which
the erratum may manifest itself is not used. Users should confirm if the conditions apply in their
specific OS and apply the ARM recommended workaround if necessary.