Skip to content
  • Doug Anderson's avatar
    ARM: 8558/1: errata: Workaround errata A12 818325/852422 A17 852423 · 62c0f4a5
    Doug Anderson authored
    There are several similar errata on Cortex A12 and A17 that all have the same workaround: setting bit[12] of the Feature Register.
    Technically the list of errata are:
    
    - A12 818325: Execution of an UNPREDICTABLE STR or STM instruction
      might deadlock.  Fixed in r0p1.
    - A12 852422: Execution of a sequence of instructions might lead to
      either a data corruption or a CPU deadlock.  Not fixed in any A12s
      yet.
    - A17 852423: Execution of a sequence of instructions might lead to
      either a data corruption or a CPU deadlock.  Not fixed in any A17s
      yet.
    
    Since A12 got renamed to A17 it seems likely that there won't be any
    future Cortex-A12 cores, so we'll enable for all Cortex-A12.
    
    For Cortex-A17 I believe that all known revisions are affected and that all knows revisions means <= r1p2.  Presumably if a new A17 was
    released it would have this problem fixed.
    
    Note that in <https://patchwork.kernel.org/patch/4735341/
    
    > folks
    previously expressed opposition to this change because:
    A) It was thought to only apply to r0p0 and there were no known r0p0
       boards supported in mainline.
    B) It was argued that such a workaround beloned in firmware.
    
    Now that this same fix solves other errata on real boards (like
    rk3288) point A) is addressed.
    
    Point B) is impossible to address on boards like rk3288.  On rk3288
    the firmware doesn't stay resident in RAM and isn't involved at all in
    the suspend/resume process nor in the SMP bringup process.  That means
    that the most the firmware could do would be to set the bit on "core
    0" and this bit would be lost at suspend/resume time.  It is true that
    we could write a "generic" solution that saved the boot-time "core 0"
    value of this register and applied it at SMP bringup / resume time.
    However, since this register (described as the "Feature Register" in
    errata) appears to be undocumented (as far as I can tell) and is only
    modified for these errata, that "generic" solution seems questionably
    cleaner.  The generic solution also won't fix existing users that
    haven't happened to do a FW update.
    
    Note that in ARM64 presumably PSCI will be universal and fixes like
    this will end up in ATF.  Hopefully we are nearing the end of this
    style of errata workaround.
    
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Signed-off-by: default avatarHuang Tao <huangtao@rock-chips.com>
    Signed-off-by: default avatarKever Yang <kever.yang@rock-chips.com>
    Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
    62c0f4a5