Skip to content

Commit 97aadc1

Browse files
committed
Merge tag 'drm-misc-fixes-2025-06-19' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-fixes
drm-misc-fixes for v6.16-rc3: - vivante scheduler fix. - v3d null pointer crash fix. - fix backlight, booting GSP-RM, and potential integer shift overflow in nouveau. - fix compiler warnings about unused linux/export.h - fix malidp unknown modifier spam. - fix for ssd130x. Signed-off-by: Dave Airlie <[email protected]> From: Maarten Lankhorst <[email protected]> Link: https://lore.kernel.org/r/[email protected]
2 parents 453e6fd + 61ee19d commit 97aadc1

File tree

10 files changed

+27
-15
lines changed

10 files changed

+27
-15
lines changed

Documentation/gpu/nouveau.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ providing a consistent API to upper layers of the driver stack.
2525
GSP Support
2626
------------------------
2727

28-
.. kernel-doc:: drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c
28+
.. kernel-doc:: drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c
2929
:doc: GSP message queue element
3030

3131
.. kernel-doc:: drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h

drivers/gpu/drm/arm/malidp_planes.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ bool malidp_format_mod_supported(struct drm_device *drm,
159159
}
160160

161161
if (!fourcc_mod_is_vendor(modifier, ARM)) {
162-
DRM_ERROR("Unknown modifier (not Arm)\n");
162+
DRM_DEBUG_KMS("Unknown modifier (not Arm)\n");
163163
return false;
164164
}
165165

drivers/gpu/drm/ast/ast_mode.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
*/
3030

3131
#include <linux/delay.h>
32-
#include <linux/export.h>
3332
#include <linux/pci.h>
3433

3534
#include <drm/drm_atomic.h>

