CVS commit: src/sys/external/bsd/drm2/drm

2020-06-27 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Jun 27 13:41:44 UTC 2020

Modified Files:
src/sys/external/bsd/drm2/drm: drmfb.c

Log Message:
prop_data_create_data+prop_dictionary_set+prop_object_release -> 
prop_dictionary_set_data


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drmfb.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/drm/drmfb.c
diff -u src/sys/external/bsd/drm2/drm/drmfb.c:1.7 src/sys/external/bsd/drm2/drm/drmfb.c:1.8
--- src/sys/external/bsd/drm2/drm/drmfb.c:1.7	Fri May 31 20:25:58 2019
+++ src/sys/external/bsd/drm2/drm/drmfb.c	Sat Jun 27 13:41:44 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: drmfb.c,v 1.7 2019/05/31 20:25:58 jmcneill Exp $	*/
+/*	$NetBSD: drmfb.c,v 1.8 2020/06/27 13:41:44 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.7 2019/05/31 20:25:58 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.8 2020/06/27 13:41:44 jmcneill Exp $");
 
 #ifdef _KERNEL_OPT
 #include "vga.h"
@@ -141,10 +141,8 @@ drmfb_attach(struct drmfb_softc *sc, con
 		da->da_fb_helper->connector_info[n]->connector;
 		struct drm_property_blob *edid = connector->edid_blob_ptr;
 		if (edid && edid->length) {
-			prop_data_t edid_data =
-			prop_data_create_data(edid->data, edid->length);
-			prop_dictionary_set(dict, "EDID", edid_data);
-			prop_object_release(edid_data);
+			prop_dictionary_set_data(dict, "EDID", edid->data,
+			edid->length);
 			break;
 		}
 	}



CVS commit: src/sys/external/bsd/drm2/drm

2019-12-09 Thread Jonathan A. Kollasch
Module Name:src
Committed By:   jakllsch
Date:   Mon Dec  9 15:37:26 UTC 2019

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
build drm_panel.c w/ drmkms


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.32 src/sys/external/bsd/drm2/drm/files.drmkms:1.33
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.32	Mon Nov 18 20:02:09 2019
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Dec  9 15:37:26 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.32 2019/11/18 20:02:09 christos Exp $
+#	$NetBSD: files.drmkms,v 1.33 2019/12/09 15:37:26 jakllsch Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -89,6 +89,7 @@ file	external/bsd/drm2/drm/drm_memory.c	
 file	external/bsd/drm2/dist/drm/drm_mm.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_modes.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_modeset_lock.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_panel.c	drmkms
 #file	external/bsd/drm2/dist/drm/drm_pci.c	drmkms	# drmkms_pci
 file	external/bsd/drm2/dist/drm/drm_plane_helper.c	drmkms
 #file	external/bsd/drm2/dist/drm/drm_platform.c	drmkms



CVS commit: src/sys/external/bsd/drm2/drm

2019-03-07 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Fri Mar  8 02:53:22 UTC 2019

Modified Files:
src/sys/external/bsd/drm2/drm: drm_gem_cma_helper.c

Log Message:
drm_gem_cma_fault() is a UVM fault function.  return netbsd errnos.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.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/drm/drm_gem_cma_helper.c
diff -u src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.6 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.7
--- src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.6	Mon Aug 27 15:27:43 2018
+++ src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c	Fri Mar  8 02:53:22 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_gem_cma_helper.c,v 1.6 2018/08/27 15:27:43 riastradh Exp $ */
+/* $NetBSD: drm_gem_cma_helper.c,v 1.7 2019/03/08 02:53:22 mrg Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.6 2018/08/27 15:27:43 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.7 2019/03/08 02:53:22 mrg Exp $");
 
 #include 
 #include 
@@ -194,7 +194,7 @@ drm_gem_cma_fault(struct uvm_faultinfo *
 	vm_prot_t mapprot;
 
 	if (UVM_ET_ISCOPYONWRITE(entry))
-		return -EIO;
+		return EIO;
 
 	curr_offset = entry->offset + (vaddr - entry->start);
 	curr_va = vaddr;
@@ -210,7 +210,7 @@ drm_gem_cma_fault(struct uvm_faultinfo *
 		mdpgno = bus_dmamem_mmap(obj->dmat, obj->dmasegs, 1,
 		curr_offset, access_type, BUS_DMA_PREFETCHABLE);
 		if (mdpgno == -1) {
-			retval = -EIO;
+			retval = EIO;
 			break;
 		}
 		paddr = pmap_phys_address(mdpgno);
@@ -222,7 +222,7 @@ drm_gem_cma_fault(struct uvm_faultinfo *
 			pmap_update(ufi->orig_map->pmap);
 			uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
 			uvm_wait("drm_gem_cma_fault");
-			return -ERESTART;
+			return ERESTART;
 		}
 	}
 



CVS commit: src/sys/external/bsd/drm2/drm

2019-01-23 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Wed Jan 23 19:02:49 UTC 2019

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cache.c

Log Message:
skip clflush on aarch64, too


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/drm/drm_cache.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/drm/drm_cache.c
diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.12 src/sys/external/bsd/drm2/drm/drm_cache.c:1.13
--- src/sys/external/bsd/drm2/drm/drm_cache.c:1.12	Mon Aug 27 15:29:19 2018
+++ src/sys/external/bsd/drm2/drm/drm_cache.c	Wed Jan 23 19:02:49 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cache.c,v 1.12 2018/08/27 15:29:19 riastradh Exp $	*/
+/*	$NetBSD: drm_cache.c,v 1.13 2019/01/23 19:02:49 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.12 2018/08/27 15:29:19 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.13 2019/01/23 19:02:49 jmcneill Exp $");
 
 #include 
 #include 
@@ -42,7 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_cache.c,
 
 #include 
 
-#if !defined(__arm__)
+#if !defined(__arm__) && !defined(__aarch64__)
 #define DRM_CLFLUSH	1
 #endif
 



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-30 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Thu Aug 30 22:39:54 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_agp_hook.c

Log Message:
if hooks init works, store the hooks in the agp.  fixes start up
crash on an old radeon laptop.  from @riastradh.

the console also now works, unlike previous drm2, where eg, the
problems from PR#49744 are seen.

unfortunately, i got a crash starting X, and no ddb yet, so we
can't re-enable the r100/r200 parts here yet.  once this is
known to be working we can delete the old radeondrm code, and
remove the hacks to disable drm2 there.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drm_agp_hook.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/drm/drm_agp_hook.c
diff -u src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.2 src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.3
--- src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.2	Thu Aug 30 19:03:14 2018
+++ src/sys/external/bsd/drm2/drm/drm_agp_hook.c	Thu Aug 30 22:39:54 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_agp_hook.c,v 1.2 2018/08/30 19:03:14 tnn Exp $	*/
+/*	$NetBSD: drm_agp_hook.c,v 1.3 2018/08/30 22:39:54 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_agp_hook.c,v 1.2 2018/08/30 19:03:14 tnn Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_agp_hook.c,v 1.3 2018/08/30 22:39:54 mrg Exp $");
 
 #include 
 #include 
@@ -145,6 +145,8 @@ drm_agp_init(struct drm_device *dev)
 	agp = hooks->agph_init(dev);
 	if (agp == NULL)
 		drm_agp_hooks_release(hooks);
+	else
+		agp->hooks = hooks;
 
 	return agp;
 }



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-30 Thread Tobias Nygren
Module Name:src
Committed By:   tnn
Date:   Thu Aug 30 19:03:14 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_agp_hook.c

Log Message:
initialize error variable


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/drm/drm_agp_hook.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/drm/drm_agp_hook.c
diff -u src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.1 src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.2
--- src/sys/external/bsd/drm2/drm/drm_agp_hook.c:1.1	Tue Aug 28 03:41:39 2018
+++ src/sys/external/bsd/drm2/drm/drm_agp_hook.c	Thu Aug 30 19:03:14 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_agp_hook.c,v 1.1 2018/08/28 03:41:39 riastradh Exp $	*/
+/*	$NetBSD: drm_agp_hook.c,v 1.2 2018/08/30 19:03:14 tnn Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_agp_hook.c,v 1.1 2018/08/28 03:41:39 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_agp_hook.c,v 1.2 2018/08/30 19:03:14 tnn Exp $");
 
 #include 
 #include 
@@ -89,7 +89,7 @@ drm_agp_register(const struct drm_agp_ho
 int
 drm_agp_deregister(const struct drm_agp_hooks *hooks)
 {
-	int error;
+	int error = 0;
 
 	mutex_enter(_hooks.lock);
 	KASSERT(agp_hooks.hooks == hooks);



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 15:32:51 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_module.c

Log Message:
Make sure to create and destroy the lock too...


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/drm/drm_module.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/drm/drm_module.c
diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.12 src/sys/external/bsd/drm2/drm/drm_module.c:1.13
--- src/sys/external/bsd/drm2/drm/drm_module.c:1.12	Mon Aug 27 15:31:27 2018
+++ src/sys/external/bsd/drm2/drm/drm_module.c	Mon Aug 27 15:32:51 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_module.c,v 1.12 2018/08/27 15:31:27 riastradh Exp $	*/
+/*	$NetBSD: drm_module.c,v 1.13 2018/08/27 15:32:51 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.12 2018/08/27 15:31:27 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.13 2018/08/27 15:32:51 riastradh Exp $");
 
 #include 
 #include 
@@ -84,6 +84,7 @@ drm_init(void)
 	spin_lock_init(_minor_lock);
 	idr_init(_minors_idr);
 	linux_mutex_init(_global_mutex);
+	mutex_init(_unique_hook.lock, MUTEX_DEFAULT, IPL_NONE);
 	drm_connector_ida_init();
 	drm_global_init();
 	drm_sysctl_init(_def);
@@ -113,6 +114,7 @@ drm_fini(void)
 	drm_sysctl_fini(_def);
 	drm_global_release();
 	drm_connector_ida_destroy();
+	mutex_destroy(_unique_hook.lock);
 	linux_mutex_destroy(_global_mutex);
 	idr_destroy(_minors_idr);
 	spin_lock_destroy(_minor_lock);



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 15:29:42 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
Unhook upstream drm_pci.c, apparently overridden by files.drmkms_pci.


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.28 src/sys/external/bsd/drm2/drm/files.drmkms:1.29
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.28	Mon Aug 27 15:22:54 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 15:29:42 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.28 2018/08/27 15:22:54 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.29 2018/08/27 15:29:42 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -88,7 +88,7 @@ file	external/bsd/drm2/drm/drm_memory.c	
 file	external/bsd/drm2/dist/drm/drm_mm.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_modes.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_modeset_lock.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_pci.c	drmkms
+#file	external/bsd/drm2/dist/drm/drm_pci.c	drmkms	# drmkms_pci
 file	external/bsd/drm2/dist/drm/drm_plane_helper.c	drmkms
 #file	external/bsd/drm2/dist/drm/drm_platform.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_prime.c	drmkms



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 15:29:19 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cache.c

Log Message:
Draft sparc cache flushing.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/drm/drm_cache.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/drm/drm_cache.c
diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.11 src/sys/external/bsd/drm2/drm/drm_cache.c:1.12
--- src/sys/external/bsd/drm2/drm/drm_cache.c:1.11	Mon Aug 27 15:24:27 2018
+++ src/sys/external/bsd/drm2/drm/drm_cache.c	Mon Aug 27 15:29:19 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cache.c,v 1.11 2018/08/27 15:24:27 riastradh Exp $	*/
+/*	$NetBSD: drm_cache.c,v 1.12 2018/08/27 15:29:19 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.11 2018/08/27 15:24:27 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.12 2018/08/27 15:29:19 riastradh Exp $");
 
 #include 
 #include 
@@ -174,6 +174,65 @@ drm_md_clflush_virt_range(const void *pt
 		asm volatile ("clflush %0" : : "m" (*(const char *)va));
 }
 
+#elif defined(__sparc__) || defined(__sparc64__)
+
+#ifdef __sparc64__
+#include 
+#else
+#include 
+#endif
+
+static bool
+drm_md_clflush_finegrained_p(void)
+{
+	return true;
+}
+
+static void
+drm_md_clflush_all(void)
+{
+	panic("don't know how to flush entire cache on sparc64");
+}
+
+static void
+drm_md_clflush_begin(void)
+{
+	membar_Sync();		/* unsure if needed */
+}
+
+static void
+drm_md_clflush_commit(void)
+{
+	membar_Sync();		/* unsure if needed */
+}
+
+static void
+drm_md_clflush_page(struct page *page)
+{
+#ifdef __sparc64__
+	paddr_t pa = VM_PAGE_TO_PHYS(>p_vmp);
+
+	cache_flush_phys(pa, PAGE_SIZE, 0);
+#else
+	void *const vaddr = kmap_atomic(page);
+
+	cache_flush(vaddr, PAGE_SIZE);
+
+	kunmap_atomic(vaddr);
+#endif
+}
+
+static void
+drm_md_clflush_virt_range(const void *ptr, size_t nbytes)
+{
+#ifdef __sparc64__
+	/* XXX Mega-kludge -- doesn't seem to be a way to flush by vaddr.  */
+	blast_dcache();
+#else
+	cache_flush(ptr, nbytes);
+#endif
+}
+
 #elif defined(__powerpc__)
 
 static bool



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 15:27:43 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_gem_cma_helper.c

Log Message:
Use dmat, not bus_dmat, to respect drm_limit_dma_space.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.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/drm/drm_gem_cma_helper.c
diff -u src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.5 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.6
--- src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.5	Mon Aug 27 15:27:16 2018
+++ src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c	Mon Aug 27 15:27:43 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_gem_cma_helper.c,v 1.5 2018/08/27 15:27:16 riastradh Exp $ */
+/* $NetBSD: drm_gem_cma_helper.c,v 1.6 2018/08/27 15:27:43 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.5 2018/08/27 15:27:16 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.6 2018/08/27 15:27:43 riastradh Exp $");
 
 #include 
 #include 
@@ -42,7 +42,7 @@ drm_gem_cma_create_internal(struct drm_d
 	int error, nsegs;
 
 	obj = kmem_zalloc(sizeof(*obj), KM_SLEEP);
-	obj->dmat = ddev->bus_dmat;
+	obj->dmat = ddev->dmat;
 	obj->dmasize = size;
 
 	if (sgt) {



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 15:27:16 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_gem_cma_helper.c

Log Message:
drm_gem_cma_create_internal can fail.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.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/drm/drm_gem_cma_helper.c
diff -u src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.4 src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.5
--- src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c:1.4	Mon Aug 27 15:26:50 2018
+++ src/sys/external/bsd/drm2/drm/drm_gem_cma_helper.c	Mon Aug 27 15:27:16 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: drm_gem_cma_helper.c,v 1.4 2018/08/27 15:26:50 riastradh Exp $ */
+/* $NetBSD: drm_gem_cma_helper.c,v 1.5 2018/08/27 15:27:16 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2015-2017 Jared McNeill 
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.4 2018/08/27 15:26:50 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_gem_cma_helper.c,v 1.5 2018/08/27 15:27:16 riastradh Exp $");
 
 #include 
 #include 
@@ -254,6 +254,8 @@ drm_gem_cma_prime_import_sg_table(struct
 	struct drm_gem_cma_object *obj;
 
 	obj = drm_gem_cma_create_internal(ddev, size, sgt);
+	if (obj == NULL)
+		return ERR_PTR(-ENOMEM);
 
 	return >base;
 }



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 15:24:27 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cache.c

Log Message:
Factor mfence out.  Simplify a little.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/external/bsd/drm2/drm/drm_cache.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/drm/drm_cache.c
diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.10 src/sys/external/bsd/drm2/drm/drm_cache.c:1.11
--- src/sys/external/bsd/drm2/drm/drm_cache.c:1.10	Mon Aug 27 15:23:57 2018
+++ src/sys/external/bsd/drm2/drm/drm_cache.c	Mon Aug 27 15:24:27 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cache.c,v 1.10 2018/08/27 15:23:57 riastradh Exp $	*/
+/*	$NetBSD: drm_cache.c,v 1.11 2018/08/27 15:24:27 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.10 2018/08/27 15:23:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.11 2018/08/27 15:24:27 riastradh Exp $");
 
 #include 
 #include 
@@ -49,6 +49,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_cache.c,
 #if defined(DRM_CLFLUSH)
 static bool		drm_md_clflush_finegrained_p(void);
 static void		drm_md_clflush_all(void);
+static void		drm_md_clflush_begin(void);
 static void		drm_md_clflush_commit(void);
 static void		drm_md_clflush_page(struct page *);
 static void		drm_md_clflush_virt_range(const void *, size_t);
@@ -59,6 +60,7 @@ drm_clflush_pages(struct page **pages, u
 {
 #if defined(DRM_CLFLUSH)
 	if (drm_md_clflush_finegrained_p()) {
+		drm_md_clflush_begin();
 		while (npages--)
 			drm_md_clflush_page(pages[npages]);
 		drm_md_clflush_commit();
@@ -75,6 +77,7 @@ drm_clflush_pglist(struct pglist *list)
 	if (drm_md_clflush_finegrained_p()) {
 		struct vm_page *page;
 
+		drm_md_clflush_begin();
 		TAILQ_FOREACH(page, list, pageq.queue)
 			drm_md_clflush_page(container_of(page, struct page,
 p_vmp));
@@ -90,6 +93,7 @@ drm_clflush_page(struct page *page)
 {
 #if defined(DRM_CLFLUSH)
 	if (drm_md_clflush_finegrained_p()) {
+		drm_md_clflush_begin();
 		drm_md_clflush_page(page);
 		drm_md_clflush_commit();
 	} else {
@@ -103,6 +107,7 @@ drm_clflush_virt_range(const void *vaddr
 {
 #if defined(DRM_CLFLUSH)
 	if (drm_md_clflush_finegrained_p()) {
+		drm_md_clflush_begin();
 		drm_md_clflush_virt_range(vaddr, nbytes);
 		drm_md_clflush_commit();
 	} else {
@@ -122,19 +127,6 @@ drm_md_clflush_finegrained_p(void)
 }
 
 static void
-drm_x86_clflush(const void *vaddr)
-{
-	asm volatile ("clflush %0" : : "m" (*(const char *)vaddr));
-}
-
-static size_t
-drm_x86_clflush_size(void)
-{
-	KASSERT(drm_md_clflush_finegrained_p());
-	return cpu_info_primary.ci_cflush_lsize;
-}
-
-static void
 drm_x86_clflush_xc(void *arg0 __unused, void *arg1 __unused)
 {
 	wbinvd();
@@ -147,8 +139,16 @@ drm_md_clflush_all(void)
 }
 
 static void
+drm_md_clflush_begin(void)
+{
+	/* Support for CLFLUSH implies support for MFENCE.  */
+	x86_mfence();
+}
+
+static void
 drm_md_clflush_commit(void)
 {
+	x86_mfence();
 }
 
 static void
