Skip to content

Commit 4a5860e

Browse files
committed
Merge tag 'drm-fixes-2026-05-23' of https://gitlab.freedesktop.org/drm/kernel
Pull drm fixes from Dave Airlie: "Regular fixes pull, amdgpu/xe being the usual, with bonus msm content to bulk things out, otherwise it has the usual scattered changes, with amdxdna dropping a badly thought out userspace api. gem: - clean up LRU locking msm: - Core: - Fixed bindings for SM8650, SM8750 and Eliza - Don't use UTS_RELEASE directly - Fix typo in clock-names property - DPU: - Fixed CWB description on Kaanapali - Fixed scanline strides for YUV UBWC formats - Stopped DSI register dumping to access past the end of region - DSI: - Fix dumping unaligned regions - GPU: - Fix GMEM_BASE for a6xx gen3 - Fix userspace reachable crash on a2xx-a4xx - Fix sysprof_active for counter collection with IFPC enabled GPUs - Fix shrinker lockdep amdgpu: - Userq fixes - VPE fix - SMU 15 fix - Misc fixes - VCE fixes - DC bios parsing fixes - DC aux fix - Mode1 reset fix - RAS fixes amdkfd: - Misc fixes radeon: - CS parser fix xe: - SRIOV related fixes - Fix leak and double-free - Multi-cast register fixes - Multi-queue fix i915: - Fix joiner color pipeline selection [display] - Fix readback for target_rr in Adaptive Sync SDP [dp] - Apply Intel DPCD workaround when SDP on prior line used [psr] amdxdna: - remove mmap and export for ubuf bridge: - chipone-icn6211: managed bridge cleanup - lt66121: acquire reset GPIO - megachips: fix clean up on failed IRQ requests v3d: - fix UAF in error code paths - release GEM-object ref on free'd jobs virtio: - use uninterruptible resv locking in plane updates mediatek: - fix sparse warnings" * tag 'drm-fixes-2026-05-23' of https://gitlab.freedesktop.org/drm/kernel: (78 commits) drm/xe/oa: Fix exec_queue leak on width check in stream open drm/virtio: use uninterruptible resv lock for plane updates drm/amdgpu: fix handling in amdgpu_userq_create drm/radeon/evergreen_cs: Add missing NULL prefix check in surface check drm/amdgpu: userq_va_mapped should remain true once done drm/amdgpu: avoid integer overflow in VA range check drm/amd/ras: Fix UMC error address allocation leak drm/amdgpu: unmap all user mappings of framebuffer and doorbell before mode1 reset drm/amd/display: Validate payload length and link_index in dc_process_dmub_aux_transfer_async drm/amd/display: Validate GPIO pin LUT table size before iterating drm/amd/display: Fix integer overflow in bios_get_image() drm/amdkfd: Check bounds for allocate_sdma_queue restore_sdma_id drm/amdgpu: use atomic operation to achieve lockless serialization drm/amdkfd: Check bounds on allocate_doorbell drm/amdgpu/vce3: Fix VCE 3 firmware size and offsets drm/amdgpu/vce2: Fix VCE 2 firmware size and offsets drm/amdgpu/vce1: Stop using amdgpu_vce_resume drm/amdgpu/vce1: Fix VCE 1 firmware size and offsets drm/amdgpu/vce1: Don't repeat GTT MGR node allocation drm/amdgpu/vce1: Check if VRAM address is lower than GART. ...
2 parents 0e6582a + 84335a9 commit 4a5860e

85 files changed

Lines changed: 733 additions & 478 deletions

Some content is hidden

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

Documentation/devicetree/bindings/display/msm/dp-controller.yaml

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ allOf:
219219
- required:
220220
- "#sound-dai-cells"
221221
else:
222+
$ref: /schemas/sound/dai-common.yaml#
222223
properties:
223224
aux-bus: false
224225
required:
@@ -243,7 +244,7 @@ allOf:
243244
clocks:
244245
minItems: 5
245246
maxItems: 5
246-
clocks-names:
247+
clock-names:
247248
minItems: 5
248249
maxItems: 5
249250

@@ -264,7 +265,7 @@ allOf:
264265
clocks:
265266
minItems: 5
266267
maxItems: 6
267-
clocks-names:
268+
clock-names:
268269
minItems: 5
269270
maxItems: 6
270271

