
ERR003724
Chip Errata for the i.MX 6Dual/6Quad and i.MX 6DualPlus/6QuadPlus, Rev. 6.1, 06/2016
26
NXP Semiconductors
Description:
A microTLB entry might be corrupted following an ASID switch, possibly corrupting subsequent
MMU translations.
The erratum requires execution of an explicit memory access, which might be speculative. This
memory access misses in the TLB and cause a translation table walk. The erratum occurs when the
translation table walk starts before the ASID switch code sequence, but completes after the ASID
switch code sequence. In this case, a new entry is allocated in the microTLB for the TLB entry for
this translation table walk, but corresponding to the old ASID. Because the microTLB does not
record the ASID value, the new MMU translation, which should happen with the new ASID
following the ASID switch, might hit this stale microTLB entry and become corrupted.
Note that there is no Trustzone Security risk because the Security state of the access is held in the
microTLB, and cannot be corrupted.
Projected Impact:
The errata might cause MMU translation corruptions.
Workarounds:
The workaround for this erratum involves adding a DSB in the ASID switch code sequence. The
ARM architecture only mandates ISB before and after the ASID switch. Adding a DSB prior to the
ASID switch ensures that the Page Table Walk completes prior to the ASID change, so that no stale
entry can be allocated in the micro-TLB.
The examples in the ARM Architecture Reference Manual for synchronizing the change in the
ASID and TTBR need to be changed as follows:
The sequence:
Change ASID to 0
ISB
Change Translation Table Base Register
ISB
Change ASID to new value
becomes
DSB
Change ASID to 0
ISB
Change Translation Table Base Register
ISB
DSB
Change ASID to new value
the sequence:
Change Translation Table Base Register to the global-only mappings
ISB
Change ASID to new value
ERR003724
ARM: 754322—Possible faulty MMU translations following an ASID
switch