Skip to content

Commit 1c9982b

Browse files
committed
Merge tag 'drm-fixes-2026-03-14' of https://gitlab.freedesktop.org/drm/kernel
Pull drm fixes from Dave Airlie: "The weekly drm fixes. This is mostly msm fixes across the functions, with amdgpu and i915. It also has a core rust fix and changes in nova-core to take advantage of it, and otherwise just has some minor driver fixes, and marks loongsoon as orphaned. rust: - Fix safety issue in dma_read! and dma_write! nova-core: - Fix UB in DmaGspMem pointer accessors - Fix stack overflow in GSP memory allocation loongsoon: - mark drm driver as unmaintained msm: - Core: - Adjusted msm_iommu_pagetable_prealloc_allocate() allocation type - DPU: - Fixed blue screens on Hamoa laptops by reverting the LM reservation - Fixed the size of the LM block on several platforms - Dropped usage of %pK (again) - Fixed smatch warning on SSPP v13+ code - Fixed INTF_6 interrupts on Lemans - DSI: - Fixed DSI PHY revision on Kaanapali - Fixed pixel clock calculation for the bonded DSI mode panels with compression enabled - DT bindings: - Fixed DisplayPort description on Glymur - Fixed model name in SM8750 MDSS schema - GPU: - Added MODULE_DEVICE_TABLE to the GPU driver - Fix bogus protect error on X2-85 - Fix dma_free_attrs() buffer size - Gen8 UBWC fix for Glymur i915: - Avoid hang when configuring VRR [icl] - Fix sg_table overflow with >4GB folios - Fix PSR Selective Update handling - Fix eDP ALPM read-out sequence amdgpu: - SMU13 fix - SMU14 fix - Fixes for bringup hw testing - Kerneldoc fix - GC12 idle power fix for compute workloads - DCCG fixes amdkfd: - Fix missing BO unreserve in an error path ivpu: - drop unnecessary bootparams register setting amdxdna: - fix runtime/suspend resume deadlock bridge: - ti-sn65dsi83: fix DSI rounding and dual LVDS gud: - fix NULL crtc dereference on display disable" * tag 'drm-fixes-2026-03-14' of https://gitlab.freedesktop.org/drm/kernel: (44 commits) drm/amd: Set num IP blocks to 0 if discovery fails drm/amdkfd: Unreserve bo if queue update failed drm/amd/display: Check for S0i3 to be done before DCCG init on DCN21 drm/amd/display: Add missing DCCG register entries for DCN20-DCN316 gpu: nova-core: gsp: fix UB in DmaGspMem pointer accessors drm/loongson: Mark driver as orphaned accel/amdxdna: Fix runtime suspend deadlock when there is pending job gpu: nova-core: fix stack overflow in GSP memory allocation accel/ivpu: Remove boot params address setting via MMIO register drm/i915/dp: Read ALPM caps after DPCD init drm/i915/psr: Write DSC parameters on Selective Update in ET mode drm/i915/dsc: Add helper for writing DSC Selective Update ET parameters drm/i915/dsc: Add Selective Update register definitions drm/i915/psr: Repeat Selective Update area alignment drm/i915: Fix potential overflow of shmem scatterlist length drm/i915/vrr: Configure VRR timings after enabling TRANS_DDI_FUNC_CTL drm/bridge: ti-sn65dsi83: halve horizontal syncs for dual LVDS output drm/bridge: ti-sn65dsi83: fix CHA_DSI_CLK_RANGE rounding drm/gud: fix NULL crtc dereference on display disable drm/sitronix/st7586: fix bad pixel data due to byte swap ...
2 parents 9abff57 + b28913e commit 1c9982b

60 files changed

Lines changed: 935 additions & 399 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: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,6 @@ allOf:
253253
enum:
254254
# these platforms support 2 streams MST on some interfaces,
255255
# others are SST only
256-
- qcom,glymur-dp
257256
- qcom,sc8280xp-dp
258257
- qcom,x1e80100-dp
259258
then:
@@ -310,6 +309,26 @@ allOf:
310309
minItems: 6
311310
maxItems: 8
312311

312+
- if:
313+
properties:
314+
compatible:
315+
contains:
316+
enum:
317+
# these platforms support 2 streams MST on some interfaces,
318+
# others are SST only, but all controllers have 4 ports
319+
- qcom,glymur-dp
320+
then:
321+
properties:
322+
reg:
323+
minItems: 9
324+
maxItems: 9
325+
clocks:
326+
minItems: 5
327+
maxItems: 6
328+
clocks-names:
329+
minItems: 5
330+
maxItems: 6
331+
313332
unevaluatedProperties: false
314333

