Module Name: src
Committed By: riastradh
Date: Sun Dec 19 12:23:42 UTC 2021
Modified Files:
src/sys/external/bsd/drm2/dist/drm/amd/amdgpu: amdgpu_drv.c
src/sys/external/bsd/drm2/dist/include/drm: drm_file.h
src/sys/external/bsd/drm2/drm: drm_cdevsw.c
Log Message:
amdgpu: Make amdgpu_file_to_fpriv work.
To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_drv.c
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/include/drm/drm_file.h
cvs rdiff -u -r1.28 -r1.29 src/sys/external/bsd/drm2/drm/drm_cdevsw.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/amd/amdgpu/amdgpu_drv.c
diff -u src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_drv.c:1.7 src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_drv.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_drv.c:1.7 Sun Dec 19 12:01:48 2021
+++ src/sys/external/bsd/drm2/dist/drm/amd/amdgpu/amdgpu_drv.c Sun Dec 19 12:23:42 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: amdgpu_drv.c,v 1.7 2021/12/19 12:01:48 riastradh Exp $ */
+/* $NetBSD: amdgpu_drv.c,v 1.8 2021/12/19 12:23:42 riastradh Exp $ */
/*
* Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: amdgpu_drv.c,v 1.7 2021/12/19 12:01:48 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: amdgpu_drv.c,v 1.8 2021/12/19 12:23:42 riastradh Exp $");
#include <drm/amdgpu_drm.h>
#include <drm/drm_drv.h>
@@ -1376,7 +1376,6 @@ static const struct file_operations amdg
static const struct uvm_pagerops amdgpu_gem_uvm_ops;
#endif
-#ifndef __NetBSD__
int amdgpu_file_to_fpriv(struct file *filp, struct amdgpu_fpriv **fpriv)
{
struct drm_file *file;
@@ -1384,15 +1383,22 @@ int amdgpu_file_to_fpriv(struct file *fi
if (!filp)
return -EINVAL;
+#ifdef __NetBSD__
+ if (filp->f_ops != &drm_fileops)
+ return -EINVAL;
+ file = filp->f_data;
+ if (file->minor->dev->driver != &kms_driver)
+ return -EINVAL;
+#else
if (filp->f_op != &amdgpu_driver_kms_fops) {
return -EINVAL;
}
file = filp->private_data;
+#endif
*fpriv = file->driver_priv;
return 0;
}
-#endif
static bool
amdgpu_get_crtc_scanout_position(struct drm_device *dev, unsigned int pipe,
Index: src/sys/external/bsd/drm2/dist/include/drm/drm_file.h
diff -u src/sys/external/bsd/drm2/dist/include/drm/drm_file.h:1.7 src/sys/external/bsd/drm2/dist/include/drm/drm_file.h:1.8
--- src/sys/external/bsd/drm2/dist/include/drm/drm_file.h:1.7 Sun Dec 19 01:59:03 2021
+++ src/sys/external/bsd/drm2/dist/include/drm/drm_file.h Sun Dec 19 12:23:42 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_file.h,v 1.7 2021/12/19 01:59:03 riastradh Exp $ */
+/* $NetBSD: drm_file.h,v 1.8 2021/12/19 12:23:42 riastradh Exp $ */
/*
* Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
@@ -391,8 +391,9 @@ static inline bool drm_is_render_client(
}
#ifdef __NetBSD__
-extern int drm_open_file(struct drm_file *, void *, struct drm_minor *);
-extern void drm_close_file(struct drm_file *);
+extern const struct fileops drm_fileops;
+int drm_open_file(struct drm_file *, void *, struct drm_minor *);
+void drm_close_file(struct drm_file *);
#else
int drm_open(struct inode *inode, struct file *filp);
ssize_t drm_read(struct file *filp, char __user *buffer,
Index: src/sys/external/bsd/drm2/drm/drm_cdevsw.c
diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.28 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.29
--- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.28 Sun Dec 19 11:36:41 2021
+++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c Sun Dec 19 12:23:42 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_cdevsw.c,v 1.28 2021/12/19 11:36:41 riastradh Exp $ */
+/* $NetBSD: drm_cdevsw.c,v 1.29 2021/12/19 12:23:42 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.28 2021/12/19 11:36:41 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.29 2021/12/19 12:23:42 riastradh Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -101,7 +101,7 @@ const struct cdevsw drm_cdevsw = {
.d_flag = D_NEGOFFSAFE,
};
-static const struct fileops drm_fileops = {
+const struct fileops drm_fileops = {
.fo_name = "drm",
.fo_read = drm_read,
.fo_write = fbadop_write,