Skip to content

Commit 7654481

Browse files
committed
Merge tag 'drm-fixes-2025-02-28' of https://gitlab.freedesktop.org/drm/kernel
Pull drm fixes from Dave Airlie: "This week's fixes pull, amdgpu mostly, with some xe and a few misc others, the fb defio fix is bit of a change, but it avoids some nasty NULL pointer crashes due to defio assuming page backing in places it didn't have pages. amdgpu: - Legacy dpm suspend/resume fix - Runtime PM fix for DELL G5 SE - MAINTAINERS updates - Enforce Isolation fixes - mailmap update - EDID reading i2c fix - PSR fix - eDP fix - HPD interrupt handling fix - Clear memory fix amdkfd: - MQD handling fix vkms: - fix rounding error imagination: - header fix nouveau: - connector status fix fb/defio: - NULL ptr fix for defio drivers i915: - Fix encoder HW state readout for DP UHBR MST xe: - OA uapi fix (Umesh) - Userptr related fixes - Remove a duplicated register entry - Scheduler related fix to prevent exec races when freeing it" * tag 'drm-fixes-2025-02-28' of https://gitlab.freedesktop.org/drm/kernel: (25 commits) drm/fbdev-dma: Add shadow buffering for deferred I/O drm/nouveau: Do not override forced connector status drm/i915/dp_mst: Fix encoder HW state readout for UHBR MST drm/xe: cancel pending job timer before freeing scheduler drm/xe/regs: remove a duplicate definition for RING_CTL_SIZE(size) drm/imagination: remove unnecessary header include path drm/amdgpu: init return value in amdgpu_ttm_clear_buffer drm/amd/display: Fix HPD after gpu reset drm/amd/display: add a quirk to enable eDP0 on DP1 drm/amd/display: Disable PSR-SU on eDP panels MAINTAINERS: Update AMDGPU DML maintainers info drm/amd/display: restore edid reading from a given i2c adapter mailmap: Add entry for Rodrigo Siqueira MAINTAINERS: Change my role from Maintainer to Reviewer drm/amdgpu/mes: keep enforce isolation up to date drm/amdgpu/gfx: only call mes for enforce isolation if supported MAINTAINERS: update amdgpu maintainers list drm/amdgpu: disable BAR resize on Dell G5 SE drm/amdkfd: Preserve cp_hqd_pq_control on update_mqd amdgpu/pm/legacy: fix suspend/resume issues ...
2 parents 1e15510 + 6a5884f commit 7654481

28 files changed

+407
-124
lines changed

.mailmap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,7 @@ Nadav Amit <[email protected]> <[email protected]>
522522
Nadia Yvette Chambers <[email protected]> William Lee Irwin III <[email protected]>
523523
524524
525+
525526
526527
527528
@@ -613,6 +614,8 @@ Richard Leitner <[email protected]> <[email protected]>
613614
614615
615616
617+
618+
616619
617620
618621

MAINTAINERS

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,14 +1046,14 @@ F: drivers/crypto/ccp/hsti.*
10461046
AMD DISPLAY CORE
10471047
M: Harry Wentland <[email protected]>
10481048
M: Leo Li <[email protected]>
1049-
M: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
1049+
R: Rodrigo Siqueira <siqueira@igalia.com>
10501050
10511051
S: Supported
10521052
T: git https://gitlab.freedesktop.org/agd5f/linux.git
10531053
F: drivers/gpu/drm/amd/display/
10541054

10551055
AMD DISPLAY CORE - DML
1056-
M: Chaitanya Dhere <chaitanya.dhere@amd.com>
1056+
M: Austin Zheng <austin.zheng@amd.com>
10571057
M: Jun Lei <[email protected]>
10581058
S: Supported
10591059
F: drivers/gpu/drm/amd/display/dc/dml/
@@ -5926,6 +5926,17 @@ F: tools/testing/selftests/cgroup/test_cpuset.c
59265926
F: tools/testing/selftests/cgroup/test_cpuset_prs.sh
59275927
F: tools/testing/selftests/cgroup/test_cpuset_v1_base.sh
59285928

