dev-arm: Fix SMMUv3 16KB next-level table address masking
authorGiacomo Travaglini <giacomo.travaglini@arm.com>
Tue, 12 Nov 2019 14:43:23 +0000 (14:43 +0000)
committerGiacomo Travaglini <giacomo.travaglini@arm.com>
Mon, 6 Jan 2020 15:45:04 +0000 (15:45 +0000)
The next-level table address for a granule size of 16KB is retrieved
from the 47:14 bits of the current table descriptor (instead of
47:12, which is the valid masking for a 4KB granule)

Change-Id: I570138a34003dc034d8e67dc1209316157d57205
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Michiel van Tol <michiel.vantol@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23763
Tested-by: kokoro <noreply+kokoro@google.com>
src/dev/arm/smmu_v3_ptops.cc

index 96d876ea31804c7ff660146671bb8e5eb790aa3b..05c8bc022b037969824f050e78d9b111ec35c6f4 100644 (file)
@@ -273,7 +273,7 @@ V8PageTableOps16k::nextLevelPointer(pte_t pte, unsigned level) const
             default: panic("bad level %d", level);
         }
     } else {
-        return mbits(pte, 47, 12);
+        return mbits(pte, 47, 14);
     }
 }