On Sat, Jul 29, 2017 at 12:14 AM, Felix Kuehling <Felix.Kuehling at amd.com> wrote: > kfd2kgd is device-specific, so it should not be a global variable. > Merge amdgpu_amdkfd_load_interface and amdgpu_amdkfd_device_probe > so that it's only needed as a local variable in one function. > > Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 37 +++++++++++++++--------------- > drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 -- > drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 1 - > 3 files changed, 18 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c > index 2292c77..471f9d4 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c > @@ -27,7 +27,6 @@ > #include "amdgpu_gfx.h" > #include <linux/module.h> > > -const struct kfd2kgd_calls *kfd2kgd; > const struct kgd2kfd_calls *kgd2kfd; > bool (*kgd2kfd_init_p)(unsigned, const struct kgd2kfd_calls**); > > @@ -61,8 +60,21 @@ int amdgpu_amdkfd_init(void) > return ret; > } > > -bool amdgpu_amdkfd_load_interface(struct amdgpu_device *adev) > +void amdgpu_amdkfd_fini(void) > +{ > + if (kgd2kfd) { > + kgd2kfd->exit(); > + symbol_put(kgd2kfd_init); > + } > +} > + > +void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev) > { > + const struct kfd2kgd_calls *kfd2kgd; > + > + if (!kgd2kfd) > + return; > + > switch (adev->asic_type) { > #ifdef CONFIG_DRM_AMDGPU_CIK > case CHIP_KAVERI: > @@ -73,25 +85,12 @@ bool amdgpu_amdkfd_load_interface(struct amdgpu_device *adev) > kfd2kgd = amdgpu_amdkfd_gfx_8_0_get_functions(); > break; > default: > - return false; > + dev_info(adev->dev, "kfd not supported on this ASIC\n"); > + return; > } > > - return true; > -} > - > -void amdgpu_amdkfd_fini(void) > -{ > - if (kgd2kfd) { > - kgd2kfd->exit(); > - symbol_put(kgd2kfd_init); > - } > -} > - > -void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev) > -{ > - if (kgd2kfd) > - adev->kfd = kgd2kfd->probe((struct kgd_dev *)adev, > - adev->pdev, kfd2kgd); > + adev->kfd = kgd2kfd->probe((struct kgd_dev *)adev, > + adev->pdev, kfd2kgd); > } > > void amdgpu_amdkfd_device_init(struct amdgpu_device *adev) > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h > index 73f83a1..b8802a5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h > @@ -39,8 +39,6 @@ struct kgd_mem { > int amdgpu_amdkfd_init(void); > void amdgpu_amdkfd_fini(void); > > -bool amdgpu_amdkfd_load_interface(struct amdgpu_device *adev); > - > void amdgpu_amdkfd_suspend(struct amdgpu_device *adev); > int amdgpu_amdkfd_resume(struct amdgpu_device *adev); > void amdgpu_amdkfd_interrupt(struct amdgpu_device *adev, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > index 9182def..33b5fe3 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c > @@ -157,7 +157,6 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags) > "Error during ACPI methods call\n"); > } > > - amdgpu_amdkfd_load_interface(adev); > amdgpu_amdkfd_device_probe(adev); > amdgpu_amdkfd_device_init(adev); > > -- > 1.9.1 > This patch is: Reviewed-by: Oded Gabbay <oded.gabbay at gmail.com>