diff mbox

[RFC] arm64: Documentation: add list of software workarounds for errata

Message ID 1449505814-30096-1-git-send-email-will.deacon@arm.com
State Accepted
Commit 9cb9c9e5ba8453537e8e645318edf231fe54eaf9
Headers show

Commit Message

Will Deacon Dec. 7, 2015, 4:30 p.m. UTC
It's not immediately obvious which hardware errata are worked around in
the Linux kernel for an arbitrary kernel tree, so add a file to keep
track of what we're working around.

Signed-off-by: Will Deacon <will.deacon@arm.com>

---
 Documentation/arm64/silicon-errata.txt | 58 ++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100644 Documentation/arm64/silicon-errata.txt

-- 
2.1.4


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

Comments

Catalin Marinas Dec. 7, 2015, 4:57 p.m. UTC | #1
On Mon, Dec 07, 2015 at 04:30:14PM +0000, Will Deacon wrote:
> +| 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    |

> +|                |                 |                 |                         |

> +| Cavium         | ThunderX ITS    | #22375, #24313  | CAVIUM_ERRATUM_22375    |

> +| Cavium         | ThunderX GICv3  | #23154          | CAVIUM_ERRATUM_23154    |


BTW, since you describe the categories above, shall we add another
column in this table for ARM Ltd hardware categorisation? Most (all, so
far) of them are B anyway.

Also, it would be nice for ARM licensees to add their own categories
description to this document.

Otherwise the doc looks fine:

Acked-by: Catalin Marinas <catalin.marinas@arm.com>


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
diff mbox

Patch

diff --git a/Documentation/arm64/silicon-errata.txt b/Documentation/arm64/silicon-errata.txt
new file mode 100644
index 000000000000..58b71ddf9b60
--- /dev/null
+++ b/Documentation/arm64/silicon-errata.txt
@@ -0,0 +1,58 @@ 
+                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    |
+|                |                 |                 |                         |
+| Cavium         | ThunderX ITS    | #22375, #24313  | CAVIUM_ERRATUM_22375    |
+| Cavium         | ThunderX GICv3  | #23154          | CAVIUM_ERRATUM_23154    |