diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index c2f414ffb2cc..31383e004947 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | |||
@@ -216,7 +216,7 @@ module_param_named(exp_hw_support, amdgpu_exp_hw_support, int, 0444); | |||
216 | MODULE_PARM_DESC(dc, "Display Core driver (1 = enable, 0 = disable, -1 = auto (default))"); | 216 | MODULE_PARM_DESC(dc, "Display Core driver (1 = enable, 0 = disable, -1 = auto (default))"); |
217 | module_param_named(dc, amdgpu_dc, int, 0444); | 217 | module_param_named(dc, amdgpu_dc, int, 0444); |
218 | 218 | ||
219 | MODULE_PARM_DESC(dc, "Display Core Log Level (0 = minimal (default), 1 = chatty"); | 219 | MODULE_PARM_DESC(dc_log, "Display Core Log Level (0 = minimal (default), 1 = chatty"); |
220 | module_param_named(dc_log, amdgpu_dc_log, int, 0444); | 220 | module_param_named(dc_log, amdgpu_dc_log, int, 0444); |
221 | 221 | ||
222 | MODULE_PARM_DESC(sched_jobs, "the max number of jobs supported in the sw queue (default 32)"); | 222 | MODULE_PARM_DESC(sched_jobs, "the max number of jobs supported in the sw queue (default 32)"); |
@@ -306,7 +306,6 @@ MODULE_PARM_DESC(cik_support, "CIK support (1 = enabled (default), 0 = disabled) | |||
306 | module_param_named(cik_support, amdgpu_cik_support, int, 0444); | 306 | module_param_named(cik_support, amdgpu_cik_support, int, 0444); |
307 | #endif | 307 | #endif |
308 | 308 | ||
309 | |||
310 | static const struct pci_device_id pciidlist[] = { | 309 | static const struct pci_device_id pciidlist[] = { |
311 | #ifdef CONFIG_DRM_AMDGPU_SI | 310 | #ifdef CONFIG_DRM_AMDGPU_SI |
312 | {0x1002, 0x6780, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI}, | 311 | {0x1002, 0x6780, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI}, |
@@ -566,12 +565,13 @@ static int amdgpu_kick_out_firmware_fb(struct pci_dev *pdev) | |||
566 | return 0; | 565 | return 0; |
567 | } | 566 | } |
568 | 567 | ||
568 | |||
569 | static int amdgpu_pci_probe(struct pci_dev *pdev, | 569 | static int amdgpu_pci_probe(struct pci_dev *pdev, |
570 | const struct pci_device_id *ent) | 570 | const struct pci_device_id *ent) |
571 | { | 571 | { |
572 | struct drm_device *dev; | 572 | struct drm_device *dev; |
573 | unsigned long flags = ent->driver_data; | 573 | unsigned long flags = ent->driver_data; |
574 | int ret; | 574 | int ret, retry = 0; |
575 | 575 | ||
576 | if ((flags & AMD_EXP_HW_SUPPORT) && !amdgpu_exp_hw_support) { | 576 | if ((flags & AMD_EXP_HW_SUPPORT) && !amdgpu_exp_hw_support) { |
577 | DRM_INFO("This hardware requires experimental hardware support.\n" | 577 | DRM_INFO("This hardware requires experimental hardware support.\n" |
@@ -604,8 +604,14 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, | |||
604 | 604 | ||
605 | pci_set_drvdata(pdev, dev); | 605 | pci_set_drvdata(pdev, dev); |
606 | 606 | ||
607 | retry_init: | ||
607 | ret = drm_dev_register(dev, ent->driver_data); | 608 | ret = drm_dev_register(dev, ent->driver_data); |
608 | 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) | ||
609 | goto err_pci; | 615 | goto err_pci; |
610 | 616 | ||
611 | return 0; | 617 | return 0; |