@@ -277,7 +278,6 @@ allOf:
277278
- qcom,sc8180x-dp
278279
- qcom,sdm845-dp
279280
- qcom,sm8350-dp
280-
- qcom,sm8650-dp
281281
then:
282282
properties:
283283
reg:
@@ -286,6 +286,24 @@ allOf:
286286
clocks:
287287
minItems: 6
288288
maxItems: 6
289+
clock-names:
290+
minItems: 6
291+
maxItems: 6
292+
293+
- if:
294+
properties:
295+
compatible:
296+
contains:
297+
enum:
298+
- qcom,sm8650-dp
299+
then:
300+
properties:
301+
reg:
302+
minItems: 5
303+
maxItems: 9
304+
clocks:
305+
minItems: 6
306+
maxItems: 6
289307
clocks-names:
290308
minItems: 6
291309
maxItems: 6
@@ -306,7 +324,7 @@ allOf:
306324
clocks:
307325
minItems: 6
308326
maxItems: 8
309-
clocks-names:
327+
clock-names:
310328
minItems: 6
311329
maxItems: 8
312330

@@ -326,7 +344,7 @@ allOf:
326344
clocks:
327345
minItems: 5
328346
maxItems: 6
329-
clocks-names:
347+
clock-names:
330348
minItems: 5
331349
maxItems: 6
332350