drivers/gpu/drm/etnaviv/etnaviv_sched.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ static enum drm_gpu_sched_stat etnaviv_sched_timedout_job(struct drm_sched_job
3535
*sched_job)
3636
{
3737
struct etnaviv_gem_submit *submit = to_etnaviv_submit(sched_job);
38+
struct drm_gpu_scheduler *sched = sched_job->sched;
3839
struct etnaviv_gpu *gpu = submit->gpu;
3940
u32 dma_addr, primid = 0;
4041
int change;
@@ -89,7 +90,9 @@ static enum drm_gpu_sched_stat etnaviv_sched_timedout_job(struct drm_sched_job
8990
return DRM_GPU_SCHED_STAT_NOMINAL;
9091

9192
out_no_timeout:
92-
list_add(&sched_job->list, &sched_job->sched->pending_list);
93+
spin_lock(&sched->job_list_lock);
94+
list_add(&sched_job->list, &sched->pending_list);
95+
spin_unlock(&sched->job_list_lock);
9396
return DRM_GPU_SCHED_STAT_NOMINAL;
9497
}
9598

drivers/gpu/drm/mgag200/mgag200_ddc.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
* Authors: Dave Airlie <[email protected]>
2727
*/
2828

29-
#include <linux/export.h>
3029
#include <linux/i2c-algo-bit.h>
3130
#include <linux/i2c.h>
3231
#include <linux/pci.h>

drivers/gpu/drm/nouveau/nouveau_backlight.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
#include "nouveau_acpi.h"
4343

4444
static struct ida bl_ida;
45-
#define BL_NAME_SIZE 15 // 12 for name + 2 for digits + 1 for '\0'
45+
#define BL_NAME_SIZE 24 // 12 for name + 11 for digits + 1 for '\0'
4646

4747
static bool
4848
nouveau_get_backlight_name(char backlight_name[BL_NAME_SIZE],

drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/rpc.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -637,12 +637,18 @@ r535_gsp_rpc_push(struct nvkm_gsp *gsp, void *payload,
637637
if (payload_size > max_payload_size) {
638638
const u32 fn = rpc->function;
639639
u32 remain_payload_size = payload_size;
640+
void *next;
640641

641-
/* Adjust length, and send initial RPC. */
642-
rpc->length = sizeof(*rpc) + max_payload_size;
643-
msg->checksum = rpc->length;
642+
/* Send initial RPC. */
643+
next = r535_gsp_rpc_get(gsp, fn, max_payload_size);
644+
if (IS_ERR(next)) {
645+
repv = next;
646+
goto done;
647+
}
644648

645-
repv = r535_gsp_rpc_send(gsp, payload, NVKM_GSP_RPC_REPLY_NOWAIT, 0);
649+
memcpy(next, payload, max_payload_size);
650+
651+
repv = r535_gsp_rpc_send(gsp, next, NVKM_GSP_RPC_REPLY_NOWAIT, 0);
646652
if (IS_ERR(repv))
647653
goto done;
648654

@@ -653,7 +659,6 @@ r535_gsp_rpc_push(struct nvkm_gsp *gsp, void *payload,
653659
while (remain_payload_size) {
654660
u32 size = min(remain_payload_size,
655661
max_payload_size);
656-
void *next;
657662

658663
next = r535_gsp_rpc_get(gsp, NV_VGPU_MSG_FUNCTION_CONTINUATION_RECORD, size);
659664
if (IS_ERR(next)) {
@@ -674,6 +679,8 @@ r535_gsp_rpc_push(struct nvkm_gsp *gsp, void *payload,
674679
/* Wait for reply. */
675680
repv = r535_gsp_rpc_handle_reply(gsp, fn, policy, payload_size +
676681
sizeof(*rpc));
682+
if (!IS_ERR(repv))
683+
kvfree(msg);
677684
} else {
678685
repv = r535_gsp_rpc_send(gsp, payload, policy, gsp_rpc_len);
679686
}

drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/vmm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ r535_mmu_vaspace_new(struct nvkm_vmm *vmm, u32 handle, bool external)
121121
page_shift -= desc->bits;
122122

123123
ctrl->levels[i].physAddress = pd->pt[0]->addr;
124-
ctrl->levels[i].size = (1 << desc->bits) * desc->size;
124+
ctrl->levels[i].size = BIT_ULL(desc->bits) * desc->size;
125125
ctrl->levels[i].aperture = 1;
126126
ctrl->levels[i].pageShift = page_shift;
127127

drivers/gpu/drm/solomon/ssd130x.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -974,7 +974,7 @@ static void ssd130x_clear_screen(struct ssd130x_device *ssd130x, u8 *data_array)
974974

975975
static void ssd132x_clear_screen(struct ssd130x_device *ssd130x, u8 *data_array)
976976
{
977-
unsigned int columns = DIV_ROUND_UP(ssd130x->height, SSD132X_SEGMENT_WIDTH);
977+
unsigned int columns = DIV_ROUND_UP(ssd130x->width, SSD132X_SEGMENT_WIDTH);
978978
unsigned int height = ssd130x->height;
979979

980980
memset(data_array, 0, columns * height);

drivers/gpu/drm/v3d/v3d_sched.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,6 @@ v3d_job_update_stats(struct v3d_job *job, enum v3d_queue queue)
199199
struct v3d_dev *v3d = job->v3d;
200200
struct v3d_file_priv *file = job->file->driver_priv;
201201
struct v3d_stats *global_stats = &v3d->queue[queue].stats;
202-
struct v3d_stats *local_stats = &file->stats[queue];
203202
u64 now = local_clock();
204203
unsigned long flags;
205204

@@ -209,7 +208,12 @@ v3d_job_update_stats(struct v3d_job *job, enum v3d_queue queue)
209208
else
210209
preempt_disable();
211210

212-
v3d_stats_update(local_stats, now);
211+
/* Don't update the local stats if the file context has already closed */
212+
if (file)
213+
v3d_stats_update(&file->stats[queue], now);
214+
else
215+
drm_dbg(&v3d->drm, "The file descriptor was closed before job completion\n");
216+
213217
v3d_stats_update(global_stats, now);
214218

215219
if (IS_ENABLED(CONFIG_LOCKDEP))

0 commit comments

Comments
 (0)