[PATCH 1/1] drm/amdgpu: Clean up KFD init and fini

Deucher, Alexander Alexander.Deucher at amd.com
Sat Sep 1 14:38:34 UTC 2018


Acked-by: Alex Deucher <alexander.deucher at amd.com>

________________________________
From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> on behalf of Felix Kuehling <Felix.Kuehling at amd.com>
Sent: Friday, August 31, 2018 5:34:42 PM
To: amd-gfx at lists.freedesktop.org
Cc: Kuehling, Felix
Subject: [PATCH 1/1] drm/amdgpu: Clean up KFD init and fini

Only initialize KFD once by moving amdgpu_amdkfd_init from
amdgpu_pci_probe to amdgpu_init. This fixes kernel oopses and hangs
when booting multi-GPU systems.

Also removed some vestiges of KFD being its own module.

Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c |  5 +----
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c    | 12 ++++--------
 2 files changed, 5 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
index 8bee9a0..a79df2a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
@@ -28,7 +28,6 @@
 #include <linux/module.h>

 const struct kgd2kfd_calls *kgd2kfd;
-bool (*kgd2kfd_init_p)(unsigned int, const struct kgd2kfd_calls**);

 static const unsigned int compute_vmid_bitmap = 0xFF00;

@@ -51,10 +50,8 @@ int amdgpu_amdkfd_init(void)

 void amdgpu_amdkfd_fini(void)
 {
-       if (kgd2kfd) {
+       if (kgd2kfd)
                 kgd2kfd->exit();
-               symbol_put(kgd2kfd_init);
-       }
 }

 void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index a96ceff..b5c2ccb 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -922,14 +922,6 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
                 return -ENODEV;
         }

-       /*
-        * Initialize amdkfd before starting radeon. If it was not loaded yet,
-        * defer radeon probing
-        */
-       ret = amdgpu_amdkfd_init();
-       if (ret == -EPROBE_DEFER)
-               return ret;
-
         /* Get rid of things like offb */
         ret = amdgpu_kick_out_firmware_fb(pdev);
         if (ret)
@@ -1274,6 +1266,10 @@ static int __init amdgpu_init(void)
         pdriver = &amdgpu_kms_pci_driver;
         driver->num_ioctls = amdgpu_max_kms_ioctl;
         amdgpu_register_atpx_handler();
+
+       /* Ignore KFD init failures. Normal when CONFIG_HSA_AMD is not set. */
+       amdgpu_amdkfd_init();
+
         /* let modprobe override vga console setting */
         return pci_register_driver(pdriver);

--
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx at lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20180901/0e83e46e/attachment.html>


More information about the amd-gfx mailing list