Hi Peter, On 6/25/20 4:49 PM, Peter Maydell wrote: > On Thu, 11 Jun 2020 at 17:15, Eric Auger <eric.au...@redhat.com> wrote: >> >> Page and block PTE decoding can share some code. Let's >> first handle table PTE and factorize some code shared by >> page and block PTEs. >> >> Signed-off-by: Eric Auger <eric.au...@redhat.com> >> --- >> hw/arm/smmu-common.c | 51 ++++++++++++++++---------------------------- >> 1 file changed, 18 insertions(+), 33 deletions(-) >> >> diff --git a/hw/arm/smmu-common.c b/hw/arm/smmu-common.c >> index e13a5f4a7c..f2de2be527 100644 >> --- a/hw/arm/smmu-common.c >> +++ b/hw/arm/smmu-common.c >> @@ -186,12 +186,12 @@ static int smmu_ptw_64(SMMUTransCfg *cfg, >> uint64_t subpage_size = 1ULL << level_shift(level, granule_sz); >> uint64_t mask = subpage_size - 1; >> uint32_t offset = iova_level_offset(iova, inputsize, level, >> granule_sz); >> - uint64_t pte; >> + uint64_t pte, gpa; >> dma_addr_t pte_addr = baseaddr + offset * sizeof(pte); >> uint8_t ap; >> >> if (get_pte(baseaddr, offset, &pte, info)) { >> - goto error; >> + break; > > get_pte() fills in info->type (to SMMU_PTW_ERR_WALK_EABT) on > error; changing this from "goto error" to "break" means we'll > now execute the "info->type = SMMU_PTW_ERR_TRANSLATION" that > comes between the end of the while loop and the error: label, > overwriting the wrong error type.
Agreed. Thanks Eric > > thanks > -- PMM >