Documentation/devicetree/bindings/display/msm/qcom,eliza-mdss.yaml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ examples:
119119
mdss_mdp: display-controller@ae01000 {
120120
compatible = "qcom,eliza-dpu";
121121
reg = <0x0ae01000 0x93000>,
122-
<0x0aeb0000 0x2008>;
122+
<0x0aeb0000 0x3000>;
123123
reg-names = "mdp",
124124
"vbif";
125125
@@ -304,7 +304,7 @@ examples:
304304
mdss_dsi0_phy: phy@ae95000 {
305305
compatible = "qcom,eliza-dsi-phy-4nm", "qcom,sm8650-dsi-phy-4nm";
306306
reg = <0x0ae95000 0x200>,
307-
<0x0ae95200 0x280>,
307+
<0x0ae95200 0x300>,
308308
<0x0ae95500 0x400>;
309309
reg-names = "dsi_phy",
310310
"dsi_phy_lane",
@@ -388,7 +388,7 @@ examples:
388388
mdss_dsi1_phy: phy@ae97000 {
389389
compatible = "qcom,eliza-dsi-phy-4nm", "qcom,sm8650-dsi-phy-4nm";
390390
reg = <0x0ae97000 0x200>,
391-
<0x0ae97200 0x280>,
391+
<0x0ae97200 0x300>,
392392
<0x0ae97500 0x400>;
393393
reg-names = "dsi_phy",
394394
"dsi_phy_lane",
@@ -407,11 +407,15 @@ examples:
407407
408408
displayport-controller@af54000 {
409409
compatible = "qcom,eliza-dp", "qcom,sm8650-dp";
410-
reg = <0xaf54000 0x104>,
411-
<0xaf54200 0xc0>,
412-
<0xaf55000 0x770>,
413-
<0xaf56000 0x9c>,
414-
<0xaf57000 0x9c>;
410+
reg = <0x0af54000 0x200>,
411+
<0x0af54200 0x200>,
412+
<0x0af55000 0xc00>,
413+
<0x0af56000 0x400>,
414+
<0x0af57000 0x400>,
415+
<0x0af58000 0x400>,
416+
<0x0af59000 0x400>,
417+
<0x0af5a000 0x600>,
418+
<0x0af5b000 0x600>;
415419
416420
interrupts-extended = <&mdss 12>;
417421

Documentation/devicetree/bindings/display/msm/qcom,sm8650-dpu.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ examples:
7070
display-controller@ae01000 {
7171
compatible = "qcom,sm8650-dpu";
7272
reg = <0x0ae01000 0x8f000>,
73-
<0x0aeb0000 0x2008>;
73+
<0x0aeb0000 0x3000>;
7474
reg-names = "mdp", "vbif";
7575
7676
clocks = <&gcc_axi_clk>,

Documentation/devicetree/bindings/display/msm/qcom,sm8650-mdss.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ examples:
112112
display-controller@ae01000 {
113113
compatible = "qcom,sm8650-dpu";
114114
reg = <0x0ae01000 0x8f000>,
115-
<0x0aeb0000 0x2008>;
115+
<0x0aeb0000 0x3000>;
116116
reg-names = "mdp", "vbif";
117117
118118
clocks = <&gcc_axi_clk>,

Documentation/devicetree/bindings/display/msm/qcom,sm8750-mdss.yaml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ examples:
117117
display-controller@ae01000 {
118118
compatible = "qcom,sm8750-dpu";
119119
reg = <0x0ae01000 0x93000>,
120-
<0x0aeb0000 0x2008>;
120+
<0x0aeb0000 0x3000>;
121121
reg-names = "mdp",
122122
"vbif";
123123
@@ -389,11 +389,15 @@ examples:
389389
390390
displayport-controller@af54000 {
391391
compatible = "qcom,sm8750-dp", "qcom,sm8650-dp";
392-
reg = <0xaf54000 0x104>,
393-
<0xaf54200 0xc0>,
394-
<0xaf55000 0x770>,
395-
<0xaf56000 0x9c>,
396-
<0xaf57000 0x9c>;
392+
reg = <0x0af54000 0x200>,
393+
<0x0af54200 0x200>,
394+
<0x0af55000 0xc00>,
395+
<0x0af56000 0x400>,
396+
<0x0af57000 0x400>,
397+
<0x0af58000 0x400>,
398+
<0x0af59000 0x400>,
399+
<0x0af5a000 0x600>,
400+
<0x0af5b000 0x600>;
397401
398402
interrupts-extended = <&mdss 12>;
399403

drivers/accel/amdxdna/amdxdna_gem.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,9 @@ static struct dma_buf *amdxdna_gem_prime_export(struct drm_gem_object *gobj, int
490490
struct amdxdna_gem_obj *abo = to_xdna_obj(gobj);
491491
DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
492492

493+
if (abo->private_buffer)
494+
return ERR_PTR(-EOPNOTSUPP);
495+
493496
if (abo->dma_buf) {
494497
get_dma_buf(abo->dma_buf);
495498
return abo->dma_buf;
@@ -685,6 +688,7 @@ amdxdna_gem_create_ubuf_object(struct drm_device *dev, struct amdxdna_drm_create
685688
{
686689
struct amdxdna_dev *xdna = to_xdna_dev(dev);
687690
struct amdxdna_drm_va_tbl va_tbl;
691+
struct amdxdna_gem_obj *abo;
688692
struct drm_gem_object *gobj;
689693
struct dma_buf *dma_buf;
690694

@@ -711,7 +715,10 @@ amdxdna_gem_create_ubuf_object(struct drm_device *dev, struct amdxdna_drm_create
711715

712716
dma_buf_put(dma_buf);
713717

714-
return to_xdna_obj(gobj);
718+
abo = to_xdna_obj(gobj);
719+
abo->private_buffer = true;
720+
721+
return abo;
715722
}
716723

717724
struct drm_gem_object *

drivers/accel/amdxdna/amdxdna_gem.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ struct amdxdna_gem_obj {
5454

5555
/* True, if BO is managed by XRT, not application */
5656
bool internal;
57+
/* True, if BO is not exportable */
58+
bool private_buffer;
5759
};
5860

5961
#define to_gobj(obj) (&(obj)->base.base)

drivers/accel/amdxdna/amdxdna_ubuf.c

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -69,60 +69,10 @@ static void amdxdna_ubuf_release(struct dma_buf *dbuf)
6969
kfree(ubuf);
7070
}
7171

72-
static vm_fault_t amdxdna_ubuf_vm_fault(struct vm_fault *vmf)
73-
{
74-
struct vm_area_struct *vma = vmf->vma;
75-
struct amdxdna_ubuf_priv *ubuf;
76-
unsigned long pfn;
77-
pgoff_t pgoff;
78-
79-
ubuf = vma->vm_private_data;
80-
pgoff = (vmf->address - vma->vm_start) >> PAGE_SHIFT;
81-
82-
pfn = page_to_pfn(ubuf->pages[pgoff]);
83-
return vmf_insert_pfn(vma, vmf->address, pfn);
84-
}
85-
86-
static const struct vm_operations_struct amdxdna_ubuf_vm_ops = {
87-
.fault = amdxdna_ubuf_vm_fault,
88-
};
89-
90-
static int amdxdna_ubuf_mmap(struct dma_buf *dbuf, struct vm_area_struct *vma)
91-
{
92-
struct amdxdna_ubuf_priv *ubuf = dbuf->priv;
93-
94-
vma->vm_ops = &amdxdna_ubuf_vm_ops;
95-
vma->vm_private_data = ubuf;
96-
vm_flags_set(vma, VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP);
97-
98-
return 0;
99-
}
100-
101-
static int amdxdna_ubuf_vmap(struct dma_buf *dbuf, struct iosys_map *map)
102-
{
103-
struct amdxdna_ubuf_priv *ubuf = dbuf->priv;
104-
void *kva;
105-
106-
kva = vmap(ubuf->pages, ubuf->nr_pages, VM_MAP, PAGE_KERNEL);
107-
if (!kva)
108-
return -EINVAL;
109-
110-
iosys_map_set_vaddr(map, kva);
111-
return 0;
112-
}
113-
114-
static void amdxdna_ubuf_vunmap(struct dma_buf *dbuf, struct iosys_map *map)
115-
{
116-
vunmap(map->vaddr);
117-
}
118-
11972
static const struct dma_buf_ops amdxdna_ubuf_dmabuf_ops = {
12073
.map_dma_buf = amdxdna_ubuf_map,
12174
.unmap_dma_buf = amdxdna_ubuf_unmap,
12275
.release = amdxdna_ubuf_release,
123-
.mmap = amdxdna_ubuf_mmap,
124-
.vmap = amdxdna_ubuf_vmap,
125-
.vunmap = amdxdna_ubuf_vunmap,
12676
};
12777

12878
struct dma_buf *amdxdna_get_ubuf(struct drm_device *dev,

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1190,7 +1190,6 @@ struct amdgpu_device {
11901190
bool apu_prefer_gtt;
11911191

11921192
bool userq_halt_for_enforce_isolation;
1193-
struct work_struct userq_reset_work;
11941193
struct amdgpu_uid *uid_info;
11951194

11961195
struct amdgpu_uma_carveout_info uma_info;

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
#include "amdgpu_ras.h"
3737
#include "amdgpu_umc.h"
3838
#include "amdgpu_reset.h"
39+
#if IS_ENABLED(CONFIG_HSA_AMD)
40+
#include "kfd_priv.h"
41+
#endif
3942

4043
/* Total memory size in system memory and all GPU VRAM. Used to
4144
* estimate worst case amount of memory to reserve for page tables
@@ -320,6 +323,28 @@ void amdgpu_amdkfd_gpu_reset(struct amdgpu_device *adev)
320323
(void)amdgpu_reset_domain_schedule(adev->reset_domain, &adev->kfd.reset_work);
321324
}
322325

326+
void amdgpu_amdkfd_clear_kfd_mapping(struct amdgpu_device *adev)
327+
{
328+
#if IS_ENABLED(CONFIG_HSA_AMD)
329+
struct kfd_dev *kfd = adev->kfd.dev;
330+
unsigned int i;
331+
332+
if (!kfd)
333+
return;
334+
335+
for (i = 0; i < kfd->num_nodes; i++) {
336+
struct kfd_node *node = kfd->nodes[i];
337+
338+
kfd_dev_unmap_mapping_range(KFD_MMAP_TYPE_DOORBELL |
339+
KFD_MMAP_GPU_ID(node->id),
340+
kfd_doorbell_process_slice(kfd));
341+
kfd_dev_unmap_mapping_range(KFD_MMAP_TYPE_MMIO |
342+
KFD_MMAP_GPU_ID(node->id),
343+
PAGE_SIZE);
344+
}
345+
#endif
346+
}
347+
323348
int amdgpu_amdkfd_alloc_kernel_mem(struct amdgpu_device *adev, size_t size,
324349
u32 domain, void **mem_obj, uint64_t *gpu_addr,
325350
void **cpu_ptr, bool cp_mqd_gfx9)

0 commit comments

Comments
 (0)