315334
examples:

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,17 @@ examples:
176176
};
177177
};
178178
179-
displayport-controller@ae90000 {
179+
displayport-controller@af54000 {
180180
compatible = "qcom,glymur-dp";
181-
reg = <0xae90000 0x200>,
182-
<0xae90200 0x200>,
183-
<0xae90400 0x600>,
184-
<0xae91000 0x400>,
185-
<0xae91400 0x400>;
181+
reg = <0xaf54000 0x200>,
182+
<0xaf54200 0x200>,
183+
<0xaf55000 0xc00>,
184+
<0xaf56000 0x400>,
185+
<0xaf57000 0x400>,
186+
<0xaf58000 0x400>,
187+
<0xaf59000 0x400>,
188+
<0xaf5a000 0x600>,
189+
<0xaf5b000 0x600>;
186190
187191
interrupt-parent = <&mdss>;
188192
interrupts = <12>;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ maintainers:
1010
- Krzysztof Kozlowski <krzk@kernel.org>
1111

1212
description:
13-
SM8650 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
13+
SM8750 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
1414
DPU display controller, DSI and DP interfaces etc.
1515

1616
$ref: /schemas/display/msm/mdss-common.yaml#

MAINTAINERS

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8626,9 +8626,8 @@ F: drivers/gpu/drm/lima/
86268626
F: include/uapi/drm/lima_drm.h
86278627

86288628
DRM DRIVERS FOR LOONGSON
8629-
M: Sui Jingfeng <suijingfeng@loongson.cn>
86308629
L: dri-devel@lists.freedesktop.org
8631-
S: Supported
8630+
S: Orphan
86328631
T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
86338632
F: drivers/gpu/drm/loongson/
86348633

drivers/accel/amdxdna/aie2_ctx.c

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@ aie2_sched_notify(struct amdxdna_sched_job *job)
165165

166166
trace_xdna_job(&job->base, job->hwctx->name, "signaled fence", job->seq);
167167

168-
amdxdna_pm_suspend_put(job->hwctx->client->xdna);
169168
job->hwctx->priv->completed++;
170169
dma_fence_signal(fence);
171170

@@ -290,19 +289,11 @@ aie2_sched_job_run(struct drm_sched_job *sched_job)
290289
struct dma_fence *fence;
291290
int ret;
292291

293-
ret = amdxdna_pm_resume_get(hwctx->client->xdna);
294-
if (ret)
292+
if (!hwctx->priv->mbox_chann)
295293
return NULL;
296294

297-
if (!hwctx->priv->mbox_chann) {
298-
amdxdna_pm_suspend_put(hwctx->client->xdna);
299-
return NULL;
300-
}
301-
302-
if (!mmget_not_zero(job->mm)) {
303-
amdxdna_pm_suspend_put(hwctx->client->xdna);
295+
if (!mmget_not_zero(job->mm))
304296
return ERR_PTR(-ESRCH);
305-
}
306297

307298
kref_get(&job->refcnt);
308299
fence = dma_fence_get(job->fence);
@@ -333,7 +324,6 @@ aie2_sched_job_run(struct drm_sched_job *sched_job)
333324

334325
out:
335326
if (ret) {
336-
amdxdna_pm_suspend_put(hwctx->client->xdna);
337327
dma_fence_put(job->fence);
338328
aie2_job_put(job);
339329
mmput(job->mm);

drivers/accel/amdxdna/amdxdna_ctx.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "amdxdna_ctx.h"
1818
#include "amdxdna_gem.h"
1919
#include "amdxdna_pci_drv.h"
20+
#include "amdxdna_pm.h"
2021

2122
#define MAX_HWCTX_ID 255
2223
#define MAX_ARG_COUNT 4095
@@ -445,6 +446,7 @@ amdxdna_arg_bos_lookup(struct amdxdna_client *client,
445446
void amdxdna_sched_job_cleanup(struct amdxdna_sched_job *job)
446447
{
447448
trace_amdxdna_debug_point(job->hwctx->name, job->seq, "job release");
449+
amdxdna_pm_suspend_put(job->hwctx->client->xdna);
448450
amdxdna_arg_bos_put(job);
449451
amdxdna_gem_put_obj(job->cmd_bo);
450452
dma_fence_put(job->fence);
@@ -482,6 +484,12 @@ int amdxdna_cmd_submit(struct amdxdna_client *client,
482484
goto cmd_put;
483485
}
484486

487+
ret = amdxdna_pm_resume_get(xdna);
488+
if (ret) {
489+
XDNA_ERR(xdna, "Resume failed, ret %d", ret);
490+
goto put_bos;
491+
}
492+
485493
idx = srcu_read_lock(&client->hwctx_srcu);
486494
hwctx = xa_load(&client->hwctx_xa, hwctx_hdl);
487495
if (!hwctx) {
@@ -522,6 +530,8 @@ int amdxdna_cmd_submit(struct amdxdna_client *client,
522530
dma_fence_put(job->fence);
523531
unlock_srcu:
524532
srcu_read_unlock(&client->hwctx_srcu, idx);
533+
amdxdna_pm_suspend_put(xdna);
534+
put_bos:
525535
amdxdna_arg_bos_put(job);
526536
cmd_put:
527537
amdxdna_gem_put_obj(job->cmd_bo);

drivers/accel/ivpu/ivpu_hw_40xx_reg.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,6 @@
121121
#define VPU_50XX_HOST_SS_AON_PWR_ISLAND_STATUS_DLY 0x0003006cu
122122
#define VPU_50XX_HOST_SS_AON_PWR_ISLAND_STATUS_DLY_STATUS_DLY_MASK GENMASK(7, 0)
123123

124-
#define VPU_40XX_HOST_SS_AON_RETENTION0 0x0003000cu
125-
#define VPU_40XX_HOST_SS_AON_RETENTION1 0x00030010u
126-
#define VPU_40XX_HOST_SS_AON_RETENTION2 0x00030014u
127-
#define VPU_40XX_HOST_SS_AON_RETENTION3 0x00030018u
128-
#define VPU_40XX_HOST_SS_AON_RETENTION4 0x0003001cu
129-
130124
#define VPU_40XX_HOST_SS_AON_IDLE_GEN 0x00030200u
131125
#define VPU_40XX_HOST_SS_AON_IDLE_GEN_EN_MASK BIT_MASK(0)
132126
#define VPU_40XX_HOST_SS_AON_IDLE_GEN_HW_PG_EN_MASK BIT_MASK(1)

drivers/accel/ivpu/ivpu_hw_ip.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -931,7 +931,6 @@ static int soc_cpu_boot_40xx(struct ivpu_device *vdev)
931931

932932
static int soc_cpu_boot_60xx(struct ivpu_device *vdev)
933933
{
934-
REGV_WR64(VPU_40XX_HOST_SS_AON_RETENTION1, vdev->fw->mem_bp->vpu_addr);
935934
soc_cpu_set_entry_point_40xx(vdev, vdev->fw->cold_boot_entry_point);
936935

937936
return 0;

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2690,8 +2690,10 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
26902690
break;
26912691
default:
26922692
r = amdgpu_discovery_set_ip_blocks(adev);
2693-
if (r)
2693+
if (r) {
2694+
adev->num_ip_blocks = 0;
26942695
return r;
2696+
}
26952697
break;
26962698
}
26972699

@@ -3247,6 +3249,8 @@ int amdgpu_device_set_cg_state(struct amdgpu_device *adev,
32473249
i = state == AMD_CG_STATE_GATE ? j : adev->num_ip_blocks - j - 1;
32483250
if (!adev->ip_blocks[i].status.late_initialized)
32493251
continue;
3252+
if (!adev->ip_blocks[i].version)
3253+
continue;
32503254
/* skip CG for GFX, SDMA on S0ix */
32513255
if (adev->in_s0ix &&
32523256
(adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX ||
@@ -3286,6 +3290,8 @@ int amdgpu_device_set_pg_state(struct amdgpu_device *adev,
32863290
i = state == AMD_PG_STATE_GATE ? j : adev->num_ip_blocks - j - 1;
32873291
if (!adev->ip_blocks[i].status.late_initialized)
32883292
continue;
3293+
if (!adev->ip_blocks[i].version)
3294+
continue;
32893295
/* skip PG for GFX, SDMA on S0ix */
32903296
if (adev->in_s0ix &&
32913297
(adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX ||
@@ -3493,6 +3499,8 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)
34933499
int i, r;
34943500

34953501
for (i = 0; i < adev->num_ip_blocks; i++) {
3502+
if (!adev->ip_blocks[i].version)
3503+
continue;
34963504
if (!adev->ip_blocks[i].version->funcs->early_fini)
34973505
continue;
34983506

@@ -3570,6 +3578,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)
35703578
if (!adev->ip_blocks[i].status.sw)
35713579
continue;
35723580

3581+
if (!adev->ip_blocks[i].version)
3582+
continue;
35733583
if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) {
35743584
amdgpu_ucode_free_bo(adev);
35753585
amdgpu_free_static_csa(&adev->virt.csa_obj);
@@ -3596,6 +3606,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)
35963606
for (i = adev->num_ip_blocks - 1; i >= 0; i--) {
35973607
if (!adev->ip_blocks[i].status.late_initialized)
35983608
continue;
3609+
if (!adev->ip_blocks[i].version)
3610+
continue;
35993611
if (adev->ip_blocks[i].version->funcs->late_fini)
36003612
adev->ip_blocks[i].version->funcs->late_fini(&adev->ip_blocks[i]);
36013613
adev->ip_blocks[i].status.late_initialized = false;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ void amdgpu_driver_unload_kms(struct drm_device *dev)
8383
{
8484
struct amdgpu_device *adev = drm_to_adev(dev);
8585

86-
if (adev == NULL)
86+
if (adev == NULL || !adev->num_ip_blocks)
8787
return;
8888

8989
amdgpu_unregister_gpu_instance(adev);

0 commit comments

Comments
 (0)