On Thu, 11 Jun 2020 at 17:15, Eric Auger <eric.au...@redhat.com> wrote: > > Compute the starting level on CD decoding and store it > into SMMUTransTableInfo. We will need this information > on IOTLB lookup so let's avoid to recompute it each time. > > Signed-off-by: Eric Auger <eric.au...@redhat.com>
> --- a/hw/arm/smmu-common.c > +++ b/hw/arm/smmu-common.c > @@ -224,7 +224,7 @@ static int smmu_ptw_64(SMMUTransCfg *cfg, > granule_sz = tt->granule_sz; > stride = granule_sz - 3; > inputsize = 64 - tt->tsz; > - level = 4 - (inputsize - 4) / stride; > + level = tt->starting_level; "4 - (x - 4) / y" doesn't really seem like it's complicated enough to be worth caching given everything else we do on a page table walk. Do you have perf figures to indicate that this change is worthwhile? thanks -- PMM