[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 1/6] hw/arm/smmuv3: Apply address mask to linear strtab base a
From: |
Simon Veith |
Subject: |
[PATCH v3 1/6] hw/arm/smmuv3: Apply address mask to linear strtab base address |
Date: |
Mon, 16 Dec 2019 16:15:07 +0100 |
In the SMMU_STRTAB_BASE register, the stream table base address only
occupies bits [51:6]. Other bits, such as RA (bit [62]), must be masked
out to obtain the base address.
The branch for 2-level stream tables correctly applies this mask by way
of SMMU_BASE_ADDR_MASK, but the one for linear stream tables does not.
Apply the missing mask in that case as well so that the correct stream
base address is used by guests which configure a linear stream table.
Linux guests are unaffected by this change because they choose a 2-level
stream table layout for the QEMU SMMUv3, based on the size of its stream
ID space.
ref. ARM IHI 0070C, section 6.3.23.
Signed-off-by: Simon Veith <address@hidden>
Cc: Eric Auger <address@hidden>
Cc: address@hidden
Cc: address@hidden
Acked-by: Eric Auger <address@hidden>
---
hw/arm/smmuv3.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
index e2fbb83..eef9a18 100644
--- a/hw/arm/smmuv3.c
+++ b/hw/arm/smmuv3.c
@@ -429,7 +429,7 @@ static int smmu_find_ste(SMMUv3State *s, uint32_t sid, STE
*ste,
}
addr = l2ptr + l2_ste_offset * sizeof(*ste);
} else {
- addr = s->strtab_base + sid * sizeof(*ste);
+ addr = (s->strtab_base & SMMU_BASE_ADDR_MASK) + sid * sizeof(*ste);
}
if (smmu_get_ste(s, addr, ste, event)) {
--
2.7.4
- [PATCH v3 0/6] hw/arm/smmuv3: Correct stream ID and event address handling, Simon Veith, 2019/12/16
- [PATCH v3 2/6] hw/arm/smmuv3: Correct SMMU_BASE_ADDR_MASK value, Simon Veith, 2019/12/16
- [PATCH v3 3/6] hw/arm/smmuv3: Check stream IDs against actual table LOG2SIZE, Simon Veith, 2019/12/16
- [PATCH v3 1/6] hw/arm/smmuv3: Apply address mask to linear strtab base address,
Simon Veith <=
- [PATCH v3 5/6] hw/arm/smmuv3: Use correct bit positions in EVT_SET_ADDR2 macro, Simon Veith, 2019/12/16
- [PATCH v3 4/6] hw/arm/smmuv3: Align stream table base address to table size, Simon Veith, 2019/12/16
- [PATCH v3 6/6] hw/arm/smmuv3: Report F_STE_FETCH fault address in correct word position, Simon Veith, 2019/12/16
- Re: [PATCH v3 0/6] hw/arm/smmuv3: Correct stream ID and event address handling, Auger Eric, 2019/12/17