diff options
author | Zenghui Yu <yuzenghui@huawei.com> | 2021-04-02 18:04:49 +0800 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2021-04-12 11:06:24 +0100 |
commit | 017a913af4dff47ac5e62be613b9f8b88fc8fa96 (patch) | |
tree | bffa550d15d833db8ef8f6c081b793afc0596660 /hw/arm/aspeed.c | |
parent | 0c38f607836af40921ea2b58676b7c4a9fe33bef (diff) | |
download | qemu-017a913af4dff47ac5e62be613b9f8b88fc8fa96.zip |
hw/arm/smmuv3: Emulate CFGI_STE_RANGE for an aligned range of StreamIDs
In emulation of the CFGI_STE_RANGE command, we now take StreamID as the
start of the invalidation range, regardless of whatever the Range is,
whilst the spec clearly states that
- "Invalidation is performed for an *aligned* range of 2^(Range+1)
StreamIDs."
- "The bottom Range+1 bits of the StreamID parameter are IGNORED,
aligning the range to its size."
Take CFGI_ALL (where Range == 31) as an example, if there are some random
bits in the StreamID field, we'll fail to perform the full invalidation but
get a strange range (e.g., SMMUSIDRange={.start=1, .end=0}) instead. Rework
the emulation a bit to get rid of the discrepancy with the spec.
Signed-off-by: Zenghui Yu <yuzenghui@huawei.com>
Acked-by: Eric Auger <eric.auger@redhat.com>
Message-id: 20210402100449.528-1-yuzenghui@huawei.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/arm/aspeed.c')
0 files changed, 0 insertions, 0 deletions