Module Name:    src
Committed By:   riastradh
Date:           Sun Dec 19 11:06:55 UTC 2021

Modified Files:
        src/sys/external/bsd/drm2/dist/drm: drm_connector.c drm_dp_aux_dev.c
            drm_mode_object.c
        src/sys/external/bsd/drm2/dist/drm/i915: i915_perf.c
        src/sys/external/bsd/drm2/dist/drm/i915/gvt: dmabuf.c vgpu.c
        src/sys/external/bsd/drm2/dist/drm/vgem: vgem_fence.c

Log Message:
drm: Add idr_preload.

Gone from Linux API -- Linux just assumes that allocation under
mutex, even if it means sleeping, is OK.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_connector.c
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/drm_dp_aux_dev.c \
    src/sys/external/bsd/drm2/dist/drm/drm_mode_object.c
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_perf.c
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/gvt/dmabuf.c \
    src/sys/external/bsd/drm2/dist/drm/i915/gvt/vgpu.c
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/vgem/vgem_fence.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/drm_connector.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_connector.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_connector.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/drm_connector.c:1.5	Sun Dec 19 09:51:50 2021
+++ src/sys/external/bsd/drm2/dist/drm/drm_connector.c	Sun Dec 19 11:06:54 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_connector.c,v 1.5 2021/12/19 09:51:50 riastradh Exp $	*/
+/*	$NetBSD: drm_connector.c,v 1.6 2021/12/19 11:06:54 riastradh Exp $	*/
 
 /*
  * Copyright (c) 2016 Intel Corporation
@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_connector.c,v 1.5 2021/12/19 09:51:50 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_connector.c,v 1.6 2021/12/19 11:06:54 riastradh Exp $");
 
 #include <drm/drm_connector.h>
 #include <drm/drm_edid.h>
@@ -2400,6 +2400,7 @@ struct drm_tile_group *drm_mode_create_t
 	memcpy(tg->group_data, topology, 8);
 	tg->dev = dev;
 
+	idr_preload(GFP_KERNEL);
 	mutex_lock(&dev->mode_config.idr_mutex);
 	ret = idr_alloc(&dev->mode_config.tile_idr, tg, 1, 0, GFP_KERNEL);
 	if (ret >= 0) {
@@ -2410,6 +2411,7 @@ struct drm_tile_group *drm_mode_create_t
 	}
 
 	mutex_unlock(&dev->mode_config.idr_mutex);
+	idr_preload_end();
 	return tg;
 }
 EXPORT_SYMBOL(drm_mode_create_tile_group);

Index: src/sys/external/bsd/drm2/dist/drm/drm_dp_aux_dev.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_dp_aux_dev.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_dp_aux_dev.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/drm_dp_aux_dev.c:1.2	Sat Dec 18 23:44:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/drm_dp_aux_dev.c	Sun Dec 19 11:06:54 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_dp_aux_dev.c,v 1.2 2021/12/18 23:44:57 riastradh Exp $	*/
+/*	$NetBSD: drm_dp_aux_dev.c,v 1.3 2021/12/19 11:06:54 riastradh Exp $	*/
 
 /*
  * Copyright © 2015 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_dp_aux_dev.c,v 1.2 2021/12/18 23:44:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_dp_aux_dev.c,v 1.3 2021/12/19 11:06:54 riastradh Exp $");
 
 #include <linux/device.h>
 #include <linux/fs.h>
@@ -87,9 +87,11 @@ static struct drm_dp_aux_dev *alloc_drm_
 	atomic_set(&aux_dev->usecount, 1);
 	kref_init(&aux_dev->refcount);
 
+	idr_preload(GFP_KERNEL);
 	mutex_lock(&aux_idr_mutex);
 	index = idr_alloc(&aux_idr, aux_dev, 0, DRM_AUX_MINORS, GFP_KERNEL);
 	mutex_unlock(&aux_idr_mutex);
+	idr_preload_end();
 	if (index < 0) {
 		kfree(aux_dev);
 		return ERR_PTR(index);
Index: src/sys/external/bsd/drm2/dist/drm/drm_mode_object.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_mode_object.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_mode_object.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/drm_mode_object.c:1.2	Sat Dec 18 23:44:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/drm_mode_object.c	Sun Dec 19 11:06:54 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_mode_object.c,v 1.2 2021/12/18 23:44:57 riastradh Exp $	*/
+/*	$NetBSD: drm_mode_object.c,v 1.3 2021/12/19 11:06:54 riastradh Exp $	*/
 
 /*
  * Copyright (c) 2016 Intel Corporation
@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_mode_object.c,v 1.2 2021/12/18 23:44:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_mode_object.c,v 1.3 2021/12/19 11:06:54 riastradh Exp $");
 
 #include <linux/export.h>
 #include <linux/uaccess.h>
@@ -49,6 +49,7 @@ int __drm_mode_object_add(struct drm_dev
 
 	WARN_ON(!dev->driver->load && dev->registered && !obj_free_cb);
 
+	idr_preload(GFP_KERNEL);
 	mutex_lock(&dev->mode_config.idr_mutex);
 	ret = idr_alloc(&dev->mode_config.object_idr, register_obj ? obj : NULL,
 			1, 0, GFP_KERNEL);
@@ -65,6 +66,7 @@ int __drm_mode_object_add(struct drm_dev
 		}
 	}
 	mutex_unlock(&dev->mode_config.idr_mutex);
+	idr_preload_end();
 
 	return ret < 0 ? ret : 0;
 }

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_perf.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_perf.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_perf.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_perf.c:1.2	Sat Dec 18 23:45:28 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_perf.c	Sun Dec 19 11:06:55 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_perf.c,v 1.2 2021/12/18 23:45:28 riastradh Exp $	*/
+/*	$NetBSD: i915_perf.c,v 1.3 2021/12/19 11:06:55 riastradh Exp $	*/
 
 /*
  * Copyright © 2015-2016 Intel Corporation
@@ -194,7 +194,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_perf.c,v 1.2 2021/12/18 23:45:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_perf.c,v 1.3 2021/12/19 11:06:55 riastradh Exp $");
 
 #include <linux/anon_inodes.h>
 #include <linux/sizes.h>
@@ -4080,6 +4080,7 @@ int i915_perf_add_config_ioctl(struct dr
 		oa_config->flex_regs = regs;
 	}
 
+	idr_preload(GFP_KERNEL);
 	err = mutex_lock_interruptible(&perf->metrics_lock);
 	if (err)
 		goto reg_err;
@@ -4112,6 +4113,7 @@ int i915_perf_add_config_ioctl(struct dr
 	}
 
 	mutex_unlock(&perf->metrics_lock);
+	idr_preload_end();
 
 	DRM_DEBUG("Added config %s id=%i\n", oa_config->uuid, oa_config->id);
 
@@ -4119,6 +4121,7 @@ int i915_perf_add_config_ioctl(struct dr
 
 sysfs_err:
 	mutex_unlock(&perf->metrics_lock);
+	idr_preload_end();
 reg_err:
 	i915_oa_config_put(oa_config);
 	DRM_DEBUG("Failed to add new OA config\n");

Index: src/sys/external/bsd/drm2/dist/drm/i915/gvt/dmabuf.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gvt/dmabuf.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/gvt/dmabuf.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/gvt/dmabuf.c:1.2	Sat Dec 18 23:45:31 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gvt/dmabuf.c	Sun Dec 19 11:06:55 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: dmabuf.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $	*/
+/*	$NetBSD: dmabuf.c,v 1.3 2021/12/19 11:06:55 riastradh Exp $	*/
 
 /*
  * Copyright 2017 Intel Corporation. All rights reserved.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: dmabuf.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: dmabuf.c,v 1.3 2021/12/19 11:06:55 riastradh Exp $");
 
 #include <linux/dma-buf.h>
 #include <linux/vfio.h>
@@ -486,7 +486,9 @@ int intel_vgpu_query_plane(struct intel_
 
 	dmabuf_obj->vgpu = vgpu;
 
+	idr_preload(GFP_NOWAIT); /* XXX ??? */
 	ret = idr_alloc(&vgpu->object_idr, dmabuf_obj, 1, 0, GFP_NOWAIT);
+	idr_preload_end();
 	if (ret < 0)
 		goto out_free_info;
 	gfx_plane_info->dmabuf_id = ret;
Index: src/sys/external/bsd/drm2/dist/drm/i915/gvt/vgpu.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gvt/vgpu.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/gvt/vgpu.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/gvt/vgpu.c:1.2	Sat Dec 18 23:45:31 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gvt/vgpu.c	Sun Dec 19 11:06:55 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: vgpu.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $	*/
+/*	$NetBSD: vgpu.c,v 1.3 2021/12/19 11:06:55 riastradh Exp $	*/
 
 /*
  * Copyright(c) 2011-2016 Intel Corporation. All rights reserved.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vgpu.c,v 1.2 2021/12/18 23:45:31 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vgpu.c,v 1.3 2021/12/19 11:06:55 riastradh Exp $");
 
 #include "i915_drv.h"
 #include "gvt.h"
@@ -375,8 +375,10 @@ static struct intel_vgpu *__intel_gvt_cr
 	if (!vgpu)
 		return ERR_PTR(-ENOMEM);
 
+	idr_preload(GFP_KERNEL);
 	ret = idr_alloc(&gvt->vgpu_idr, vgpu, IDLE_VGPU_IDR + 1, GVT_MAX_VGPU,
 		GFP_KERNEL);
+	idr_preload_end();
 	if (ret < 0)
 		goto out_free_vgpu;
 

Index: src/sys/external/bsd/drm2/dist/drm/vgem/vgem_fence.c
diff -u src/sys/external/bsd/drm2/dist/drm/vgem/vgem_fence.c:1.2 src/sys/external/bsd/drm2/dist/drm/vgem/vgem_fence.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/vgem/vgem_fence.c:1.2	Sat Dec 18 23:45:44 2021
+++ src/sys/external/bsd/drm2/dist/drm/vgem/vgem_fence.c	Sun Dec 19 11:06:55 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: vgem_fence.c,v 1.2 2021/12/18 23:45:44 riastradh Exp $	*/
+/*	$NetBSD: vgem_fence.c,v 1.3 2021/12/19 11:06:55 riastradh Exp $	*/
 
 /*
  * Copyright 2016 Intel Corporation
@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vgem_fence.c,v 1.2 2021/12/18 23:45:44 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vgem_fence.c,v 1.3 2021/12/19 11:06:55 riastradh Exp $");
 
 #include <linux/dma-buf.h>
 #include <linux/dma-resv.h>
@@ -173,9 +173,11 @@ int vgem_fence_attach_ioctl(struct drm_d
 
 	/* Record the fence in our idr for later signaling */
 	if (ret == 0) {
+		idr_preload(GFP_KERNEL);
 		mutex_lock(&vfile->fence_mutex);
 		ret = idr_alloc(&vfile->fence_idr, fence, 1, 0, GFP_KERNEL);
 		mutex_unlock(&vfile->fence_mutex);
+		idr_preload_end();
 		if (ret > 0) {
 			arg->out_fence = ret;
 			ret = 0;

Reply via email to