1 Silicon Errata and Software Workarounds 2 ======================================= 3 4It is an unfortunate fact of life that hardware is often produced with 5so-called "errata", which can cause it to deviate from the architecture 6under specific circumstances. For hardware produced by ARM, these 7errata are broadly classified into the following categories: 8 9 Category A: A critical error without a viable workaround. 10 Category B: A significant or critical error with an acceptable 11 workaround. 12 Category C: A minor error that is not expected to occur under normal 13 operation. 14 15For more information, consult one of the "Software Developers Errata 16Notice" documents available on infocenter.arm.com (registration 17required). 18 19As far as Xen is concerned, Category B errata may require some special 20treatment in the hypervisor. For example, avoiding a particular sequence 21of code, or configuring the processor in a particular way. A less common 22situation may require similar actions in order to declassify a Category A 23erratum into a Category C erratum. These are collectively known as 24"software workarounds" and are only required in the minority of cases 25(e.g. those cases that both require a non-secure workaround *and* can 26be triggered by Xen). 27 28For software workarounds that may adversely impact systems unaffected by 29the erratum in question, a Kconfig entry is added under "ARM errata 30workarounds via the alternatives framework". These are enabled by default 31and patched in at runtime when an affected CPU is detected. Note that 32runtime patching is only supported on ARM64. For less-intrusive workarounds, 33a Kconfig option is not available and the code is structured (preferably 34with a comment) in such a way that the erratum will not be hit. 35 36This approach can make it slightly onerous to determine exactly which 37errata are worked around in an arbitrary hypervisor source tree, so this 38file acts as a registry of software workarounds in the Xen hypervisor and 39will be updated when new workarounds are committed and backported to 40stable hypervisors. 41 42| Implementor | Component | Erratum ID | Kconfig | 43+----------------+-----------------+-----------------+-------------------------+ 44| ARM | Cortex-A15 | #766422 | N/A | 45| ARM | Cortex-A53 | #827319 | ARM64_ERRATUM_827319 | 46| ARM | Cortex-A53 | #824069 | ARM64_ERRATUM_824069 | 47| ARM | Cortex-A53 | #819472 | ARM64_ERRATUM_819472 | 48| ARM | Cortex-A57 | #852523 | N/A | 49| ARM | Cortex-A57 | #832075 | ARM64_ERRATUM_832075 | 50| ARM | Cortex-A57 | #834220 | ARM64_ERRATUM_834220 | 51| ARM | Cortex-A57 | #1319537 | N/A | 52| ARM | Cortex-A72 | #1319367 | N/A | 53| ARM | Cortex-A76 | #1165522 | N/A | 54| ARM | Neoverse-N1 | #1165522 | N/A 55| ARM | MMU-500 | #842869 | N/A | 56