On 2019-03-28 4:38 p.m., Liu, Shaoyun wrote: > Avoid unnecessary XGMI hight pstate trigger when mapping none-vram memory for peer device > > Change-Id: I1881deff3da19f1f4b58d5765db03a590092a5b2 > Signed-off-by: shaoyunl <shaoyun.liu@xxxxxxx> This patch is Reviewed-by: Felix Kuehling <Felix.Kuehling@xxxxxxx> Please also give Christian a chance to review this one before you submit. Thanks, Felix > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 11 +++++++++++ > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 3 ++- > 2 files changed, 13 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > index 9ee8d7a..7b84036 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c > @@ -31,6 +31,7 @@ > #include <drm/amdgpu_drm.h> > #include "amdgpu.h" > #include "amdgpu_display.h" > +#include "amdgpu_xgmi.h" > > void amdgpu_gem_object_free(struct drm_gem_object *gobj) > { > @@ -666,6 +667,7 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data, > struct amdgpu_device *adev = dev->dev_private; > struct drm_amdgpu_gem_op *args = data; > struct drm_gem_object *gobj; > + struct amdgpu_vm_bo_base *base; > struct amdgpu_bo *robj; > int r; > > @@ -704,6 +706,15 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data, > amdgpu_bo_unreserve(robj); > break; > } > + for (base = robj->vm_bo; base; base = base->next) > + if (amdgpu_xgmi_same_hive(amdgpu_ttm_adev(robj->tbo.bdev), > + amdgpu_ttm_adev(base->vm->root.base.bo->tbo.bdev))) { > + r = -EINVAL; > + amdgpu_bo_unreserve(robj); > + goto out; > + } > + > + > robj->preferred_domains = args->value & (AMDGPU_GEM_DOMAIN_VRAM | > AMDGPU_GEM_DOMAIN_GTT | > AMDGPU_GEM_DOMAIN_CPU); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > index 3d221f0..eb242a1 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > @@ -2025,7 +2025,8 @@ struct amdgpu_bo_va *amdgpu_vm_bo_add(struct amdgpu_device *adev, > INIT_LIST_HEAD(&bo_va->valids); > INIT_LIST_HEAD(&bo_va->invalids); > > - if (bo && amdgpu_xgmi_same_hive(adev, amdgpu_ttm_adev(bo->tbo.bdev))) { > + if (bo && amdgpu_xgmi_same_hive(adev, amdgpu_ttm_adev(bo->tbo.bdev)) && > + (bo->preferred_domains & AMDGPU_GEM_DOMAIN_VRAM)) { > bo_va->is_xgmi = true; > mutex_lock(&adev->vm_manager.lock_pstate); > /* Power up XGMI if it can be potentially used */ _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx