[PATCH 2/9] iommu/arm-smmu: Calculate SMMU_CB_BASE from smmu register values
Will Deacon
will.deacon at arm.com
Fri Sep 27 07:08:32 EDT 2013
On Fri, Sep 27, 2013 at 12:05:21PM +0100, Andreas Herrmann wrote:
> On Fri, Sep 27, 2013 at 06:51:53AM -0400, Will Deacon wrote:
> > Well, we should already print the "device is 0x%lx bytes but only mapped
> > 0x%lx!" message, which I think is enough to go and figure out what happened.
>
> No, you can map a larger region and still wrongly calculate cb_base
> w/o this warning.
Gotcha.
> So the required check is something like
>
> /* Check for mismatch between SMMU address space size and size of mapped region */
> size = 1 << (((id >> ID1_NUMPAGENDXB_SHIFT) & ID1_NUMPAGENDXB_MASK) + 1);
> size *= (smmu->pagesize << 1);
> if (smmu->size != size)
> dev_warn(smmu->dev,
> "SMMU_GLOBAL_SIZE (0x%lx) differs from mapped "
> region size (0x%lx)!\n", size, smmu->size);
Sure, tightening up that check sounds like a good idea.
Looking forward to the next version of the patches!
(I need some more time to think about that secure config access patch :).
Will
More information about the linux-arm-kernel
mailing list