[Why]
the function "pci_p2pdma_add_resource" in "kfd_ais_init",
and function "devm_memremap_pages" in "kgd2kfd_init_zone_device",
sometimes will cost time about 4s,but the gpu full access time is 3s,
will cause gim reset vf.

[How]
move the two function after release full gpu 
access(amdgpu_virt_release_full_gpu).

Signed-off-by: chong li <[email protected]>
Change-Id: I2db38d905d9dd7fedc4c6a38e325320268c2d84d
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 882fff5a7598..93f66a03ee01 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3331,12 +3331,6 @@ static int amdgpu_device_ip_init(struct amdgpu_device 
*adev)
        if (adev->mman.buffer_funcs_ring->sched.ready)
                amdgpu_ttm_set_buffer_funcs_status(adev, true);
 
-       /* Don't init kfd if whole hive need to be reset during init */
-       if (adev->init_lvl->level != AMDGPU_INIT_LEVEL_MINIMAL_XGMI) {
-               kgd2kfd_init_zone_device(adev);
-               amdgpu_amdkfd_device_init(adev);
-       }
-
        amdgpu_fru_get_product_info(adev);
 
        if (!amdgpu_sriov_vf(adev) || amdgpu_sriov_ras_cper_en(adev))
@@ -4926,6 +4920,12 @@ int amdgpu_device_init(struct amdgpu_device *adev,
                flush_delayed_work(&adev->delayed_init_work);
        }
 
+       /* Don't init kfd if whole hive need to be reset during init */
+       if (adev->init_lvl->level != AMDGPU_INIT_LEVEL_MINIMAL_XGMI) {
+               kgd2kfd_init_zone_device(adev);
+               amdgpu_amdkfd_device_init(adev);
+       }
+
        if (adev->init_lvl->level == AMDGPU_INIT_LEVEL_MINIMAL_XGMI)
                amdgpu_xgmi_reset_on_init(adev);
        /*
-- 
2.48.1

Reply via email to