5929+
CONTROL GROUP - DEVICE MEMORY CONTROLLER (DMEM)
5930+
M: Maarten Lankhorst <[email protected]>
5931+
M: Maxime Ripard <[email protected]>
5932+
M: Natalie Vock <[email protected]>
5933+
5934+
5935+
S: Maintained
5936+
T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
5937+
F: include/linux/cgroup_dmem.h
5938+
F: kernel/cgroup/dmem.c
5939+
59295940
CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
59305941
M: Johannes Weiner <[email protected]>
59315942
M: Michal Hocko <[email protected]>
@@ -19655,7 +19666,6 @@ F: drivers/net/wireless/quantenna
1965519666
RADEON and AMDGPU DRM DRIVERS
1965619667
M: Alex Deucher <[email protected]>
1965719668
M: Christian König <[email protected]>
19658-
M: Xinhui Pan <[email protected]>
1965919669
1966019670
S: Supported
1966119671
B: https://gitlab.freedesktop.org/drm/amd/-/issues

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,6 +1638,13 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev)
16381638
if (amdgpu_sriov_vf(adev))
16391639
return 0;
16401640

1641+
/* resizing on Dell G5 SE platforms causes problems with runtime pm */
1642+
if ((amdgpu_runtime_pm != 0) &&
1643+
adev->pdev->vendor == PCI_VENDOR_ID_ATI &&
1644+
adev->pdev->device == 0x731f &&
1645+
adev->pdev->subsystem_vendor == PCI_VENDOR_ID_DELL)
1646+
return 0;
1647+
16411648
/* PCI_EXT_CAP_ID_VNDR extended capability is located at 0x100 */
16421649
if (!pci_find_ext_capability(adev->pdev, PCI_EXT_CAP_ID_VNDR))
16431650
DRM_WARN("System can't access extended configuration space, please check!!\n");

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,22 +1638,19 @@ static ssize_t amdgpu_gfx_set_enforce_isolation(struct device *dev,
16381638
}
16391639

16401640
mutex_lock(&adev->enforce_isolation_mutex);
1641-
16421641
for (i = 0; i < num_partitions; i++) {
1643-
if (adev->enforce_isolation[i] && !partition_values[i]) {
1642+
if (adev->enforce_isolation[i] && !partition_values[i])
16441643
/* Going from enabled to disabled */
16451644
amdgpu_vmid_free_reserved(adev, AMDGPU_GFXHUB(i));
1646-
amdgpu_mes_set_enforce_isolation(adev, i, false);
1647-
} else if (!adev->enforce_isolation[i] && partition_values[i]) {
1645+
else if (!adev->enforce_isolation[i] && partition_values[i])
16481646
/* Going from disabled to enabled */
16491647
amdgpu_vmid_alloc_reserved(adev, AMDGPU_GFXHUB(i));
1650-
amdgpu_mes_set_enforce_isolation(adev, i, true);
1651-
}
16521648
adev->enforce_isolation[i] = partition_values[i];
16531649
}
1654-
16551650
mutex_unlock(&adev->enforce_isolation_mutex);
16561651

1652+
amdgpu_mes_update_enforce_isolation(adev);
1653+
16571654
return count;
16581655
}
16591656

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1681,7 +1681,8 @@ bool amdgpu_mes_suspend_resume_all_supported(struct amdgpu_device *adev)
16811681
}
16821682

