[PATCH] drm/ttm: Refuse to fault (prime-) imported pages
Thomas Hellstrom
thellstrom at vmware.com
Tue Jan 7 01:45:26 PST 2014
On 01/07/2014 10:14 AM, Daniel Vetter wrote:
> On Fri, Jan 03, 2014 at 11:22:17AM +0100, Thomas Hellstrom wrote:
>> This is illegal for at least two reasons:
>>
>> 1) While it may work on some platforms / iommus, obtaining page pointers from
>> mapped sg-lists is illegal, since the DMA API allows page pointer information
>> to be destroyed in the sg mapping process.
>>
>> 2) TTM has no way of determining the linear kernel map caching state of the
>> underlying pages. PTEs with conflicting caching state pointing to the same
>> pfn is not allowed.
>>
>> TTM operations touching pages of imported sg-tables should be redirected through
>> the proper dma-buf operations.
>>
>> Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
> Shouldn't we do something similar in the kmap helpers ttm_bo_util.c like
> ttm_bo_kmap and ttm_bo_move_memcpy? Maybe just a BUG to catch driver bugs.
> Otherwise this sounds like the right thing to do, so Acked.
> -Daniel
Indeed, although I think that TTM should by default reroute the
ttm_bo_kmap operations through the
correct dma-buf ops. Haven't gotten around to do that yet.
/Thomas
>> ---
>> drivers/gpu/drm/ttm/ttm_bo_vm.c | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> index cdda784..12d7f53 100644
>> --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
>> @@ -132,6 +132,15 @@ static int ttm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
>> return VM_FAULT_NOPAGE;
>> }
>>
>> + /*
>> + * Refuse to fault imported pages. This should be handled
>> + * (if at all) by redirecting mmap to the exporter.
>> + */
>> + if (bo->ttm && (bo->ttm->page_flags & TTM_PAGE_FLAG_SG)) {
>> + retval = VM_FAULT_SIGBUS;
>> + goto out_unlock;
>> + }
>> +
>> if (bdev->driver->fault_reserve_notify) {
>> ret = bdev->driver->fault_reserve_notify(bo);
>> switch (ret) {
>> --
>> 1.7.10.4
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel at lists.freedesktop.org
>> https://urldefense.proofpoint.com/v1/url?u=http://lists.freedesktop.org/mailman/listinfo/dri-devel&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=l5Ago9ekmVFZ3c4M6eauqrJWGwjf6fTb%2BP3CxbBFkVM%3D%0A&m=3HWzF0bywXXmhWUQ1pCmbecMKkpEmnzo1A%2FnuPHbTX8%3D%0A&s=7209cea9c0020dea424c53ca15e12218f0370076ed1105a55775ea3d39a2b267
More information about the dri-devel
mailing list