dev-arm: Implement invalidateASID in SMMUv3 WalkCache
This patch fixes a bug where issuing a invalidate-by-ASID command (CMD_TLBI_NH_ASID) to the SMMU would cause Gem5 to crash. Change-Id: I5b8343a17e43762fe3917560ae401a20be1e05b8 Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20259 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
committed by
Giacomo Travaglini
parent
e06d4f2658
commit
94f9eebd1f
@@ -1122,7 +1122,16 @@ WalkCache::invalidateVAA(Addr va, uint16_t vmid, const bool leaf_only)
|
||||
void
|
||||
WalkCache::invalidateASID(uint16_t asid, uint16_t vmid)
|
||||
{
|
||||
panic("%s unimplemented\n", __func__);
|
||||
for (size_t s = 0; s < sets.size(); s++) {
|
||||
Set &set = sets[s];
|
||||
|
||||
for (size_t i = 0; i < set.size(); i++) {
|
||||
Entry &e = set[i];
|
||||
|
||||
if (e.asid==asid && e.vmid==vmid)
|
||||
e.valid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user