aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 6b11a75839e2..eaccd4bd12a4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -565,12 +565,13 @@ static int amdgpu_kick_out_firmware_fb(struct pci_dev *pdev)
565 return 0; 565 return 0;
566} 566}
567 567
568
568static int amdgpu_pci_probe(struct pci_dev *pdev, 569static int amdgpu_pci_probe(struct pci_dev *pdev,
569 const struct pci_device_id *ent) 570 const struct pci_device_id *ent)
570{ 571{
571 struct drm_device *dev; 572 struct drm_device *dev;
572 unsigned long flags = ent->driver_data; 573 unsigned long flags = ent->driver_data;
573 int ret; 574 int ret, retry = 0;
574 575
575 if ((flags & AMD_EXP_HW_SUPPORT) && !amdgpu_exp_hw_support) { 576 if ((flags & AMD_EXP_HW_SUPPORT) && !amdgpu_exp_hw_support) {
576 DRM_INFO("This hardware requires experimental hardware support.\n" 577 DRM_INFO("This hardware requires experimental hardware support.\n"
@@ -603,8 +604,14 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
603 604
604 pci_set_drvdata(pdev, dev); 605 pci_set_drvdata(pdev, dev);
605 606
607retry_init:
606 ret = drm_dev_register(dev, ent->driver_data); 608 ret = drm_dev_register(dev, ent->driver_data);
607 if (ret) 609 if (ret == -EAGAIN && ++retry <= 3) {
610 DRM_INFO("retry init %d\n", retry);
611 /* Don't request EX mode too frequently which is attacking */
612 msleep(5000);
613 goto retry_init;
614 } else if (ret)
608 goto err_pci; 615 goto err_pci;
609 616
610 return 0; 617 return 0;