123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- Silicon Errata and Software Workarounds
- =======================================
- Author: Will Deacon <will.deacon@arm.com>
- Date : 27 November 2015
- It is an unfortunate fact of life that hardware is often produced with
- so-called "errata", which can cause it to deviate from the architecture
- under specific circumstances. For hardware produced by ARM, these
- errata are broadly classified into the following categories:
- Category A: A critical error without a viable workaround.
- Category B: A significant or critical error with an acceptable
- workaround.
- Category C: A minor error that is not expected to occur under normal
- operation.
- For more information, consult one of the "Software Developers Errata
- Notice" documents available on infocenter.arm.com (registration
- required).
- As far as Linux is concerned, Category B errata may require some special
- treatment in the operating system. For example, avoiding a particular
- sequence of code, or configuring the processor in a particular way. A
- less common situation may require similar actions in order to declassify
- a Category A erratum into a Category C erratum. These are collectively
- known as "software workarounds" and are only required in the minority of
- cases (e.g. those cases that both require a non-secure workaround *and*
- can be triggered by Linux).
- For software workarounds that may adversely impact systems unaffected by
- the erratum in question, a Kconfig entry is added under "Kernel
- Features" -> "ARM errata workarounds via the alternatives framework".
- These are enabled by default and patched in at runtime when an affected
- CPU is detected. For less-intrusive workarounds, a Kconfig option is not
- available and the code is structured (preferably with a comment) in such
- a way that the erratum will not be hit.
- This approach can make it slightly onerous to determine exactly which
- errata are worked around in an arbitrary kernel source tree, so this
- file acts as a registry of software workarounds in the Linux Kernel and
- will be updated when new workarounds are committed and backported to
- stable kernels.
- | Implementor | Component | Erratum ID | Kconfig |
- +----------------+-----------------+-----------------+-----------------------------+
- | ARM | Cortex-A53 | #826319 | ARM64_ERRATUM_826319 |
- | ARM | Cortex-A53 | #827319 | ARM64_ERRATUM_827319 |
- | ARM | Cortex-A53 | #824069 | ARM64_ERRATUM_824069 |
- | ARM | Cortex-A53 | #819472 | ARM64_ERRATUM_819472 |
- | ARM | Cortex-A53 | #845719 | ARM64_ERRATUM_845719 |
- | ARM | Cortex-A53 | #843419 | ARM64_ERRATUM_843419 |
- | ARM | Cortex-A57 | #832075 | ARM64_ERRATUM_832075 |
- | ARM | Cortex-A57 | #852523 | N/A |
- | ARM | Cortex-A57 | #834220 | ARM64_ERRATUM_834220 |
- | ARM | Cortex-A72 | #853709 | N/A |
- | ARM | Cortex-A55 | #1024718 | ARM64_ERRATUM_1024718 |
- | ARM | MMU-500 | #841119,#826419 | N/A |
- | | | | |
- | Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 |
- | Cavium | ThunderX ITS | #23144 | CAVIUM_ERRATUM_23144 |
- | Cavium | ThunderX GICv3 | #23154 | CAVIUM_ERRATUM_23154 |
- | Cavium | ThunderX Core | #27456 | CAVIUM_ERRATUM_27456 |
- | Cavium | ThunderX SMMUv2 | #27704 | N/A |
- | | | | |
- | Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 |
- | | | | |
- | Qualcomm Tech. | QDF2400 ITS | E0065 | QCOM_QDF2400_ERRATUM_0065 |
|