On Tue, May 19, 2020 at 08:24:21AM +0530, Prabhakar Kushwaha wrote: > On Mon, May 18, 2020 at 9:25 PM Will Deacon <will@xxxxxxxxxx> wrote: > > On Mon, May 11, 2020 at 07:46:06PM -0700, Prabhakar Kushwaha wrote: > > > @@ -3272,6 +3281,23 @@ static int arm_smmu_init_l1_strtab(struct arm_smmu_device *smmu) > > > return 0; > > > } > > > > > > +static void arm_smmu_copy_table(struct arm_smmu_device *smmu, > > > + struct arm_smmu_strtab_cfg *cfg, u32 size) > > > +{ > > > + struct arm_smmu_strtab_cfg rdcfg; > > > + > > > + rdcfg.strtab_dma = readq_relaxed(smmu->base + ARM_SMMU_STRTAB_BASE); > > > + rdcfg.strtab_base_cfg = readq_relaxed(smmu->base > > > + + ARM_SMMU_STRTAB_BASE_CFG); > > > + > > > + rdcfg.strtab_dma &= STRTAB_BASE_ADDR_MASK; > > > + rdcfg.strtab = memremap(rdcfg.strtab_dma, size, MEMREMAP_WB); > > > + > > > + memcpy_fromio(cfg->strtab, rdcfg.strtab, size); > > > + > > this need a fix. It should be memcpy. > > > > + cfg->strtab_base_cfg = rdcfg.strtab_base_cfg; > > > > Sorry, but this is unacceptable. These things were allocated by the DMA API > > so you can't just memcpy them around and hope for the best. > > > > I was referring copy_context_table() in drivers/iommu/intel-iommu.c. > here i see usage of memremap and memcpy to copy older iommu table. > did I take wrong reference? > > What kind of issue you are foreseeing in using memcpy(). May be we can > try to find a solution. Well the thing might not be cache-coherent to start with... Will _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec