Module Name: src
Committed By: riastradh
Date: Sun Dec 19 12:30:05 UTC 2021
Modified Files:
src/sys/external/bsd/drm2/dist/drm: drm_auth.c drm_bufs.c drm_context.c
drm_legacy_misc.c
src/sys/external/bsd/drm2/drm: drm_lock.c drm_scatter.c files.drmkms
src/sys/external/bsd/drm2/include/linux: io.h seq_file.h
Log Message:
drm: Make some legacy UMS crap build.
To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/drm_auth.c
cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/drm2/dist/drm/drm_bufs.c
cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/dist/drm/drm_context.c
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/drm_legacy_misc.c
cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/drm/drm_lock.c
cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/drm/drm_scatter.c
cvs rdiff -u -r1.69 -r1.70 src/sys/external/bsd/drm2/drm/files.drmkms
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/include/linux/io.h
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/include/linux/seq_file.h
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_auth.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_auth.c:1.5 src/sys/external/bsd/drm2/dist/drm/drm_auth.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/drm_auth.c:1.5 Sat Dec 18 23:44:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/drm_auth.c Sun Dec 19 12:30:04 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_auth.c,v 1.5 2021/12/18 23:44:57 riastradh Exp $ */
+/* $NetBSD: drm_auth.c,v 1.6 2021/12/19 12:30:04 riastradh Exp $ */
/*
* Created: Tue Feb 2 08:37:54 1999 by [email protected]
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_auth.c,v 1.5 2021/12/18 23:44:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_auth.c,v 1.6 2021/12/19 12:30:04 riastradh Exp $");
#include <linux/slab.h>
@@ -348,6 +348,12 @@ static void drm_master_destroy(struct kr
idr_destroy(&master->leases);
idr_destroy(&master->lessee_idr);
+#ifdef CONFIG_DRM_LEGACY
+ /* XXX drm_master_legacy_init unwind */
+ DRM_DESTROY_WAITQUEUE(&master->lock.lock_queue);
+ spin_lock_destroy(&master->lock.spinlock);
+#endif
+
kfree(master->unique);
kfree(master);
}
Index: src/sys/external/bsd/drm2/dist/drm/drm_bufs.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_bufs.c:1.15 src/sys/external/bsd/drm2/dist/drm/drm_bufs.c:1.16
--- src/sys/external/bsd/drm2/dist/drm/drm_bufs.c:1.15 Sun Dec 19 00:55:51 2021
+++ src/sys/external/bsd/drm2/dist/drm/drm_bufs.c Sun Dec 19 12:30:04 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_bufs.c,v 1.15 2021/12/19 00:55:51 riastradh Exp $ */
+/* $NetBSD: drm_bufs.c,v 1.16 2021/12/19 12:30:04 riastradh Exp $ */
/*
* Legacy: Generic DRM Buffer Management
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_bufs.c,v 1.15 2021/12/19 00:55:51 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_bufs.c,v 1.16 2021/12/19 12:30:04 riastradh Exp $");
#include <linux/export.h>
#include <linux/log2.h>
@@ -262,14 +262,14 @@ static int drm_addmap_core(struct drm_de
map->offset = (unsigned long)map->handle;
if (map->flags & _DRM_CONTAINS_LOCK) {
/* Prevent a 2nd X Server from creating a 2nd lock */
- spin_lock(&dev->primary->master->lock.spinlock);
+ spin_lock(&dev->master->lock.spinlock);
if (dev->master->lock.hw_lock != NULL) {
spin_unlock(&dev->master->lock.spinlock);
vfree(map->handle);
kfree(map);
return -EBUSY;
}
- spin_unlock(&dev->primary->master->lock.spinlock);
+ spin_unlock(&dev->master->lock.spinlock);
dev->sigdata.lock = dev->master->lock.hw_lock = map->handle; /* Pointer to lock */
}
break;
@@ -588,7 +588,7 @@ int drm_legacy_rmmap_locked(struct drm_d
* equivalent to having a master set?
*
* XXX There is copypasta of this in
- * drm_fops.c.
+ * drm_lock.c, drm_legacy_lock_master_cleanup.
*/
BUG_ON(master->lock.hw_lock == NULL);
if (dev->sigdata.lock == master->lock.hw_lock)
@@ -1514,8 +1514,13 @@ int drm_legacy_freebufs(struct drm_devic
idx = array_index_nospec(idx, dma->buf_count);
buf = dma->buflist[idx];
if (buf->file_priv != file_priv) {
+#ifdef __NetBSD__
+ DRM_ERROR("Process %d freeing buffer not owned\n",
+ (int)curproc->p_pid);
+#else
DRM_ERROR("Process %d freeing buffer not owned\n",
task_pid_nr(current));
+#endif
return -EINVAL;
}
drm_legacy_free_buffer(dev, buf);
Index: src/sys/external/bsd/drm2/dist/drm/drm_context.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_context.c:1.8 src/sys/external/bsd/drm2/dist/drm/drm_context.c:1.9
--- src/sys/external/bsd/drm2/dist/drm/drm_context.c:1.8 Sun Dec 19 00:56:09 2021
+++ src/sys/external/bsd/drm2/dist/drm/drm_context.c Sun Dec 19 12:30:04 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_context.c,v 1.8 2021/12/19 00:56:09 riastradh Exp $ */
+/* $NetBSD: drm_context.c,v 1.9 2021/12/19 12:30:04 riastradh Exp $ */
/*
* Legacy: Generic DRM Contexts
@@ -31,8 +31,9 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_context.c,v 1.8 2021/12/19 00:56:09 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_context.c,v 1.9 2021/12/19 12:30:04 riastradh Exp $");
+#include <linux/err.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
Index: src/sys/external/bsd/drm2/dist/drm/drm_legacy_misc.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_legacy_misc.c:1.2 src/sys/external/bsd/drm2/dist/drm/drm_legacy_misc.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/drm_legacy_misc.c:1.2 Sat Dec 18 23:44:57 2021
+++ src/sys/external/bsd/drm2/dist/drm/drm_legacy_misc.c Sun Dec 19 12:30:04 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_legacy_misc.c,v 1.2 2021/12/18 23:44:57 riastradh Exp $ */
+/* $NetBSD: drm_legacy_misc.c,v 1.3 2021/12/19 12:30:04 riastradh Exp $ */
/*
* \file drm_legacy_misc.c
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_legacy_misc.c,v 1.2 2021/12/18 23:44:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_legacy_misc.c,v 1.3 2021/12/19 12:30:04 riastradh Exp $");
#include <drm/drm_agpsupport.h>
#include <drm/drm_device.h>
@@ -47,6 +47,8 @@ __KERNEL_RCSID(0, "$NetBSD: drm_legacy_m
#include "drm_internal.h"
#include "drm_legacy.h"
+#include <linux/nbsd-namespace.h>
+
void drm_legacy_init_members(struct drm_device *dev)
{
INIT_LIST_HEAD(&dev->ctxlist);
@@ -59,6 +61,7 @@ void drm_legacy_init_members(struct drm_
void drm_legacy_destroy_members(struct drm_device *dev)
{
mutex_destroy(&dev->ctxlist_mutex);
+ spin_lock_destroy(&dev->buf_lock);
}
int drm_legacy_setup(struct drm_device * dev)
@@ -108,5 +111,5 @@ void drm_legacy_dev_reinit(struct drm_de
void drm_master_legacy_init(struct drm_master *master)
{
spin_lock_init(&master->lock.spinlock);
- init_waitqueue_head(&master->lock.lock_queue);
+ DRM_INIT_WAITQUEUE(&master->lock.lock_queue, "drmlock");
}
Index: src/sys/external/bsd/drm2/drm/drm_lock.c
diff -u src/sys/external/bsd/drm2/drm/drm_lock.c:1.12 src/sys/external/bsd/drm2/drm/drm_lock.c:1.13
--- src/sys/external/bsd/drm2/drm/drm_lock.c:1.12 Sun Dec 19 09:52:00 2021
+++ src/sys/external/bsd/drm2/drm/drm_lock.c Sun Dec 19 12:30:05 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_lock.c,v 1.12 2021/12/19 09:52:00 riastradh Exp $ */
+/* $NetBSD: drm_lock.c,v 1.13 2021/12/19 12:30:05 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -46,14 +46,18 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.12 2021/12/19 09:52:00 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.13 2021/12/19 12:30:05 riastradh Exp $");
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/file.h>
#include <sys/systm.h>
+#include <drm/drm_device.h>
+#include <drm/drm_drv.h>
+#include <drm/drm_file.h>
#include <drm/drm_print.h>
+
#include "../dist/drm/drm_internal.h"
#include "../dist/drm/drm_legacy.h"
@@ -216,7 +220,31 @@ out1: spin_unlock(&master->lock.spinlock
out0: mutex_lock(&drm_global_mutex);
return error;
}
-#endif
+
+void
+drm_legacy_lock_master_cleanup(struct drm_device *dev,
+ struct drm_master *master)
+{
+
+ if (!drm_core_check_feature(dev, DRIVER_LEGACY))
+ return;
+
+ /*
+ * XXX Synchronize with _DRM_SHM case of
+ * drm_legacy_rmmap_locked in drm_bufs.c.
+ */
+ spin_lock(&master->lock.spinlock);
+ if (master->lock.hw_lock) {
+ if (dev->sigdata.lock == master->lock.hw_lock)
+ dev->sigdata.lock = NULL;
+ master->lock.hw_lock = NULL;
+ master->lock.file_priv = NULL;
+ DRM_SPIN_WAKEUP_ALL(&master->lock.lock_queue,
+ &master->lock.spinlock);
+ }
+ spin_unlock(&master->lock.spinlock);
+}
+#endif /* CONFIG_DRM_LEGACY */
/*
* Try to acquire the lock. Whether or not we acquire it, guarantee
Index: src/sys/external/bsd/drm2/drm/drm_scatter.c
diff -u src/sys/external/bsd/drm2/drm/drm_scatter.c:1.8 src/sys/external/bsd/drm2/drm/drm_scatter.c:1.9
--- src/sys/external/bsd/drm2/drm/drm_scatter.c:1.8 Sun Dec 19 10:32:59 2021
+++ src/sys/external/bsd/drm2/drm/drm_scatter.c Sun Dec 19 12:30:05 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_scatter.c,v 1.8 2021/12/19 10:32:59 riastradh Exp $ */
+/* $NetBSD: drm_scatter.c,v 1.9 2021/12/19 12:30:05 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,13 +30,14 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_scatter.c,v 1.8 2021/12/19 10:32:59 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_scatter.c,v 1.9 2021/12/19 12:30:05 riastradh Exp $");
#include <sys/types.h>
#include <sys/bus.h>
#include <sys/errno.h>
#include <sys/systm.h>
+#include <linux/mm.h>
#include <linux/slab.h>
#include <drm/drm_device.h>
Index: src/sys/external/bsd/drm2/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.69 src/sys/external/bsd/drm2/drm/files.drmkms:1.70
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.69 Sun Dec 19 12:23:16 2021
+++ src/sys/external/bsd/drm2/drm/files.drmkms Sun Dec 19 12:30:05 2021
@@ -1,4 +1,4 @@
-# $NetBSD: files.drmkms,v 1.69 2021/12/19 12:23:16 riastradh Exp $
+# $NetBSD: files.drmkms,v 1.70 2021/12/19 12:30:05 riastradh Exp $
version 20180827
@@ -88,7 +88,7 @@ file external/bsd/drm2/dist/drm/drm_bufs
file external/bsd/drm2/dist/drm/drm_context.c drmums
file external/bsd/drm2/dist/drm/drm_dma.c drmums
file external/bsd/drm2/dist/drm/drm_legacy_misc.c drmums
-file external/bsd/drm2/dist/drm/drm_lock.c drmums
+file external/bsd/drm2/drm/drm_lock.c drmums
file external/bsd/drm2/drm/drm_scatter.c drmums
# GPU scheduler
Index: src/sys/external/bsd/drm2/include/linux/io.h
diff -u src/sys/external/bsd/drm2/include/linux/io.h:1.7 src/sys/external/bsd/drm2/include/linux/io.h:1.8
--- src/sys/external/bsd/drm2/include/linux/io.h:1.7 Sun Dec 19 01:49:21 2021
+++ src/sys/external/bsd/drm2/include/linux/io.h Sun Dec 19 12:30:05 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: io.h,v 1.7 2021/12/19 01:49:21 riastradh Exp $ */
+/* $NetBSD: io.h,v 1.8 2021/12/19 12:30:05 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -33,6 +33,7 @@
#define _LINUX_IO_H_
#include <linux/types.h>
+#include <linux/err.h>
#include <asm/io.h>
Index: src/sys/external/bsd/drm2/include/linux/seq_file.h
diff -u src/sys/external/bsd/drm2/include/linux/seq_file.h:1.4 src/sys/external/bsd/drm2/include/linux/seq_file.h:1.5
--- src/sys/external/bsd/drm2/include/linux/seq_file.h:1.4 Sun Dec 19 09:43:34 2021
+++ src/sys/external/bsd/drm2/include/linux/seq_file.h Sun Dec 19 12:30:05 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: seq_file.h,v 1.4 2021/12/19 09:43:34 riastradh Exp $ */
+/* $NetBSD: seq_file.h,v 1.5 2021/12/19 12:30:05 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -32,6 +32,7 @@
#ifndef _LINUX_SEQ_FILE_H_
#define _LINUX_SEQ_FILE_H_
+#include <linux/capability.h>
#include <linux/string.h>
struct seq_file;