Merge tag 'amd-drm-next-5.12-2021-01-20' of https://gitlab.freedesktop.org/agd5f...
[platform/kernel/linux-rpi.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_device.c
index 4d43480..bfaa993 100644 (file)
@@ -1106,8 +1106,7 @@ void amdgpu_device_wb_free(struct amdgpu_device *adev, u32 wb)
  */
 int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev)
 {
-       u64 space_needed = roundup_pow_of_two(adev->gmc.real_vram_size);
-       u32 rbar_size = order_base_2(((space_needed >> 20) | 1)) - 1;
+       int rbar_size = pci_rebar_bytes_to_size(adev->gmc.real_vram_size);
        struct pci_bus *root;
        struct resource *res;
        unsigned i;
@@ -1138,6 +1137,10 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev)
        if (!res)
                return 0;
 
+       /* Limit the BAR size to what is available */
+       rbar_size = min(fls(pci_rebar_get_possible_sizes(adev->pdev, 0)) - 1,
+                       rbar_size);
+
        /* Disable memory decoding while we change the BAR addresses and size */
        pci_read_config_word(adev->pdev, PCI_COMMAND, &cmd);
        pci_write_config_word(adev->pdev, PCI_COMMAND,
@@ -1423,9 +1426,9 @@ static void amdgpu_switcheroo_set_state(struct pci_dev *pdev,
                /* don't suspend or resume card normally */
                dev->switch_power_state = DRM_SWITCH_POWER_CHANGING;
 
-               pci_set_power_state(dev->pdev, PCI_D0);
-               amdgpu_device_load_pci_state(dev->pdev);
-               r = pci_enable_device(dev->pdev);
+               pci_set_power_state(pdev, PCI_D0);
+               amdgpu_device_load_pci_state(pdev);
+               r = pci_enable_device(pdev);
                if (r)
                        DRM_WARN("pci_enable_device failed (%d)\n", r);
                amdgpu_device_resume(dev, true);
@@ -1437,10 +1440,10 @@ static void amdgpu_switcheroo_set_state(struct pci_dev *pdev,
                drm_kms_helper_poll_disable(dev);
                dev->switch_power_state = DRM_SWITCH_POWER_CHANGING;
                amdgpu_device_suspend(dev, true);
-               amdgpu_device_cache_pci_state(dev->pdev);
+               amdgpu_device_cache_pci_state(pdev);
                /* Shut down the device */
-               pci_disable_device(dev->pdev);
-               pci_set_power_state(dev->pdev, PCI_D3cold);
+               pci_disable_device(pdev);
+               pci_set_power_state(pdev, PCI_D3cold);
                dev->switch_power_state = DRM_SWITCH_POWER_OFF;
        }
 }
@@ -1703,8 +1706,7 @@ static void amdgpu_device_enable_virtual_display(struct amdgpu_device *adev)
        adev->enable_virtual_display = false;
 
        if (amdgpu_virtual_display) {
-               struct drm_device *ddev = adev_to_drm(adev);
-               const char *pci_address_name = pci_name(ddev->pdev);
+               const char *pci_address_name = pci_name(adev->pdev);
                char *pciaddstr, *pciaddstr_tmp, *pciaddname_tmp, *pciaddname;
 
                pciaddstr = kstrdup(amdgpu_virtual_display, GFP_KERNEL);
@@ -3400,7 +3402,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
                }
        }
 
-       pci_enable_pcie_error_reporting(adev->ddev.pdev);
+       pci_enable_pcie_error_reporting(adev->pdev);
 
        /* Post card if necessary */
        if (amdgpu_device_need_post(adev)) {
@@ -4158,8 +4160,8 @@ bool amdgpu_device_has_job_running(struct amdgpu_device *adev)
                        continue;
 
                spin_lock(&ring->sched.job_list_lock);
-               job = list_first_entry_or_null(&ring->sched.ring_mirror_list,
-                               struct drm_sched_job, node);
+               job = list_first_entry_or_null(&ring->sched.pending_list,
+                                              struct drm_sched_job, list);
                spin_unlock(&ring->sched.job_list_lock);
                if (job)
                        return true;
@@ -4955,8 +4957,8 @@ pci_ers_result_t amdgpu_pci_error_detected(struct pci_dev *pdev, pci_channel_sta
        case pci_channel_io_normal:
                return PCI_ERS_RESULT_CAN_RECOVER;
        /* Fatal error, prepare for slot reset */
-       case pci_channel_io_frozen:             
-               /*              
+       case pci_channel_io_frozen:
+               /*
                 * Cancel and wait for all TDRs in progress if failing to
                 * set  adev->in_gpu_reset in amdgpu_device_lock_adev
                 *
@@ -5047,7 +5049,7 @@ pci_ers_result_t amdgpu_pci_slot_reset(struct pci_dev *pdev)
                goto out;
        }
 
-       adev->in_pci_err_recovery = true;       
+       adev->in_pci_err_recovery = true;
        r = amdgpu_device_pre_asic_reset(adev, NULL, &need_full_reset);
        adev->in_pci_err_recovery = false;
        if (r)