diff options
author | pding <Pixel.Ding@amd.com> | 2017-11-05 21:21:26 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-12-04 16:41:44 -0500 |
commit | 1884734a03904d23137a075c9b64cd9871af1914 (patch) | |
tree | a9b04ee783df1bf0563c515a4869c56e3b799e06 | |
parent | 40575732b6a2ad6430ad8056dabe4cdc01224534 (diff) |
drm/amdkfd: initialise kfd inside amdgpu_device_init
Also finalize kfd inside amdgpu_device_fini. kfd device_init needs
SRIOV exclusive accessing. Try to gather exclusive accessing to
reduce time consuming.
Signed-off-by: pding <Pixel.Ding@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 5 |
2 files changed, 4 insertions, 5 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index 84c8bbec27ce..6636fa25aaf5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |||
@@ -1693,6 +1693,8 @@ static int amdgpu_early_init(struct amdgpu_device *adev) | |||
1693 | if (r) | 1693 | if (r) |
1694 | return r; | 1694 | return r; |
1695 | 1695 | ||
1696 | amdgpu_amdkfd_device_probe(adev); | ||
1697 | |||
1696 | if (amdgpu_sriov_vf(adev)) { | 1698 | if (amdgpu_sriov_vf(adev)) { |
1697 | r = amdgpu_virt_request_full_gpu(adev, true); | 1699 | r = amdgpu_virt_request_full_gpu(adev, true); |
1698 | if (r) | 1700 | if (r) |
@@ -1787,6 +1789,7 @@ static int amdgpu_init(struct amdgpu_device *adev) | |||
1787 | adev->ip_blocks[i].status.hw = true; | 1789 | adev->ip_blocks[i].status.hw = true; |
1788 | } | 1790 | } |
1789 | 1791 | ||
1792 | amdgpu_amdkfd_device_init(adev); | ||
1790 | return 0; | 1793 | return 0; |
1791 | } | 1794 | } |
1792 | 1795 | ||
@@ -1854,6 +1857,7 @@ static int amdgpu_fini(struct amdgpu_device *adev) | |||
1854 | { | 1857 | { |
1855 | int i, r; | 1858 | int i, r; |
1856 | 1859 | ||
1860 | amdgpu_amdkfd_device_fini(adev); | ||
1857 | /* need to disable SMC first */ | 1861 | /* need to disable SMC first */ |
1858 | for (i = 0; i < adev->num_ip_blocks; i++) { | 1862 | for (i = 0; i < adev->num_ip_blocks; i++) { |
1859 | if (!adev->ip_blocks[i].status.hw) | 1863 | if (!adev->ip_blocks[i].status.hw) |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c index f313eee60c4a..252d41d5ff56 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | |||
@@ -63,8 +63,6 @@ void amdgpu_driver_unload_kms(struct drm_device *dev) | |||
63 | pm_runtime_forbid(dev->dev); | 63 | pm_runtime_forbid(dev->dev); |
64 | } | 64 | } |
65 | 65 | ||
66 | amdgpu_amdkfd_device_fini(adev); | ||
67 | |||
68 | amdgpu_acpi_fini(adev); | 66 | amdgpu_acpi_fini(adev); |
69 | 67 | ||
70 | amdgpu_device_fini(adev); | 68 | amdgpu_device_fini(adev); |
@@ -170,9 +168,6 @@ retry_init: | |||
170 | "Error during ACPI methods call\n"); | 168 | "Error during ACPI methods call\n"); |
171 | } | 169 | } |
172 | 170 | ||
173 | amdgpu_amdkfd_device_probe(adev); | ||
174 | amdgpu_amdkfd_device_init(adev); | ||
175 | |||
176 | if (amdgpu_device_is_px(dev)) { | 171 | if (amdgpu_device_is_px(dev)) { |
177 | pm_runtime_use_autosuspend(dev->dev); | 172 | pm_runtime_use_autosuspend(dev->dev); |
178 | pm_runtime_set_autosuspend_delay(dev->dev, 5000); | 173 | pm_runtime_set_autosuspend_delay(dev->dev, 5000); |