Skip to content

Commit 28d31e1

Browse files
committed
Merge tag 'amd-drm-fixes-6.2-2023-01-11' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes
amd-drm-fixes-6.2-2023-01-11: amdgpu: - SMU13 fan speed fix - SMU13 fix power cap handling - SMU13 BACO fix - Fix a possible segfault in bo validation error case - Delay removal of firmware framebuffer - Fix error when unloading amdkfd: - SVM fix when clearing vram - GC11 fix for multi-GPU Signed-off-by: Dave Airlie <[email protected]> From: Alex Deucher <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents a283773 + a6941f8 commit 28d31e1

File tree

10 files changed

+31
-13
lines changed

10 files changed

+31
-13
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2099,7 +2099,7 @@ int amdgpu_amdkfd_map_gtt_bo_to_gart(struct amdgpu_device *adev, struct amdgpu_b
20992099
}
21002100

21012101
amdgpu_amdkfd_remove_eviction_fence(
2102-
bo, bo->kfd_bo->process_info->eviction_fence);
2102+
bo, bo->vm_bo->vm->process_info->eviction_fence);
21032103

21042104
amdgpu_bo_unreserve(bo);
21052105

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include <generated/utsrelease.h>
3737
#include <linux/pci-p2pdma.h>
3838

39+
#include <drm/drm_aperture.h>
3940
#include <drm/drm_atomic_helper.h>
4041
#include <drm/drm_fb_helper.h>
4142
#include <drm/drm_probe_helper.h>
@@ -90,6 +91,8 @@ MODULE_FIRMWARE("amdgpu/navi12_gpu_info.bin");
9091
#define AMDGPU_MAX_RETRY_LIMIT 2
9192
#define AMDGPU_RETRY_SRIOV_RESET(r) ((r) == -EBUSY || (r) == -ETIMEDOUT || (r) == -EINVAL)
9293

