Re: [PATCH 09/21] dma-iommu: refactor iommu_dma_get_sgtable

From: Christoph Hellwig
Date: Tue Apr 09 2019 - 13:27:07 EST


On Tue, Apr 09, 2019 at 04:49:30PM +0100, Robin Murphy wrote:
>> *cpu_addr,
>> + size_t size)
>> +{
>> + unsigned int count = PAGE_ALIGN(size) >> PAGE_SHIFT;
>> + struct vm_struct *area = find_vm_area(cpu_addr);
>> +
>> + if (WARN_ON(!area || !area->pages))
>> + return -ENXIO;
>> + return sg_alloc_table_from_pages(sgt, area->pages, count, 0, size,
>> + GFP_KERNEL);
>> +}
>> +
>
> Is this complex enough to deserve being broken out? Really I'd prefer to
> keep get_sgtable() as small and consolidated as possible so that it's that
> much easier to delete in future :)

Well, it is logically separate, and this keeps it tidy. But I agree
with the long term goal of killing off this awkward API that should
never have been added.

>
> I guess there is a certain symmetry with mmap(), so if that's the angle
> you're dead set on, could we at least keep this guy down where
> __iommu_dma_get_sgtable_page() was?

It is up there so that we can reduce the number of ifdef blocks for
dma remapping later on.