hw/arm/smmuv3: Fix translate error handling
authorJia He <hejianet@gmail.com>
Tue, 26 Jun 2018 16:50:42 +0000 (17:50 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 26 Jun 2018 16:50:42 +0000 (17:50 +0100)
commit9122bea9862edc0e665c796f79d99319b6638929
treeaf1d31d9b9b75c7fe77ea63c5b730fb9687aa2de
parent720424359917887c926a33d248131fbff84c9c28
hw/arm/smmuv3: Fix translate error handling

In case the STE's config is "Bypass" we currently don't set the
IOMMUTLBEntry perm flags and the access does not succeed. Also
if the config is 0b0xx (Aborted/Reserved), decode_ste and
smmuv3_decode_config currently returns -EINVAL and we don't enter
the expected code path: we record an event whereas we should not.

This patch fixes those bugs and simplifies the error handling.
decode_ste and smmuv3_decode_config now return 0 if aborted or
bypassed config was found. Only bad config info produces negative
error values. In smmuv3_translate we more clearly differentiate
errors, bypass/smmu disabled, aborted and success cases. Also
trace points are differentiated.

Fixes: 9bde7f0674fe ("hw/arm/smmuv3: Implement translate callback")
Reported-by: jia.he@hxt-semitech.com
Signed-off-by: jia.he@hxt-semitech.com
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 1529653501-15358-2-git-send-email-eric.auger@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/arm/smmuv3-internal.h
hw/arm/smmuv3.c
hw/arm/trace-events