amd-drm-next-5.10-2020-09-03:
amdgpu:
- RAS fixes
- Sienna Cichlid updates
- Navy Flounder updates
- DCE6 (SI) support in DC
- Enable plane rotation
- Rework pre-OS vram reservation handling during driver init
- Add standard interface to dump GPU metrics table from SMU
- Rework tiling and tmz state handling in atomic commits
- Pstate fixes
- Add voltage and power hwmon interfaces for renoir
- SW CTF fixes
- S/G display fix for Raven
- Print client strings for vmfaults for vega and newer
- Manual fan control fixes
- Display updates
- Reorg power management directory structure
- Misc bug fixes
- Misc code cleanups
amdkfd:
- Topology fixes
- Add SMI events for thermal throttling and GPU resets
radeon:
- switch from pci_* to dma_* for dma allocations
- PLL fix
Scheduler:
- Clean up priority levels
UAPI:
- amdgpu INFO IOCTL query update for TMZ state
  https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6049
- amdkfd SMI event interface updates
  https://github.com/RadeonOpenCompute/rocm_smi_lib/tree/therm_thrott
From: Alex Deucher <alexdeucher@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200903222921.4152-1-alexander.deucher@amd.com
                AMD_IP_BLOCK_TYPE_IH,
        };
  
-       for (i = 0; i < adev->num_ip_blocks; i++)
-               adev->ip_blocks[i].status.hw = false;
- 
 -      for (i = 0; i < adev->num_ip_blocks; i++) {
 +      for (i = 0; i < ARRAY_SIZE(ip_order); i++) {
                int j;
                struct amdgpu_ip_block *block;
  
 
                struct device_attribute *attr, char *buf)
  {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 +      struct ttm_resource_manager *man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
+ 
        return snprintf(buf, PAGE_SIZE, "%llu\n",
 -                      (adev->mman.bdev.man[TTM_PL_TT].size) * PAGE_SIZE);
 +                      man->size * PAGE_SIZE);
  }
  
  /**
                struct device_attribute *attr, char *buf)
  {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 +      struct ttm_resource_manager *man = ttm_manager_type(&adev->mman.bdev, TTM_PL_TT);
+ 
        return snprintf(buf, PAGE_SIZE, "%llu\n",
 -                      amdgpu_gtt_mgr_usage(&adev->mman.bdev.man[TTM_PL_TT]));
 +                      amdgpu_gtt_mgr_usage(man));
  }
  
  static DEVICE_ATTR(mem_info_gtt_total, S_IRUGO,
 
        struct drm_info_node *node = (struct drm_info_node *)m->private;
        unsigned ttm_pl = (uintptr_t)node->info_ent->data;
        struct drm_device *dev = node->minor->dev;
-       struct amdgpu_device *adev = dev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(dev);
 -      struct ttm_mem_type_manager *man = &adev->mman.bdev.man[ttm_pl];
 +      struct ttm_resource_manager *man = ttm_manager_type(&adev->mman.bdev, ttm_pl);
        struct drm_printer p = drm_seq_file_printer(m);
  
        man->func->debug(man, &p);
 
        /* Scheduler entity for buffer moves */
        struct drm_sched_entity                 entity;
  
 +      struct amdgpu_vram_mgr vram_mgr;
 +      struct amdgpu_gtt_mgr gtt_mgr;
++
+       uint64_t                stolen_vga_size;
+       struct amdgpu_bo        *stolen_vga_memory;
+       uint64_t                stolen_extended_size;
+       struct amdgpu_bo        *stolen_extended_memory;
+       bool                    keep_stolen_vga_memory;
+ 
+       /* discovery */
+       uint8_t                         *discovery_bin;
+       uint32_t                        discovery_tmr_size;
+       struct amdgpu_bo                *discovery_memory;
+ 
+       /* firmware VRAM reservation */
+       u64             fw_vram_usage_start_offset;
+       u64             fw_vram_usage_size;
+       struct amdgpu_bo        *fw_vram_usage_reserved_bo;
+       void            *fw_vram_usage_va;
  };
  
  struct amdgpu_copy_mem {
 
                struct device_attribute *attr, char *buf)
  {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 +      struct ttm_resource_manager *man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
+ 
        return snprintf(buf, PAGE_SIZE, "%llu\n",
 -              amdgpu_vram_mgr_usage(&adev->mman.bdev.man[TTM_PL_VRAM]));
 +                      amdgpu_vram_mgr_usage(man));
  }
  
  /**
                struct device_attribute *attr, char *buf)
  {
        struct drm_device *ddev = dev_get_drvdata(dev);
-       struct amdgpu_device *adev = ddev->dev_private;
+       struct amdgpu_device *adev = drm_to_adev(ddev);
 +      struct ttm_resource_manager *man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
+ 
        return snprintf(buf, PAGE_SIZE, "%llu\n",
 -              amdgpu_vram_mgr_vis_usage(&adev->mman.bdev.man[TTM_PL_VRAM]));
 +                      amdgpu_vram_mgr_vis_usage(man));
  }
  
  static ssize_t amdgpu_mem_info_vram_vendor(struct device *dev,
 
        struct dmcu *dmcu = NULL;
        bool ret = true;
  
 -      if (!adev->dm.fw_dmcu)
 +      if (!adev->dm.fw_dmcu && !adev->dm.dmub_fw)
-               return detect_mst_link_for_all_connectors(adev->ddev);
+               return detect_mst_link_for_all_connectors(adev_to_drm(adev));
  
        dmcu = adev->dm.dc->res_pool->dmcu;