summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
diff options
context:
space:
mode:
authorMonk Liu <Monk.Liu@amd.com>2020-03-04 21:33:27 +0800
committerAlex Deucher <alexander.deucher@amd.com>2020-04-01 14:44:43 -0400
commitdffa11b4f74b1572341a667ec7a006420dc48626 (patch)
treec08b5d8f3a3a8eac9caa17eb00cda2a0fb165325 /drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
parent122078de168b8380e9dde15a5c04a5412e710cb6 (diff)
downloadlinux-dffa11b4f74b1572341a667ec7a006420dc48626.tar.bz2
drm/amdgpu: adjust sequence of ip_discovery init and timeout_setting
what: 1)move timtout setting before ip_early_init to reduce exclusive mode cost for SRIOV 2)move ip_discovery_init() to inside of amdgpu_discovery_reg_base_init() it is a prepare for the later upcoming patches. why: in later upcoming patches we would use a new mailbox event -- "req_gpu_init_data", which is a callback hooked in adev->virt.ops and this callback send a new event "REQ_GPU_INIT_DAT" to host to notify host to do some preparation like "IP discovery/vbios on the VF FB" and this callback must be: A) invoked after set_ip_block() because virt.ops is configured during set_ip_block() B) invoked before ip_discovery_init() becausen ip_discovery_init() need host side prepares everything in VF FB first. current place of ip_discovery_init() is before we can invoke callback of adev->virt.ops, thus we must move ip_discovery_init() to a place after the adev->virt.ops all settle done, and the perfect place is in amdgpu_discovery_reg_base_init() Signed-off-by: Monk Liu <Monk.Liu@amd.com> Reviewed-by: Emily Deng <Emily.Deng@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_device.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_device.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 8d39ed47d65a..3c19ae0b13b9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3077,12 +3077,10 @@ int amdgpu_device_init(struct amdgpu_device *adev,
/* detect hw virtualization here */
amdgpu_detect_virtualization(adev);
- if (amdgpu_discovery && adev->asic_type >= CHIP_NAVI10) {
- r = amdgpu_discovery_init(adev);
- if (r) {
- dev_err(adev->dev, "amdgpu_discovery_init failed\n");
- return r;
- }
+ r = amdgpu_device_get_job_timeout_settings(adev);
+ if (r) {
+ dev_err(adev->dev, "invalid lockup_timeout parameter syntax\n");
+ return r;
}
/* early init functions */
@@ -3090,12 +3088,6 @@ int amdgpu_device_init(struct amdgpu_device *adev,
if (r)
return r;
- r = amdgpu_device_get_job_timeout_settings(adev);
- if (r) {
- dev_err(adev->dev, "invalid lockup_timeout parameter syntax\n");
- return r;
- }
-
/* doorbell bar mapping and doorbell index init*/
amdgpu_device_doorbell_init(adev);