@@ -162,37 +162,20 @@ drm_md_clflush_page(struct page *page)
 }
 
 static void
-drm_md_clflush_virt_range(const void *vaddr, size_t nbytes)
+drm_md_clflush_virt_range(const void *ptr, size_t nbytes)
 {
-	const unsigned clflush_size = drm_x86_clflush_size();
-	const vaddr_t va = (vaddr_t)vaddr;
-	const char *const start = (const void *)rounddown(va, clflush_size);
-	const char *const end = (const void *)roundup(va + nbytes,
-	clflush_size);
-	const char *p;
+	const unsigned clflush_size = cpu_info_primary.ci_cflush_lsize;
+	const vaddr_t vaddr = (vaddr_t)ptr;
+	const vaddr_t start = rounddown(vaddr, clflush_size);
+	const vaddr_t end = roundup(vaddr + nbytes, clflush_size);
+	vaddr_t va;
 
-	/* Support for CLFLUSH implies support for MFENCE.  */
-	KASSERT(drm_md_clflush_finegrained_p());
-	x86_mfence();
-	for (p = start; p < end; p += clflush_size)
-		drm_x86_clflush(p);
-	x86_mfence();
+	for (va = start; va < end; va += clflush_size)
+		asm volatile ("clflush %0" : : "m" (*(const char *)va));
 }
 
 #elif defined(__powerpc__)
 
-static void
-drm_ppc_dcbf(vaddr_t va, vsize_t off)
-{
-	asm volatile ("dcbf\t%0,%1" : : "b"(va), "r"(off));
-}
-
-static void
-drm_ppc_sync(void)
-{
-	asm volatile ("sync" ::: "memory");
-}
-
 static bool
 drm_md_clflush_finegrained_p(void)
 {
@@ -206,9 +189,14 @@ drm_md_clflush_all(void)
 }
 
 static void
+drm_md_clflush_begin(void)
+{
+}
+
+static void
 drm_md_clflush_commit(void)
 {
-	drm_ppc_sync();
+	asm volatile ("sync" ::: "memory");
 }
 
 static void
@@ -232,7 +220,7 @@ drm_md_clflush_virt_range(const void *pt
 	vsize_t off;
 
 	for (off = 0; off < len; off += dcsize)
-		drm_ppc_dcbf(start, off);
+		asm volatile ("dcbf\t%0,%1" : : "b"(start), "r"(off));
 }
 
 #endif



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 15:23:57 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cache.c

Log Message:
Need sync after a series of dcbf's on powerpc.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/drm/drm_cache.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/drm/drm_cache.c
diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.9 src/sys/external/bsd/drm2/drm/drm_cache.c:1.10
--- src/sys/external/bsd/drm2/drm/drm_cache.c:1.9	Mon Aug 27 15:11:46 2018
+++ src/sys/external/bsd/drm2/drm/drm_cache.c	Mon Aug 27 15:23:57 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cache.c,v 1.9 2018/08/27 15:11:46 riastradh Exp $	*/
+/*	$NetBSD: drm_cache.c,v 1.10 2018/08/27 15:23:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.9 2018/08/27 15:11:46 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.10 2018/08/27 15:23:57 riastradh Exp $");
 
 #include 
 #include 
@@ -49,6 +49,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_cache.c,
 #if defined(DRM_CLFLUSH)
 static bool		drm_md_clflush_finegrained_p(void);
 static void		drm_md_clflush_all(void);
+static void		drm_md_clflush_commit(void);
 static void		drm_md_clflush_page(struct page *);
 static void		drm_md_clflush_virt_range(const void *, size_t);
 #endif
@@ -60,6 +61,7 @@ drm_clflush_pages(struct page **pages, u
 	if (drm_md_clflush_finegrained_p()) {
 		while (npages--)
 			drm_md_clflush_page(pages[npages]);
+		drm_md_clflush_commit();
 	} else {
 		drm_md_clflush_all();
 	}
@@ -76,6 +78,7 @@ drm_clflush_pglist(struct pglist *list)
 		TAILQ_FOREACH(page, list, pageq.queue)
 			drm_md_clflush_page(container_of(page, struct page,
 p_vmp));
+		drm_md_clflush_commit();
 	} else {
 		drm_md_clflush_all();
 	}
@@ -86,10 +89,12 @@ void
 drm_clflush_page(struct page *page)
 {
 #if defined(DRM_CLFLUSH)
-	if (drm_md_clflush_finegrained_p())
+	if (drm_md_clflush_finegrained_p()) {
 		drm_md_clflush_page(page);
-	else
+		drm_md_clflush_commit();
+	} else {
 		drm_md_clflush_all();
+	}
 #endif
 }
 
@@ -97,10 +102,12 @@ void
 drm_clflush_virt_range(const void *vaddr, size_t nbytes)
 {
 #if defined(DRM_CLFLUSH)
-	if (drm_md_clflush_finegrained_p())
+	if (drm_md_clflush_finegrained_p()) {
 		drm_md_clflush_virt_range(vaddr, nbytes);
-	else
+		drm_md_clflush_commit();
+	} else {
 		drm_md_clflush_all();
+	}
 #endif
 }
 
@@ -140,6 +147,11 @@ drm_md_clflush_all(void)
 }
 
 static void
+drm_md_clflush_commit(void)
+{
+}
+
+static void
 drm_md_clflush_page(struct page *page)
 {
 	void *const vaddr = kmap_atomic(page);
@@ -175,6 +187,12 @@ drm_ppc_dcbf(vaddr_t va, vsize_t off)
 	asm volatile ("dcbf\t%0,%1" : : "b"(va), "r"(off));
 }
 
+static void
+drm_ppc_sync(void)
+{
+	asm volatile ("sync" ::: "memory");
+}
+
 static bool
 drm_md_clflush_finegrained_p(void)
 {
@@ -188,6 +206,12 @@ drm_md_clflush_all(void)
 }
 
 static void
+drm_md_clflush_commit(void)
+{
+	drm_ppc_sync();
+}
+
+static void
 drm_md_clflush_page(struct page *page)
 {
 	void *const vaddr = kmap_atomic(page);



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 15:11:46 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cache.c

Log Message:
Implement drm_md_clflush_* for powerpc with dcbf.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/drm/drm_cache.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/drm/drm_cache.c
diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.8 src/sys/external/bsd/drm2/drm/drm_cache.c:1.9
--- src/sys/external/bsd/drm2/drm/drm_cache.c:1.8	Sat Oct 17 21:11:56 2015
+++ src/sys/external/bsd/drm2/drm/drm_cache.c	Mon Aug 27 15:11:46 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cache.c,v 1.8 2015/10/17 21:11:56 jmcneill Exp $	*/
+/*	$NetBSD: drm_cache.c,v 1.9 2018/08/27 15:11:46 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.8 2015/10/17 21:11:56 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.9 2018/08/27 15:11:46 riastradh Exp $");
 
 #include 
 #include 
@@ -167,4 +167,48 @@ drm_md_clflush_virt_range(const void *va
 	x86_mfence();
 }
 
-#endif	/* defined(__i386__) || defined(__x86_64__) */
+#elif defined(__powerpc__)
+
+static void
+drm_ppc_dcbf(vaddr_t va, vsize_t off)
+{
+	asm volatile ("dcbf\t%0,%1" : : "b"(va), "r"(off));
+}
+
+static bool
+drm_md_clflush_finegrained_p(void)
+{
+	return true;
+}
+
+static void
+drm_md_clflush_all(void)
+{
+	panic("don't know how to flush entire cache on powerpc");
+}
+
+static void
+drm_md_clflush_page(struct page *page)
+{
+	void *const vaddr = kmap_atomic(page);
+
+	drm_md_clflush_virt_range(vaddr, PAGE_SIZE);
+
+	kunmap_atomic(vaddr);
+}
+
+static void
+drm_md_clflush_virt_range(const void *ptr, size_t nbytes)
+{
+	const unsigned dcsize = curcpu()->ci_ci.dcache_line_size;
+	vaddr_t va = (vaddr_t)ptr;
+	vaddr_t start = rounddown(va, dcsize);
+	vaddr_t end = roundup(va + nbytes, dcsize);
+	vsize_t len = end - start;
+	vsize_t off;
+
+	for (off = 0; off < len; off += dcsize)
+		drm_ppc_dcbf(start, off);
+}
+
+#endif



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 14:20:11 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_fops.c

Log Message:
Make sure all of struct drm_file gets initialized.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/drm/drm_fops.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/drm/drm_fops.c
diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.12 src/sys/external/bsd/drm2/drm/drm_fops.c:1.13
--- src/sys/external/bsd/drm2/drm/drm_fops.c:1.12	Mon Aug 27 14:15:24 2018
+++ src/sys/external/bsd/drm2/drm/drm_fops.c	Mon Aug 27 14:20:11 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_fops.c,v 1.12 2018/08/27 14:15:24 riastradh Exp $	*/
+/*	$NetBSD: drm_fops.c,v 1.13 2018/08/27 14:20:11 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.12 2018/08/27 14:15:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.13 2018/08/27 14:20:11 riastradh Exp $");
 
 #include 
 #include 
@@ -56,6 +56,8 @@ drm_open_file(struct drm_file *file, voi
 	file->is_master = false;
 	file->stereo_allowed = false;
 	file->universal_planes = false;
+	file->atomic = false;
+	file->allowed_master = false;
 	file->magic = 0;
 	INIT_LIST_HEAD(>lhead);
 	file->minor = minor;
@@ -67,10 +69,12 @@ drm_open_file(struct drm_file *file, voi
 	file->master = NULL;
 	INIT_LIST_HEAD(>fbs);
 	linux_mutex_init(>fbs_lock);
+	INIT_LIST_HEAD(>blobs);
 	DRM_INIT_WAITQUEUE(>event_wait, "drmevent");
 	selinit(>event_selq);
 	INIT_LIST_HEAD(>event_list);
 	file->event_space = 0x1000; /* XXX cargo-culted from Linux */
+	/* file->prime is initialized by drm_prime_init_file_private.  */
 
 	if (drm_core_check_feature(dev, DRIVER_GEM))
 		drm_gem_open(dev, file);



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 14:15:13 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_fops.c

Log Message:
Release the magic before releasing the master.

Releasing the master frees the idr into which we are trying to
release the magic.  Use of magic that has been freed sounds like a
dangerous proposition.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/external/bsd/drm2/drm/drm_fops.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/drm/drm_fops.c
diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.10 src/sys/external/bsd/drm2/drm/drm_fops.c:1.11
--- src/sys/external/bsd/drm2/drm/drm_fops.c:1.10	Mon Aug 27 07:53:52 2018
+++ src/sys/external/bsd/drm2/drm/drm_fops.c	Mon Aug 27 14:15:12 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_fops.c,v 1.10 2018/08/27 07:53:52 riastradh Exp $	*/
+/*	$NetBSD: drm_fops.c,v 1.11 2018/08/27 14:15:12 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.10 2018/08/27 07:53:52 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.11 2018/08/27 14:15:12 riastradh Exp $");
 
 #include 
 #include 
@@ -214,6 +214,12 @@ drm_close_file(struct drm_file *file)
 	struct drm_minor *const minor = file->minor;
 	struct drm_device *const dev = minor->dev;
 
+	mutex_lock(>struct_mutex);
+	list_del(>lhead);
+	if (file->magic)
+		idr_remove(>master->magic_map, file->magic);
+	mutex_unlock(>struct_mutex);
+
 	if (dev->driver->preclose)
 		(*dev->driver->preclose)(dev, file);
 
@@ -229,12 +235,6 @@ drm_close_file(struct drm_file *file)
 	drm_legacy_ctxbitmap_flush(dev, file);
 	drm_close_file_master(file);
 
-	mutex_lock(>struct_mutex);
-	list_del(>lhead);
-	if (file->magic)
-		idr_remove(>master->magic_map, file->magic);
-	mutex_unlock(>struct_mutex);
-
 	if (dev->driver->postclose)
 		(*dev->driver->postclose)(dev, file);
 #ifndef __NetBSD__		/* XXX drm prime */



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 14:15:24 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_fops.c

Log Message:
Sync drm_close_file: call drm_property_release_user_blobs.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/drm/drm_fops.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/drm/drm_fops.c
diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.11 src/sys/external/bsd/drm2/drm/drm_fops.c:1.12
--- src/sys/external/bsd/drm2/drm/drm_fops.c:1.11	Mon Aug 27 14:15:12 2018
+++ src/sys/external/bsd/drm2/drm/drm_fops.c	Mon Aug 27 14:15:24 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_fops.c,v 1.11 2018/08/27 14:15:12 riastradh Exp $	*/
+/*	$NetBSD: drm_fops.c,v 1.12 2018/08/27 14:15:24 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.11 2018/08/27 14:15:12 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.12 2018/08/27 14:15:24 riastradh Exp $");
 
 #include 
 #include 
@@ -228,8 +228,10 @@ drm_close_file(struct drm_file *file)
 	if (drm_core_check_feature(dev, DRIVER_HAVE_DMA))
 		drm_legacy_reclaim_buffers(dev, file);
 	drm_events_release(file);
-	if (drm_core_check_feature(dev, DRIVER_MODESET))
+	if (drm_core_check_feature(dev, DRIVER_MODESET)) {
 		drm_fb_release(file);
+		drm_property_destroy_user_blobs(dev, file);
+	}
 	if (drm_core_check_feature(dev, DRIVER_GEM))
 		drm_gem_release(dev, file);
 	drm_legacy_ctxbitmap_flush(dev, file);
@@ -237,12 +239,12 @@ drm_close_file(struct drm_file *file)
 
 	if (dev->driver->postclose)
 		(*dev->driver->postclose)(dev, file);
+
 #ifndef __NetBSD__		/* XXX drm prime */
 	if (drm_core_check_feature(dev, DRIVER_PRIME))
 		drm_prime_destroy_file_private(>prime);
 #endif
 
-
 	seldestroy(>event_selq);
 	DRM_DESTROY_WAITQUEUE(>event_wait);
 	linux_mutex_destroy(>fbs_lock);



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 14:11:04 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cdevsw.c

Log Message:
Locks are not like negatives: doubles don't cancel out.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 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/drm/drm_cdevsw.c
diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.9 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.10
--- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.9	Mon Aug 27 07:54:07 2018
+++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c	Mon Aug 27 14:11:04 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cdevsw.c,v 1.9 2018/08/27 07:54:07 riastradh Exp $	*/
+/*	$NetBSD: drm_cdevsw.c,v 1.10 2018/08/27 14:11:04 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.9 2018/08/27 07:54:07 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.10 2018/08/27 14:11:04 riastradh Exp $");
 
 #include 
 #include 
@@ -148,7 +148,7 @@ drm_open(dev_t d, int flags, int fmt, st
 	}
 	firstopen = (dev->open_count == 0);
 	dev->open_count++;
-	mutex_lock(_global_mutex);
+	mutex_unlock(_global_mutex);
 
 	if (firstopen) {
 		/* XXX errno Linux->NetBSD */



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 13:53:20 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
Sort.  Put CWARNFLAGS next to source lists.


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.25 src/sys/external/bsd/drm2/drm/files.drmkms:1.26
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.25	Mon Aug 27 07:54:28 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 13:53:20 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.25 2018/08/27 07:54:28 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.26 2018/08/27 13:53:20 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -11,9 +11,14 @@ define	drmkms_i2c: drmkms_linux
 define	drmkms: drmkms_linux, drmkms_i2c, linux
 
 defflag		opt_drmkms.h	DRMKMS_DEBUG
+
+# Overrides first.
 makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/include"
 makeoptions	drmkms_ttm	CPPFLAGS+="-I$S/external/bsd/drm2/include/drm"
+
 makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/common/include"
+
+# Then upstream.
 makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/dist/include"
 makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/dist/include/drm"
 makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/dist/uapi"
@@ -24,31 +29,32 @@ makeoptions 	drmkms	CPPFLAGS+="-I$S/exte
 # under dist/include/uapi rather than dist/uapi.)
 makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/dist"
 
-makeoptions 	drmkms 	"CWARNFLAGS.drm_atomic_helper.c"+="-Wno-shadow"
-makeoptions 	drmkms 	"CWARNFLAGS.drm_crtc.c"+="-Wno-shadow"
-makeoptions 	drmkms 	"CWARNFLAGS.drm_crtc.c"+="-Wno-missing-field-initializers"
-makeoptions 	drmkms 	"CWARNFLAGS.drm_edid.c"+="-Wno-shadow"
-makeoptions 	drmkms 	"CWARNFLAGS.drm_ioctl.c"+="-Wno-shadow"
-
 # XXX Should probably be in a header file.  opt_drmkms.h?
 makeoptions	drmkms	CPPFLAGS+="-D__KERNEL__"
 
-makeoptions	drmkms	CPPFLAGS+="-DCONFIG_FB=0"
 makeoptions	drmkms	CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE=0"
 makeoptions	drmkms	CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE_MODULE=0"
+makeoptions	drmkms	CPPFLAGS+="-DCONFIG_FB=0"
 
+# NetBSD additions.
 file	external/bsd/drm2/drm/drm_cdevsw.c		drmkms
-file	external/bsd/drm2/drm/drm_gem_vm.c		drmkms
 file	external/bsd/drm2/drm/drm_gem_cma_helper.c	drmkms
+file	external/bsd/drm2/drm/drm_gem_vm.c		drmkms
 file	external/bsd/drm2/drm/drm_module.c		drmkms
 file	external/bsd/drm2/drm/drm_sysctl.c		drmkms
 
-# Generic, unaccelerated drm-based framebuffer.
+# Generic, unaccelerated kms framebuffer.
 define	drmfb: genfb
 file	external/bsd/drm2/drm/drmfb.c			drmfb
 
 include "external/bsd/drm2/ttm/files.ttm"
 
+makeoptions 	drmkms 	"CWARNFLAGS.drm_atomic_helper.c"+="-Wno-shadow"
+makeoptions 	drmkms 	"CWARNFLAGS.drm_crtc.c"+="-Wno-missing-field-initializers"
+makeoptions 	drmkms 	"CWARNFLAGS.drm_crtc.c"+="-Wno-shadow"
+makeoptions 	drmkms 	"CWARNFLAGS.drm_edid.c"+="-Wno-shadow"
+makeoptions 	drmkms 	"CWARNFLAGS.drm_ioctl.c"+="-Wno-shadow"
+
 #file	external/bsd/drm2/dist/drm/ati_pcigart.c	drmkms  # drmkms_pci
 #file	external/bsd/drm2/dist/drm/drm_agpsupport.c	drmkms  # drmkms_pci
 file	external/bsd/drm2/dist/drm/drm_atomic.c	drmkms



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 13:53:32 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
Define CONFIG_DRM_FBDEV_EMULATION=1 in generic drmkms code.

