Hi Shimoda-san, Thanks for your work, On 2019-11-06 11:35:47 +0900, Yoshihiro Shimoda wrote: > Since we will have changed memory mapping of the IPMMU in the future, > This patch adds helper functions ipmmu_ctx_{reg,read,write}() > for MMU "context" registers. No behavior change. > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> > Reviewed-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> > --- > drivers/iommu/ipmmu-vmsa.c | 32 +++++++++++++++++++++++--------- > 1 file changed, 23 insertions(+), 9 deletions(-) > > diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c > index 79975e1..c4fcfda 100644 > --- a/drivers/iommu/ipmmu-vmsa.c > +++ b/drivers/iommu/ipmmu-vmsa.c > @@ -190,29 +190,43 @@ static void ipmmu_write(struct ipmmu_vmsa_device *mmu, unsigned int offset, > iowrite32(data, mmu->base + offset); > } > > +static unsigned int ipmmu_ctx_reg(struct ipmmu_vmsa_device *mmu, > + unsigned int context_id, unsigned int reg) > +{ > + return context_id * IM_CTX_SIZE + reg; > +} > + > +static u32 ipmmu_ctx_read(struct ipmmu_vmsa_device *mmu, > + unsigned int context_id, unsigned int reg) > +{ > + return ipmmu_read(mmu, ipmmu_ctx_reg(mmu, context_id, reg)); > +} > + > +static void ipmmu_ctx_write(struct ipmmu_vmsa_device *mmu, > + unsigned int context_id, unsigned int reg, u32 data) > +{ > + ipmmu_write(mmu, ipmmu_ctx_reg(mmu, context_id, reg), data); > +} > + > static u32 ipmmu_ctx_read_root(struct ipmmu_vmsa_domain *domain, > unsigned int reg) > { > - return ipmmu_read(domain->mmu->root, > - domain->context_id * IM_CTX_SIZE + reg); > + return ipmmu_ctx_read(domain->mmu->root, domain->context_id, reg); > } > > static void ipmmu_ctx_write_root(struct ipmmu_vmsa_domain *domain, > unsigned int reg, u32 data) > { > - ipmmu_write(domain->mmu->root, > - domain->context_id * IM_CTX_SIZE + reg, data); > + ipmmu_ctx_write(domain->mmu->root, domain->context_id, reg, data); > } > > static void ipmmu_ctx_write_all(struct ipmmu_vmsa_domain *domain, > unsigned int reg, u32 data) > { > if (domain->mmu != domain->mmu->root) > - ipmmu_write(domain->mmu, > - domain->context_id * IM_CTX_SIZE + reg, data); > + ipmmu_ctx_write(domain->mmu, domain->context_id, reg, data); > > - ipmmu_write(domain->mmu->root, > - domain->context_id * IM_CTX_SIZE + reg, data); > + ipmmu_ctx_write(domain->mmu->root, domain->context_id, reg, data); > } > > /* ----------------------------------------------------------------------------- > @@ -913,7 +927,7 @@ static void ipmmu_device_reset(struct ipmmu_vmsa_device *mmu) > > /* Disable all contexts. */ > for (i = 0; i < mmu->num_ctx; ++i) > - ipmmu_write(mmu, i * IM_CTX_SIZE + IMCTR, 0); > + ipmmu_ctx_write(mmu, i, IMCTR, 0); > } > > static const struct ipmmu_features ipmmu_features_default = { > -- > 2.7.4 > -- Regards, Niklas Söderlund