94+
static const struct drm_driver amdgpu_kms_driver;
95+
9396
const char *amdgpu_asic_name[] = {
9497
"TAHITI",
9598
"PITCAIRN",
@@ -3687,6 +3690,11 @@ int amdgpu_device_init(struct amdgpu_device *adev,
36873690
if (r)
36883691
return r;
36893692

3693+
/* Get rid of things like offb */
3694+
r = drm_aperture_remove_conflicting_pci_framebuffers(adev->pdev, &amdgpu_kms_driver);
3695+
if (r)
3696+
return r;
3697+
36903698
/* Enable TMZ based on IP_VERSION */
36913699
amdgpu_gmc_tmz_set(adev);
36923700

drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
*/
2424

2525
#include <drm/amdgpu_drm.h>
26-
#include <drm/drm_aperture.h>
2726
#include <drm/drm_drv.h>
2827
#include <drm/drm_fbdev_generic.h>
2928
#include <drm/drm_gem.h>
@@ -2122,11 +2121,6 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
21222121
}
21232122
#endif
21242123

2125-
/* Get rid of things like offb */
2126-
ret = drm_aperture_remove_conflicting_pci_framebuffers(pdev, &amdgpu_kms_driver);
2127-
if (ret)
2128-
return ret;
2129-
21302124
adev = devm_drm_dev_alloc(&pdev->dev, &amdgpu_kms_driver, typeof(*adev), ddev);
21312125
if (IS_ERR(adev))
21322126
return PTR_ERR(adev);

drivers/gpu/drm/amd/amdgpu/amdgpu_object.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -470,8 +470,9 @@ static bool amdgpu_bo_validate_size(struct amdgpu_device *adev,
470470
return true;
471471

472472
fail:
473-
DRM_DEBUG("BO size %lu > total memory in domain: %llu\n", size,
474-
man->size);
473+
if (man)
474+
DRM_DEBUG("BO size %lu > total memory in domain: %llu\n", size,
475+
man->size);
475476
return false;
476477
}
477478

drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -882,7 +882,7 @@ void amdgpu_vram_mgr_fini(struct amdgpu_device *adev)
882882
kfree(rsv);
883883

884884
list_for_each_entry_safe(rsv, temp, &mgr->reserved_pages, blocks) {
885-
drm_buddy_free_list(&mgr->mm, &rsv->blocks);
885+
drm_buddy_free_list(&mgr->mm, &rsv->allocated);
886886
kfree(rsv);
887887
}
888888
drm_buddy_fini(&mgr->mm);

drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ static int add_queue_mes(struct device_queue_manager *dqm, struct queue *q,
200200
queue_input.wptr_addr = (uint64_t)q->properties.write_ptr;
201201

202202
if (q->wptr_bo) {
203-
wptr_addr_off = (uint64_t)q->properties.write_ptr - (uint64_t)q->wptr_bo->kfd_bo->va;
203+
wptr_addr_off = (uint64_t)q->properties.write_ptr & (PAGE_SIZE - 1);
204204
queue_input.wptr_mc_addr = ((uint64_t)q->wptr_bo->tbo.resource->start << PAGE_SHIFT) + wptr_addr_off;
205205
}
206206

drivers/gpu/drm/amd/amdkfd/kfd_svm.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,15 @@ svm_range_vram_node_new(struct amdgpu_device *adev, struct svm_range *prange,
570570
goto reserve_bo_failed;
571571
}
572572

573+
if (clear) {
574+
r = amdgpu_bo_sync_wait(bo, AMDGPU_FENCE_OWNER_KFD, false);
575+
if (r) {
576+
pr_debug("failed %d to sync bo\n", r);
577+
amdgpu_bo_unreserve(bo);
578+
goto reserve_bo_failed;
579+
}
580+
}
581+
573582
r = dma_resv_reserve_fences(bo->tbo.base.resv, 1);
574583
if (r) {
575584
pr_debug("failed %d to reserve bo\n", r);

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1261,7 +1261,8 @@ int smu_v13_0_set_fan_speed_rpm(struct smu_context *smu,
12611261
uint32_t speed)
12621262
{
12631263
struct amdgpu_device *adev = smu->adev;
1264-
uint32_t tach_period, crystal_clock_freq;
1264+
uint32_t crystal_clock_freq = 2500;
1265+
uint32_t tach_period;
12651266
int ret;
12661267

12671268
if (!speed)
@@ -1271,7 +1272,6 @@ int smu_v13_0_set_fan_speed_rpm(struct smu_context *smu,
12711272
if (ret)
12721273
return ret;
12731274

1274-
crystal_clock_freq = amdgpu_asic_get_xclk(adev);
12751275
tach_period = 60 * crystal_clock_freq * 10000 / (8 * speed);
12761276
WREG32_SOC15(THM, 0, regCG_TACH_CTRL,
12771277
REG_SET_FIELD(RREG32_SOC15(THM, 0, regCG_TACH_CTRL),
@@ -2298,6 +2298,10 @@ bool smu_v13_0_baco_is_support(struct smu_context *smu)
22982298
!smu_baco->platform_support)
22992299
return false;
23002300

2301+
/* return true if ASIC is in BACO state already */
2302+
if (smu_v13_0_baco_get_state(smu) == SMU_BACO_STATE_ENTER)
2303+
return true;
2304+
23012305
if (smu_cmn_feature_is_supported(smu, SMU_FEATURE_BACO_BIT) &&
23022306
!smu_cmn_feature_is_enabled(smu, SMU_FEATURE_BACO_BIT))
23032307
return false;

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ static struct cmn2asic_mapping smu_v13_0_0_feature_mask_map[SMU_FEATURE_COUNT] =
213213
FEA_MAP(SOC_PCC),
214214
[SMU_FEATURE_DPM_VCLK_BIT] = {1, FEATURE_MM_DPM_BIT},
215215
[SMU_FEATURE_DPM_DCLK_BIT] = {1, FEATURE_MM_DPM_BIT},
216+
[SMU_FEATURE_PPT_BIT] = {1, FEATURE_THROTTLERS_BIT},
216217
};
217218

218219
static struct cmn2asic_mapping smu_v13_0_0_table_map[SMU_TABLE_COUNT] = {

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ static struct cmn2asic_mapping smu_v13_0_7_feature_mask_map[SMU_FEATURE_COUNT] =
192192
FEA_MAP(SOC_PCC),
193193
[SMU_FEATURE_DPM_VCLK_BIT] = {1, FEATURE_MM_DPM_BIT},
194194
[SMU_FEATURE_DPM_DCLK_BIT] = {1, FEATURE_MM_DPM_BIT},
195+
[SMU_FEATURE_PPT_BIT] = {1, FEATURE_THROTTLERS_BIT},
195196
};
196197

197198
static struct cmn2asic_mapping smu_v13_0_7_table_map[SMU_TABLE_COUNT] = {

0 commit comments

Comments
 (0)