]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
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

index 4204cda680f5668d6d0c284e285e5852c3b17c22,6dcc256b9ebcef8fbb017e5a1d42abedd50b366b..f7307af76452171e79b24d862ee2b68597594230
@@@ -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;
  
index 697bc2c6fdb29954d92c3a4d9e7d64d77d3385b2,ba3027c1d7a7d2dcd3d0679cb62055f78f106327..2b1b7c136343d1e80710f24d7574d1d0510b81e3
@@@ -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,
index fc5f7ac53d0abce4eb56cb778e964209607d7454,798985b9468514187913e9bcef8e020e1313afbf..371bc099fda2e4c68e844736c4f3351ac7e931e9
@@@ -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);
index 7ba2be37e6ba5341e3edf6d3702406e7997457ef,de37ceff0e56b0851bb4bb586b88160751d6dd23..68c5e3662b871065489ea9854088492c6432d8db
@@@ -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 {
index a4154e203e788f2df834cd33e9a7dbc902917497,543f3d28be17132bd9e04de3e6f149664ac714f4..b2adc2abc581053ef90af2be0cfe1d086d966f72
@@@ -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
index 490684787cffd4860fec7bc54779b503160285f0,b91ae0feda27511b3712da34a4fa257d8c2e5fa8..ec29376667df2a578eb88a83c6718014c419f63d
@@@ -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