Reparenting a platform device
Stephen Warren
swarren at wwwdotorg.org
Sat Apr 7 02:37:31 EST 2012
On 04/06/2012 01:20 AM, Thierry Reding wrote:
> * Stephen Warren wrote:
>> I must admit I'm not at all familiar with the IOMMU APIs, but isn't the
>> IOMMU driver/subsystem itself what is managing all the allocations and
>> handing them out to clients? And client drivers do things like asking
>> for N pages of memory mapped into their aperture? If that is true, I'm
>> not sure what the purpose is of the intermediate device you propose.
>> Sorry for being somewhat clueless.
>
> That was my impression too at first. But it seems like all the IOMMU
> subsystem does is map individual pages. So you pass it a physical address of
> a page along with the IO virtual address to map it to. That's at least the
> way it is handled for Tegra 2 GART (and from a quick look also by the Tegra 3
> SMMU). For the SMMU the situation may be different because it may not have a
> fixed aperture that needs to contain the IO virtual addresses, though I must
> admit I haven't looked at Tegra 3 in enough detail to judge this.
>
> So this intermediate device would be purely an allocator for the GART
> aperture and handle the actual mapping via the IOMMU. This would probably be
> really simple and is in fact now done in the DRM driver. The nice thing if
> this would be a separate device is that it would be easy to make it a child
> of the IOMMU and wouldn't be as counter-intuitive as making the DRM device
> the IOMMU's child.
OK, I see.
I'll defer to Hiroshi here; he's far more familiar with all this than I am.
My only comment is that I'd be surprised to see any kind of memory
allocator represented as a driver (as opposed to a utility module) since
it's not really representing an actual hardware block.
More information about the devicetree-discuss
mailing list