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@xxxxxxxxxx> > 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@xxxxxxxxxxxxxxxxxxxxx >> 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 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel