Commit 9abfe0b2 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-misc-fixes-2025-12-29' of...

Merge tag 'drm-misc-fixes-2025-12-29' of https://gitlab.freedesktop.org/drm/misc/kernel

 into drm-fixes

drm-misc-fixes for v6.19-rc4:
- Documentation fixes and MODULE_LICENSE fix for shmem helper.
- Fix warnings in nouveau prepare_fb().
- Prevent export of protected objects in imagination driver.

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patch.msgid.link/5506492b-02ca-47bc-8712-51e67f0e4b8b@linux.intel.com
parents 1054f195 3fbd9761
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -96,7 +96,8 @@ static int __drm_gem_shmem_init(struct drm_device *dev, struct drm_gem_shmem_obj
/**
 * drm_gem_shmem_init - Initialize an allocated object.
 * @dev: DRM device
 * @obj: The allocated shmem GEM object.
 * @shmem: The allocated shmem GEM object.
 * @size: Buffer size in bytes
 *
 * Returns:
 * 0 on success, or a negative error code on failure.
@@ -895,4 +896,4 @@ EXPORT_SYMBOL_GPL(drm_gem_shmem_prime_import_no_map);

MODULE_DESCRIPTION("DRM SHMEM memory-management helpers");
MODULE_IMPORT_NS("DMA_BUF");
MODULE_LICENSE("GPL v2");
MODULE_LICENSE("GPL");
+11 −0
Original line number Diff line number Diff line
@@ -28,6 +28,16 @@ static void pvr_gem_object_free(struct drm_gem_object *obj)
	drm_gem_shmem_object_free(obj);
}

static struct dma_buf *pvr_gem_export(struct drm_gem_object *obj, int flags)
{
	struct pvr_gem_object *pvr_obj = gem_to_pvr_gem(obj);

	if (pvr_obj->flags & DRM_PVR_BO_PM_FW_PROTECT)
		return ERR_PTR(-EPERM);

	return drm_gem_prime_export(obj, flags);
}

static int pvr_gem_mmap(struct drm_gem_object *gem_obj, struct vm_area_struct *vma)
{
	struct pvr_gem_object *pvr_obj = gem_to_pvr_gem(gem_obj);
@@ -42,6 +52,7 @@ static int pvr_gem_mmap(struct drm_gem_object *gem_obj, struct vm_area_struct *v
static const struct drm_gem_object_funcs pvr_gem_object_funcs = {
	.free = pvr_gem_object_free,
	.print_info = drm_gem_shmem_object_print_info,
	.export = pvr_gem_export,
	.pin = drm_gem_shmem_object_pin,
	.unpin = drm_gem_shmem_object_unpin,
	.get_sg_table = drm_gem_shmem_object_get_sg_table,
+13 −0
Original line number Diff line number Diff line
@@ -152,8 +152,21 @@ static inline struct nv50_head_atom *
nv50_head_atom_get(struct drm_atomic_state *state, struct drm_crtc *crtc)
{
	struct drm_crtc_state *statec = drm_atomic_get_crtc_state(state, crtc);

	if (IS_ERR(statec))
		return (void *)statec;

	return nv50_head_atom(statec);
}

static inline struct nv50_head_atom *
nv50_head_atom_get_new(struct drm_atomic_state *state, struct drm_crtc *crtc)
{
	struct drm_crtc_state *statec = drm_atomic_get_new_crtc_state(state, crtc);

	if (!statec)
		return NULL;

	return nv50_head_atom(statec);
}

+1 −1
Original line number Diff line number Diff line
@@ -583,7 +583,7 @@ nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state)
	asyw->image.offset[0] = nvbo->offset;

	if (wndw->func->prepare) {
		asyh = nv50_head_atom_get(asyw->state.state, asyw->state.crtc);
		asyh = nv50_head_atom_get_new(asyw->state.state, asyw->state.crtc);
		if (IS_ERR(asyh))
			return PTR_ERR(asyh);