Skip to content

Commit f67d54e

Browse files
committed
Merge tag 'amd-drm-next-6.19-2025-10-29' of https://gitlab.freedesktop.org/agd5f/linux into drm-next
amd-drm-next-6.19-2025-10-29: amdgpu: - VPE idle handler fix - Re-enable DM idle optimizations - DCN3.0 fix - SMU fix - Powerplay fixes for fiji/iceland - License copy-pasta fixes - HDP eDP panel fix - Vblank fix - RAS fixes - SR-IOV updates - SMU 13 VCN reset fix - DMUB fixes - DC frame limit fix - Additional DC underflow logging - DCN 3.1.5 fixes - DC Analog encoders support - Enable DC on bonaire by default - UserQ fixes - Remove redundant pm_runtime_mark_last_busy() calls amdkfd: - Process cleanup fix - Misc fixes radeon: - devm migration fixes - Remove redundant pm_runtime_mark_last_busy() calls UAPI - Add ABM KMS property Proposed kwin changes: https://invent.kde.org/plasma/kwin/-/merge_requests/6028 Signed-off-by: Simona Vetter <simona.vetter@ffwll.ch> From: Alex Deucher <alexander.deucher@amd.com> Link: https://patch.msgid.link/20251029205713.9480-1-alexander.deucher@amd.com
2 parents dc1af50 + 1bc9d39 commit f67d54e

256 files changed

Lines changed: 3549 additions & 892 deletions

File tree

Some content is hidden

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

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1176,6 +1176,12 @@ struct amdgpu_device {
11761176
* queue fence.
11771177
*/
11781178
struct xarray userq_xa;
1179+
/**
1180+
* @userq_doorbell_xa: Global user queue map (doorbell index → queue)
1181+
* Key: doorbell_index (unique global identifier for the queue)
1182+
* Value: struct amdgpu_usermode_queue
1183+
*/
1184+
struct xarray userq_doorbell_xa;
11791185

11801186
/* df */
11811187
struct amdgpu_df df;
@@ -1309,8 +1315,6 @@ struct amdgpu_device {
13091315
*/
13101316
bool apu_prefer_gtt;
13111317

1312-
struct list_head userq_mgr_list;
1313-
struct mutex userq_mutex;
13141318
bool userq_halt_for_enforce_isolation;
13151319
struct amdgpu_uid *uid_info;
13161320

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,6 @@ static int amdgpu_atif_handler(struct amdgpu_device *adev,
507507
pm_runtime_get_sync(adev_to_drm(adev)->dev);
508508
/* Just fire off a uevent and let userspace tell us what to do */
509509
drm_helper_hpd_irq_event(adev_to_drm(adev));
510-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
511510
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
512511
}
513512
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ static bool amdgpu_read_bios_from_vram(struct amdgpu_device *adev)
103103
{
104104
uint8_t __iomem *bios = NULL;
105105
resource_size_t vram_base;
106-
resource_size_t size = 256 * 1024; /* ??? */
106+
u32 size = 256U * 1024U; /* ??? */
107107

108108
if (!(adev->flags & AMD_IS_APU))
109109
if (amdgpu_device_need_post(adev))
@@ -126,7 +126,7 @@ static bool amdgpu_read_bios_from_vram(struct amdgpu_device *adev)
126126
*/
127127
if (amdgpu_sriov_vf(adev) && adev->virt.is_dynamic_crit_regn_enabled) {
128128
if (amdgpu_virt_get_dynamic_data_info(adev,
129-
AMD_SRIOV_MSG_VBIOS_IMG_TABLE_ID, adev->bios, (uint64_t *)&size)) {
129+
AMD_SRIOV_MSG_VBIOS_IMG_TABLE_ID, adev->bios, &size)) {
130130
amdgpu_bios_release(adev);
131131
return false;
132132
}

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

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -734,10 +734,8 @@ amdgpu_connector_lvds_detect(struct drm_connector *connector, bool force)
734734

735735
amdgpu_connector_update_scratch_regs(connector, ret);
736736

737-
if (!drm_kms_helper_is_poll_worker()) {
738-
pm_runtime_mark_last_busy(connector->dev->dev);
737+
if (!drm_kms_helper_is_poll_worker())
739738
pm_runtime_put_autosuspend(connector->dev->dev);
740-
}
741739

742740
return ret;
743741
}
@@ -919,10 +917,8 @@ amdgpu_connector_vga_detect(struct drm_connector *connector, bool force)
919917
amdgpu_connector_update_scratch_regs(connector, ret);
920918

921919
out:
922-
if (!drm_kms_helper_is_poll_worker()) {
923-
pm_runtime_mark_last_busy(connector->dev->dev);
920+
if (!drm_kms_helper_is_poll_worker())
924921
pm_runtime_put_autosuspend(connector->dev->dev);
925-
}
926922

927923
return ret;
928924
}
@@ -1146,10 +1142,8 @@ amdgpu_connector_dvi_detect(struct drm_connector *connector, bool force)
11461142
amdgpu_connector_update_scratch_regs(connector, ret);
11471143

11481144
exit:
1149-
if (!drm_kms_helper_is_poll_worker()) {
1150-
pm_runtime_mark_last_busy(connector->dev->dev);
1145+
if (!drm_kms_helper_is_poll_worker())
11511146
pm_runtime_put_autosuspend(connector->dev->dev);
1152-
}
11531147

11541148
return ret;
11551149
}
@@ -1486,10 +1480,8 @@ amdgpu_connector_dp_detect(struct drm_connector *connector, bool force)
14861480

