hw/arm/smmu-common: Fix TTB1 handling
Addresses targeting the second translation table (TTB1) in the SMMU have all upper bits set (except for the top byte when TBI is enabled). Fix the TTB1 check. Reported-by: Ola Hugosson <ola.hugosson@arm.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Message-id: 20230214171921.1917916-3-jean-philippe@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
ca3fbed896
commit
e431b8f608
@ -249,7 +249,7 @@ SMMUTransTableInfo *select_tt(SMMUTransCfg *cfg, dma_addr_t iova)
|
||||
/* there is a ttbr0 region and we are in it (high bits all zero) */
|
||||
return &cfg->tt[0];
|
||||
} else if (cfg->tt[1].tsz &&
|
||||
!extract64(iova, 64 - cfg->tt[1].tsz, cfg->tt[1].tsz - tbi_byte)) {
|
||||
sextract64(iova, 64 - cfg->tt[1].tsz, cfg->tt[1].tsz - tbi_byte) == -1) {
|
||||
/* there is a ttbr1 region and we are in it (high bits all one) */
|
||||
return &cfg->tt[1];
|
||||
} else if (!cfg->tt[0].tsz) {
|
||||
|
Loading…
Reference in New Issue
Block a user