On Wed, May 13, 2026 at 03:47:33PM +0200, Christian König wrote:
> 
> 
> On 5/13/26 11:57, Junhua Shen wrote:
> > Call amdgpu_svm_migration_init() in the device initialization and
> > XGMI reset-restore paths to register the GPU's VRAM as a ZONE_DEVICE
> > region before KFD initialization.
> > 
> > This activates the drm_pagemap migration infrastructure.
> > 
> > Signed-off-by: Junhua Shen <[email protected]>
> > ---
> >  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 ++++
> >  drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c  | 4 ++++
> >  2 files changed, 8 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
> > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> > index fbe553c38583..3be51a2c0106 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> > @@ -78,6 +78,7 @@
> >  #include "amdgpu_reset.h"
> >  #include "amdgpu_virt.h"
> >  #include "amdgpu_dev_coredump.h"
> > +#include "amdgpu_migrate.h"
> >  
> >  #include <linux/suspend.h>
> >  #include <drm/task_barrier.h>
> > @@ -4076,6 +4077,9 @@ int amdgpu_device_init(struct amdgpu_device *adev,
> >  
> >     /* Don't init kfd if whole hive need to be reset during init */
> >     if (adev->init_lvl->level != AMDGPU_INIT_LEVEL_MINIMAL_XGMI) {
> > +#if IS_ENABLED(CONFIG_DRM_AMDGPU_SVM)
> > +           amdgpu_svm_migration_init(adev);
> > +#endif
> 
> Looks good in general, but just a style advise:
> 
> Instead of spread those #if IS_ENABLED() It's good practice to do something 
> like this in the header:
> 
> #if IS_ENABLED(CONFIG_DRM_AMDGPU_SVM)
> 
> void amdgpu_svm_migration_init(struct amdgpu_device *adev);
> 
> #else
> 
> void amdgpu_svm_migration_init(struct amdgpu_device *adev) {}
> 
> #endif
> 
> Especially when the function is used multiple times.
>
Thank you for the style advice.

The header (amdgpu_migrate.h) already provides the static inline stub
for the CONFIG_DRM_AMDGPU_SVM case.

I'll drop the #if IS_ENABLED() guards at the call sites in both
amdgpu_device.c and amdgpu_reset.c, and just call
amdgpu_svm_migration_init() directly.

Regards,
Junhua

> Regards,
> Christian.
> 
> >             kgd2kfd_init_zone_device(adev);
> >             kfd_update_svm_support_properties(adev);
> >     }
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c 
> > b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
> > index 28c4ad62f50e..c94d43f3ab42 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c
> > @@ -25,6 +25,7 @@
> >  #include "aldebaran.h"
> >  #include "sienna_cichlid.h"
> >  #include "smu_v13_0_10.h"
> > +#include "amdgpu_migrate.h"
> >  
> >  static int amdgpu_reset_xgmi_reset_on_init_suspend(struct amdgpu_device 
> > *adev)
> >  {
> > @@ -87,6 +88,9 @@ static int amdgpu_reset_xgmi_reset_on_init_restore_hwctxt(
> >             return r;
> >     list_for_each_entry(tmp_adev, reset_device_list, reset_list) {
> >             if (!tmp_adev->kfd.init_complete) {
> > +#if IS_ENABLED(CONFIG_DRM_AMDGPU_SVM)
> > +                   amdgpu_svm_migration_init(tmp_adev);
> > +#endif
> >                     kgd2kfd_init_zone_device(tmp_adev);
> >                     amdgpu_amdkfd_device_init(tmp_adev);
> >                     amdgpu_amdkfd_drm_client_create(tmp_adev);
> 

Reply via email to