diff options
author | Tom St Denis <tom.stdenis@amd.com> | 2017-08-18 10:05:48 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-08-29 15:27:52 -0400 |
commit | 7405e0dad4c75b33976ddd997513635d7a0204b1 (patch) | |
tree | 460207d5d4a19992751ff05424788c7b51a0ac79 | |
parent | a4dec819c8bba6365eb893a4ca88db4dd1210110 (diff) |
drm/amd/amdgpu: Use new TTM populate/map helper function
Signed-off-by: Tom St Denis <tom.stdenis@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 33 |
1 files changed, 2 insertions, 31 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index d1d94a14b089..ce384ed9b9ef 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | |||
@@ -926,7 +926,6 @@ static int amdgpu_ttm_tt_populate(struct ttm_tt *ttm) | |||
926 | { | 926 | { |
927 | struct amdgpu_device *adev = amdgpu_ttm_adev(ttm->bdev); | 927 | struct amdgpu_device *adev = amdgpu_ttm_adev(ttm->bdev); |
928 | struct amdgpu_ttm_tt *gtt = (void *)ttm; | 928 | struct amdgpu_ttm_tt *gtt = (void *)ttm; |
929 | unsigned i; | ||
930 | int r; | 929 | int r; |
931 | bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG); | 930 | bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG); |
932 | 931 | ||
@@ -958,27 +957,7 @@ static int amdgpu_ttm_tt_populate(struct ttm_tt *ttm) | |||
958 | } | 957 | } |
959 | #endif | 958 | #endif |
960 | 959 | ||
961 | r = ttm_pool_populate(ttm); | 960 | r = ttm_populate_and_map_pages(adev->dev, >t->ttm); |
962 | if (r) { | ||
963 | return r; | ||
964 | } | ||
965 | |||
966 | for (i = 0; i < ttm->num_pages; i++) { | ||
967 | gtt->ttm.dma_address[i] = pci_map_page(adev->pdev, ttm->pages[i], | ||
968 | 0, PAGE_SIZE, | ||
969 | PCI_DMA_BIDIRECTIONAL); | ||
970 | if (pci_dma_mapping_error(adev->pdev, gtt->ttm.dma_address[i])) { | ||
971 | while (i--) { | ||
972 | pci_unmap_page(adev->pdev, gtt->ttm.dma_address[i], | ||
973 | PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); | ||
974 | gtt->ttm.dma_address[i] = 0; | ||
975 | } | ||
976 | ttm_pool_unpopulate(ttm); | ||
977 | return -EFAULT; | ||
978 | } | ||
979 | } | ||
980 | |||
981 | r = 0; | ||
982 | trace_mappings: | 961 | trace_mappings: |
983 | if (likely(!r)) | 962 | if (likely(!r)) |
984 | amdgpu_trace_dma_map(ttm); | 963 | amdgpu_trace_dma_map(ttm); |
@@ -989,7 +968,6 @@ static void amdgpu_ttm_tt_unpopulate(struct ttm_tt *ttm) | |||
989 | { | 968 | { |
990 | struct amdgpu_device *adev; | 969 | struct amdgpu_device *adev; |
991 | struct amdgpu_ttm_tt *gtt = (void *)ttm; | 970 | struct amdgpu_ttm_tt *gtt = (void *)ttm; |
992 | unsigned i; | ||
993 | bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG); | 971 | bool slave = !!(ttm->page_flags & TTM_PAGE_FLAG_SG); |
994 | 972 | ||
995 | if (gtt && gtt->userptr) { | 973 | if (gtt && gtt->userptr) { |
@@ -1012,14 +990,7 @@ static void amdgpu_ttm_tt_unpopulate(struct ttm_tt *ttm) | |||
1012 | } | 990 | } |
1013 | #endif | 991 | #endif |
1014 | 992 | ||
1015 | for (i = 0; i < ttm->num_pages; i++) { | 993 | ttm_unmap_and_unpopulate_pages(adev->dev, >t->ttm); |
1016 | if (gtt->ttm.dma_address[i]) { | ||
1017 | pci_unmap_page(adev->pdev, gtt->ttm.dma_address[i], | ||
1018 | PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); | ||
1019 | } | ||
1020 | } | ||
1021 | |||
1022 | ttm_pool_unpopulate(ttm); | ||
1023 | } | 994 | } |
1024 | 995 | ||
1025 | int amdgpu_ttm_tt_set_userptr(struct ttm_tt *ttm, uint64_t addr, | 996 | int amdgpu_ttm_tt_set_userptr(struct ttm_tt *ttm, uint64_t addr, |