Skip to content

Commit f72e21e

Browse files
committed
Merge tag 'amd-drm-next-6.15-2025-03-14' of https://gitlab.freedesktop.org/agd5f/linux into drm-next
amd-drm-next-6.15-2025-03-14: amdgpu: - GC 12.x DCC fixes - VCN 2.5 fix - Replay/PSR fixes - HPD fixes - DMUB fixes - Backlight fixes - DM suspend/resume cleanup - Misc DC fixes - HDCP UAF fix - Misc code cleanups - VCE 2.x fix - Wedged event support - GC 12.x PTE fixes - Misc multimedia cap fixes - Enable unique id support for GC 12.x - XGMI code cleanup - GC 11.x and 12.x MQD cleanups - SMU 13.x updates - SMU 14.x fan speed reporting - Enable VCN activity reporting for additional chips - SR-IOV fixes - RAS fixes - MES fixes amdkfd: - Dequeue wait count API cleanups - Queue eviction cleanup fixes - Retry fault fixes - Dequeue retry timeout adjustments - GC 12.x trap handler fixes - GC 9.5.x updates radeon: - VCE command parser fix Signed-off-by: Dave Airlie <airlied@redhat.com> From: Alex Deucher <alexander.deucher@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20250314170618.3142042-1-alexander.deucher@amd.com
2 parents 0f04462 + eb6cdfb commit f72e21e

File tree

109 files changed

