Merge tag 'amd-drm-next-5.10-2020-09-03' of git://people.freedesktop.org/~agd5f/linux...
authorDave Airlie <airlied@redhat.com>
Tue, 8 Sep 2020 06:40:13 +0000 (16:40 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 8 Sep 2020 06:40:13 +0000 (16:40 +1000)
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
24 files changed:
1  2 
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10_3.c
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
drivers/gpu/drm/amd/amdgpu/atombios_dp.c
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
drivers/gpu/drm/amd/pm/powerplay/si_dpm.c
drivers/gpu/drm/scheduler/sched_main.c
include/drm/gpu_scheduler.h

@@@ -2574,10 -2609,7 +2609,7 @@@ static int amdgpu_device_ip_reinit_earl
                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;
  
@@@ -46,10 -47,10 +46,11 @@@ static ssize_t amdgpu_mem_info_gtt_tota
                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);
  }
  
  /**
@@@ -64,10 -65,10 +65,11 @@@ static ssize_t amdgpu_mem_info_gtt_used
                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,
@@@ -2251,8 -2315,8 +2261,8 @@@ static int amdgpu_mm_dump_table(struct 
        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);
@@@ -75,8 -60,22 +75,25 @@@ struct amdgpu_mman 
        /* 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 {
@@@ -84,10 -81,10 +84,11 @@@ static ssize_t amdgpu_mem_info_vram_use
                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));
  }
  
  /**
@@@ -102,10 -99,10 +103,11 @@@ static ssize_t amdgpu_mem_info_vis_vram
                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,
Simple merge
Simple merge
@@@ -1419,8 -1389,8 +1425,8 @@@ static int dm_late_init(void *handle
        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;
  
Simple merge