Skip to content
  • Mostafa Saleh's avatar
    21eb5b5c
    hw/arm/smmuv3: Parse STE config for stage-2 · 21eb5b5c
    Mostafa Saleh authored
    
    
    Parse stage-2 configuration from STE and populate it in SMMUS2Cfg.
    Validity of field values are checked when possible.
    
    Only AA64 tables are supported and Small Translation Tables (STT) are
    not supported.
    
    According to SMMUv3 UM(IHI0070E) "5.2 Stream Table Entry": All fields
    with an S2 prefix (with the exception of S2VMID) are IGNORED when
    stage-2 bypasses translation (Config[1] == 0).
    
    Which means that VMID can be used(for TLB tagging) even if stage-2 is
    bypassed, so we parse it unconditionally when S2P exists. Otherwise
    it is set to -1.(only S1P)
    
    As stall is not supported, if S2S is set the translation would abort.
    For S2R, we reuse the same code used for stage-1 with flag
    record_faults. However when nested translation is supported we would
    need to separate stage-1 and stage-2 faults.
    
    Fix wrong shift in STE_S2HD, STE_S2HA, STE_S2S.
    
    Signed-off-by: default avatarMostafa Saleh <smostafa@google.com>
    Tested-by: default avatarEric Auger <eric.auger@redhat.com>
    Tested-by: default avatarJean-Philippe Brucker <jean-philippe@linaro.org>
    Reviewed-by: default avatarEric Auger <eric.auger@redhat.com>
    Message-id: 20230516203327.2051088-6-smostafa@google.com
    [PMM: fixed format string]
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    21eb5b5c
    hw/arm/smmuv3: Parse STE config for stage-2
    Mostafa Saleh authored
    
    
    Parse stage-2 configuration from STE and populate it in SMMUS2Cfg.
    Validity of field values are checked when possible.
    
    Only AA64 tables are supported and Small Translation Tables (STT) are
    not supported.
    
    According to SMMUv3 UM(IHI0070E) "5.2 Stream Table Entry": All fields
    with an S2 prefix (with the exception of S2VMID) are IGNORED when
    stage-2 bypasses translation (Config[1] == 0).
    
    Which means that VMID can be used(for TLB tagging) even if stage-2 is
    bypassed, so we parse it unconditionally when S2P exists. Otherwise
    it is set to -1.(only S1P)
    
    As stall is not supported, if S2S is set the translation would abort.
    For S2R, we reuse the same code used for stage-1 with flag
    record_faults. However when nested translation is supported we would
    need to separate stage-1 and stage-2 faults.
    
    Fix wrong shift in STE_S2HD, STE_S2HA, STE_S2S.
    
    Signed-off-by: default avatarMostafa Saleh <smostafa@google.com>
    Tested-by: default avatarEric Auger <eric.auger@redhat.com>
    Tested-by: default avatarJean-Philippe Brucker <jean-philippe@linaro.org>
    Reviewed-by: default avatarEric Auger <eric.auger@redhat.com>
    Message-id: 20230516203327.2051088-6-smostafa@google.com
    [PMM: fixed format string]
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Loading