This was accidentally pulled in by i915drmkms, but we need it
generically or else we need to patch upstream differently.


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.26 src/sys/external/bsd/drm2/drm/files.drmkms:1.27
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.26	Mon Aug 27 13:53:20 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 13:53:32 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.26 2018/08/27 13:53:20 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.27 2018/08/27 13:53:32 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -34,6 +34,7 @@ makeoptions	drmkms	CPPFLAGS+="-D__KERNEL
 
 makeoptions	drmkms	CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE=0"
 makeoptions	drmkms	CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE_MODULE=0"
+makeoptions	drmkms	CPPFLAGS+="-DCONFIG_DRM_FBDEV_EMULATION=1"
 makeoptions	drmkms	CPPFLAGS+="-DCONFIG_FB=0"
 
 # NetBSD additions.



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 07:54:28 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm2netbsd files.drmkms

Log Message:
drm_fb_helper.c got lost in the merge, restore it.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/drm/drm2netbsd
cvs rdiff -u -r1.24 -r1.25 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/drm2netbsd
diff -u src/sys/external/bsd/drm2/drm/drm2netbsd:1.1 src/sys/external/bsd/drm2/drm/drm2netbsd:1.2
--- src/sys/external/bsd/drm2/drm/drm2netbsd:1.1	Mon Aug 27 00:46:32 2018
+++ src/sys/external/bsd/drm2/drm/drm2netbsd	Mon Aug 27 07:54:28 2018
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-#	$NetBSD: drm2netbsd,v 1.1 2018/08/27 00:46:32 riastradh Exp $
+#	$NetBSD: drm2netbsd,v 1.2 2018/08/27 07:54:28 riastradh Exp $
 #
 # $ /path/to/drm2netbsd > /path/to/files.drm.new
 #
@@ -16,6 +16,7 @@ drmkms_flag=drmkms
 
 env CONFIG_PCI=y \
 env CONFIG_AGP=y \
+env CONFIG_DRM_FBDEV_EMULATION=y \
 make -f Makefile -V '$(drm-y)' -V '$(drm_kms_helper-y)' \
 | tr ' ' '\n' \
 | grep -v '^$' \

Index: src/sys/external/bsd/drm2/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.24 src/sys/external/bsd/drm2/drm/files.drmkms:1.25
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.24	Mon Aug 27 06:50:58 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 07:54:28 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.24 2018/08/27 06:50:58 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.25 2018/08/27 07:54:28 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -67,6 +67,7 @@ file	external/bsd/drm2/dist/drm/drm_dp_m
 file	external/bsd/drm2/dist/drm/drm_drv.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_edid.c	drmkms
 file	external/bsd/drm2/i2c/drm_encoder_slave.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_fb_helper.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_flip_work.c	drmkms
 file	external/bsd/drm2/drm/drm_fops.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_gem.c	drmkms



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 07:54:07 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cdevsw.c

Log Message:
We don't need drm_legacy_vma_flush.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 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/drm/drm_cdevsw.c
diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.8 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.9
--- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.8	Mon Aug 27 07:51:06 2018
+++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c	Mon Aug 27 07:54:07 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cdevsw.c,v 1.8 2018/08/27 07:51:06 riastradh Exp $	*/
+/*	$NetBSD: drm_cdevsw.c,v 1.9 2018/08/27 07:54:07 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.8 2018/08/27 07:51:06 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.9 2018/08/27 07:54:07 riastradh Exp $");
 
 #include 
 #include 
@@ -254,7 +254,6 @@ drm_lastclose(struct drm_device *dev)
 	if (dev->agp)
 		drm_agp_clear_hook(dev);
 	drm_legacy_sg_cleanup(dev);
-	drm_legacy_vma_flush(dev);
 	drm_legacy_dma_takedown(dev);
 	mutex_unlock(>struct_mutex);
 



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 07:53:52 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_fops.c

Log Message:
Implement drm_new_set_master in drm_fops.c and use it.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/drm/drm_fops.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/drm/drm_fops.c
diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.9 src/sys/external/bsd/drm2/drm/drm_fops.c:1.10
--- src/sys/external/bsd/drm2/drm/drm_fops.c:1.9	Mon Aug 27 07:01:15 2018
+++ src/sys/external/bsd/drm2/drm/drm_fops.c	Mon Aug 27 07:53:52 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_fops.c,v 1.9 2018/08/27 07:01:15 riastradh Exp $	*/
+/*	$NetBSD: drm_fops.c,v 1.10 2018/08/27 07:53:52 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.9 2018/08/27 07:01:15 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.10 2018/08/27 07:53:52 riastradh Exp $");
 
 #include 
 #include 
@@ -114,52 +114,100 @@ fail0:
 	return ret;
 }
 
-static int
-drm_open_file_master(struct drm_file *file)
+int
+drm_new_set_master(struct drm_device *dev, struct drm_file *file)
 {
-	struct drm_device *const dev = file->minor->dev;
+	struct drm_master *old_master;
 	int ret;
 
-	mutex_lock(>master_mutex);
-	if (file->minor->master != NULL) {
-		file->master = drm_master_get(file->minor->master);
-	} else {
-		file->minor->master = drm_master_create(file->minor);
-		if (file->minor->master == NULL) {
-			ret = -ENOMEM;
-			goto fail0;
-		}
+	KASSERT(mutex_is_locked(>master_mutex));
+	KASSERT(file->minor->type == DRM_MINOR_LEGACY);
+	KASSERT(file->minor->master == NULL);
+
+	file->minor->master = drm_master_create(file->minor);
+	if (file->minor->master == NULL) {
+		ret = -ENOMEM;
+		goto fail0;
+	}
 
-		file->is_master = 1;
-		file->master = drm_master_get(file->minor->master);
-		file->authenticated = 1;
+	/*
+	 * Save the old master, to drop a reference later if all goes
+	 * well, and get a reference to the new one.
+	 */
+	old_master = file->master;
+	file->master = drm_master_get(file->minor->master);
 
-		if (dev->driver->master_create) {
-			ret = (*dev->driver->master_create)(dev,
-			file->minor->master);
-			if (ret)
-goto fail1;
-		}
+	/* Invoke the driver callbacks master_create and master_set.  */
+	if (dev->driver->master_create) {
+		ret = (*dev->driver->master_create)(dev, file->minor->master);
+		if (ret)
+			goto fail1;
+	}
 
-		if (dev->driver->master_set) {
-			ret = (*dev->driver->master_set)(dev, file, true);
-			if (ret)
-goto fail1;
-		}
+	if (dev->driver->master_set) {
+		ret = (*dev->driver->master_set)(dev, file, true);
+		if (ret)
+			goto fail1;
 	}
-	mutex_unlock(>master_mutex);
+
+	/*
+	 * Mark ourselves as an authenticated master, and allowed to
+	 * set a new master.
+	 */
+	file->is_master = 1;
+	file->allowed_master = 1;
+	file->authenticated = 1;
+
+	/* If there was an old master, release it now.  */
+	if (old_master)
+		drm_master_put(_master);
 
 	/* Success!  */
 	return 0;
 
-fail1:	mutex_unlock(>master_mutex);
-	/* drm_master_put handles calling master_destroy for us.  */
+fail1:
+	/* Release the master we just created.  */
 	drm_master_put(>minor->master);
+	KASSERT(file->minor->master == NULL);
+	/* Release the reference we just added in the file.  */
 	drm_master_put(>master);
+	KASSERT(file->master == NULL);
+	/* Restore the old master if there was one.  */
+	file->master = old_master;
 fail0:	KASSERT(ret);
 	return ret;
 }
 
