On Fri, 2 Apr 2021 at 06:42, Richard Henderson
<richard.henderson@linaro.org> wrote:
We were incorrectly assuming that only the first byte of an MTE access
is checked against the tags. But per the ARM, unaligned accesses are
pre-decomposed into single-byte accesses. So by the time we reach the
actual MTE check in the ARM pseudocode, all accesses are aligned.
Therefore, drop mte_check1, since we cannot know a priori that an
access is aligned. Rename mte_checkN to mte_check, which now handles
all accesses. Rename mte_probe1 to mte_probe, and use a common helper.
Drop the computation of the faulting nth element, since all accesses
can be considered to devolve to bytes, and simply compute the faulting
address.
Buglink: https://bugs.launchpad.net/bugs/1921948
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This is a pretty chunky patch for this point in the release cycle.
I don't suppose there's a way to make it more digestible for review?