drm/amdkfd: device pgmap owner at the svm migrate init
GPUs in the same XGMI hive have direct access to all members'VRAM. When mapping memory to a GPU, we don't need hmm_range_fault to fault device-private pages in the same hive back to the host. Identifying the page owner as the hive, rather than the individual GPU, accomplishes this. Signed-off-by: Alex Sierra <alex.sierra@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
9e4a91cd9e
commit
3a61dae854
2 changed files with 6 additions and 3 deletions
|
@ -379,7 +379,7 @@ svm_migrate_vma_to_vram(struct amdgpu_device *adev, struct svm_range *prange,
|
|||
migrate.start = start;
|
||||
migrate.end = end;
|
||||
migrate.flags = MIGRATE_VMA_SELECT_SYSTEM;
|
||||
migrate.pgmap_owner = adev;
|
||||
migrate.pgmap_owner = SVM_ADEV_PGMAP_OWNER(adev);
|
||||
|
||||
size = 2 * sizeof(*migrate.src) + sizeof(uint64_t) + sizeof(dma_addr_t);
|
||||
size *= npages;
|
||||
|
@ -601,7 +601,7 @@ svm_migrate_vma_to_ram(struct amdgpu_device *adev, struct svm_range *prange,
|
|||
migrate.start = start;
|
||||
migrate.end = end;
|
||||
migrate.flags = MIGRATE_VMA_SELECT_DEVICE_PRIVATE;
|
||||
migrate.pgmap_owner = adev;
|
||||
migrate.pgmap_owner = SVM_ADEV_PGMAP_OWNER(adev);
|
||||
|
||||
size = 2 * sizeof(*migrate.src) + sizeof(uint64_t) + sizeof(dma_addr_t);
|
||||
size *= npages;
|
||||
|
@ -873,7 +873,7 @@ int svm_migrate_init(struct amdgpu_device *adev)
|
|||
pgmap->range.start = res->start;
|
||||
pgmap->range.end = res->end;
|
||||
pgmap->ops = &svm_migrate_pgmap_ops;
|
||||
pgmap->owner = adev;
|
||||
pgmap->owner = SVM_ADEV_PGMAP_OWNER(adev);
|
||||
pgmap->flags = MIGRATE_VMA_SELECT_DEVICE_PRIVATE;
|
||||
r = devm_memremap_pages(adev->dev, pgmap);
|
||||
if (IS_ERR(r)) {
|
||||
|
|
|
@ -35,6 +35,9 @@
|
|||
#include "amdgpu.h"
|
||||
#include "kfd_priv.h"
|
||||
|
||||
#define SVM_ADEV_PGMAP_OWNER(adev)\
|
||||
((adev)->hive ? (void *)(adev)->hive : (void *)(adev))
|
||||
|
||||
struct svm_range_bo {
|
||||
struct amdgpu_bo *bo;
|
||||
struct kref kref;
|
||||
|
|
Loading…
Add table
Reference in a new issue