• J
    hw/arm/smmuv3: Fix translate error handling · 9122bea9
    Jia He 提交于
    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: 9bde7f06 ("hw/arm/smmuv3: Implement translate callback")
    Reported-by: jia.he@hxt-semitech.com
    Signed-off-by: jia.he@hxt-semitech.com
    Signed-off-by: NEric Auger <eric.auger@redhat.com>
    Reviewed-by: NPeter Maydell <peter.maydell@linaro.org>
    Message-id: 1529653501-15358-2-git-send-email-eric.auger@redhat.com
    Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
    9122bea9
smmuv3-internal.h 19.9 KB