+2315
-1853
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+2315
-1853
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ const struct kfd2kgd_calls aldebaran_kfd2kgd = {
189189
.set_address_watch = kgd_gfx_aldebaran_set_address_watch,
190190
.clear_address_watch = kgd_gfx_v9_clear_address_watch,
191191
.get_iq_wait_times = kgd_gfx_v9_get_iq_wait_times,
192-
.build_grace_period_packet_info = kgd_gfx_v9_build_grace_period_packet_info,
192+
.build_dequeue_wait_counts_packet_info = kgd_gfx_v9_build_dequeue_wait_counts_packet_info,
193193
.program_trap_handler_settings = kgd_gfx_v9_program_trap_handler_settings,
194194
.hqd_get_pq_addr = kgd_gfx_v9_hqd_get_pq_addr,
195195
.hqd_reset = kgd_gfx_v9_hqd_reset,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ const struct kfd2kgd_calls arcturus_kfd2kgd = {
415415
.set_address_watch = kgd_gfx_v9_set_address_watch,
416416
.clear_address_watch = kgd_gfx_v9_clear_address_watch,
417417
.get_iq_wait_times = kgd_gfx_v9_get_iq_wait_times,
418-
.build_grace_period_packet_info = kgd_gfx_v9_build_grace_period_packet_info,
418+
.build_dequeue_wait_counts_packet_info = kgd_gfx_v9_build_dequeue_wait_counts_packet_info,
419419
.get_cu_occupancy = kgd_gfx_v9_get_cu_occupancy,
420420
.program_trap_handler_settings = kgd_gfx_v9_program_trap_handler_settings,
421421
.hqd_get_pq_addr = kgd_gfx_v9_hqd_get_pq_addr,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -541,8 +541,8 @@ const struct kfd2kgd_calls gc_9_4_3_kfd2kgd = {
541541
.get_cu_occupancy = kgd_gfx_v9_get_cu_occupancy,
542542
.program_trap_handler_settings =
543543
kgd_gfx_v9_program_trap_handler_settings,
544-
.build_grace_period_packet_info =
545-
kgd_gfx_v9_build_grace_period_packet_info,
544+
.build_dequeue_wait_counts_packet_info =
545+
kgd_gfx_v9_build_dequeue_wait_counts_packet_info,
546546
.get_iq_wait_times = kgd_gfx_v9_get_iq_wait_times,
547547
.enable_debug_trap = kgd_aldebaran_enable_debug_trap,
548548
.disable_debug_trap = kgd_gfx_v9_4_3_disable_debug_trap,

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

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,25 +1021,25 @@ void kgd_gfx_v10_get_iq_wait_times(struct amdgpu_device *adev,
10211021
*wait_times = RREG32(SOC15_REG_OFFSET(GC, 0, mmCP_IQ_WAIT_TIME2));
10221022
}
10231023

1024-
void kgd_gfx_v10_build_grace_period_packet_info(struct amdgpu_device *adev,
1024+
void kgd_gfx_v10_build_dequeue_wait_counts_packet_info(struct amdgpu_device *adev,
10251025
uint32_t wait_times,
1026-
uint32_t grace_period,
1026+
uint32_t sch_wave,
1027+
uint32_t que_sleep,
10271028
uint32_t *reg_offset,
10281029
uint32_t *reg_data)
10291030
{
10301031
*reg_data = wait_times;
10311032

1032-
/*
1033-
* The CP cannont handle a 0 grace period input and will result in
1034-
* an infinite grace period being set so set to 1 to prevent this.
1035-
*/
1036-
if (grace_period == 0)
1037-
grace_period = 1;
1038-
1039-
*reg_data = REG_SET_FIELD(*reg_data,
1040-
CP_IQ_WAIT_TIME2,
1041-
SCH_WAVE,
1042-
grace_period);
1033+
if (sch_wave)
1034+
*reg_data = REG_SET_FIELD(*reg_data,
1035+
CP_IQ_WAIT_TIME2,
1036+
SCH_WAVE,
1037+
sch_wave);
1038+
if (que_sleep)
1039+
*reg_data = REG_SET_FIELD(*reg_data,
1040+
CP_IQ_WAIT_TIME2,
1041+
QUE_SLEEP,
1042+
que_sleep);
10431043

10441044
*reg_offset = SOC15_REG_OFFSET(GC, 0, mmCP_IQ_WAIT_TIME2);
10451045
}
@@ -1115,7 +1115,7 @@ const struct kfd2kgd_calls gfx_v10_kfd2kgd = {
11151115
.set_address_watch = kgd_gfx_v10_set_address_watch,
11161116
.clear_address_watch = kgd_gfx_v10_clear_address_watch,
11171117
.get_iq_wait_times = kgd_gfx_v10_get_iq_wait_times,
1118-
.build_grace_period_packet_info = kgd_gfx_v10_build_grace_period_packet_info,
1118+
.build_dequeue_wait_counts_packet_info = kgd_gfx_v10_build_dequeue_wait_counts_packet_info,
11191119
.program_trap_handler_settings = program_trap_handler_settings,
11201120
.hqd_get_pq_addr = kgd_gfx_v10_hqd_get_pq_addr,
11211121
.hqd_reset = kgd_gfx_v10_hqd_reset,

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,10 @@ uint32_t kgd_gfx_v10_clear_address_watch(struct amdgpu_device *adev,
5151
void kgd_gfx_v10_get_iq_wait_times(struct amdgpu_device *adev,
5252
uint32_t *wait_times,
5353
uint32_t inst);
54-
void kgd_gfx_v10_build_grace_period_packet_info(struct amdgpu_device *adev,
54+
void kgd_gfx_v10_build_dequeue_wait_counts_packet_info(struct amdgpu_device *adev,
5555
uint32_t wait_times,
56-
uint32_t grace_period,
56+
uint32_t sch_wave,
57+
uint32_t que_sleep,
5758
uint32_t *reg_offset,
5859
uint32_t *reg_data);
5960
uint64_t kgd_gfx_v10_hqd_get_pq_addr(struct amdgpu_device *adev,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ const struct kfd2kgd_calls gfx_v10_3_kfd2kgd = {
673673
.set_vm_context_page_table_base = set_vm_context_page_table_base_v10_3,
674674
.program_trap_handler_settings = program_trap_handler_settings_v10_3,
675675
.get_iq_wait_times = kgd_gfx_v10_get_iq_wait_times,
676-
.build_grace_period_packet_info = kgd_gfx_v10_build_grace_period_packet_info,
676+
.build_dequeue_wait_counts_packet_info = kgd_gfx_v10_build_dequeue_wait_counts_packet_info,
677677
.enable_debug_trap = kgd_gfx_v10_enable_debug_trap,
678678
.disable_debug_trap = kgd_gfx_v10_disable_debug_trap,
679679
.validate_trap_override_request = kgd_gfx_v10_validate_trap_override_request,

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

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,25 +1077,25 @@ void kgd_gfx_v9_get_cu_occupancy(struct amdgpu_device *adev,
10771077
adev->gfx.cu_info.max_waves_per_simd;
10781078
}
10791079

1080-
void kgd_gfx_v9_build_grace_period_packet_info(struct amdgpu_device *adev,
1080+
void kgd_gfx_v9_build_dequeue_wait_counts_packet_info(struct amdgpu_device *adev,
10811081
uint32_t wait_times,
1082-
uint32_t grace_period,
1082+
uint32_t sch_wave,
1083+
uint32_t que_sleep,
10831084
uint32_t *reg_offset,
10841085
uint32_t *reg_data)
10851086
{
10861087
*reg_data = wait_times;
10871088

1088-
/*
1089-
* The CP cannot handle a 0 grace period input and will result in
1090-
* an infinite grace period being set so set to 1 to prevent this.
1091-
*/
1092-
if (grace_period == 0)
1093-
grace_period = 1;
1094-
1095-
*reg_data = REG_SET_FIELD(*reg_data,
1096-
CP_IQ_WAIT_TIME2,
1097-
SCH_WAVE,
1098-
grace_period);
1089+
if (sch_wave)
1090+
*reg_data = REG_SET_FIELD(*reg_data,
1091+
CP_IQ_WAIT_TIME2,
1092+
SCH_WAVE,
1093+
sch_wave);
1094+
if (que_sleep)
1095+
*reg_data = REG_SET_FIELD(*reg_data,
1096+
CP_IQ_WAIT_TIME2,
1097+
QUE_SLEEP,
1098+
que_sleep);
10991099

11001100
*reg_offset = SOC15_REG_OFFSET(GC, 0, mmCP_IQ_WAIT_TIME2);
11011101
}
@@ -1255,7 +1255,7 @@ const struct kfd2kgd_calls gfx_v9_kfd2kgd = {
12551255
.set_address_watch = kgd_gfx_v9_set_address_watch,
12561256
.clear_address_watch = kgd_gfx_v9_clear_address_watch,
12571257
.get_iq_wait_times = kgd_gfx_v9_get_iq_wait_times,
1258-
.build_grace_period_packet_info = kgd_gfx_v9_build_grace_period_packet_info,
1258+
.build_dequeue_wait_counts_packet_info = kgd_gfx_v9_build_dequeue_wait_counts_packet_info,
12591259
.get_cu_occupancy = kgd_gfx_v9_get_cu_occupancy,
12601260
.program_trap_handler_settings = kgd_gfx_v9_program_trap_handler_settings,
12611261
.hqd_get_pq_addr = kgd_gfx_v9_hqd_get_pq_addr,

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,10 @@ uint32_t kgd_gfx_v9_clear_address_watch(struct amdgpu_device *adev,
9797
void kgd_gfx_v9_get_iq_wait_times(struct amdgpu_device *adev,
9898
uint32_t *wait_times,
9999
uint32_t inst);
100-
void kgd_gfx_v9_build_grace_period_packet_info(struct amdgpu_device *adev,
100+
void kgd_gfx_v9_build_dequeue_wait_counts_packet_info(struct amdgpu_device *adev,
101101
uint32_t wait_times,
102-
uint32_t grace_period,
102+
uint32_t sch_wave,
103+
uint32_t que_sleep,
103104
uint32_t *reg_offset,
104105
uint32_t *reg_data);
105106
uint64_t kgd_gfx_v9_hqd_get_pq_addr(struct amdgpu_device *adev,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1990,7 +1990,7 @@ static int amdgpu_debugfs_sclk_set(void *data, u64 val)
19901990
uint32_t max_freq, min_freq;
19911991
struct amdgpu_device *adev = (struct amdgpu_device *)data;
19921992

1993-
if (amdgpu_sriov_vf(adev) && !amdgpu_sriov_is_pp_one_vf(adev))
1993+
if (amdgpu_sriov_multi_vf_mode(adev))
19941994
return -EINVAL;
19951995

19961996
ret = pm_runtime_get_sync(adev_to_drm(adev)->dev);

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2757,6 +2757,9 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
27572757
if (!total)
27582758
return -ENODEV;
27592759

2760+
if (adev->gmc.xgmi.supported)
2761+
amdgpu_xgmi_early_init(adev);
2762+
27602763
ip_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_GFX);
27612764
if (ip_block->status.valid != false)
27622765
amdgpu_amdkfd_device_probe(adev);

0 commit comments

Comments
 (0)