target/arm/ptw: Check for block descriptors at invalid levels
commitd53e25075bd9c89c81ab2bfc45ccbcdc92842b24
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 22 Aug 2023 16:31:10 +0000 (22 17:31 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 22 Aug 2023 16:31:10 +0000 (22 17:31 +0100)
treea4e41b25e39d6bd71c3f1ad443b772e6e4f687ae
parent3d9ca96221ba7212aacb27ec472f0be703e99a78
target/arm/ptw: Check for block descriptors at invalid levels

The architecture doesn't permit block descriptors at any arbitrary
level of the page table walk; it depends on the granule size which
levels are permitted.  We implemented only a partial version of this
check which assumes that block descriptors are valid at all levels
except level 3, which meant that we wouldn't deliver the Translation
fault for all cases of this sort of guest page table error.

Implement the logic corresponding to the pseudocode
AArch64.DecodeDescriptorType() and AArch64.BlockDescSupported().

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20230807141514.19075-14-peter.maydell@linaro.org
target/arm/ptw.c