14871481
amdgpu_connector_update_scratch_regs(connector, ret);
14881482
out:
1489-
if (!drm_kms_helper_is_poll_worker()) {
1490-
pm_runtime_mark_last_busy(connector->dev->dev);
1483+
if (!drm_kms_helper_is_poll_worker())
14911484
pm_runtime_put_autosuspend(connector->dev->dev);
1492-
}
14931485

14941486
if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
14951487
connector->connector_type == DRM_MODE_CONNECTOR_eDP)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// SPDX-License-Identifier: GPL-2.0
1+
// SPDX-License-Identifier: MIT
22
/*
33
* Copyright 2025 Advanced Micro Devices, Inc.
44
*

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* SPDX-License-Identifier: GPL-2.0 */
1+
/* SPDX-License-Identifier: MIT */
22
/*
33
* Copyright 2025 Advanced Micro Devices, Inc.
44
*

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

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,6 @@ static int amdgpu_debugfs_process_reg_op(bool read, struct file *f,
129129
if (use_bank) {
130130
if ((sh_bank != 0xFFFFFFFF && sh_bank >= adev->gfx.config.max_sh_per_se) ||
131131
(se_bank != 0xFFFFFFFF && se_bank >= adev->gfx.config.max_shader_engines)) {
132-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
133132
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
134133
amdgpu_virt_disable_access_debugfs(adev);
135134
return -EINVAL;
@@ -179,7 +178,6 @@ static int amdgpu_debugfs_process_reg_op(bool read, struct file *f,
179178
if (pm_pg_lock)
180179
mutex_unlock(&adev->pm.mutex);
181180

182-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
183181
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
184182

185183
amdgpu_virt_disable_access_debugfs(adev);
@@ -255,7 +253,6 @@ static ssize_t amdgpu_debugfs_regs2_op(struct file *f, char __user *buf, u32 off
255253
if (rd->id.use_grbm) {
256254
if ((rd->id.grbm.sh != 0xFFFFFFFF && rd->id.grbm.sh >= adev->gfx.config.max_sh_per_se) ||
257255
(rd->id.grbm.se != 0xFFFFFFFF && rd->id.grbm.se >= adev->gfx.config.max_shader_engines)) {
258-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
259256
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
260257
amdgpu_virt_disable_access_debugfs(adev);
261258
mutex_unlock(&rd->lock);
@@ -310,7 +307,6 @@ static ssize_t amdgpu_debugfs_regs2_op(struct file *f, char __user *buf, u32 off
310307

311308
mutex_unlock(&rd->lock);
312309

313-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
314310
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
315311

316312
amdgpu_virt_disable_access_debugfs(adev);
@@ -446,7 +442,6 @@ static ssize_t amdgpu_debugfs_gprwave_read(struct file *f, char __user *buf, siz
446442
amdgpu_gfx_select_se_sh(adev, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, rd->id.xcc_id);
447443
mutex_unlock(&adev->grbm_idx_mutex);
448444

449-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
450445
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
451446

452447
if (!x) {
@@ -557,7 +552,6 @@ static ssize_t amdgpu_debugfs_regs_pcie_read(struct file *f, char __user *buf,
557552

558553
r = result;
559554
out:
560-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
561555
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
562556
amdgpu_virt_disable_access_debugfs(adev);
563557
return r;
@@ -617,7 +611,6 @@ static ssize_t amdgpu_debugfs_regs_pcie_write(struct file *f, const char __user
617611

618612
r = result;
619613
out:
620-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
621614
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
622615
amdgpu_virt_disable_access_debugfs(adev);
623616
return r;
@@ -676,7 +669,6 @@ static ssize_t amdgpu_debugfs_regs_didt_read(struct file *f, char __user *buf,
676669

677670
r = result;
678671
out:
679-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
680672
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
681673
amdgpu_virt_disable_access_debugfs(adev);
682674
return r;
@@ -736,7 +728,6 @@ static ssize_t amdgpu_debugfs_regs_didt_write(struct file *f, const char __user
736728

737729
r = result;
738730
out:
739-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
740731
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
741732
amdgpu_virt_disable_access_debugfs(adev);
742733
return r;
@@ -795,7 +786,6 @@ static ssize_t amdgpu_debugfs_regs_smc_read(struct file *f, char __user *buf,
795786

796787
r = result;
797788
out:
798-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
799789
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
800790
amdgpu_virt_disable_access_debugfs(adev);
801791
return r;
@@ -855,7 +845,6 @@ static ssize_t amdgpu_debugfs_regs_smc_write(struct file *f, const char __user *
855845

856846
r = result;
857847
out:
858-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
859848
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
860849
amdgpu_virt_disable_access_debugfs(adev);
861850
return r;
@@ -1003,7 +992,6 @@ static ssize_t amdgpu_debugfs_sensor_read(struct file *f, char __user *buf,
1003992

1004993
r = amdgpu_dpm_read_sensor(adev, idx, &values[0], &valuesize);
1005994

1006-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
1007995
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
1008996

1009997
if (r) {
@@ -1094,7 +1082,6 @@ static ssize_t amdgpu_debugfs_wave_read(struct file *f, char __user *buf,
10941082
amdgpu_gfx_select_se_sh(adev, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0);
10951083
mutex_unlock(&adev->grbm_idx_mutex);
10961084

1097-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
10981085
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
10991086

11001087
if (!x) {
@@ -1192,7 +1179,6 @@ static ssize_t amdgpu_debugfs_gpr_read(struct file *f, char __user *buf,
11921179
amdgpu_gfx_select_se_sh(adev, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0);
11931180
mutex_unlock(&adev->grbm_idx_mutex);
11941181

1195-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
11961182
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
11971183

11981184
while (size) {
@@ -1266,7 +1252,6 @@ static ssize_t amdgpu_debugfs_gfxoff_residency_read(struct file *f, char __user
12661252

12671253
r = result;
12681254
out:
1269-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
12701255
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
12711256

12721257
return r;
@@ -1315,7 +1300,6 @@ static ssize_t amdgpu_debugfs_gfxoff_residency_write(struct file *f, const char
13151300

13161301
r = result;
13171302
out:
1318-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
13191303
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
13201304

13211305
return r;
@@ -1365,7 +1349,6 @@ static ssize_t amdgpu_debugfs_gfxoff_count_read(struct file *f, char __user *buf
13651349

13661350
r = result;
13671351
out:
1368-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
13691352
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
13701353

13711354
return r;
@@ -1414,7 +1397,6 @@ static ssize_t amdgpu_debugfs_gfxoff_write(struct file *f, const char __user *bu
14141397

14151398
r = result;
14161399
out:
1417-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
14181400
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
14191401

14201402
return r;
@@ -1460,7 +1442,6 @@ static ssize_t amdgpu_debugfs_gfxoff_read(struct file *f, char __user *buf,
14601442

14611443
r = result;
14621444
out:
1463-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
14641445
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
14651446

14661447
return r;
@@ -1501,7 +1482,6 @@ static ssize_t amdgpu_debugfs_gfxoff_status_read(struct file *f, char __user *bu
15011482

15021483
r = result;
15031484
out:
1504-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
15051485
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
15061486

15071487
return r;
@@ -1701,7 +1681,6 @@ static int amdgpu_debugfs_test_ib_show(struct seq_file *m, void *unused)
17011681

17021682
up_write(&adev->reset_domain->sem);
17031683

1704-
pm_runtime_mark_last_busy(dev->dev);
17051684
pm_runtime_put_autosuspend(dev->dev);
17061685

17071686
return 0;
@@ -1721,7 +1700,6 @@ static int amdgpu_debugfs_evict_vram(void *data, u64 *val)
17211700

17221701
*val = amdgpu_ttm_evict_resources(adev, TTM_PL_VRAM);
17231702

1724-
pm_runtime_mark_last_busy(dev->dev);
17251703
pm_runtime_put_autosuspend(dev->dev);
17261704

17271705
return 0;
@@ -1742,7 +1720,6 @@ static int amdgpu_debugfs_evict_gtt(void *data, u64 *val)
17421720

17431721
*val = amdgpu_ttm_evict_resources(adev, TTM_PL_TT);
17441722

1745-
pm_runtime_mark_last_busy(dev->dev);
17461723
pm_runtime_put_autosuspend(dev->dev);
17471724

17481725
return 0;
@@ -1762,7 +1739,6 @@ static int amdgpu_debugfs_benchmark(void *data, u64 val)
17621739

17631740
r = amdgpu_benchmark(adev, val);
17641741

1765-
pm_runtime_mark_last_busy(dev->dev);
17661742
pm_runtime_put_autosuspend(dev->dev);
17671743

17681744
return r;
@@ -2014,7 +1990,6 @@ static int amdgpu_debugfs_sclk_set(void *data, u64 val)
20141990
ret = -EINVAL;
20151991

20161992
out:
2017-
pm_runtime_mark_last_busy(adev_to_drm(adev)->dev);
20181993
pm_runtime_put_autosuspend(adev_to_drm(adev)->dev);
20191994

20201995
return ret;

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4215,7 +4215,6 @@ bool amdgpu_device_asic_has_dc_support(struct pci_dev *pdev,
42154215
#else
42164216
return false;
42174217
#endif
4218-
case CHIP_BONAIRE:
42194218
case CHIP_KAVERI:
42204219
case CHIP_KABINI:
42214220
case CHIP_MULLINS:
@@ -4558,7 +4557,6 @@ int amdgpu_device_init(struct amdgpu_device *adev,
45584557
mutex_init(&adev->gfx.userq_sch_mutex);
45594558
mutex_init(&adev->gfx.workload_profile_mutex);
45604559
mutex_init(&adev->vcn.workload_profile_mutex);
4561-
mutex_init(&adev->userq_mutex);
45624560

45634561
amdgpu_device_init_apu_flags(adev);
45644562

@@ -4586,7 +4584,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
45864584

45874585
INIT_LIST_HEAD(&adev->pm.od_kobj_list);
45884586

4589-
INIT_LIST_HEAD(&adev->userq_mgr_list);
4587+
xa_init(&adev->userq_doorbell_xa);
45904588

45914589
INIT_DELAYED_WORK(&adev->delayed_init_work,
45924590
amdgpu_device_delayed_init_work_handler);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ static int amdgpu_discovery_read_binary_from_mem(struct amdgpu_device *adev,
311311
*/
312312
if (amdgpu_virt_get_dynamic_data_info(adev,
313313
AMD_SRIOV_MSG_IPD_TABLE_ID, binary,
314-
(uint64_t *)&adev->discovery.size)) {
314+
&adev->discovery.size)) {
315315
dev_err(adev->dev,
316316
"failed to read discovery info from dynamic critical region.");
317317
ret = -EINVAL;

0 commit comments

Comments
 (0)