Am 09.02.2018 um 15:02 schrieb Tom St Denis: > On 09/02/18 08:56 AM, Christian König wrote: >> Am 09.02.2018 um 14:32 schrieb Tom St Denis: >>> On 02/02/18 02:09 PM, Christian König wrote: >>>> [SNIP] >>>> +       if (p->mapping != adev->mman.bdev.dev_mapping) >>>> +           return -EPERM; >>> >>> This comparison fails for both IOMMU and non-IOMMU devices in my >>> carrizo+polaris10 box. >>> >>> The address being read from is what the VM decodes to (checked with >>> strace). >> >> Have you applied the whole series? That patches before this one are >> necessary to initialize p->mapping when there isn't any userspace >> mapping for the page. > > > Yes, I have the entire 5 pages applied to a temp branch based on the > tip of drm-next > > $ git log --oneline HEAD~10.. > 405bc1dc85db (HEAD -> iomem) wip > a06d7a6f29e4 drm/amdgpu: replace iova debugfs file with iomem > d324c21f2c5e drm/ttm: set page mapping during allocation > 9f440ee91c58 drm/radeon: remove extra TT unpopulated check > f55d505b0387 drm/amdgpu: remove extra TT unpopulated check > 37d705119ea8 drm/ttm: add ttm_tt_populate wrapper > 53af6035d04b (origin/amd-staging-drm-next, amd-staging-drm-next) > drm/radeon: only enable swiotlb path when need v2 > > (the wip is me adding printks to see which error path is taken). > > I don't see an init call for adev->mman.bdev.man[TTM_PL_SYSTEM] > anywhere. Maybe that's related? No, there is simply no need to initialize the system domain. What are the values of p->mapping and adev->mman.bdev.dev_mapping when they don't match? Maybe we are allocating memory before initializing adev->mman.bdev.dev_mapping. Or do you have more than one GPU in the system? E.g. APU+dGPU? Could it be that you read through the wrong device? Christian. > > Tom