Message ID | 20210825034828.12927-6-alex.sierra@amd.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Add MEMORY_DEVICE_PUBLIC for CPU-accessible coherent device memory | expand |
Am 2021-08-24 um 11:48 p.m. schrieb Alex Sierra: > Ref counter from device pages is init to zero during memmap init zone. > The first time a new device page is allocated to migrate data into it, > its ref counter needs to be initialized to one. > > Signed-off-by: Alex Sierra <alex.sierra@amd.com> > --- > drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c > index dab290a4d19d..47ee9a895cd2 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c > @@ -220,7 +220,7 @@ svm_migrate_get_vram_page(struct svm_range *prange, unsigned long pfn) > page = pfn_to_page(pfn); > svm_range_bo_ref(prange->svm_bo); > page->zone_device_data = prange->svm_bo; > - get_page(page); There is an assumption here that the page refcount is 0 because the page should be unused. I'd add a VM_BUG_ON_PAGE(page_ref_count(page), page) here to check that assumption. Regards, Felix > + init_page_count(page); > lock_page(page); > } >
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c index dab290a4d19d..47ee9a895cd2 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c @@ -220,7 +220,7 @@ svm_migrate_get_vram_page(struct svm_range *prange, unsigned long pfn) page = pfn_to_page(pfn); svm_range_bo_ref(prange->svm_bo); page->zone_device_data = prange->svm_bo; - get_page(page); + init_page_count(page); lock_page(page); }
Ref counter from device pages is init to zero during memmap init zone. The first time a new device page is allocated to migrate data into it, its ref counter needs to be initialized to one. Signed-off-by: Alex Sierra <alex.sierra@amd.com> --- drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)