16831683
/* Fix me -- node_id is used to identify the correct MES instances in the future */
1684-
int amdgpu_mes_set_enforce_isolation(struct amdgpu_device *adev, uint32_t node_id, bool enable)
1684+
static int amdgpu_mes_set_enforce_isolation(struct amdgpu_device *adev,
1685+
uint32_t node_id, bool enable)
16851686
{
16861687
struct mes_misc_op_input op_input = {0};
16871688
int r;
@@ -1703,6 +1704,23 @@ int amdgpu_mes_set_enforce_isolation(struct amdgpu_device *adev, uint32_t node_i
17031704
return r;
17041705
}
17051706

1707+
int amdgpu_mes_update_enforce_isolation(struct amdgpu_device *adev)
1708+
{
1709+
int i, r = 0;
1710+
1711+
if (adev->enable_mes && adev->gfx.enable_cleaner_shader) {
1712+
mutex_lock(&adev->enforce_isolation_mutex);
1713+
for (i = 0; i < (adev->xcp_mgr ? adev->xcp_mgr->num_xcps : 1); i++) {
1714+
if (adev->enforce_isolation[i])
1715+
r |= amdgpu_mes_set_enforce_isolation(adev, i, true);
1716+
else
1717+
r |= amdgpu_mes_set_enforce_isolation(adev, i, false);
1718+
}
1719+
mutex_unlock(&adev->enforce_isolation_mutex);
1720+
}
1721+
return r;
1722+
}
1723+
17061724
#if defined(CONFIG_DEBUG_FS)
17071725

17081726
static int amdgpu_debugfs_mes_event_log_show(struct seq_file *m, void *unused)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,6 @@ static inline void amdgpu_mes_unlock(struct amdgpu_mes *mes)
534534

535535
bool amdgpu_mes_suspend_resume_all_supported(struct amdgpu_device *adev);
536536

537-
int amdgpu_mes_set_enforce_isolation(struct amdgpu_device *adev, uint32_t node_id, bool enable);
537+
int amdgpu_mes_update_enforce_isolation(struct amdgpu_device *adev);
538538

539539
#endif /* __AMDGPU_MES_H__ */

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2281,7 +2281,7 @@ int amdgpu_ttm_clear_buffer(struct amdgpu_bo *bo,
22812281
struct amdgpu_ring *ring = adev->mman.buffer_funcs_ring;
22822282
struct amdgpu_res_cursor cursor;
22832283
u64 addr;
2284-
int r;
2284+
int r = 0;
22852285

22862286
if (!adev->mman.buffer_funcs_enabled)
22872287
return -EINVAL;

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1633,6 +1633,10 @@ static int mes_v11_0_hw_init(struct amdgpu_ip_block *ip_block)
16331633
goto failure;
16341634
}
16351635

1636+
r = amdgpu_mes_update_enforce_isolation(adev);
1637+
if (r)
1638+
goto failure;
1639+
16361640
out:
16371641
/*
16381642
* Disable KIQ ring usage from the driver once MES is enabled.

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1743,6 +1743,10 @@ static int mes_v12_0_hw_init(struct amdgpu_ip_block *ip_block)
17431743
goto failure;
17441744
}
17451745

1746+
r = amdgpu_mes_update_enforce_isolation(adev);
1747+
if (r)
1748+
goto failure;
1749+
17461750
out:
17471751
/*
17481752
* Disable KIQ ring usage from the driver once MES is enabled.

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ static void init_mqd(struct mqd_manager *mm, void **mqd,
107107
m->cp_hqd_persistent_state = CP_HQD_PERSISTENT_STATE__PRELOAD_REQ_MASK |
108108
0x53 << CP_HQD_PERSISTENT_STATE__PRELOAD_SIZE__SHIFT;
109109

110+
m->cp_hqd_pq_control = 5 << CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT;
111+
m->cp_hqd_pq_control |= CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK;
110112
m->cp_mqd_control = 1 << CP_MQD_CONTROL__PRIV_STATE__SHIFT;
111113

112114
m->cp_mqd_base_addr_lo = lower_32_bits(addr);
@@ -167,10 +169,10 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,
167169

168170
m = get_mqd(mqd);
169171

170-
m->cp_hqd_pq_control = 5 << CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT;
172+
m->cp_hqd_pq_control &= ~CP_HQD_PQ_CONTROL__QUEUE_SIZE_MASK;
171173
m->cp_hqd_pq_control |=
172174
ffs(q->queue_size / sizeof(unsigned int)) - 1 - 1;
173-
m->cp_hqd_pq_control |= CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK;
175+
174176
pr_debug("cp_hqd_pq_control 0x%x\n", m->cp_hqd_pq_control);
175177

176178
m->cp_hqd_pq_base_lo = lower_32_bits((uint64_t)q->queue_address >> 8);

0 commit comments

Comments
 (0)