+static int
+drm_open_file_master(struct drm_file *file)
+{
+	struct drm_device *const dev = file->minor->dev;
+	int ret;
+
+	/* If this is not the legacy device, there are no masters.  */
+	if (file->minor->type != DRM_MINOR_LEGACY)
+		return 0;
+
+	mutex_lock(>master_mutex);
+	if (file->minor->master != NULL) {
+		/*
+		 * If the minor already has a master, get a reference
+		 * to it.
+		 */
+		file->master = drm_master_get(file->minor->master);
+		ret = 0;
+	} else {
+		/*
+		 * Otherwise, automatically behave as though we had
+		 * just done setmaster.
+		 */
+		ret = drm_new_set_master(dev, file);
+	}
+	mutex_unlock(>master_mutex);
+
+	return ret;
+}
+
 void
 drm_close_file(struct drm_file *file)
 {



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 07:02:06 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_scatter.c

Log Message:
drm_sg_* legacy


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_scatter.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/drm/drm_scatter.c
diff -u src/sys/external/bsd/drm2/drm/drm_scatter.c:1.4 src/sys/external/bsd/drm2/drm/drm_scatter.c:1.5
--- src/sys/external/bsd/drm2/drm/drm_scatter.c:1.4	Wed Feb  7 06:18:46 2018
+++ src/sys/external/bsd/drm2/drm/drm_scatter.c	Mon Aug 27 07:02:06 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_scatter.c,v 1.4 2018/02/07 06:18:46 mrg Exp $	*/
+/*	$NetBSD: drm_scatter.c,v 1.5 2018/08/27 07:02:06 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_scatter.c,v 1.4 2018/02/07 06:18:46 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_scatter.c,v 1.5 2018/08/27 07:02:06 riastradh Exp $");
 
 #include 
 #include 
@@ -40,13 +40,15 @@ __KERNEL_RCSID(0, "$NetBSD: drm_scatter.
 #include 
 
 #include 
+#include 
+#include "../dist/drm/drm_legacy.h"
 
 static int	drm_sg_alloc_mem(struct drm_device *, size_t,
 		struct drm_sg_mem **);
 static void	drm_sg_free_mem(struct drm_device *, struct drm_sg_mem *);
 
 int
-drm_sg_alloc(struct drm_device *dev, void *data,
+drm_legacy_sg_alloc(struct drm_device *dev, void *data,
 struct drm_file *file __unused)
 {
 	struct drm_scatter_gather *const request = data;
@@ -88,7 +90,7 @@ drm_sg_alloc(struct drm_device *dev, voi
 }
 
 int
-drm_sg_free(struct drm_device *dev, void *data, struct drm_file *file)
+drm_legacy_sg_free(struct drm_device *dev, void *data, struct drm_file *file)
 {
 	struct drm_scatter_gather *const request = data;
 	struct drm_sg_mem *sg;



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 07:01:15 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_fops.c

Log Message:
More drm_fops.c updates.  Hooray, code deletion!


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/drm/drm_fops.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/drm/drm_fops.c
diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.8 src/sys/external/bsd/drm2/drm/drm_fops.c:1.9
--- src/sys/external/bsd/drm2/drm/drm_fops.c:1.8	Mon Aug 27 06:58:10 2018
+++ src/sys/external/bsd/drm2/drm/drm_fops.c	Mon Aug 27 07:01:15 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_fops.c,v 1.8 2018/08/27 06:58:10 riastradh Exp $	*/
+/*	$NetBSD: drm_fops.c,v 1.9 2018/08/27 07:01:15 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.8 2018/08/27 06:58:10 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.9 2018/08/27 07:01:15 riastradh Exp $");
 
 #include 
 #include 
@@ -38,12 +38,12 @@ __KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v
 #include 
 #include 
 #include 
+#include "../dist/drm/drm_legacy.h"
 
 static int	drm_open_file_master(struct drm_file *);
 
 static void	drm_master_release(struct drm_file *);
 static void	drm_events_release(struct drm_file *);
-static void	drm_close_file_contexts(struct drm_file *);
 static void	drm_close_file_master(struct drm_file *);
 
 int
@@ -178,7 +178,7 @@ drm_close_file(struct drm_file *file)
 		drm_fb_release(file);
 	if (drm_core_check_feature(dev, DRIVER_GEM))
 		drm_gem_release(dev, file);
-	drm_close_file_contexts(file);
+	drm_legacy_ctxbitmap_flush(dev, file);
 	drm_close_file_master(file);
 
 	mutex_lock(>struct_mutex);
@@ -240,45 +240,12 @@ drm_events_release(struct drm_file *file
 }
 
 static void
-drm_close_file_contexts(struct drm_file *file)
-{
-	struct drm_device *const dev = file->minor->dev;
-	struct drm_ctx_list *node, *next;
-
-	mutex_lock(>ctxlist_mutex);
-	if (!list_empty(>ctxlist)) {
-		list_for_each_entry_safe(node, next, >ctxlist, head) {
-			if (node->tag != file)
-continue;
-			if (node->handle == DRM_KERNEL_CONTEXT)
-continue;
-			if (dev->driver->context_dtor)
-(*dev->driver->context_dtor)(dev,
-node->handle);
-			drm_ctxbitmap_free(dev, node->handle);
-			list_del(>head);
-			kfree(node);
-		}
-	}
-	mutex_unlock(>ctxlist_mutex);
-}
-
-static void
 drm_close_file_master(struct drm_file *file)
 {
 	struct drm_device *const dev = file->minor->dev;
 
 	mutex_lock(>master_mutex);
 	if (file->is_master) {
-		struct drm_file *other_file;
-
-		list_for_each_entry(other_file, >filelist, lhead) {
-			if (other_file == file)
-continue;
-			if (other_file->master != file->master)
-continue;
-			other_file->authenticated = 0;
-		}
 		if (file->minor->master == file->master) {
 			if (dev->driver->master_drop)
 (*dev->driver->master_drop)(dev, file, true);



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 07:01:30 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_lock.c

Log Message:
Need  for drm_global_mutex.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_lock.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/drm/drm_lock.c
diff -u src/sys/external/bsd/drm2/drm/drm_lock.c:1.6 src/sys/external/bsd/drm2/drm/drm_lock.c:1.7
--- src/sys/external/bsd/drm2/drm/drm_lock.c:1.6	Mon Aug 27 06:57:32 2018
+++ src/sys/external/bsd/drm2/drm/drm_lock.c	Mon Aug 27 07:01:30 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_lock.c,v 1.6 2018/08/27 06:57:32 riastradh Exp $	*/
+/*	$NetBSD: drm_lock.c,v 1.7 2018/08/27 07:01:30 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -46,13 +46,14 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.6 2018/08/27 06:57:32 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.7 2018/08/27 07:01:30 riastradh Exp $");
 
 #include 
 #include 
 #include 
 
 #include 
+#include 
 #include "../dist/drm/drm_legacy.h"
 
 static bool	drm_lock_acquire(struct drm_lock_data *, int);



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 07:00:09 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_sysfs.c

Log Message:
Internal prototypes from drm_internal.h.  Reflect upstream deletions.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_sysfs.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/drm/drm_sysfs.c
diff -u src/sys/external/bsd/drm2/drm/drm_sysfs.c:1.3 src/sys/external/bsd/drm2/drm/drm_sysfs.c:1.4
--- src/sys/external/bsd/drm2/drm/drm_sysfs.c:1.3	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/drm/drm_sysfs.c	Mon Aug 27 07:00:09 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_sysfs.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $	*/
+/*	$NetBSD: drm_sysfs.c,v 1.4 2018/08/27 07:00:09 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,9 +30,10 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_sysfs.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_sysfs.c,v 1.4 2018/08/27 07:00:09 riastradh Exp $");
 
 #include 
+#include 
 
 int
 drm_sysfs_connector_add(struct drm_connector *connector __unused)
@@ -45,17 +46,6 @@ drm_sysfs_connector_remove(struct drm_co
 {
 }
 
-int
-drm_sysfs_device_add(struct drm_minor *minor __unused)
-{
-	return 0;
-}
-
-void
-drm_sysfs_device_remove(struct drm_minor *minor __unused)
-{
-}
-
 void
 drm_sysfs_hotplug_event(struct drm_device *dev __unused)
 {



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:58:20 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_memory.c drm_vm.c

Log Message:
Get the legacy drm declarations from drm_legacy.h.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/drm/drm_memory.c
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_vm.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/drm/drm_memory.c
diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.11 src/sys/external/bsd/drm2/drm/drm_memory.c:1.12
--- src/sys/external/bsd/drm2/drm/drm_memory.c:1.11	Mon Aug 27 06:44:15 2018
+++ src/sys/external/bsd/drm2/drm/drm_memory.c	Mon Aug 27 06:58:20 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_memory.c,v 1.11 2018/08/27 06:44:15 riastradh Exp $	*/
+/*	$NetBSD: drm_memory.c,v 1.12 2018/08/27 06:58:20 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.11 2018/08/27 06:44:15 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.12 2018/08/27 06:58:20 riastradh Exp $");
 
 #if defined(__i386__) || defined(__x86_64__)
 
@@ -72,6 +72,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_memory.c
 #endif
 
 #include 
+#include 
 
 /*
  * XXX drm_bus_borrow is a horrible kludge!

Index: src/sys/external/bsd/drm2/drm/drm_vm.c
diff -u src/sys/external/bsd/drm2/drm/drm_vm.c:1.7 src/sys/external/bsd/drm2/drm/drm_vm.c:1.8
--- src/sys/external/bsd/drm2/drm/drm_vm.c:1.7	Wed Dec 31 08:55:18 2014
+++ src/sys/external/bsd/drm2/drm/drm_vm.c	Mon Aug 27 06:58:20 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_vm.c,v 1.7 2014/12/31 08:55:18 mrg Exp $	*/
+/*	$NetBSD: drm_vm.c,v 1.8 2018/08/27 06:58:20 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1.7 2014/12/31 08:55:18 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1.8 2018/08/27 06:58:20 riastradh Exp $");
 
 #include 
 #include 
@@ -39,6 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1
 #include 
 
 #include 
+#include 
 
 static paddr_t	drm_mmap_paddr_locked(struct drm_device *, off_t, int);
 static paddr_t	drm_mmap_dma_paddr(struct drm_device *, off_t, int);



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:58:10 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_fops.c

Log Message:
Apply some more legacy renames.  drm magic got replaced by an idr.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_fops.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/drm/drm_fops.c
diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.7 src/sys/external/bsd/drm2/drm/drm_fops.c:1.8
--- src/sys/external/bsd/drm2/drm/drm_fops.c:1.7	Mon Aug 27 06:57:10 2018
+++ src/sys/external/bsd/drm2/drm/drm_fops.c	Mon Aug 27 06:58:10 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_fops.c,v 1.7 2018/08/27 06:57:10 riastradh Exp $	*/
+/*	$NetBSD: drm_fops.c,v 1.8 2018/08/27 06:58:10 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.7 2018/08/27 06:57:10 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.8 2018/08/27 06:58:10 riastradh Exp $");
 
 #include 
 #include 
@@ -169,12 +169,10 @@ drm_close_file(struct drm_file *file)
 	if (dev->driver->preclose)
 		(*dev->driver->preclose)(dev, file);
 
-	if (file->magic)
-		(void)drm_remove_magic(file->master, file->magic);
 	if (minor->master)
 		drm_master_release(file);
 	if (drm_core_check_feature(dev, DRIVER_HAVE_DMA))
-		drm_core_reclaim_buffers(dev, file);
+		drm_legacy_reclaim_buffers(dev, file);
 	drm_events_release(file);
 	if (drm_core_check_feature(dev, DRIVER_MODESET))
 		drm_fb_release(file);
@@ -185,6 +183,8 @@ drm_close_file(struct drm_file *file)
 
 	mutex_lock(>struct_mutex);
 	list_del(>lhead);
+	if (file->magic)
+		idr_remove(>master->magic_map, file->magic);
 	mutex_unlock(>struct_mutex);
 
 	if (dev->driver->postclose)
@@ -207,10 +207,10 @@ drm_master_release(struct drm_file *file
 	/*
 	 * XXX I think this locking concept is wrong -- we need to hold
 	 * file->master->lock.spinlock across the two calls to
-	 * drm_i_have_hw_lock and drm_lock_free.
+	 * drm_legacy_i_have_hw_lock and drm_legacy_lock_free.
 	 */
-	if (drm_i_have_hw_lock(file->minor->dev, file))
-		drm_lock_free(>master->lock,
+	if (drm_legacy_i_have_hw_lock(file->minor->dev, file))
+		drm_legacy_lock_free(>master->lock,
 		_DRM_LOCKING_CONTEXT(file->master->lock.hw_lock->lock));
 }
 



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:57:20 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_gem_vm.c

Log Message:
Need drm_legacy.h for legacy mmap stuff.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_gem_vm.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/drm/drm_gem_vm.c
diff -u src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.7 src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.8
--- src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.7	Mon Aug 27 06:56:22 2018
+++ src/sys/external/bsd/drm2/drm/drm_gem_vm.c	Mon Aug 27 06:57:20 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_gem_vm.c,v 1.7 2018/08/27 06:56:22 riastradh Exp $	*/
+/*	$NetBSD: drm_gem_vm.c,v 1.8 2018/08/27 06:57:20 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.7 2018/08/27 06:56:22 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.8 2018/08/27 06:57:20 riastradh Exp $");
 
 #include 
 
@@ -38,6 +38,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c
 
 #include 
 #include 
+#include 
 #include 
 
 static int	drm_gem_mmap_object_locked(struct drm_device *, off_t, size_t,



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:57:10 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_fops.c

Log Message:
Fix headers for drm_fops.c.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_fops.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/drm/drm_fops.c
diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.6 src/sys/external/bsd/drm2/drm/drm_fops.c:1.7
--- src/sys/external/bsd/drm2/drm/drm_fops.c:1.6	Mon Aug 27 06:49:12 2018
+++ src/sys/external/bsd/drm2/drm/drm_fops.c	Mon Aug 27 06:57:10 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_fops.c,v 1.6 2018/08/27 06:49:12 riastradh Exp $	*/
+/*	$NetBSD: drm_fops.c,v 1.7 2018/08/27 06:57:10 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,13 +30,14 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.6 2018/08/27 06:49:12 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.7 2018/08/27 06:57:10 riastradh Exp $");
 
 #include 
 #include 
 
 #include 
-#include "../dist/drm/drm_legacy.h"
+#include 
+#include 
 
 static int	drm_open_file_master(struct drm_file *);
 



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:57:32 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_lock.c

Log Message:
Rename some drm_* to drm_legacy_*.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_lock.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/drm/drm_lock.c
diff -u src/sys/external/bsd/drm2/drm/drm_lock.c:1.5 src/sys/external/bsd/drm2/drm/drm_lock.c:1.6
--- src/sys/external/bsd/drm2/drm/drm_lock.c:1.5	Mon Aug 27 06:06:31 2018
+++ src/sys/external/bsd/drm2/drm/drm_lock.c	Mon Aug 27 06:57:32 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_lock.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $	*/
+/*	$NetBSD: drm_lock.c,v 1.6 2018/08/27 06:57:32 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -46,7 +46,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.6 2018/08/27 06:57:32 riastradh Exp $");
 
 #include 
 #include 
@@ -66,7 +66,7 @@ static void	drm_lock_unblock_signals(str
  * Take the lock on behalf of userland.
  */
 int
-drm_lock(struct drm_device *dev, void *data, struct drm_file *file)
+drm_legacy_lock(struct drm_device *dev, void *data, struct drm_file *file)
 {
 	struct drm_lock *lock_request = data;
 	struct drm_master *master = file->master;
@@ -158,7 +158,7 @@ out0:	mutex_lock(_global_mutex);
  * userland's request.  Fail if it doesn't actually hold the lock.
  */
 int
-drm_unlock(struct drm_device *dev, void *data, struct drm_file *file)
+drm_legacy_unlock(struct drm_device *dev, void *data, struct drm_file *file)
 {
 	struct drm_lock *lock_request = data;
 	struct drm_master *master = file->master;
@@ -222,7 +222,7 @@ out0:	mutex_lock(_global_mutex);
  * XXX Should we also unblock signals like drm_unlock does?
  */
 int
-drm_lock_free(struct drm_lock_data *lock_data, unsigned int context)
+drm_legacy_lock_free(struct drm_lock_data *lock_data, unsigned int context)
 {
 
 	spin_lock(_data->spinlock);
@@ -238,7 +238,7 @@ drm_lock_free(struct drm_lock_data *lock
  * anyone else.
  */
 void
-drm_idlelock_take(struct drm_lock_data *lock_data)
+drm_legacy_idlelock_take(struct drm_lock_data *lock_data)
 {
 
 	spin_lock(_data->spinlock);
@@ -262,7 +262,7 @@ drm_idlelock_take(struct drm_lock_data *
  * Release whatever drm_idlelock_take managed to acquire.
  */
 void
-drm_idlelock_release(struct drm_lock_data *lock_data)
+drm_legacy_idlelock_release(struct drm_lock_data *lock_data)
 {
 
 	spin_lock(_data->spinlock);
@@ -287,7 +287,7 @@ drm_idlelock_release(struct drm_lock_dat
  * think we can know what the correct answer is in that case.
  */
 int
-drm_i_have_hw_lock(struct drm_device *dev, struct drm_file *file)
+drm_legacy_i_have_hw_lock(struct drm_device *dev, struct drm_file *file)
 {
 	struct drm_lock_data *const lock_data = >master->lock;
 	int answer = 0;



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:56:22 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_gem_vm.c

Log Message:
Need to use new  for GEM stuff.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_gem_vm.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/drm/drm_gem_vm.c
diff -u src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.6 src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.7
--- src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.6	Mon Mar  9 01:29:40 2015
+++ src/sys/external/bsd/drm2/drm/drm_gem_vm.c	Mon Aug 27 06:56:22 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_gem_vm.c,v 1.6 2015/03/09 01:29:40 riastradh Exp $	*/
+/*	$NetBSD: drm_gem_vm.c,v 1.7 2018/08/27 06:56:22 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,13 +30,14 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.6 2015/03/09 01:29:40 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_gem_vm.c,v 1.7 2018/08/27 06:56:22 riastradh Exp $");
 
 #include 
 
 #include 
 
 #include 
+#include 
 #include 
 
 static int	drm_gem_mmap_object_locked(struct drm_device *, off_t, size_t,



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:52:35 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cdevsw.c

Log Message:
Copy body of static drm_legacy_dev_reinit from drm_fops.c to drm_cdevsw.c.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 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/drm/drm_cdevsw.c
diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.6 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.7
--- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.6	Mon Aug 27 06:51:29 2018
+++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c	Mon Aug 27 06:52:34 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cdevsw.c,v 1.6 2018/08/27 06:51:29 riastradh Exp $	*/
+/*	$NetBSD: drm_cdevsw.c,v 1.7 2018/08/27 06:52:34 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.6 2018/08/27 06:51:29 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.7 2018/08/27 06:52:34 riastradh Exp $");
 
 #include 
 #include 
@@ -258,7 +258,13 @@ drm_lastclose(struct drm_device *dev)
 	drm_legacy_dma_takedown(dev);
 	mutex_unlock(>struct_mutex);
 
-	drm_legacy_dev_reinit(dev);
+	/* XXX Synchronize with drm_legacy_dev_reinit.  */
+	if (!drm_core_check_feature(dev, DRIVER_MODESET)) {
+		dev->sigdata.lock = NULL;
+		dev->context_flag = 0;
+		dev->last_context = 0;
+		dev->if_version = 0;
+	}
 
 	return 0;
 }



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:51:17 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cdevsw.c

Log Message:
Actually convert errno as comment suggests.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 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/drm/drm_cdevsw.c
diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.4 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.5
--- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.4	Mon Aug 27 06:50:58 2018
+++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c	Mon Aug 27 06:51:17 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cdevsw.c,v 1.4 2018/08/27 06:50:58 riastradh Exp $	*/
+/*	$NetBSD: drm_cdevsw.c,v 1.5 2018/08/27 06:51:17 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.4 2018/08/27 06:50:58 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.5 2018/08/27 06:51:17 riastradh Exp $");
 
 #include 
 #include 
@@ -151,7 +151,7 @@ drm_open(dev_t d, int flags, int fmt, st
 
 	if (firstopen) {
 		/* XXX errno Linux->NetBSD */
-		error = drm_firstopen(dev);
+		error = -drm_firstopen(dev);
 		if (error)
 			goto fail2;
 	}



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:51:29 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cdevsw.c

Log Message:
open_count is protected by drm_global_mutex; count_lock is no more.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 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/drm/drm_cdevsw.c
diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.5 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.6
--- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.5	Mon Aug 27 06:51:17 2018
+++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c	Mon Aug 27 06:51:29 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cdevsw.c,v 1.5 2018/08/27 06:51:17 riastradh Exp $	*/
+/*	$NetBSD: drm_cdevsw.c,v 1.6 2018/08/27 06:51:29 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.5 2018/08/27 06:51:17 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.6 2018/08/27 06:51:29 riastradh Exp $");
 
 #include 
 #include 
@@ -58,6 +58,7 @@ __KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c
 #include 
 
 #include 
+#include 
 #include "../dist/drm/drm_legacy.h"
 
 static dev_type_open(drm_open);
@@ -139,15 +140,15 @@ drm_open(dev_t d, int flags, int fmt, st
 		goto fail1;
 	}
 
-	spin_lock(>count_lock);
+	mutex_lock(_global_mutex);
 	if (dev->open_count == INT_MAX) {
-		spin_unlock(>count_lock);
+		mutex_unlock(_global_mutex);
 		error = EBUSY;
 		goto fail1;
 	}
 	firstopen = (dev->open_count == 0);
 	dev->open_count++;
-	spin_unlock(>count_lock);
+	mutex_lock(_global_mutex);
 
 	if (firstopen) {
 		/* XXX errno Linux->NetBSD */
@@ -174,11 +175,11 @@ drm_open(dev_t d, int flags, int fmt, st
 
 fail3:	kmem_free(file, sizeof(*file));
 	fd_abort(curproc, fp, fd);
-fail2:	spin_lock(>count_lock);
+fail2:	mutex_lock(_global_mutex);
 	KASSERT(0 < dev->open_count);
 	--dev->open_count;
 	lastclose = (dev->open_count == 0);
-	spin_unlock(>count_lock);
+	mutex_unlock(_global_mutex);
 	if (lastclose)
 		(void)drm_lastclose(dev);
 fail1:	drm_minor_release(dminor);
@@ -197,11 +198,11 @@ drm_close(struct file *fp)
 	drm_close_file(file);
 	kmem_free(file, sizeof(*file));
 
-	spin_lock(>count_lock);
+	mutex_lock(_global_mutex);
 	KASSERT(0 < dev->open_count);
 	--dev->open_count;
 	lastclose = (dev->open_count == 0);
-	spin_unlock(>count_lock);
+	mutex_unlock(_global_mutex);
 
 	if (lastclose)
 		(void)drm_lastclose(dev);
@@ -255,7 +256,6 @@ drm_lastclose(struct drm_device *dev)
 	drm_legacy_sg_cleanup(dev);
 	drm_legacy_vma_flush(dev);
 	drm_legacy_dma_takedown(dev);
-
 	mutex_unlock(>struct_mutex);
 
 	drm_legacy_dev_reinit(dev);



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:49:12 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_fops.c

Log Message:
Update always_authenticated -> authenticated.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_fops.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/drm/drm_fops.c
diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.5 src/sys/external/bsd/drm2/drm/drm_fops.c:1.6
--- src/sys/external/bsd/drm2/drm/drm_fops.c:1.5	Mon Aug 27 06:06:31 2018
+++ src/sys/external/bsd/drm2/drm/drm_fops.c	Mon Aug 27 06:49:12 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_fops.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $	*/
+/*	$NetBSD: drm_fops.c,v 1.6 2018/08/27 06:49:12 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.6 2018/08/27 06:49:12 riastradh Exp $");
 
 #include 
 #include 
@@ -51,8 +51,7 @@ drm_open_file(struct drm_file *file, voi
 	struct drm_device *const dev = minor->dev;
 	int ret;
 
-	file->always_authenticated = DRM_SUSER(); /* XXX */
-	file->always_authenticated = file->always_authenticated;
+	file->authenticated = DRM_SUSER(); /* XXX */
 	file->is_master = false;
 	file->stereo_allowed = false;
 	file->universal_planes = false;



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:49:01 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cdevsw.c

Log Message:
Update DRM_IOCTL_DEF.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 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/drm/drm_cdevsw.c
diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.2 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.3
--- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.2	Mon Aug 27 06:48:50 2018
+++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c	Mon Aug 27 06:49:01 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cdevsw.c,v 1.2 2018/08/27 06:48:50 riastradh Exp $	*/
+/*	$NetBSD: drm_cdevsw.c,v 1.3 2018/08/27 06:49:01 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.2 2018/08/27 06:48:50 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.3 2018/08/27 06:49:01 riastradh Exp $");
 
 #include 
 #include 
@@ -85,7 +85,7 @@ static drm_ioctl_t	drm_version;
 		.cmd = (IOCTL),		\
 		.flags = (FLAGS),	\
 		.func = (FUNC),		\
-		.cmd_drv = 0,		\
+		.name = #IOCTL,		\
 	}
 
 #if __OS_HAS_AGP



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:48:50 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cdevsw.c

Log Message:
Make drm_lastclose match upstream.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 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/drm/drm_cdevsw.c
diff -u src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.1 src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.2
--- src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.1	Mon Aug 27 06:31:41 2018
+++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c	Mon Aug 27 06:48:50 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cdevsw.c,v 1.1 2018/08/27 06:31:41 riastradh Exp $	*/
+/*	$NetBSD: drm_cdevsw.c,v 1.2 2018/08/27 06:48:50 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.1 2018/08/27 06:31:41 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.2 2018/08/27 06:48:50 riastradh Exp $");
 
 #include 
 #include 
@@ -387,7 +387,6 @@ fail0:	KASSERT(ret);
 int
 drm_lastclose(struct drm_device *dev)
 {
-	struct drm_vma_entry *vma, *vma_temp;
 
 	/* XXX Order is sketchy here...  */
 	if (dev->driver->lastclose)
@@ -399,19 +398,12 @@ drm_lastclose(struct drm_device *dev)
 	if (dev->agp)
 		drm_agp_clear_hook(dev);
 	drm_legacy_sg_cleanup(dev);
-	list_for_each_entry_safe(vma, vma_temp, >vmalist, head) {
-		list_del(>head);
-		kfree(vma);
-	}
+	drm_legacy_vma_flush(dev);
 	drm_legacy_dma_takedown(dev);
+
 	mutex_unlock(>struct_mutex);
 
-	if (!drm_core_check_feature(dev, DRIVER_MODESET)) {
-		dev->sigdata.lock = NULL;
-		dev->context_flag = 0;
-		dev->last_context = 0;
-		dev->if_version = 0;
-	}
+	drm_legacy_dev_reinit(dev);
 
 	return 0;
 }



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:47:51 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
We have a local override for drm_encoder_slave.c.


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.21 src/sys/external/bsd/drm2/drm/files.drmkms:1.22
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.21	Mon Aug 27 06:37:41 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 06:47:51 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.21 2018/08/27 06:37:41 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.22 2018/08/27 06:47:51 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -64,7 +64,7 @@ file	external/bsd/drm2/dist/drm/drm_dp_h
 file	external/bsd/drm2/dist/drm/drm_dp_mst_topology.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_drv.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_edid.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_encoder_slave.c	drmkms
+file	external/bsd/drm2/i2c/drm_encoder_slave.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_flip_work.c	drmkms
 file	external/bsd/drm2/drm/drm_fops.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_gem.c	drmkms



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:37:41 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
Reorder header files to avoid drm_legacy.h lossage.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.20 src/sys/external/bsd/drm2/drm/files.drmkms:1.21
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.20	Mon Aug 27 06:33:08 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 06:37:41 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.20 2018/08/27 06:33:08 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.21 2018/08/27 06:37:41 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -13,11 +13,16 @@ define	drmkms: drmkms_linux, drmkms_i2c,
 defflag		opt_drmkms.h	DRMKMS_DEBUG
 makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/include"
 makeoptions	drmkms_ttm	CPPFLAGS+="-I$S/external/bsd/drm2/include/drm"
-makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/dist"
+makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/common/include"
 makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/dist/include"
 makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/dist/include/drm"
 makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/dist/uapi"
-makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/common/include"
+
+# Must come last because some header file names are repeated in
+# dist/drm (I'm looking ta you, drm_legacy.h), while others sometimes
+# explicitly write .  (Maybe that should have been imported
+# under dist/include/uapi rather than dist/uapi.)
+makeoptions 	drmkms	CPPFLAGS+="-I$S/external/bsd/drm2/dist"
 
 makeoptions 	drmkms 	"CWARNFLAGS.drm_crtc.c"+="-Wno-shadow"
 makeoptions 	drmkms 	"CWARNFLAGS.drm_crtc.c"+="-Wno-missing-field-initializers"



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:33:08 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
Restore more locally overridden files.


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.19 src/sys/external/bsd/drm2/drm/files.drmkms:1.20
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.19	Mon Aug 27 06:31:41 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 06:33:08 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.19 2018/08/27 06:31:41 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.20 2018/08/27 06:33:08 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -61,15 +61,15 @@ file	external/bsd/drm2/dist/drm/drm_drv.
 file	external/bsd/drm2/dist/drm/drm_edid.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_encoder_slave.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_flip_work.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_fops.c	drmkms
+file	external/bsd/drm2/drm/drm_fops.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_gem.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_global.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_hashtab.c	drmkms
 #file	external/bsd/drm2/dist/drm/drm_info.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_ioctl.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_irq.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_lock.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_memory.c	drmkms
+file	external/bsd/drm2/drm/drm_lock.c	drmkms
+file	external/bsd/drm2/drm/drm_memory.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_mm.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_modes.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_modeset_lock.c	drmkms
@@ -79,8 +79,8 @@ file	external/bsd/drm2/dist/drm/drm_plan
 #file	external/bsd/drm2/dist/drm/drm_prime.c	drmkms  # XXX drm prime
 file	external/bsd/drm2/dist/drm/drm_probe_helper.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_rect.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_scatter.c	drmkms
+file	external/bsd/drm2/drm/drm_scatter.c	drmkms
 file	external/bsd/drm2/drm/drm_sysfs.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_trace_points.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_vm.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_vma_manager.c	drmkms
+file	external/bsd/drm2/drm/drm_vm.c	drmkms
+file	external/bsd/drm2/drm/drm_vma_manager.c	drmkms



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:31:41 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms
Added Files:
src/sys/external/bsd/drm2/drm: drm_cdevsw.c
Removed Files:
src/sys/external/bsd/drm2/drm: drm_drv.c

Log Message:
Rename drm_drv.c to drm_cdevsw.c.

Previously we overrode upstream's drm_drv.c altogether, and used
upstream's drm_stub.c subroutines.

But upstream deleted drm_drv.c and renamed drm_stub.c to drm_drv.c,
so we have to cope with that reshuffle.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/external/bsd/drm2/drm/drm_cdevsw.c
cvs rdiff -u -r1.21 -r0 src/sys/external/bsd/drm2/drm/drm_drv.c
cvs rdiff -u -r1.18 -r1.19 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.18 src/sys/external/bsd/drm2/drm/files.drmkms:1.19
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.18	Mon Aug 27 06:25:59 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 06:31:41 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.18 2018/08/27 06:25:59 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.19 2018/08/27 06:31:41 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -30,6 +30,7 @@ makeoptions	drmkms	CPPFLAGS+="-DCONFIG_F
 makeoptions	drmkms	CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE=0"
 makeoptions	drmkms	CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE_MODULE=0"
 
+file	external/bsd/drm2/drm/drm_cdevsw.c		drmkms
 file	external/bsd/drm2/drm/drm_gem_vm.c		drmkms
 file	external/bsd/drm2/drm/drm_gem_cma_helper.c	drmkms
 file	external/bsd/drm2/drm/drm_module.c		drmkms

Added files:

Index: src/sys/external/bsd/drm2/drm/drm_cdevsw.c
diff -u /dev/null src/sys/external/bsd/drm2/drm/drm_cdevsw.c:1.1
--- /dev/null	Mon Aug 27 06:31:41 2018
+++ src/sys/external/bsd/drm2/drm/drm_cdevsw.c	Mon Aug 27 06:31:41 2018
@@ -0,0 +1,840 @@
+/*	$NetBSD: drm_cdevsw.c,v 1.1 2018/08/27 06:31:41 riastradh Exp $	*/
+
+/*-
+ * Copyright (c) 2013 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Taylor R. Campbell.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include 
+__KERNEL_RCSID(0, "$NetBSD: drm_cdevsw.c,v 1.1 2018/08/27 06:31:41 riastradh Exp $");
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#ifndef _MODULE
+/* XXX Mega-kludge because modules are broken.  */
+#include 
+#endif
+#include 
+#include 
+#ifndef _MODULE
+#include 		/* XXX drm_init kludge */
+#endif
+#include 
+
+#include 
+
+#include 
+
+#include 
+
+#include 
+#include "../dist/drm/drm_legacy.h"
+
+static dev_type_open(drm_open);
+
+static int	drm_firstopen(struct drm_device *);
+
+static int	drm_close(struct file *);
+static int	drm_read(struct file *, off_t *, struct uio *, kauth_cred_t,
+		int);
+static int	drm_dequeue_event(struct drm_file *, size_t,
+		struct drm_pending_event **, int);
+static int	drm_poll(struct file *, int);
+static int	drm_kqfilter(struct file *, struct knote *);
+static int	drm_stat(struct file *, struct stat *);
+static int	drm_ioctl(struct file *, unsigned long, void *);
+static int	drm_fop_mmap(struct file *, off_t *, size_t, int, int *, int *,
+			 struct uvm_object **, int *);
+static int	drm_version_string(char *, size_t *, const char *);
+static paddr_t	drm_mmap(dev_t, off_t, int);
+
+static drm_ioctl_t	drm_version;
+
+#define	DRM_IOCTL_DEF(IOCTL, FUNC, FLAGS)\
+	

CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:25:48 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
Omit PCI files from files.drmkms.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.16 src/sys/external/bsd/drm2/drm/files.drmkms:1.17
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.16	Mon Aug 27 06:25:37 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 06:25:48 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.16 2018/08/27 06:25:37 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.17 2018/08/27 06:25:48 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -41,8 +41,8 @@ file	external/bsd/drm2/drm/drmfb.c			drm
 
 include "external/bsd/drm2/ttm/files.ttm"
 
-file	external/bsd/drm2/dist/drm/ati_pcigart.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_agpsupport.c	drmkms
+#file	external/bsd/drm2/dist/drm/ati_pcigart.c	drmkms  # drmkms_pci
+#file	external/bsd/drm2/dist/drm/drm_agpsupport.c	drmkms  # drmkms_pci
 file	external/bsd/drm2/dist/drm/drm_atomic.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_atomic_helper.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_auth.c	drmkms



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:25:59 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
Apply locally overridden files.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.17 src/sys/external/bsd/drm2/drm/files.drmkms:1.18
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.17	Mon Aug 27 06:25:48 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 06:25:59 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.17 2018/08/27 06:25:48 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.18 2018/08/27 06:25:59 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -48,7 +48,7 @@ file	external/bsd/drm2/dist/drm/drm_atom
 file	external/bsd/drm2/dist/drm/drm_auth.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_bridge.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_bufs.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_cache.c	drmkms
+file	external/bsd/drm2/drm/drm_cache.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_context.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_crtc.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_crtc_helper.c	drmkms
@@ -79,7 +79,7 @@ file	external/bsd/drm2/dist/drm/drm_plan
 file	external/bsd/drm2/dist/drm/drm_probe_helper.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_rect.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_scatter.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_sysfs.c	drmkms
+file	external/bsd/drm2/drm/drm_sysfs.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_trace_points.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_vm.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_vma_manager.c	drmkms



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:25:37 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
regen files.drmkms


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.15 src/sys/external/bsd/drm2/drm/files.drmkms:1.16
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.15	Mon Aug 27 06:25:28 2018
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 06:25:37 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.15 2018/08/27 06:25:28 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.16 2018/08/27 06:25:37 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -41,39 +41,45 @@ file	external/bsd/drm2/drm/drmfb.c			drm
 
 include "external/bsd/drm2/ttm/files.ttm"
 
-file	external/bsd/drm2/dist/drm/drm_auth.c		drmkms
-file	external/bsd/drm2/dist/drm/drm_buffer.c		drmkms
-file	external/bsd/drm2/dist/drm/drm_bufs.c		drmkms
-file	external/bsd/drm2/drm/drm_cache.c		drmkms
+file	external/bsd/drm2/dist/drm/ati_pcigart.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_agpsupport.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_atomic.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_atomic_helper.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_auth.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_bridge.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_bufs.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_cache.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_context.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_crtc.c		drmkms
+file	external/bsd/drm2/dist/drm/drm_crtc.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_crtc_helper.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_dma.c		drmkms
-file	external/bsd/drm2/dist/drm/drm_dp_helper.c	drmkms_i2c
-file	external/bsd/drm2/drm/drm_drv.c			drmkms
-file	external/bsd/drm2/dist/drm/drm_edid.c		drmkms_i2c
-file	external/bsd/drm2/i2c/drm_encoder_slave.c	drmkms_i2c
-file	external/bsd/drm2/dist/drm/drm_fb_helper.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_debugfs.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_dma.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_dp_helper.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_dp_mst_topology.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_drv.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_edid.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_encoder_slave.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_flip_work.c	drmkms
-file	external/bsd/drm2/drm/drm_fops.c		drmkms
-file	external/bsd/drm2/dist/drm/drm_gem.c		drmkms
-file	external/bsd/drm2/dist/drm/drm_global.c		drmkms
+file	external/bsd/drm2/dist/drm/drm_fops.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_gem.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_global.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_hashtab.c	drmkms
-#file	external/bsd/drm2/dist/drm/drm_info.c		drmkms
-#file	external/bsd/drm2/dist/drm/drm_ioc32.c		drmkms
-file	external/bsd/drm2/dist/drm/drm_ioctl.c		drmkms
-file	external/bsd/drm2/dist/drm/drm_irq.c		drmkms
-file	external/bsd/drm2/drm/drm_lock.c		drmkms
-file	external/bsd/drm2/drm/drm_memory.c		drmkms
-file	external/bsd/drm2/dist/drm/drm_mm.c		drmkms
-file	external/bsd/drm2/dist/drm/drm_modes.c		drmkms
+#file	external/bsd/drm2/dist/drm/drm_info.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_ioctl.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_irq.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_lock.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_memory.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_mm.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_modes.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_modeset_lock.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_pci.c	drmkms
 file	external/bsd/drm2/dist/drm/drm_plane_helper.c	drmkms
 #file	external/bsd/drm2/dist/drm/drm_platform.c	drmkms
-#file	external/bsd/drm2/dist/drm/drm_prime.c		drmkms
+#file	external/bsd/drm2/dist/drm/drm_prime.c	drmkms  # XXX drm prime
 file	external/bsd/drm2/dist/drm/drm_probe_helper.c	drmkms
-file	external/bsd/drm2/dist/drm/drm_rect.c		drmkms
-file	external/bsd/drm2/drm/drm_scatter.c		drmkms
-file	external/bsd/drm2/dist/drm/drm_stub.c		drmkms
-file	external/bsd/drm2/drm/drm_sysfs.c		drmkms
-file	external/bsd/drm2/drm/drm_vm.c			drmkms
-file	external/bsd/drm2/drm/drm_vma_manager.c		drmkms
+file	external/bsd/drm2/dist/drm/drm_rect.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_scatter.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_sysfs.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_trace_points.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_vm.c	drmkms
+file	external/bsd/drm2/dist/drm/drm_vma_manager.c	drmkms



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:25:28 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
Move local files to the top to make them more visible.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.14 src/sys/external/bsd/drm2/drm/files.drmkms:1.15
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.14	Tue Dec 26 14:53:12 2017
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Mon Aug 27 06:25:28 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.14 2017/12/26 14:53:12 jmcneill Exp $
+#	$NetBSD: files.drmkms,v 1.15 2018/08/27 06:25:28 riastradh Exp $
 
 include "external/bsd/drm2/linux/files.drmkms_linux"
 
@@ -30,6 +30,17 @@ makeoptions	drmkms	CPPFLAGS+="-DCONFIG_F
 makeoptions	drmkms	CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE=0"
 makeoptions	drmkms	CPPFLAGS+="-DCONFIG_BACKLIGHT_CLASS_DEVICE_MODULE=0"
 
+file	external/bsd/drm2/drm/drm_gem_vm.c		drmkms
+file	external/bsd/drm2/drm/drm_gem_cma_helper.c	drmkms
+file	external/bsd/drm2/drm/drm_module.c		drmkms
+file	external/bsd/drm2/drm/drm_sysctl.c		drmkms
+
+# Generic, unaccelerated drm-based framebuffer.
+define	drmfb: genfb
+file	external/bsd/drm2/drm/drmfb.c			drmfb
+
+include "external/bsd/drm2/ttm/files.ttm"
+
 file	external/bsd/drm2/dist/drm/drm_auth.c		drmkms
 file	external/bsd/drm2/dist/drm/drm_buffer.c		drmkms
 file	external/bsd/drm2/dist/drm/drm_bufs.c		drmkms
@@ -66,14 +77,3 @@ file	external/bsd/drm2/dist/drm/drm_stub
 file	external/bsd/drm2/drm/drm_sysfs.c		drmkms
 file	external/bsd/drm2/drm/drm_vm.c			drmkms
 file	external/bsd/drm2/drm/drm_vma_manager.c		drmkms
-
-file	external/bsd/drm2/drm/drm_gem_vm.c		drmkms
-file	external/bsd/drm2/drm/drm_gem_cma_helper.c	drmkms
-file	external/bsd/drm2/drm/drm_module.c		drmkms
-file	external/bsd/drm2/drm/drm_sysctl.c		drmkms
-
-# Generic, unaccelerated drm-based framebuffer.
-define	drmfb: genfb
-file	external/bsd/drm2/drm/drmfb.c			drmfb
-
-include "external/bsd/drm2/ttm/files.ttm"	



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-27 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 06:06:31 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_fops.c drm_lock.c

Log Message:
include drm_legacy.h as needed...

Author: coypu 
Committer: Taylor R Campbell 


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_fops.c \
src/sys/external/bsd/drm2/drm/drm_lock.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/drm/drm_fops.c
diff -u src/sys/external/bsd/drm2/drm/drm_fops.c:1.4 src/sys/external/bsd/drm2/drm/drm_fops.c:1.5
--- src/sys/external/bsd/drm2/drm/drm_fops.c:1.4	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/drm/drm_fops.c	Mon Aug 27 06:06:31 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_fops.c,v 1.4 2014/07/16 20:56:25 riastradh Exp $	*/
+/*	$NetBSD: drm_fops.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,12 +30,13 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.4 2014/07/16 20:56:25 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_fops.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $");
 
 #include 
 #include 
 
 #include 
+#include "../dist/drm/drm_legacy.h"
 
 static int	drm_open_file_master(struct drm_file *);
 
Index: src/sys/external/bsd/drm2/drm/drm_lock.c
diff -u src/sys/external/bsd/drm2/drm/drm_lock.c:1.4 src/sys/external/bsd/drm2/drm/drm_lock.c:1.5
--- src/sys/external/bsd/drm2/drm/drm_lock.c:1.4	Sat Apr  2 22:40:43 2016
+++ src/sys/external/bsd/drm2/drm/drm_lock.c	Mon Aug 27 06:06:31 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_lock.c,v 1.4 2016/04/02 22:40:43 riastradh Exp $	*/
+/*	$NetBSD: drm_lock.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -46,13 +46,14 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.4 2016/04/02 22:40:43 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.5 2018/08/27 06:06:31 riastradh Exp $");
 
 #include 
 #include 
 #include 
 
 #include 
+#include "../dist/drm/drm_legacy.h"
 
 static bool	drm_lock_acquire(struct drm_lock_data *, int);
 static void	drm_lock_release(struct drm_lock_data *, int);



CVS commit: src/sys/external/bsd/drm2/drm

2018-08-26 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Aug 27 00:46:32 UTC 2018

Added Files:
src/sys/external/bsd/drm2/drm: drm2netbsd

Log Message:
New script to generate files.drmkms from Linux Makefile.


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/external/bsd/drm2/drm/drm2netbsd

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

Added files:

Index: src/sys/external/bsd/drm2/drm/drm2netbsd
diff -u /dev/null src/sys/external/bsd/drm2/drm/drm2netbsd:1.1
--- /dev/null	Mon Aug 27 00:46:32 2018
+++ src/sys/external/bsd/drm2/drm/drm2netbsd	Mon Aug 27 00:46:32 2018
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+#	$NetBSD: drm2netbsd,v 1.1 2018/08/27 00:46:32 riastradh Exp $
+#
+# $ /path/to/drm2netbsd > /path/to/files.drm.new
+#
+# Run from the directory that came from drivers/gpu/drm.
+
+set -Ceu
+
+# Location of the DRMKMS sources relative to $NETBSDSRCDIR.
+drmkms_top=external/bsd/drm2/dist/drm
+
+# config(5) flag for the DRMKMS driver.
+drmkms_flag=drmkms
+
+env CONFIG_PCI=y \
+env CONFIG_AGP=y \
+make -f Makefile -V '$(drm-y)' -V '$(drm_kms_helper-y)' \
+| tr ' ' '\n' \
+| grep -v '^$' \
+| sed -e 's,\.o$,.c,' \
+| sort -u \
+| while read f; do
+	printf 'file\t%s\t%s\n' "$drmkms_top/$f" "$drmkms_flag"
+done



CVS commit: src/sys/external/bsd/drm2/drm

2018-02-06 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Wed Feb  7 06:18:46 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm: drm_scatter.c

Log Message:
XXX: add a NULL init to avoid a GCC 6 maybe uninit warning.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_scatter.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/drm/drm_scatter.c
diff -u src/sys/external/bsd/drm2/drm/drm_scatter.c:1.3 src/sys/external/bsd/drm2/drm/drm_scatter.c:1.4
--- src/sys/external/bsd/drm2/drm/drm_scatter.c:1.3	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/drm/drm_scatter.c	Wed Feb  7 06:18:46 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_scatter.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $	*/
+/*	$NetBSD: drm_scatter.c,v 1.4 2018/02/07 06:18:46 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_scatter.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_scatter.c,v 1.4 2018/02/07 06:18:46 mrg Exp $");
 
 #include 
 #include 
@@ -50,7 +50,7 @@ drm_sg_alloc(struct drm_device *dev, voi
 struct drm_file *file __unused)
 {
 	struct drm_scatter_gather *const request = data;
-	struct drm_sg_mem *sg;
+	struct drm_sg_mem *sg = NULL;
 	int error;
 
 	/*



CVS commit: src/sys/external/bsd/drm2/drm

2017-12-05 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Tue Dec  5 19:13:53 UTC 2017

Modified Files:
src/sys/external/bsd/drm2/drm: drm_drv.c

Log Message:
drm_stat: fix device minor calculation, ok riastradh@


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/external/bsd/drm2/drm/drm_drv.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/drm/drm_drv.c
diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.19 src/sys/external/bsd/drm2/drm/drm_drv.c:1.20
--- src/sys/external/bsd/drm2/drm/drm_drv.c:1.19	Thu Nov 30 20:25:55 2017
+++ src/sys/external/bsd/drm2/drm/drm_drv.c	Tue Dec  5 19:13:52 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_drv.c,v 1.19 2017/11/30 20:25:55 christos Exp $	*/
+/*	$NetBSD: drm_drv.c,v 1.20 2017/12/05 19:13:52 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.19 2017/11/30 20:25:55 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.20 2017/12/05 19:13:52 jmcneill Exp $");
 
 #include 
 #include 
@@ -586,7 +586,7 @@ drm_stat(struct file *fp, struct stat *s
 	struct drm_file *const file = fp->f_data;
 	struct drm_minor *const dminor = file->minor;
 	const dev_t devno = makedev(cdevsw_lookup_major(_cdevsw),
-	64*dminor->index + dminor->type);
+	64*dminor->type + dminor->index);
 
 	(void)memset(st, 0, sizeof(*st));
 



CVS commit: src/sys/external/bsd/drm2/drm

2016-11-19 Thread Maya Rashish
Module Name:src
Committed By:   maya
Date:   Sat Nov 19 17:19:59 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/drm: drm_vma_manager.c

Log Message:
Lock the manager and not just the node for inserting/removing nodes

should fix/help PR kern/50349: radeondrmkms vt-switching crash

ok riastradh


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_vma_manager.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/drm/drm_vma_manager.c
diff -u src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.4 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.5
--- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.4	Tue Apr 19 02:52:29 2016
+++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c	Sat Nov 19 17:19:59 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_vma_manager.c,v 1.4 2016/04/19 02:52:29 riastradh Exp $	*/
+/*	$NetBSD: drm_vma_manager.c,v 1.5 2016/11/19 17:19:59 maya Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.4 2016/04/19 02:52:29 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.5 2016/11/19 17:19:59 maya Exp $");
 
 #include 
 #include 
@@ -180,10 +180,10 @@ drm_vma_offset_add(struct drm_vma_offset
 	node->von_startpage = startpage;
 	node->von_npages = npages;
 
-	rw_enter(>von_lock, RW_WRITER);
+	rw_enter(>vom_lock, RW_WRITER);
 	collision = rb_tree_insert_node(>vom_nodes, node);
 	KASSERT(collision == node);
-	rw_exit(>von_lock);
+	rw_exit(>vom_lock);
 
 	return 0;
 }
@@ -196,9 +196,9 @@ drm_vma_offset_remove(struct drm_vma_off
 	if (node->von_npages == 0)
 		return;
 
-	rw_enter(>von_lock, RW_WRITER);
+	rw_enter(>vom_lock, RW_WRITER);
 	rb_tree_remove_node(>vom_nodes, node);
-	rw_exit(>von_lock);
+	rw_exit(>vom_lock);
 
 	vmem_free(mgr->vom_vmem, node->von_startpage, node->von_npages);
 



CVS commit: src/sys/external/bsd/drm2/drm

2016-04-18 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Tue Apr 19 02:52:29 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/drm: drm_vma_manager.c

Log Message:
Make sure rbtrees are empty on desctruction.

If related to PR kern/51076, might help catch the bug a bit earlier.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_vma_manager.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/drm/drm_vma_manager.c
diff -u src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.3 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.4
--- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.3	Fri Jun 19 22:51:57 2015
+++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c	Tue Apr 19 02:52:29 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_vma_manager.c,v 1.3 2015/06/19 22:51:57 chs Exp $	*/
+/*	$NetBSD: drm_vma_manager.c,v 1.4 2016/04/19 02:52:29 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.3 2015/06/19 22:51:57 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.4 2016/04/19 02:52:29 riastradh Exp $");
 
 #include 
 #include 
@@ -120,6 +120,8 @@ drm_vma_offset_manager_destroy(struct dr
 {
 
 	vmem_destroy(mgr->vom_vmem);
+	KASSERTMSG((RB_TREE_MIN(>vom_nodes) == NULL),
+	"drm vma offset manager %p not empty", mgr);
 #if 0
 	rb_tree_destroy(>vom_nodes);
 #endif
@@ -143,6 +145,8 @@ void
 drm_vma_node_destroy(struct drm_vma_offset_node *node)
 {
 
+	KASSERTMSG((RB_TREE_MIN(>von_files) == NULL),
+	"drm vma node %p not empty", node);
 #if 0
 	rb_tree_destroy(>von_files);
 #endif



CVS commit: src/sys/external/bsd/drm2/drm

2016-04-02 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Sat Apr  2 22:40:43 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/drm: drm_lock.c

Log Message:
Take a stab at implementing drm_idlelock_take/release.

Evidently needed by VIA DRM/UMS.  Noted and tested by medfly/coypu.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_lock.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/drm/drm_lock.c
diff -u src/sys/external/bsd/drm2/drm/drm_lock.c:1.3 src/sys/external/bsd/drm2/drm/drm_lock.c:1.4
--- src/sys/external/bsd/drm2/drm/drm_lock.c:1.3	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/drm/drm_lock.c	Sat Apr  2 22:40:43 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_lock.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $	*/
+/*	$NetBSD: drm_lock.c,v 1.4 2016/04/02 22:40:43 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -46,7 +46,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_lock.c,v 1.4 2016/04/02 22:40:43 riastradh Exp $");
 
 #include 
 #include 
@@ -232,28 +232,47 @@ drm_lock_free(struct drm_lock_data *lock
 }
 
 /*
- * Take the lock for the kernel's use.
- *
- * XXX This is unimplemented because it's not clear that the Linux code
- * makes sense at all.  Linux's drm_idlelock_take never blocks, but it
- * doesn't guarantee that the kernel holds the lock on return!  For
- * now, I'll hope that the code paths relying on this don't matter yet.
+ * Try to acquire the lock.  Whether or not we acquire it, guarantee
+ * that whoever next releases it relinquishes it to the kernel, not to
+ * anyone else.
  */
 void
-drm_idlelock_take(struct drm_lock_data *lock_data __unused)
+drm_idlelock_take(struct drm_lock_data *lock_data)
 {
-	KASSERT(mutex_is_locked(_global_mutex));
-	panic("drm_idlelock_take is not yet implemented"); /* XXX */
+
+	spin_lock(_data->spinlock);
+	KASSERT(!lock_data->idle_has_lock);
+	KASSERT(lock_data->kernel_waiters < UINT32_MAX);
+	lock_data->kernel_waiters++;
+	/* Try to acquire the lock.  */
+	if (drm_lock_acquire(lock_data, DRM_KERNEL_CONTEXT)) {
+		lock_data->idle_has_lock = 1;
+	} else {
+		/*
+		 * Recording that there are kernel waiters will prevent
+		 * userland from acquiring the lock again when it is
+		 * next released.
+		 */
+	}
+	spin_unlock(_data->spinlock);
 }
 
 /*
- * Release the lock from the kernel.
+ * Release whatever drm_idlelock_take managed to acquire.
  */
 void
-drm_idlelock_release(struct drm_lock_data *lock_data __unused)
+drm_idlelock_release(struct drm_lock_data *lock_data)
 {
-	KASSERT(mutex_is_locked(_global_mutex));
-	panic("drm_idlelock_release is not yet implemented"); /* XXX */
+
+	spin_lock(_data->spinlock);
+	KASSERT(0 < lock_data->kernel_waiters);
+	if (--lock_data->kernel_waiters == 0) {
+		if (lock_data->idle_has_lock) {
+			/* We did acquire it.  Release it.  */
+			drm_lock_release(lock_data, DRM_KERNEL_CONTEXT);
+		}
+	}
+	spin_unlock(_data->spinlock);
 }
 
 /*



CVS commit: src/sys/external/bsd/drm2/drm

2016-03-06 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Sun Mar  6 10:59:56 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/drm: drm_memory.c

Log Message:
Non-x86 doesn't have AGP. This should really be handled by config logic.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/sys/external/bsd/drm2/drm/drm_memory.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/drm/drm_memory.c
diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.9 src/sys/external/bsd/drm2/drm/drm_memory.c:1.10
--- src/sys/external/bsd/drm2/drm/drm_memory.c:1.9	Sat Mar  5 06:48:31 2016
+++ src/sys/external/bsd/drm2/drm/drm_memory.c	Sun Mar  6 10:59:56 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_memory.c,v 1.9 2016/03/05 06:48:31 mlelstv Exp $	*/
+/*	$NetBSD: drm_memory.c,v 1.10 2016/03/06 10:59:56 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,27 +30,33 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.9 2016/03/05 06:48:31 mlelstv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.10 2016/03/06 10:59:56 mlelstv Exp $");
 
 #if defined(__i386__) || defined(__x86_64__)
-#define HAS_AGP_I810	1
+
+# ifdef _KERNEL_OPT
+#  include "agp.h"
+#  if NAGP > 0
+#   include "agp_i810.h"
+#  else
+#   define NAGP_I810	0
+#  endif
+#  include "genfb.h"
+# else
+#  define NAGP_I810	1
+#  define NGENFB	0
+# endif
+
 #else
-#define HAS_AGP_I810	0
-#endif
 
-#ifdef _KERNEL_OPT
-# include "agp.h"
-# if NAGP == 0
+# ifdef _KERNEL_OPT
 #  define NAGP_I810	0
-# elif HAS_AGP_I810 > 0
-#  include "agp_i810.h"
+#  include "genfb.h"
 # else
 #  define NAGP_I810	0
+#  define NGENFB	0
 # endif
-# include "genfb.h"
-#else
-# define NAGP_I810	HAS_AGP_I810	/* XXX WTF?  */
-# define NGENFB		0	/* XXX WTF?  */
+
 #endif
 
 #include 



CVS commit: src/sys/external/bsd/drm2/drm

2016-03-04 Thread Michael van Elst
Module Name:src
Committed By:   mlelstv
Date:   Sat Mar  5 06:48:31 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/drm: drm_memory.c

Log Message:
Make agp_i810 also depend on agp so that a 'no agp' build is possible.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/external/bsd/drm2/drm/drm_memory.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/drm/drm_memory.c
diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.8 src/sys/external/bsd/drm2/drm/drm_memory.c:1.9
--- src/sys/external/bsd/drm2/drm/drm_memory.c:1.8	Sat Oct 17 15:13:39 2015
+++ src/sys/external/bsd/drm2/drm/drm_memory.c	Sat Mar  5 06:48:31 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_memory.c,v 1.8 2015/10/17 15:13:39 jmcneill Exp $	*/
+/*	$NetBSD: drm_memory.c,v 1.9 2016/03/05 06:48:31 mlelstv Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.8 2015/10/17 15:13:39 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.9 2016/03/05 06:48:31 mlelstv Exp $");
 
 #if defined(__i386__) || defined(__x86_64__)
 #define HAS_AGP_I810	1
@@ -39,7 +39,10 @@ __KERNEL_RCSID(0, "$NetBSD: drm_memory.c
 #endif
 
 #ifdef _KERNEL_OPT
-# if HAS_AGP_I810 > 0
+# include "agp.h"
+# if NAGP == 0
+#  define NAGP_I810	0
+# elif HAS_AGP_I810 > 0
 #  include "agp_i810.h"
 # else
 #  define NAGP_I810	0



CVS commit: src/sys/external/bsd/drm2/drm

2015-11-09 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Nov  9 22:04:53 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_drv.c

Log Message:
only clear agp hook on last close when agp is in use, from riastradh@


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/external/bsd/drm2/drm/drm_drv.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/drm/drm_drv.c
diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.16 src/sys/external/bsd/drm2/drm/drm_drv.c:1.17
--- src/sys/external/bsd/drm2/drm/drm_drv.c:1.16	Sat Oct 17 16:19:38 2015
+++ src/sys/external/bsd/drm2/drm/drm_drv.c	Mon Nov  9 22:04:53 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_drv.c,v 1.16 2015/10/17 16:19:38 jmcneill Exp $	*/
+/*	$NetBSD: drm_drv.c,v 1.17 2015/11/09 22:04:53 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.16 2015/10/17 16:19:38 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.17 2015/11/09 22:04:53 jmcneill Exp $");
 
 #include 
 #include 
@@ -394,7 +394,8 @@ drm_lastclose(struct drm_device *dev)
 		drm_irq_uninstall(dev);
 
 	mutex_lock(>struct_mutex);
-	drm_agp_clear_hook(dev);
+	if (dev->agp)
+		drm_agp_clear_hook(dev);
 	drm_legacy_sg_cleanup(dev);
 	list_for_each_entry_safe(vma, vma_temp, >vmalist, head) {
 		list_del(>head);



CVS commit: src/sys/external/bsd/drm2/drm

2015-11-09 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Mon Nov  9 23:11:18 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drmfb.c

Log Message:
If the "is_console" property is already specified, do not overwrite it.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/drm/drmfb.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/drm/drmfb.c
diff -u src/sys/external/bsd/drm2/drm/drmfb.c:1.1 src/sys/external/bsd/drm2/drm/drmfb.c:1.2
--- src/sys/external/bsd/drm2/drm/drmfb.c:1.1	Thu Mar  5 17:50:41 2015
+++ src/sys/external/bsd/drm2/drm/drmfb.c	Mon Nov  9 23:11:18 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drmfb.c,v 1.1 2015/03/05 17:50:41 riastradh Exp $	*/
+/*	$NetBSD: drmfb.c,v 1.2 2015/11/09 23:11:18 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.1 2015/03/05 17:50:41 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.2 2015/11/09 23:11:18 jmcneill Exp $");
 
 #ifdef _KERNEL_OPT
 #include "vga.h"
@@ -91,6 +91,7 @@ drmfb_attach(struct drmfb_softc *sc, con
 	static const struct genfb_ops zero_genfb_ops;
 	struct genfb_ops genfb_ops = zero_genfb_ops;
 	enum { CONS_VGA, CONS_GENFB, CONS_NONE } what_was_cons;
+	bool is_console;
 	int error;
 
 	/* genfb requires this.  */
@@ -113,23 +114,27 @@ drmfb_attach(struct drmfb_softc *sc, con
 	prop_dictionary_set_uint64(dict, "mode_callback",
 	(uint64_t)(uintptr_t)_genfb_mode_callback);
 
-	/* XXX Whattakludge!  */
+	if (!prop_dictionary_get_bool(dict, "is_console", _console)) {
+		/* XXX Whattakludge!  */
 #if NVGA > 0
-	if ((da->da_params->dp_is_vga_console != NULL) &&
-	(*da->da_params->dp_is_vga_console)(dev)) {
-		what_was_cons = CONS_VGA;
-		prop_dictionary_set_bool(dict, "is_console", true);
-		vga_cndetach();
-		if (da->da_params->dp_disable_vga)
-			(*da->da_params->dp_disable_vga)(dev);
-	} else
+		if ((da->da_params->dp_is_vga_console != NULL) &&
+		(*da->da_params->dp_is_vga_console)(dev)) {
+			what_was_cons = CONS_VGA;
+			prop_dictionary_set_bool(dict, "is_console", true);
+			vga_cndetach();
+			if (da->da_params->dp_disable_vga)
+(*da->da_params->dp_disable_vga)(dev);
+		} else
 #endif
-	if (genfb_is_console() && genfb_is_enabled()) {
-		what_was_cons = CONS_GENFB;
-		prop_dictionary_set_bool(dict, "is_console", true);
+		if (genfb_is_console() && genfb_is_enabled()) {
+			what_was_cons = CONS_GENFB;
+			prop_dictionary_set_bool(dict, "is_console", true);
+		} else {
+			what_was_cons = CONS_NONE;
+			prop_dictionary_set_bool(dict, "is_console", false);
+		}
 	} else {
 		what_was_cons = CONS_NONE;
-		prop_dictionary_set_bool(dict, "is_console", false);
 	}
 
 	sc->sc_genfb.sc_dev = sc->sc_da.da_dev;



CVS commit: src/sys/external/bsd/drm2/drm

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 15:13:39 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_memory.c

Log Message:
build on platforms without agp_i810


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_memory.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/drm/drm_memory.c
diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.7 src/sys/external/bsd/drm2/drm/drm_memory.c:1.8
--- src/sys/external/bsd/drm2/drm/drm_memory.c:1.7	Wed Apr 29 04:38:55 2015
+++ src/sys/external/bsd/drm2/drm/drm_memory.c	Sat Oct 17 15:13:39 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_memory.c,v 1.7 2015/04/29 04:38:55 riastradh Exp $	*/
+/*	$NetBSD: drm_memory.c,v 1.8 2015/10/17 15:13:39 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,14 +30,24 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.7 2015/04/29 04:38:55 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_memory.c,v 1.8 2015/10/17 15:13:39 jmcneill Exp $");
+
+#if defined(__i386__) || defined(__x86_64__)
+#define HAS_AGP_I810	1
+#else
+#define HAS_AGP_I810	0
+#endif
 
 #ifdef _KERNEL_OPT
-#include "agp_i810.h"
-#include "genfb.h"
+# if HAS_AGP_I810 > 0
+#  include "agp_i810.h"
+# else
+#  define NAGP_I810	0
+# endif
+# include "genfb.h"
 #else
-#define	NAGP_I810	1	/* XXX WTF?  */
-#define	NGENFB		0	/* XXX WTF?  */
+# define NAGP_I810	HAS_AGP_I810	/* XXX WTF?  */
+# define NGENFB		0	/* XXX WTF?  */
 #endif
 
 #include 



CVS commit: src/sys/external/bsd/drm2/drm

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 15:13:19 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cache.c

Log Message:
machine/cpufunc.h is MD, move it to i386/amd64 block


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_cache.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/drm/drm_cache.c
diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.6 src/sys/external/bsd/drm2/drm/drm_cache.c:1.7
--- src/sys/external/bsd/drm2/drm/drm_cache.c:1.6	Fri Mar  6 12:24:36 2015
+++ src/sys/external/bsd/drm2/drm/drm_cache.c	Sat Oct 17 15:13:19 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cache.c,v 1.6 2015/03/06 12:24:36 riastradh Exp $	*/
+/*	$NetBSD: drm_cache.c,v 1.7 2015/10/17 15:13:19 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,15 +30,13 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.6 2015/03/06 12:24:36 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.7 2015/10/17 15:13:19 jmcneill Exp $");
 
 #include 
 #include 
 
 #include 
 
-#include 
-
 #include 
 
 #include 
@@ -97,6 +95,8 @@ drm_clflush_virt_range(const void *vaddr
 
 #if defined(__i386__) || defined(__x86_64__)
 
+#include 
+
 static bool
 drm_md_clflush_finegrained_p(void)
 {



CVS commit: src/sys/external/bsd/drm2/drm

2015-10-17 Thread Jared D. McNeill
Module Name:src
Committed By:   jmcneill
Date:   Sat Oct 17 21:11:56 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cache.c

Log Message:
skip clflush on arm


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_cache.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/drm/drm_cache.c
diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.7 src/sys/external/bsd/drm2/drm/drm_cache.c:1.8
--- src/sys/external/bsd/drm2/drm/drm_cache.c:1.7	Sat Oct 17 15:13:19 2015
+++ src/sys/external/bsd/drm2/drm/drm_cache.c	Sat Oct 17 21:11:56 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cache.c,v 1.7 2015/10/17 15:13:19 jmcneill Exp $	*/
+/*	$NetBSD: drm_cache.c,v 1.8 2015/10/17 21:11:56 jmcneill Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,8 +30,9 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.7 2015/10/17 15:13:19 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_cache.c,v 1.8 2015/10/17 21:11:56 jmcneill Exp $");
 
+#include 
 #include 
 #include 
 
@@ -41,27 +42,34 @@ __KERNEL_RCSID(0, "$NetBSD: drm_cache.c,
 
 #include 
 
+#if !defined(__arm__)
+#define DRM_CLFLUSH	1
+#endif
+
+#if defined(DRM_CLFLUSH)
 static bool		drm_md_clflush_finegrained_p(void);
 static void		drm_md_clflush_all(void);
 static void		drm_md_clflush_page(struct page *);
 static void		drm_md_clflush_virt_range(const void *, size_t);
+#endif
 
 void
 drm_clflush_pages(struct page **pages, unsigned long npages)
 {
-
+#if defined(DRM_CLFLUSH)
 	if (drm_md_clflush_finegrained_p()) {
 		while (npages--)
 			drm_md_clflush_page(pages[npages]);
 	} else {
 		drm_md_clflush_all();
 	}
+#endif
 }
 
 void
 drm_clflush_pglist(struct pglist *list)
 {
-
+#if defined(DRM_CLFLUSH)
 	if (drm_md_clflush_finegrained_p()) {
 		struct vm_page *page;
 
@@ -71,26 +79,29 @@ drm_clflush_pglist(struct pglist *list)
 	} else {
 		drm_md_clflush_all();
 	}
+#endif
 }
 
 void
 drm_clflush_page(struct page *page)
 {
-
+#if defined(DRM_CLFLUSH)
 	if (drm_md_clflush_finegrained_p())
 		drm_md_clflush_page(page);
 	else
 		drm_md_clflush_all();
+#endif
 }
 
 void
 drm_clflush_virt_range(const void *vaddr, size_t nbytes)
 {
-
+#if defined(DRM_CLFLUSH)
 	if (drm_md_clflush_finegrained_p())
 		drm_md_clflush_virt_range(vaddr, nbytes);
 	else
 		drm_md_clflush_all();
+#endif
 }
 
 #if defined(__i386__) || defined(__x86_64__)



CVS commit: src/sys/external/bsd/drm2/drm

2015-07-29 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Thu Jul 30 04:36:48 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_sysctl.c

Log Message:
Add $NetBSD$ tag.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_sysctl.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/drm/drm_sysctl.c
diff -u src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.5 src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.6
--- src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.5	Wed Feb 25 14:00:52 2015
+++ src/sys/external/bsd/drm2/drm/drm_sysctl.c	Thu Jul 30 04:36:48 2015
@@ -1,3 +1,5 @@
+/*	$NetBSD: drm_sysctl.c,v 1.6 2015/07/30 04:36:48 riastradh Exp $	*/
+
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -27,7 +29,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_sysctl.c,v 1.5 2015/02/25 14:00:52 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_sysctl.c,v 1.6 2015/07/30 04:36:48 riastradh Exp $);
 
 #include sys/param.h
 #include sys/types.h



CVS commit: src/sys/external/bsd/drm2/drm

2015-06-19 Thread Chuck Silvers
Module Name:src
Committed By:   chs
Date:   Fri Jun 19 22:51:57 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_vma_manager.c

Log Message:
plug memory leak in drm_vma_node_revoke().


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drm_vma_manager.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/drm/drm_vma_manager.c
diff -u src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.2 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.3
--- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.2	Mon Mar  2 17:34:23 2015
+++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c	Fri Jun 19 22:51:57 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_vma_manager.c,v 1.2 2015/03/02 17:34:23 riastradh Exp $	*/
+/*	$NetBSD: drm_vma_manager.c,v 1.3 2015/06/19 22:51:57 chs Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_vma_manager.c,v 1.2 2015/03/02 17:34:23 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_vma_manager.c,v 1.3 2015/06/19 22:51:57 chs Exp $);
 
 #include sys/kmem.h
 #include sys/rbtree.h
@@ -289,6 +289,8 @@ drm_vma_node_revoke(struct drm_vma_offse
 	if (found != NULL)
 		rb_tree_remove_node(node-von_files, found);
 	rw_exit(node-von_lock);
+	if (found != NULL)
+		kmem_free(found, sizeof(*found));
 }
 
 bool



CVS commit: src/sys/external/bsd/drm2/drm

2015-03-08 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Sun Mar  8 23:37:56 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_drv.c

Log Message:
Don't return events that are too large and leave them in the list.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/drm/drm_drv.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/drm/drm_drv.c
diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.14 src/sys/external/bsd/drm2/drm/drm_drv.c:1.15
--- src/sys/external/bsd/drm2/drm/drm_drv.c:1.14	Fri Mar  6 14:02:39 2015
+++ src/sys/external/bsd/drm2/drm/drm_drv.c	Sun Mar  8 23:37:56 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_drv.c,v 1.14 2015/03/06 14:02:39 riastradh Exp $	*/
+/*	$NetBSD: drm_drv.c,v 1.15 2015/03/08 23:37:56 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 1.14 2015/03/06 14:02:39 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 1.15 2015/03/08 23:37:56 riastradh Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -469,6 +469,8 @@ drm_dequeue_event(struct drm_file *file,
 	event = list_first_entry(file-event_list, struct drm_pending_event,
 	link);
 	if (event-event-length  max_length) {
+		/* Event is too large, can't return it.  */
+		event = NULL;
 		ret = 0;
 		goto out;
 	}



CVS commit: src/sys/external/bsd/drm2/drm

2015-03-08 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Mar  9 01:29:40 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_gem_vm.c

Log Message:
Apply access control to gem mmap.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_gem_vm.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/drm/drm_gem_vm.c
diff -u src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.5 src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.6
--- src/sys/external/bsd/drm2/drm/drm_gem_vm.c:1.5	Sat Jul 26 21:15:45 2014
+++ src/sys/external/bsd/drm2/drm/drm_gem_vm.c	Mon Mar  9 01:29:40 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_gem_vm.c,v 1.5 2014/07/26 21:15:45 riastradh Exp $	*/
+/*	$NetBSD: drm_gem_vm.c,v 1.6 2015/03/09 01:29:40 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_gem_vm.c,v 1.5 2014/07/26 21:15:45 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_gem_vm.c,v 1.6 2015/03/09 01:29:40 riastradh Exp $);
 
 #include sys/types.h
 
@@ -95,7 +95,7 @@ drm_gem_mmap_object(struct drm_device *d
 static int
 drm_gem_mmap_object_locked(struct drm_device *dev, off_t byte_offset,
 size_t nbytes, int prot __unused, struct uvm_object **uobjp,
-voff_t *uoffsetp, struct file *file __unused)
+voff_t *uoffsetp, struct file *file)
 {
 	const unsigned long startpage = (byte_offset  PAGE_SHIFT);
 	const unsigned long npages = (nbytes  PAGE_SHIFT);
@@ -118,6 +118,9 @@ drm_gem_mmap_object_locked(struct drm_de
 		return 0;
 	}
 
+	if (!drm_vma_node_is_allowed(node, file))
+		return -EACCES;
+
 	struct drm_gem_object *const obj = container_of(node,
 	struct drm_gem_object, vma_node);
 	KASSERT(obj-dev == dev);



CVS commit: src/sys/external/bsd/drm2/drm

2015-03-06 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Fri Mar  6 14:02:39 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_drv.c

Log Message:
Synchronize permission checks with upstream drm_ioctl_permit.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/drm/drm_drv.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/drm/drm_drv.c
diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.13 src/sys/external/bsd/drm2/drm/drm_drv.c:1.14
--- src/sys/external/bsd/drm2/drm/drm_drv.c:1.13	Thu Jan  1 01:15:42 2015
+++ src/sys/external/bsd/drm2/drm/drm_drv.c	Fri Mar  6 14:02:39 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_drv.c,v 1.13 2015/01/01 01:15:42 mrg Exp $	*/
+/*	$NetBSD: drm_drv.c,v 1.14 2015/03/06 14:02:39 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 1.13 2015/01/01 01:15:42 mrg Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 1.14 2015/03/06 14:02:39 riastradh Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -642,19 +642,28 @@ drm_ioctl(struct file *fp, unsigned long
 	if ((ioctl == NULL) || (ioctl-func == NULL))
 		return EINVAL;
 
+	/* XXX Synchronize with drm_ioctl_permit in upstream drm_drv.c.  */
 	if (ISSET(ioctl-flags, DRM_ROOT_ONLY)  !DRM_SUSER())
 		return EACCES;
 
-	if (ISSET(ioctl-flags, DRM_AUTH)  !file-authenticated)
+	if (ISSET(ioctl-flags, DRM_AUTH) 
+	(file-minor-type != DRM_MINOR_RENDER) 
+	!file-authenticated)
 		return EACCES;
 
-	if (ISSET(ioctl-flags, DRM_MASTER)  (file-master == NULL))
+	if (ISSET(ioctl-flags, DRM_MASTER) 
+	(file-master == NULL) 
+	(file-minor-type != DRM_MINOR_CONTROL))
 		return EACCES;
 
 	if (!ISSET(ioctl-flags, DRM_CONTROL_ALLOW) 
 	(file-minor-type == DRM_MINOR_CONTROL))
 		return EACCES;
 
+	if (!ISSET(ioctl-flags, DRM_RENDER_ALLOW) 
+	(file-minor-type == DRM_MINOR_RENDER))
+		return EACCES;
+
 	if (!ISSET(ioctl-flags, DRM_UNLOCKED))
 		mutex_lock(drm_global_mutex);
 



CVS commit: src/sys/external/bsd/drm2/drm

2015-03-06 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Fri Mar  6 12:06:35 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cache.c

Log Message:
Use x86_mfence explicitly, not membar_sync, just to be clear.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_cache.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/drm/drm_cache.c
diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.4 src/sys/external/bsd/drm2/drm/drm_cache.c:1.5
--- src/sys/external/bsd/drm2/drm/drm_cache.c:1.4	Wed Mar  4 18:19:27 2015
+++ src/sys/external/bsd/drm2/drm/drm_cache.c	Fri Mar  6 12:06:35 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cache.c,v 1.4 2015/03/04 18:19:27 riastradh Exp $	*/
+/*	$NetBSD: drm_cache.c,v 1.5 2015/03/06 12:06:35 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_cache.c,v 1.4 2015/03/04 18:19:27 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_cache.c,v 1.5 2015/03/06 12:06:35 riastradh Exp $);
 
 #include sys/types.h
 #include sys/xcall.h
@@ -154,11 +154,12 @@ drm_md_clflush_virt_range(const void *va
 	clflush_size);
 	const char *p;
 
+	/* Support for CLFLUSH implies support for MFENCE.  */
 	KASSERT(drm_md_clflush_finegrained_p());
-	membar_sync();
+	x86_mfence();
 	for (p = start; p  end; p += clflush_size)
 		drm_x86_clflush(p);
-	membar_sync();
+	x86_mfence();
 }
 
 #endif	/* defined(__i386__) || defined(__x86_64__) */



CVS commit: src/sys/external/bsd/drm2/drm

2015-03-06 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Fri Mar  6 12:24:36 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cache.c

Log Message:
Remove local definition of wbinvd.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_cache.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/drm/drm_cache.c
diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.5 src/sys/external/bsd/drm2/drm/drm_cache.c:1.6
--- src/sys/external/bsd/drm2/drm/drm_cache.c:1.5	Fri Mar  6 12:06:35 2015
+++ src/sys/external/bsd/drm2/drm/drm_cache.c	Fri Mar  6 12:24:36 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cache.c,v 1.5 2015/03/06 12:06:35 riastradh Exp $	*/
+/*	$NetBSD: drm_cache.c,v 1.6 2015/03/06 12:24:36 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_cache.c,v 1.5 2015/03/06 12:06:35 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_cache.c,v 1.6 2015/03/06 12:24:36 riastradh Exp $);
 
 #include sys/types.h
 #include sys/xcall.h
@@ -104,12 +104,6 @@ drm_md_clflush_finegrained_p(void)
 }
 
 static void
-drm_x86_clflush_cpu(void)
-{
-	asm volatile (wbinvd);
-}
-
-static void
 drm_x86_clflush(const void *vaddr)
 {
 	asm volatile (clflush %0 : : m (*(const char *)vaddr));
@@ -125,7 +119,7 @@ drm_x86_clflush_size(void)
 static void
 drm_x86_clflush_xc(void *arg0 __unused, void *arg1 __unused)
 {
-	drm_x86_clflush_cpu();
+	wbinvd();
 }
 
 static void



CVS commit: src/sys/external/bsd/drm2/drm

2015-03-04 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Wed Mar  4 18:19:27 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_cache.c

Log Message:
CLFLUSH needs to be surrounded by membars.

While here, round everything to a multiple of the cache line size.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_cache.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/drm/drm_cache.c
diff -u src/sys/external/bsd/drm2/drm/drm_cache.c:1.3 src/sys/external/bsd/drm2/drm/drm_cache.c:1.4
--- src/sys/external/bsd/drm2/drm/drm_cache.c:1.3	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/drm/drm_cache.c	Wed Mar  4 18:19:27 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_cache.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $	*/
+/*	$NetBSD: drm_cache.c,v 1.4 2015/03/04 18:19:27 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_cache.c,v 1.3 2014/07/16 20:56:25 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_cache.c,v 1.4 2015/03/04 18:19:27 riastradh Exp $);
 
 #include sys/types.h
 #include sys/xcall.h
@@ -146,15 +146,19 @@ drm_md_clflush_page(struct page *page)
 
 static void
 drm_md_clflush_virt_range(const void *vaddr, size_t nbytes)
-
 {
-	const char *const start = vaddr, *const end = (start + nbytes);
+	const unsigned clflush_size = drm_x86_clflush_size();
+	const vaddr_t va = (vaddr_t)vaddr;
+	const char *const start = (const void *)rounddown(va, clflush_size);
+	const char *const end = (const void *)roundup(va + nbytes,
+	clflush_size);
 	const char *p;
-	const unsigned int clflush_size = drm_x86_clflush_size();
 
 	KASSERT(drm_md_clflush_finegrained_p());
+	membar_sync();
 	for (p = start; p  end; p += clflush_size)
 		drm_x86_clflush(p);
+	membar_sync();
 }
 
 #endif	/* defined(__i386__) || defined(__x86_64__) */



CVS commit: src/sys/external/bsd/drm2/drm

2015-03-02 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Mar  2 17:34:23 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm: drm_vma_manager.c

Log Message:
Don't sleep in the drm_vma allocator.  Fail with ENOSPC, not ENOMEM.

Caller has dev-struct_mutex locked and will handle ENOSPC anyway.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/sys/external/bsd/drm2/drm/drm_vma_manager.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/drm/drm_vma_manager.c
diff -u src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.1 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.2
--- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.1	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c	Mon Mar  2 17:34:23 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_vma_manager.c,v 1.1 2014/07/16 20:56:25 riastradh Exp $	*/
+/*	$NetBSD: drm_vma_manager.c,v 1.2 2015/03/02 17:34:23 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_vma_manager.c,v 1.1 2014/07/16 20:56:25 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_vma_manager.c,v 1.2 2015/03/02 17:34:23 riastradh Exp $);
 
 #include sys/kmem.h
 #include sys/rbtree.h
@@ -164,11 +164,14 @@ drm_vma_offset_add(struct drm_vma_offset
 	if (0  node-von_npages)
 		return 0;
 
-	error = vmem_alloc(mgr-vom_vmem, npages, VM_SLEEP|VM_BESTFIT,
+	error = vmem_alloc(mgr-vom_vmem, npages, VM_NOSLEEP|VM_BESTFIT,
 	startpage);
-	if (error)
+	if (error) {
+		if (error == ENOMEM)
+			error = ENOSPC;
 		/* XXX errno NetBSD-Linux */
 		return -error;
+	}
 
 	node-von_startpage = startpage;
 	node-von_npages = npages;



CVS commit: src/sys/external/bsd/drm2/drm

2014-12-31 Thread matthew green
Module Name:src
Committed By:   mrg
Date:   Wed Dec 31 08:55:18 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: drm_vm.c

Log Message:
fix a confusion between dev_t and devmajor_t, and include the primary
minor when calling makedev().


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_vm.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/drm/drm_vm.c
diff -u src/sys/external/bsd/drm2/drm/drm_vm.c:1.6 src/sys/external/bsd/drm2/drm/drm_vm.c:1.7
--- src/sys/external/bsd/drm2/drm/drm_vm.c:1.6	Sun Dec 14 23:48:58 2014
+++ src/sys/external/bsd/drm2/drm/drm_vm.c	Wed Dec 31 08:55:18 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_vm.c,v 1.6 2014/12/14 23:48:58 chs Exp $	*/
+/*	$NetBSD: drm_vm.c,v 1.7 2014/12/31 08:55:18 mrg Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_vm.c,v 1.6 2014/12/14 23:48:58 chs Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_vm.c,v 1.7 2014/12/31 08:55:18 mrg Exp $);
 
 #include sys/types.h
 #include sys/conf.h
@@ -49,7 +49,8 @@ int
 drm_mmap_object(struct drm_device *dev, off_t offset, size_t size, int prot,
 struct uvm_object **uobjp, voff_t *uoffsetp, struct file *file __unused)
 {
-	dev_t devno = cdevsw_lookup_major(drm_cdevsw);
+	devmajor_t maj = cdevsw_lookup_major(drm_cdevsw);
+	dev_t devno = makedev(maj, dev-primary-index);
 	struct uvm_object *uobj;
 
 	KASSERT(offset == (offset  ~(PAGE_SIZE-1)));



CVS commit: src/sys/external/bsd/drm2/drm

2014-11-24 Thread Patrick Welche
Module Name:src
Committed By:   prlw1
Date:   Mon Nov 24 17:29:03 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: drm_sysctl.c

Log Message:
Trivial build fix for no options SYSCTL_INCLUDE_DESCR case, to
avoid -Werror.
OK christos@ and riastradh@


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_sysctl.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/drm/drm_sysctl.c
diff -u src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.3 src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.4
--- src/sys/external/bsd/drm2/drm/drm_sysctl.c:1.3	Wed Nov 12 04:53:13 2014
+++ src/sys/external/bsd/drm2/drm/drm_sysctl.c	Mon Nov 24 17:29:02 2014
@@ -27,7 +27,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_sysctl.c,v 1.3 2014/11/12 04:53:13 christos Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_sysctl.c,v 1.4 2014/11/24 17:29:02 prlw1 Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -40,6 +40,7 @@ __KERNEL_RCSID(0, $NetBSD: drm_sysctl.c
 
 #include drm/drm_sysctl.h
 
+#ifdef SYSCTL_INCLUDE_DESCR
 static const char *
 drm_sysctl_get_description(const struct linux_module_param_info *p,
 const struct drm_sysctl_def *def)
@@ -53,6 +54,7 @@ drm_sysctl_get_description(const struct 
 	}
 	return NULL;
 }
+#endif
 
 #ifdef notyet
 static uint64_t



CVS commit: src/sys/external/bsd/drm2/drm

2014-09-14 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Sun Sep 14 20:08:21 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: drm_module.c

Log Message:
Fix module build of drmkms.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/drm/drm_module.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/drm/drm_module.c
diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.7 src/sys/external/bsd/drm2/drm/drm_module.c:1.8
--- src/sys/external/bsd/drm2/drm/drm_module.c:1.7	Thu Jul 17 13:47:19 2014
+++ src/sys/external/bsd/drm2/drm/drm_module.c	Sun Sep 14 20:08:21 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_module.c,v 1.7 2014/07/17 13:47:19 riastradh Exp $	*/
+/*	$NetBSD: drm_module.c,v 1.8 2014/09/14 20:08:21 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,9 +30,10 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_module.c,v 1.7 2014/07/17 13:47:19 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_module.c,v 1.8 2014/09/14 20:08:21 riastradh Exp $);
 
 #include sys/types.h
+#include sys/conf.h
 #include sys/device.h
 #include sys/module.h
 #ifndef _MODULE
@@ -50,10 +51,6 @@ __KERNEL_RCSID(0, $NetBSD: drm_module.c
  */
 MODULE(MODULE_CLASS_DRIVER, drmkms, iic,drmkms_linux);
 
-#ifdef _MODULE
-#include ioconf.c
-#endif
-
 struct mutex	drm_global_mutex;
 
 static int



CVS commit: src/sys/external/bsd/drm2/drm

2014-07-17 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Thu Jul 17 13:47:19 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: drm_module.c

Log Message:
Initialize the drm_global stuff.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/drm/drm_module.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/drm/drm_module.c
diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.6 src/sys/external/bsd/drm2/drm/drm_module.c:1.7
--- src/sys/external/bsd/drm2/drm/drm_module.c:1.6	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/drm/drm_module.c	Thu Jul 17 13:47:19 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_module.c,v 1.6 2014/07/16 20:56:25 riastradh Exp $	*/
+/*	$NetBSD: drm_module.c,v 1.7 2014/07/17 13:47:19 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_module.c,v 1.6 2014/07/16 20:56:25 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_module.c,v 1.7 2014/07/17 13:47:19 riastradh Exp $);
 
 #include sys/types.h
 #include sys/device.h
@@ -73,6 +73,7 @@ drm_init(void)
 	idr_init(drm_minors_idr);
 	linux_mutex_init(drm_global_mutex);
 	drm_connector_ida_init();
+	drm_global_init();
 
 	return 0;
 }
@@ -94,6 +95,7 @@ static void
 drm_fini(void)
 {
 
+	drm_global_release();
 	drm_connector_ida_destroy();
 	linux_mutex_destroy(drm_global_mutex);
 	idr_destroy(drm_minors_idr);



CVS commit: src/sys/external/bsd/drm2/drm

2014-07-07 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Mon Jul  7 20:21:31 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: drm_drv.c

Log Message:
Hook up drm suspend/resume.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/drm/drm_drv.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/drm/drm_drv.c
diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.5 src/sys/external/bsd/drm2/drm/drm_drv.c:1.6
--- src/sys/external/bsd/drm2/drm/drm_drv.c:1.5	Fri Jun 13 00:47:08 2014
+++ src/sys/external/bsd/drm2/drm/drm_drv.c	Mon Jul  7 20:21:31 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_drv.c,v 1.5 2014/06/13 00:47:08 riastradh Exp $	*/
+/*	$NetBSD: drm_drv.c,v 1.6 2014/07/07 20:21:31 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 1.5 2014/06/13 00:47:08 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 1.6 2014/07/07 20:21:31 riastradh Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -44,6 +44,7 @@ __KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 
 /* XXX Mega-kludge because modules are broken.  */
 #include sys/once.h
 #endif
+#include sys/pmf.h
 #include sys/poll.h
 #ifndef _MODULE
 #include sys/reboot.h		/* XXX drm_init kludge */
@@ -54,6 +55,8 @@ __KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 
 
 #include prop/proplib.h
 
+#include linux/pm.h
+
 #include drm/drmP.h
 
 #include ioconf.h
@@ -97,6 +100,9 @@ static int	drm_init(void);
 static ONCE_DECL(drm_init_once);
 #endif
 
+static bool	drm_suspend(device_t, const pmf_qual_t *);
+static bool	drm_resume(device_t, const pmf_qual_t *);
+
 static void	drm_undo_fill_in_dev(struct drm_device *);
 
 static struct drm_softc *drm_dev_softc(dev_t);
@@ -386,10 +392,22 @@ drm_attach(device_t parent, device_t sel
 		}
 	}
 
+	if (!pmf_device_register(parent, NULL, NULL)) {
+		aprint_error_dev(parent, unable to establish power handler);
+		goto fail2;
+	}
+	if (!pmf_device_register(self, drm_suspend, drm_resume)) {
+		aprint_error_dev(self, unable to establish power handler);
+		goto fail3;
+	}
+
 	/* Success!  */
 	sc-sc_initialized = true;
 	return;
 
+fail4: __unused
+	pmf_device_deregister(self);
+fail3:	pmf_device_deregister(parent);
 fail2:	if (dev-driver-unload != NULL)
 		(*dev-driver-unload)(dev);
 fail1:	drm_undo_fill_in_dev(dev);
@@ -411,6 +429,9 @@ drm_detach(device_t self, int flags)
 	if (sc-sc_opencount != 0)
 		return EBUSY;
 
+	pmf_device_deregister(self);
+	pmf_device_deregister(device_parent(self));
+
 	/* XXX The placement of this is pretty random...  */
 	if (dev-driver-unload != NULL)
 		(*dev-driver-unload)(dev);
@@ -509,6 +530,35 @@ drm_undo_fill_in_dev(struct drm_device *
 	spin_lock_destroy(dev-count_lock);
 }
 
+static bool
+drm_suspend(device_t self, const pmf_qual_t *qual)
+{
+	struct drm_softc *const sc = device_private(self);
+	struct drm_device *const dev = sc-sc_drm_dev;
+	int error;
+
+	error = (*dev-driver-suspend)(dev,
+	(pm_message_t) { .event = PM_EVENT_SUSPEND });
+	if (error)
+		return false;
+
+	return true;
+}
+
+static bool
+drm_resume(device_t self, const pmf_qual_t *qual)
+{
+	struct drm_softc *const sc = device_private(self);
+	struct drm_device *const dev = sc-sc_drm_dev;
+	int error;
+
+	error = (*dev-driver-resume)(dev);
+	if (error)
+		return false;
+
+	return true;
+}
+
 static struct drm_softc *
 drm_dev_softc(dev_t d)
 {



CVS commit: src/sys/external/bsd/drm2/drm

2014-07-01 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Tue Jul  1 16:29:57 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: drm_memory.c

Log Message:
Honour write-combining flag in drm_ioremap.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_memory.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/drm/drm_memory.c
diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.4 src/sys/external/bsd/drm2/drm/drm_memory.c:1.5
--- src/sys/external/bsd/drm2/drm/drm_memory.c:1.4	Thu Jun 12 15:05:29 2014
+++ src/sys/external/bsd/drm2/drm/drm_memory.c	Tue Jul  1 16:29:57 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_memory.c,v 1.4 2014/06/12 15:05:29 riastradh Exp $	*/
+/*	$NetBSD: drm_memory.c,v 1.5 2014/07/01 16:29:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_memory.c,v 1.4 2014/06/12 15:05:29 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_memory.c,v 1.5 2014/07/01 16:29:57 riastradh Exp $);
 
 #ifdef _KERNEL_OPT
 #include agp_i810.h
@@ -85,6 +85,7 @@ drm_ioremap(struct drm_device *dev, stru
 	 */
 	for (unit = 0; unit  dev-bus_nmaps; unit++) {
 		struct drm_bus_map *const bm = dev-bus_maps[unit];
+		int flags = bm-bm_flags;
 
 		/* Reject maps starting after the request.  */
 		if (map-offset  bm-bm_base)
@@ -100,12 +101,16 @@ drm_ioremap(struct drm_device *dev, stru
 			continue;
 
 		/* Ensure we can map the space into virtual memory.  */
-		if (!ISSET(bm-bm_flags, BUS_SPACE_MAP_LINEAR))
+		if (!ISSET(flags, BUS_SPACE_MAP_LINEAR))
 			continue;
 
+		/* Reflect requested flags in the bus_space map.  */
+		if (ISSET(map-flags, _DRM_WRITE_COMBINING))
+			flags |= BUS_SPACE_MAP_PREFETCHABLE;
+
 		/* Map it.  */
-		if (bus_space_map(bst, map-offset, map-size,
-			bm-bm_flags, map-lm_data.bus_space.bsh))
+		if (bus_space_map(bst, map-offset, map-size, flags,
+			map-lm_data.bus_space.bsh))
 			break;
 
 		map-lm_data.bus_space.bus_map = bm;



CVS commit: src/sys/external/bsd/drm2/drm

2014-06-12 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Fri Jun 13 00:47:08 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: drm_drv.c

Log Message:
Destroy, don't leak, events when done with them.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_drv.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/drm/drm_drv.c
diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.4 src/sys/external/bsd/drm2/drm/drm_drv.c:1.5
--- src/sys/external/bsd/drm2/drm/drm_drv.c:1.4	Thu May  1 15:19:16 2014
+++ src/sys/external/bsd/drm2/drm/drm_drv.c	Fri Jun 13 00:47:08 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_drv.c,v 1.4 2014/05/01 15:19:16 riastradh Exp $	*/
+/*	$NetBSD: drm_drv.c,v 1.5 2014/06/13 00:47:08 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 1.4 2014/05/01 15:19:16 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 1.5 2014/06/13 00:47:08 riastradh Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -638,6 +638,7 @@ drm_read(struct file *fp, off_t *off, st
 		error = uiomove(event-event, event-event-length, uio);
 		if (error)	/* XXX Requeue the event?  */
 			break;
+		(*event-destroy)(event);
 	}
 
 	/* Success!  */



CVS commit: src/sys/external/bsd/drm2/drm

2014-05-13 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Wed May 14 04:38:49 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: drm_memory.c

Log Message:
Fix error branch in drm_limit_dma_space.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drm_memory.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/drm/drm_memory.c
diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.2 src/sys/external/bsd/drm2/drm/drm_memory.c:1.3
--- src/sys/external/bsd/drm2/drm/drm_memory.c:1.2	Tue Mar 18 18:20:42 2014
+++ src/sys/external/bsd/drm2/drm/drm_memory.c	Wed May 14 04:38:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_memory.c,v 1.2 2014/03/18 18:20:42 riastradh Exp $	*/
+/*	$NetBSD: drm_memory.c,v 1.3 2014/05/14 04:38:49 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_memory.c,v 1.2 2014/03/18 18:20:42 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_memory.c,v 1.3 2014/05/14 04:38:49 riastradh Exp $);
 
 #ifdef _KERNEL_OPT
 #include agp_i810.h
@@ -253,7 +253,7 @@ int
 drm_limit_dma_space(struct drm_device *dev, resource_size_t min_addr,
 resource_size_t max_addr)
 {
-	int error;
+	int ret;
 
 	KASSERT(min_addr = max_addr);
 
@@ -274,11 +274,13 @@ drm_limit_dma_space(struct drm_device *d
 	 * the caller should try to allocate DMA-safe memory on failure
 	 * anyway, but...paranoia).
 	 */
-	error = bus_dmatag_subregion(dev-bus_dmat, min_addr, max_addr,
+	/* XXX errno NetBSD-Linux */
+	ret = -bus_dmatag_subregion(dev-bus_dmat, min_addr, max_addr,
 	dev-dmat, BUS_DMA_WAITOK);
-	if (error) {
+	if (ret) {
 		dev-dmat = dev-bus_dmat;
-		return error;
+		dev-dmat_subregion_p = false;
+		return ret;
 	}
 
 	/*



CVS commit: src/sys/external/bsd/drm2/drm

2014-04-04 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Fri Apr  4 15:16:59 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: drm_drv.c drm_module.c

Log Message:
Figure drm_debug into the drm_init module kludgerosity.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/drm_drv.c
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/drm/drm_module.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/drm/drm_drv.c
diff -u src/sys/external/bsd/drm2/drm/drm_drv.c:1.2 src/sys/external/bsd/drm2/drm/drm_drv.c:1.3
--- src/sys/external/bsd/drm2/drm/drm_drv.c:1.2	Tue Mar 18 18:20:42 2014
+++ src/sys/external/bsd/drm2/drm/drm_drv.c	Fri Apr  4 15:16:59 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_drv.c,v 1.2 2014/03/18 18:20:42 riastradh Exp $	*/
+/*	$NetBSD: drm_drv.c,v 1.3 2014/04/04 15:16:59 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 1.2 2014/03/18 18:20:42 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 1.3 2014/04/04 15:16:59 riastradh Exp $);
 
 #include sys/param.h
 #include sys/types.h
@@ -45,6 +45,9 @@ __KERNEL_RCSID(0, $NetBSD: drm_drv.c,v 
 #include sys/once.h
 #endif
 #include sys/poll.h
+#ifndef _MODULE
+#include sys/reboot.h		/* XXX drm_init kludge */
+#endif
 #include sys/select.h
 
 #include uvm/uvm_extern.h
@@ -455,6 +458,9 @@ drm_init(void)
 	linux_suppress_init = 1;
 	linux_mutex_init(drm_global_mutex);
 
+	if (ISSET(boothowto, AB_DEBUG))
+		drm_debug = ~(unsigned int)0;
+
 	return 0;
 
 fail1:	linux_kmap_fini();

Index: src/sys/external/bsd/drm2/drm/drm_module.c
diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.4 src/sys/external/bsd/drm2/drm/drm_module.c:1.5
--- src/sys/external/bsd/drm2/drm/drm_module.c:1.4	Thu Apr  3 15:16:18 2014
+++ src/sys/external/bsd/drm2/drm/drm_module.c	Fri Apr  4 15:16:59 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_module.c,v 1.4 2014/04/03 15:16:18 riastradh Exp $	*/
+/*	$NetBSD: drm_module.c,v 1.5 2014/04/04 15:16:59 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_module.c,v 1.4 2014/04/03 15:16:18 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_module.c,v 1.5 2014/04/04 15:16:59 riastradh Exp $);
 
 #include sys/types.h
 #include sys/device.h
@@ -49,10 +49,12 @@ MODULE(MODULE_CLASS_DRIVER, drmkms, iic
 #include ioconf.c
 #endif
 
-#ifndef _MODULE
 /*
  * XXX Mega-kludge.  See drm_init in drm_drv.c for details.
  */
+#ifdef _MODULE
+static const int linux_suppress_init = 1;
+#else
 extern int linux_suppress_init;
 #endif
 
@@ -66,10 +68,11 @@ drmkms_modcmd(modcmd_t cmd, void *arg __
 
 	switch (cmd) {
 	case MODULE_CMD_INIT:
-#ifndef _MODULE
-		if (!linux_suppress_init)
-#endif
-		linux_mutex_init(drm_global_mutex);
+		if (!linux_suppress_init) {
+			linux_mutex_init(drm_global_mutex);
+			if (ISSET(boothowto, AB_DEBUG))
+drm_debug = ~(unsigned int)0;
+		}
 #ifdef _MODULE
 		error = config_init_component(cfdriver_ioconf_drmkms,
 		cfattach_ioconf_drmkms, cfdata_ioconf_drmkms);
@@ -86,8 +89,6 @@ drmkms_modcmd(modcmd_t cmd, void *arg __
 			goto init_fail1;
 		}
 #endif
-		if (ISSET(boothowto, AB_DEBUG))
-			drm_debug = ~(unsigned int)0;
 		return 0;
 
 #ifdef _MODULE



CVS commit: src/sys/external/bsd/drm2/drm

2014-04-03 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Thu Apr  3 15:16:18 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: drm_module.c

Log Message:
Need sys/reboot.h for AB_DEBUG.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/drm/drm_module.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/drm/drm_module.c
diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.3 src/sys/external/bsd/drm2/drm/drm_module.c:1.4
--- src/sys/external/bsd/drm2/drm/drm_module.c:1.3	Thu Apr  3 14:15:05 2014
+++ src/sys/external/bsd/drm2/drm/drm_module.c	Thu Apr  3 15:16:18 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_module.c,v 1.3 2014/04/03 14:15:05 riastradh Exp $	*/
+/*	$NetBSD: drm_module.c,v 1.4 2014/04/03 15:16:18 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,11 +30,12 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: drm_module.c,v 1.3 2014/04/03 14:15:05 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_module.c,v 1.4 2014/04/03 15:16:18 riastradh Exp $);
 
 #include sys/types.h
 #include sys/device.h
 #include sys/module.h
+#include sys/reboot.h
 #include sys/systm.h
 
 #include drm/drmP.h



CVS commit: src/sys/external/bsd/drm2/drm

2014-03-27 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Thu Mar 27 21:21:47 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/drm: files.drmkms

Log Message:
add missing dependencies (Takahiro HAYASHI)


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/drm/files.drmkms

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/drm/files.drmkms
diff -u src/sys/external/bsd/drm2/drm/files.drmkms:1.2 src/sys/external/bsd/drm2/drm/files.drmkms:1.3
--- src/sys/external/bsd/drm2/drm/files.drmkms:1.2	Tue Mar 18 14:20:42 2014
+++ src/sys/external/bsd/drm2/drm/files.drmkms	Thu Mar 27 17:21:47 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: files.drmkms,v 1.2 2014/03/18 18:20:42 riastradh Exp $
+#	$NetBSD: files.drmkms,v 1.3 2014/03/27 21:21:47 christos Exp $
 
 define	drmkmsbus	{ }
 
@@ -11,7 +11,7 @@ include external/bsd/drm2/linux/files.d
 define	drmkms_i2c
 
 define	drmkms
-device	drmkms: drmkms_linux, drmkms_i2c
+device	drmkms: drmkms_linux, drmkms_i2c, i2cexec, i2c_bitbang
 attach	drmkms at drmkmsbus
 
 defflag		opt_drmkms.h	DRMKMS_DEBUG