CVS commit: [netbsd-7] src/sys/external/bsd/drm2/pci

2019-04-16 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Apr 16 08:10:22 UTC 2019

Modified Files:
src/sys/external/bsd/drm2/pci [netbsd-7]: drm_pci.c

Log Message:
Pull up following revision(s) (requested by dholland in ticket #1673):

sys/external/bsd/drm2/pci/drm_pci.c: revision 1.32 (via patch)

Don't try to interpret the second half of a 64-bit BAR as another one.
>From msaitoh@.


To generate a diff of this commit:
cvs rdiff -u -r1.6.2.3 -r1.6.2.4 src/sys/external/bsd/drm2/pci/drm_pci.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/pci/drm_pci.c
diff -u src/sys/external/bsd/drm2/pci/drm_pci.c:1.6.2.3 src/sys/external/bsd/drm2/pci/drm_pci.c:1.6.2.4
--- src/sys/external/bsd/drm2/pci/drm_pci.c:1.6.2.3	Thu Jul 30 15:43:37 2015
+++ src/sys/external/bsd/drm2/pci/drm_pci.c	Tue Apr 16 08:10:22 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_pci.c,v 1.6.2.3 2015/07/30 15:43:37 snj Exp $	*/
+/*	$NetBSD: drm_pci.c,v 1.6.2.4 2019/04/16 08:10:22 martin Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_pci.c,v 1.6.2.3 2015/07/30 15:43:37 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_pci.c,v 1.6.2.4 2019/04/16 08:10:22 martin Exp $");
 
 #include 
 #include 
@@ -140,6 +140,14 @@ drm_pci_attach(device_t self, const stru
 			continue;
 		}
 
+		/*
+		 * If it's a 64-bit mapping, don't interpret the second
+		 * half of it as another BAR in the next iteration of
+		 * the loop -- move on to the next unit.
+		 */
+		if (PCI_MAPREG_MEM_TYPE(type) == PCI_MAPREG_MEM_TYPE_64BIT)
+			unit++;
+
 		/* Inquire about it.  We'll map it in drm_core_ioremap.  */
 		if (pci_mapreg_info(pa->pa_pc, pa->pa_tag, reg, type,
 			>bm_base, >bm_size, >bm_flags) != 0) {



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/drm

2018-01-03 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Wed Jan  3 20:46:48 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/drm [netbsd-7]: drm_drv.c

Log Message:
Pull up following revision(s) (requested by jmcneill in ticket #1536):
sys/external/bsd/drm2/drm/drm_drv.c: 1.20
drm_stat: fix device minor calculation, ok riastradh@


To generate a diff of this commit:
cvs rdiff -u -r1.9.2.5 -r1.9.2.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.9.2.5 src/sys/external/bsd/drm2/drm/drm_drv.c:1.9.2.6
--- src/sys/external/bsd/drm2/drm/drm_drv.c:1.9.2.5	Thu Feb 11 23:14:41 2016
+++ src/sys/external/bsd/drm2/drm/drm_drv.c	Wed Jan  3 20:46:47 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_drv.c,v 1.9.2.5 2016/02/11 23:14:41 snj Exp $	*/
+/*	$NetBSD: drm_drv.c,v 1.9.2.6 2018/01/03 20:46:47 snj Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.9.2.5 2016/02/11 23:14:41 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.9.2.6 2018/01/03 20:46:47 snj Exp $");
 
 #include 
 #include 
@@ -579,7 +579,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: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/ttm

2017-01-28 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Jan 29 05:24:16 UTC 2017

Modified Files:
src/sys/external/bsd/drm2/dist/drm/ttm [netbsd-7]: ttm_tt.c

Log Message:
Pull up following revision(s) (requested by maya in ticket #1350):
sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c: revision 1.8
Guarantee no zero-size uao/kmem allocations via ttm.
It may be that all callers guarantee no zero-size ttm objects, but I
can't prove that in five minutes of browsing callers.  Rather than
add a KASSERT, lacking proof, we'll add a warning message so that if
it does happen then it happens noisily, but we'll also prevent the
bad consequences of passing zero into uao_create by rounding up to a
harmless nonzero allocation.


To generate a diff of this commit:
cvs rdiff -u -r1.6.2.1 -r1.6.2.2 \
src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c
diff -u src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c:1.6.2.1 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c:1.6.2.2
--- src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c:1.6.2.1	Mon Dec 12 09:13:42 2016
+++ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c	Sun Jan 29 05:24:16 2017
@@ -203,6 +203,9 @@ int ttm_tt_init(struct ttm_tt *ttm, stru
 	ttm->dummy_read_page = dummy_read_page;
 	ttm->state = tt_unpopulated;
 #ifdef __NetBSD__
+	WARN(size == 0, "zero-size allocation in %s, please file a NetBSD PR",
+	__func__);	/* paranoia -- can't prove in five minutes */
+	size = MAX(size, 1);
 	ttm->swap_storage = uao_create(roundup2(size, PAGE_SIZE), 0);
 	uao_set_pgfl(ttm->swap_storage, bus_dmamem_pgfl(bdev->dmat));
 #else
@@ -245,6 +248,9 @@ int ttm_dma_tt_init(struct ttm_dma_tt *t
 	ttm->dummy_read_page = dummy_read_page;
 	ttm->state = tt_unpopulated;
 #ifdef __NetBSD__
+	WARN(size == 0, "zero-size allocation in %s, please file a NetBSD PR",
+	__func__);	/* paranoia -- can't prove in five minutes */
+	size = MAX(size, 1);
 	ttm->swap_storage = uao_create(roundup2(size, PAGE_SIZE), 0);
 	uao_set_pgfl(ttm->swap_storage, bus_dmamem_pgfl(bdev->dmat));
 #else



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2016-12-14 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Wed Dec 14 19:13:24 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/drm [netbsd-7]: drmfb.c
src/sys/external/bsd/drm2/i915drm [netbsd-7]: intelfb.c
src/sys/external/bsd/drm2/include/drm [netbsd-7]: drmfb.h
src/sys/external/bsd/drm2/nouveau [netbsd-7]: nouveaufb.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1322):
sys/external/bsd/drm2/drm/drmfb.c: revision 1.3
sys/external/bsd/drm2/i915drm/intelfb.c: revision 1.14
sys/external/bsd/drm2/include/drm/drmfb.h: revision 1.2
sys/external/bsd/drm2/nouveau/nouveaufb.c: revision 1.4
add da_fb_linebytes to drmfb_attach_args and use it to pass linebytes
from nouveau code to drmfb. keep the same linebytes logic for i915.
nvidia hardware needs 256 byte alignment, so aligning to just 64 was
not enough.
fixes broken console with a width of 1440px (PR kern/51181)
ok riastradh


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.3 -r1.1.2.4 src/sys/external/bsd/drm2/drm/drmfb.c
cvs rdiff -u -r1.9.4.3 -r1.9.4.4 src/sys/external/bsd/drm2/i915drm/intelfb.c
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 \
src/sys/external/bsd/drm2/include/drm/drmfb.h
cvs rdiff -u -r1.1.2.4 -r1.1.2.5 \
src/sys/external/bsd/drm2/nouveau/nouveaufb.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.2.3 src/sys/external/bsd/drm2/drm/drmfb.c:1.1.2.4
--- src/sys/external/bsd/drm2/drm/drmfb.c:1.1.2.3	Thu Feb 11 23:17:06 2016
+++ src/sys/external/bsd/drm2/drm/drmfb.c	Wed Dec 14 19:13:24 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: drmfb.c,v 1.1.2.3 2016/02/11 23:17:06 snj Exp $	*/
+/*	$NetBSD: drmfb.c,v 1.1.2.4 2016/12/14 19:13:24 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.1.2.3 2016/02/11 23:17:06 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.1.2.4 2016/12/14 19:13:24 snj Exp $");
 
 #ifdef _KERNEL_OPT
 #include "vga.h"
@@ -103,9 +103,7 @@ drmfb_attach(struct drmfb_softc *sc, con
 	prop_dictionary_set_uint32(dict, "width", sizes->surface_width);
 	prop_dictionary_set_uint32(dict, "height", sizes->surface_height);
 	prop_dictionary_set_uint8(dict, "depth", sizes->surface_bpp);
-	prop_dictionary_set_uint16(dict, "linebytes",
-	roundup2((sizes->surface_width * howmany(sizes->surface_bpp, 8)),
-		64));
+	prop_dictionary_set_uint16(dict, "linebytes", da->da_fb_linebytes);
 	prop_dictionary_set_uint32(dict, "address", 0); /* XXX >32-bit */
 	CTASSERT(sizeof(uintptr_t) <= sizeof(uint64_t));
 	prop_dictionary_set_uint64(dict, "virtual_address",

Index: src/sys/external/bsd/drm2/i915drm/intelfb.c
diff -u src/sys/external/bsd/drm2/i915drm/intelfb.c:1.9.4.3 src/sys/external/bsd/drm2/i915drm/intelfb.c:1.9.4.4
--- src/sys/external/bsd/drm2/i915drm/intelfb.c:1.9.4.3	Thu Apr 23 07:31:17 2015
+++ src/sys/external/bsd/drm2/i915drm/intelfb.c	Wed Dec 14 19:13:24 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: intelfb.c,v 1.9.4.3 2015/04/23 07:31:17 snj Exp $	*/
+/*	$NetBSD: intelfb.c,v 1.9.4.4 2016/12/14 19:13:24 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intelfb.c,v 1.9.4.3 2015/04/23 07:31:17 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intelfb.c,v 1.9.4.4 2016/12/14 19:13:24 snj Exp $");
 
 #include 
 #include 
@@ -164,11 +164,14 @@ intelfb_attach_task(struct i915drmkms_ta
 	struct intelfb_softc *const sc = container_of(task,
 	struct intelfb_softc, sc_attach_task);
 	const struct intelfb_attach_args *const ifa = >sc_ifa;
+	const struct drm_fb_helper_surface_size *const sizes = >ifa_fb_sizes;
 	const struct drmfb_attach_args da = {
 		.da_dev = sc->sc_dev,
 		.da_fb_helper = ifa->ifa_fb_helper,
 		.da_fb_sizes = >ifa_fb_sizes,
 		.da_fb_vaddr = bus_space_vaddr(ifa->ifa_fb_bst, sc->sc_fb_bsh),
+		.da_fb_linebytes = roundup2((sizes->surface_width *
+		howmany(sizes->surface_bpp, 8)), 64),
 		.da_params = _drmfb_params,
 	};
 	int error;

Index: src/sys/external/bsd/drm2/include/drm/drmfb.h
diff -u src/sys/external/bsd/drm2/include/drm/drmfb.h:1.1.2.2 src/sys/external/bsd/drm2/include/drm/drmfb.h:1.1.2.3
--- src/sys/external/bsd/drm2/include/drm/drmfb.h:1.1.2.2	Fri Mar  6 21:39:10 2015
+++ src/sys/external/bsd/drm2/include/drm/drmfb.h	Wed Dec 14 19:13:24 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: drmfb.h,v 1.1.2.2 2015/03/06 21:39:10 snj Exp $	*/
+/*	$NetBSD: drmfb.h,v 1.1.2.3 2016/12/14 19:13:24 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -76,6 +76,7 @@ struct drmfb_attach_args {
 	struct drm_fb_helper		*da_fb_helper;
 	const struct drm_fb_helper_surface_size	*da_fb_sizes;
 	void*da_fb_vaddr;
+	uint32_t			da_fb_linebytes;
 	const struct drmfb_params	*da_params;
 };
 

Index: 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2016-12-12 Thread SAITOH Masanobu
Module Name:src
Committed By:   msaitoh
Date:   Mon Dec 12 09:13:43 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_gpu_error.c
src/sys/external/bsd/drm2/dist/drm/nouveau [netbsd-7]: nouveau_bo.c
nouveau_connector.c nouveau_dp.c nouveau_gem.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/core [netbsd-7]:
nouveau_core_object.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device 
[netbsd-7]:
nouveau_engine_device_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/disp [netbsd-7]:
nouveau_engine_disp_nvd0.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo [netbsd-7]:
nouveau_engine_fifo_base.c nouveau_engine_fifo_nv40.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/devinit 
[netbsd-7]:
nouveau_subdev_devinit_nv04.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mxm [netbsd-7]:
nouveau_subdev_mxm_mxms.c nouveau_subdev_mxm_nv50.c
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: radeon_ttm.c
src/sys/external/bsd/drm2/dist/drm/ttm [netbsd-7]: ttm_tt.c
src/sys/external/bsd/drm2/dist/include/drm/ttm [netbsd-7]:
ttm_bo_driver.h
src/sys/external/bsd/drm2/drm [netbsd-7]: drm_vma_manager.c
src/sys/external/bsd/drm2/include/drm [netbsd-7]: drm_wait_netbsd.h
src/sys/external/bsd/drm2/include/drm/ttm [netbsd-7]: ttm_page_alloc.h
src/sys/external/bsd/drm2/nouveau [netbsd-7]: nouveau_pci.c
src/sys/external/bsd/drm2/ttm [netbsd-7]: ttm_bus_dma.c

Log Message:
Pull up following revision(s) (requested by snj in ticket #1280):
sys/external/bsd/drm2/ttm/ttm_bus_dma.c: revision 1.2
sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: revision 1.14
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_dp.c: revision 1.2
sys/external/bsd/drm2/dist/drm/ttm/ttm_tt.c: revision 1.7

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c:
 revision 1.11

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nv40.c:
 revision 1.2
sys/external/bsd/drm2/dist/include/drm/ttm/ttm_bo_driver.h: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c: revision 1.8
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_connector.c: revision 1.3
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_gem.c: revision 1.4

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/devinit/nouveau_subdev_devinit_nv04.c:
 revision 1.3
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c: revision 1.7
sys/external/bsd/drm2/dist/drm/nouveau/core/core/nouveau_core_object.c: 
revision 1.3
sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c: revision 1.4

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mxm/nouveau_subdev_mxm_mxms.c:
 revision 1.2

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/mxm/nouveau_subdev_mxm_nv50.c:
 revision 1.3

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/disp/nouveau_engine_disp_nvd0.c:
 revision 1.3

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_base.c:
 revision 1.5
sys/external/bsd/drm2/include/drm/ttm/ttm_page_alloc.h: revision 1.2
sys/external/bsd/drm2/drm/drm_vma_manager.c: revision 1.4
sys/external/bsd/drm2/nouveau/nouveau_pci.c: revision 1.8
- fix non-debug build
- Use %"PRIx8", not %hx, for uint8_t.  %hx is for unsigned short.
- Flush unused function. Found by joerg.
- Make sure rbtrees are empty on desctruction.
  If related to PR kern/51076, might help catch the bug a bit earlier.
- revert rev 1.6.  we don't have access to those files as normal files
  and possible will get them directly elsewhere soon.
  (if i hack my nouveau to ignore fireware failure, it end up having
  a vaguely working console and slowly working X, which is better than
  the current situation.)
- Avoid possible null pointer dereference. Found by Coverity, CID 709895.
- Mark fallthrough to suppress Coverity complaints.
  CID 143119
  CID 143120
  CID 143121
  CID 143122
  CID 143123
  CID 143124
- Sanity-check that the encoder we found is not null.
  I think the previous code guarantees that finding this encoder should
  work, so this should be a moot point. CID 145720.
- Mark intended fallthrough to suppress Coverity CID 201378.
- Mark fallthrough with a comment to appease Coverity, CID 703385.
- Make it clearer to Coverity that there's no array overrun. CID 989067.
- Rework ttm tt swapin/swapout logic.
  Rather than handling `swapping in/out' here, per se, we let uvm do
  that, we interpret `swap out' as `deactivate pages', and we add
  generic ttm operations to wire and unwire pages, for the ttm_tt
  driver to use.
  This fixes certain graphics buffer eviction logic, which enables
  

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/drm

2016-12-03 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Sat Dec  3 12:24:50 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/drm [netbsd-7]: drm_vma_manager.c

Log Message:
Pull up following revision(s) (requested by maya in ticket #1277):
sys/external/bsd/drm2/drm/drm_vma_manager.c: revision 1.5
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.1.4.2 -r1.1.4.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.1.4.2 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.1.4.3
--- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.1.4.2	Sun Jul  5 21:29:26 2015
+++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c	Sat Dec  3 12:24:50 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_vma_manager.c,v 1.1.4.2 2015/07/05 21:29:26 snj Exp $	*/
+/*	$NetBSD: drm_vma_manager.c,v 1.1.4.3 2016/12/03 12:24:50 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.1.4.2 2015/07/05 21:29:26 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_vma_manager.c,v 1.1.4.3 2016/12/03 12:24:50 martin Exp $");
 
 #include 
 #include 
@@ -176,10 +176,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;
 }
@@ -192,9 +192,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: [netbsd-7] src/sys/external/bsd/drm2/dist/drm

2016-11-16 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Wed Nov 16 18:32:07 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm [netbsd-7]: drm_gem.c

Log Message:
Pull up following revision(s) (requested by maya in ticket #1272):
sys/external/bsd/drm2/dist/drm/drm_gem.c: revision 1.6
Avoid zero-size uao.
Apparently some GEM/TTM objects can be zero-size, as discovered by
Stefan Hertenberger:
https://mail-index.netbsd.org/current-users/2016/08/02/msg029891.html


To generate a diff of this commit:
cvs rdiff -u -r1.4.2.1 -r1.4.2.2 src/sys/external/bsd/drm2/dist/drm/drm_gem.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/drm_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.4.2.1 src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.4.2.2
--- src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.4.2.1	Mon Aug 18 07:49:10 2014
+++ src/sys/external/bsd/drm2/dist/drm/drm_gem.c	Wed Nov 16 18:32:07 2016
@@ -154,7 +154,11 @@ int drm_gem_object_init(struct drm_devic
 	drm_gem_private_object_init(dev, obj, size);
 
 #ifdef __NetBSD__
-	obj->gemo_shm_uao = uao_create(size, 0);
+	/*
+	 * A uao may not have size 0, but a gem object may.  Allocate a
+	 * spurious page so we needn't teach uao how to have size 0.
+	 */
+	obj->gemo_shm_uao = uao_create(MAX(size, PAGE_SIZE), 0);
 	/*
 	 * XXX This is gross.  We ought to do it the other way around:
 	 * set the uao to have the main uvm object's lock.  However,



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2016-04-15 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Fri Apr 15 08:46:42 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau [netbsd-7]: nouveau_drm.c
nouveau_drm.h nouveau_fence.c nouveau_nv10_fence.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/core [netbsd-7]:
nouveau_core_subdev.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device 
[netbsd-7]:
nouveau_engine_device_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/core [netbsd-7]:
namedb.h
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bar [netbsd-7]:
nouveau_subdev_bar_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/instmem 
[netbsd-7]:
nouveau_subdev_instmem_nv40.c
src/sys/external/bsd/drm2/include/linux [netbsd-7]: delay.h spinlock.h
src/sys/external/bsd/drm2/nouveau [netbsd-7]: files.nouveau
nouveau_pci.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1157):
sys/external/bsd/drm2/dist/drm/nouveau/core/core/nouveau_core_subdev.c: 
revision 1.3

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c:
 revisions 1.9, 1.10
sys/external/bsd/drm2/dist/drm/nouveau/core/include/core/namedb.h: 
revision 1.2

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bar/nouveau_subdev_bar_base.c:
 revisions 1.4, 1.5

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/instmem/nouveau_subdev_instmem_nv40.c:
 revision 1.3
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c: revision 1.8
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h: revision 1.4
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c: revision 1.4
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv10_fence.c: revision 
1.3
sys/external/bsd/drm2/include/linux/delay.h: revision 1.4
sys/external/bsd/drm2/include/linux/spinlock.h: revision 1.7
sys/external/bsd/drm2/nouveau/files.nouveau: revision 1.14
sys/external/bsd/drm2/nouveau/nouveau_pci.c: revision 1.7
Set nouveau to a more reasonable debug level.
Match the compile-time and default run-time settings in Linux.
--
Pass a sensible device state pointer to nouveau suspend/resume ops.
Gives nouveau half a chance of suspending and resuming -- not that it
works on my test laptop yet, but it's a start.
--
Fix bus_space_subregion error branch.
Return error code, not 0 (!), on bus_space_subregion failure.
In answer to `XXX error branch' comment: if nouveau_barobj_ctor
fails, then the caller will call nouveau_barobj_dtor too.  So there's
no leak here.
Unlikely to fix any observed bugs with nouveau -- there's no error
branch in the Linux side here.  But maybe it will catch some other
bug earlier.
--
Map the same mmio size as Linux does.
Unlikely to have practical consequences -- just reduces differences
in behaviour from upstream, to rule them out.
--
Print error code for failure to map PRAMIN BAR.
--
In msleep use mdelay if cold
--
Use only the low 32 bits of the bar object's vma offset as intended.
Should fix PR kern/50372, seen by everyone trying to use nouveau on
amd64 with hardware that uses nv50-style BARs and not nvc0-style
BARs.
--
Destroy the lock before caller frees memory.
--
Destroy spin locks appropriately.
--
Destroy the mutex before free.
--
Provide reader/writer semantics with recursive readers.
--
Exclude VRAM and FIFO regions from MMIO register mapping.
Nouveau maps those separately, and it is not trivial to convert those
mappings to bus_space_subregion.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.4 -r1.2.4.5 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c
cvs rdiff -u -r1.1.1.1.4.2 -r1.1.1.1.4.3 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h
cvs rdiff -u -r1.2.4.1 -r1.2.4.2 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c
cvs rdiff -u -r1.1.1.1.4.1 -r1.1.1.1.4.2 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv10_fence.c
cvs rdiff -u -r1.2 -r1.2.4.1 \
src/sys/external/bsd/drm2/dist/drm/nouveau/core/core/nouveau_core_subdev.c
cvs rdiff -u -r1.2.4.3 -r1.2.4.4 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.4.1 \
src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/core/namedb.h
cvs rdiff -u -r1.1.1.1.4.1 -r1.1.1.1.4.2 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bar/nouveau_subdev_bar_base.c
cvs rdiff -u -r1.1.1.1.4.1 -r1.1.1.1.4.2 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/instmem/nouveau_subdev_instmem_nv40.c
cvs rdiff -u -r1.3 -r1.3.2.1 src/sys/external/bsd/drm2/include/linux/delay.h
cvs rdiff -u -r1.3.2.1 -r1.3.2.2 \
src/sys/external/bsd/drm2/include/linux/spinlock.h
cvs rdiff -u -r1.2.4.4 -r1.2.4.5 \
src/sys/external/bsd/drm2/nouveau/files.nouveau
cvs 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2016-04-15 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Fri Apr 15 08:02:34 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: intel_pm.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1156):
sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.9
Cast uint8_t to uint32_t before shifting left by 24.
Otherwise this is undefined behaviour unless int is 32-bit and the
uint8_t value happens to be <=127.


To generate a diff of this commit:
cvs rdiff -u -r1.4.2.4 -r1.4.2.5 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4.2.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4.2.5
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4.2.4	Thu Feb 11 22:52:58 2016
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c	Fri Apr 15 08:02:34 2016
@@ -4487,8 +4487,8 @@ static void intel_init_emon(struct drm_d
 	pxw[15] = 0;
 
 	for (i = 0; i < 4; i++) {
-		u32 val = (pxw[i*4] << 24) | (pxw[(i*4)+1] << 16) |
-			(pxw[(i*4)+2] << 8) | (pxw[(i*4)+3]);
+		u32 val = ((u32)pxw[i*4] << 24) | ((u32)pxw[(i*4)+1] << 16) |
+			((u32)pxw[(i*4)+2] << 8) | ((u32)pxw[(i*4)+3]);
 		I915_WRITE(PXW + (i * 4), val);
 	}
 



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:00:30 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device 
[netbsd-7]:
nouveau_engine_device_base.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1082):

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c:
 revisions 1.6-1.8
Fix bogus output parameter for bus_space_map.
We stored the bus space handle in nv_subdev(device)->mmioh, which we
then overwrote with whatever was in the mmioh local variable -- maybe
garbage, maybe an old mapping, almost certainly wrong either way.
Instead store it in mmioh so that the subsequent assignment
nv_subdev(device)->mmioh = mmioh actually works as intended.
--
Return error from bus_space_map.
--
Paranoia about mmio register mapping size.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.2 -r1.2.4.3 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c:1.2.4.2 src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c:1.2.4.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c:1.2.4.2	Fri Mar  6 21:39:08 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device/nouveau_engine_device_base.c	Thu Feb 11 23:00:30 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_engine_device_base.c,v 1.2.4.2 2015/03/06 21:39:08 snj Exp $	*/
+/*	$NetBSD: nouveau_engine_device_base.c,v 1.2.4.3 2016/02/11 23:00:30 snj Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_device_base.c,v 1.2.4.2 2015/03/06 21:39:08 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_device_base.c,v 1.2.4.3 2016/02/11 23:00:30 snj Exp $");
 
 #include 
 #include 
@@ -177,8 +177,12 @@ nouveau_devobj_ctor(struct nouveau_objec
 	if (!(args->disable & NV_DEVICE_DISABLE_IDENTIFY) &&
 	!device->card_type) {
 #ifdef __NetBSD__
-		if (bus_space_map(mmiot, mmio_base, mmio_size, 0, ) != 0)
+		if (mmio_size < 0x102000)
 			return -ENOMEM;
+		/* XXX errno NetBSD->Linux */
+		ret = -bus_space_map(mmiot, mmio_base, mmio_size, 0, );
+		if (ret)
+			return ret;
 
 #ifndef __BIG_ENDIAN
 		if (bus_space_read_4(mmiot, mmioh, 4) != 0)
@@ -293,10 +297,11 @@ nouveau_devobj_ctor(struct nouveau_objec
 #ifdef __NetBSD__
 	if (!(args->disable & NV_DEVICE_DISABLE_MMIO) &&
 	!nv_subdev(device)->mmiosz) {
-		if (bus_space_map(mmiot, mmio_base, mmio_size, 0,
-			_subdev(device)->mmioh) != 0) {
+		/* XXX errno NetBSD->Linux */
+		ret = -bus_space_map(mmiot, mmio_base, mmio_size, 0, );
+		if (ret) {
 			nv_error(device, "unable to map device registers\n");
-			return -ENOMEM;
+			return ret;
 		}
 		nv_subdev(device)->mmiot = mmiot;
 		nv_subdev(device)->mmioh = mmioh;



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/linux

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:11:31 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/linux [netbsd-7]: linux_work.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1086):
sys/external/bsd/drm2/linux/linux_work.c: revision 1.12
Avoid NULL dereference in linux_worker_intr() in WORK_DELAYED_CANCELLED case.
Potentially fixes PR#49560.


To generate a diff of this commit:
cvs rdiff -u -r1.7.2.1 -r1.7.2.2 src/sys/external/bsd/drm2/linux/linux_work.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/linux/linux_work.c
diff -u src/sys/external/bsd/drm2/linux/linux_work.c:1.7.2.1 src/sys/external/bsd/drm2/linux/linux_work.c:1.7.2.2
--- src/sys/external/bsd/drm2/linux/linux_work.c:1.7.2.1	Sun Sep 21 18:03:33 2014
+++ src/sys/external/bsd/drm2/linux/linux_work.c	Thu Feb 11 23:11:31 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_work.c,v 1.7.2.1 2014/09/21 18:03:33 snj Exp $	*/
+/*	$NetBSD: linux_work.c,v 1.7.2.2 2016/02/11 23:11:31 snj Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: linux_work.c,v 1.7.2.1 2014/09/21 18:03:33 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_work.c,v 1.7.2.2 2016/02/11 23:11:31 snj Exp $");
 
 #include 
 #include 
@@ -849,7 +849,7 @@ linux_worker_intr(void *arg)
 	}
 
 	/* Either way, the callout is done.  */
-	TAILQ_REMOVE(>work.w_wq->wq_delayed, dw, dw_entry);
+	TAILQ_REMOVE(>wq_delayed, dw, dw_entry);
 	callout_destroy(>dw_callout);
 
 	mutex_exit(>wq_lock);



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:23:11 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_dma.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1091):
sys/external/bsd/drm2/dist/drm/i915/i915_dma.c: revisions 1.17, 1.18
Zero out the guard for bus_space_unmap before calling i915_dma_cleanup() which
calls i915_free_hws(), which then tries to unmap. Perhaps this fixes PR/50060.
--
fix the same bug on the linux side, print the error, and return the -tive
error to mimick linux.


To generate a diff of this commit:
cvs rdiff -u -r1.10.2.4 -r1.10.2.5 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.10.2.4 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.10.2.5
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.10.2.4	Thu Apr 23 07:31:17 2015
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c	Thu Feb 11 23:23:11 2016
@@ -1137,11 +1137,11 @@ static int i915_set_status_page(struct d
 	BUS_SPACE_MAP_PREFETCHABLE,
 	_priv->dri1.gfx_hws_cpu_bsh);
 	if (ret) {
-		i915_dma_cleanup(dev);
 		ring->status_page.gfx_addr = 0;
+		i915_dma_cleanup(dev);
 		DRM_ERROR("can not ioremap virtual address for"
-" G33 hw status page\n");
-		return ret;
+		" G33 hw status page, error %d\n", ret);
+		return -ret;
 	}
 
 	__CTASSERT(PAGE_SIZE == 4096);
@@ -1151,8 +1151,8 @@ static int i915_set_status_page(struct d
 	dev_priv->dri1.gfx_hws_cpu_addr =
 		ioremap_wc(dev_priv->gtt.mappable_base + hws->addr, 4096);
 	if (dev_priv->dri1.gfx_hws_cpu_addr == NULL) {
-		i915_dma_cleanup(dev);
 		ring->status_page.gfx_addr = 0;
+		i915_dma_cleanup(dev);
 		DRM_ERROR("can not ioremap virtual address for"
 " G33 hw status page\n");
 		return -ENOMEM;



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:25:51 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon 
[netbsd-7]:
nouveau_engine_perfmon_base.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1110):

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon/nouveau_engine_perfmon_base.c:
 revision 1.3
Don't ask `size < 0' when size is unsigned.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1.4.1 -r1.1.1.1.4.2 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon/nouveau_engine_perfmon_base.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon/nouveau_engine_perfmon_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon/nouveau_engine_perfmon_base.c:1.1.1.1.4.1 src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon/nouveau_engine_perfmon_base.c:1.1.1.1.4.2
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon/nouveau_engine_perfmon_base.c:1.1.1.1.4.1	Sun Sep 21 17:41:53 2014
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon/nouveau_engine_perfmon_base.c	Thu Feb 11 23:25:51 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_engine_perfmon_base.c,v 1.1.1.1.4.1 2014/09/21 17:41:53 snj Exp $	*/
+/*	$NetBSD: nouveau_engine_perfmon_base.c,v 1.1.1.1.4.2 2016/02/11 23:25:51 snj Exp $	*/
 
 /*
  * Copyright 2013 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_perfmon_base.c,v 1.1.1.1.4.1 2014/09/21 17:41:53 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_perfmon_base.c,v 1.1.1.1.4.2 2016/02/11 23:25:51 snj Exp $");
 
 #include 
 #include 
@@ -171,8 +171,12 @@ nouveau_perfctr_sample(struct nouveau_ob
 	struct nouveau_perfdom *dom;
 	struct nv_perfctr_sample *args = data;
 
+#if 1
+	CTASSERT(sizeof(*args) == 0);
+#else
 	if (size < sizeof(*args))
 		return -EINVAL;
+#endif
 	ppm->sequence++;
 
 	list_for_each_entry(dom, >domains, head) {



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/nouveau

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:28:05 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau [netbsd-7]:
nouveau_nv50_display.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #):
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c: revision 
1.5
Omit unused definition of readw.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1.4.3 -r1.1.1.1.4.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.1.1.1.4.3 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.1.1.1.4.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.1.1.1.4.3	Thu Feb 11 23:20:11 2016
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c	Thu Feb 11 23:28:05 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_nv50_display.c,v 1.1.1.1.4.3 2016/02/11 23:20:11 snj Exp $	*/
+/*	$NetBSD: nouveau_nv50_display.c,v 1.1.1.1.4.4 2016/02/11 23:28:05 snj Exp $	*/
 
 	/*
  * Copyright 2011 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nv50_display.c,v 1.1.1.1.4.3 2016/02/11 23:20:11 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nv50_display.c,v 1.1.1.1.4.4 2016/02/11 23:28:05 snj Exp $");
 
 #include 
 #include 
@@ -59,20 +59,8 @@ __KERNEL_RCSID(0, "$NetBSD: nouveau_nv50
  */
 
 #  define	__iomem		volatile
-#  define	readw		fake_readw
 #  define	writew		fake_writew
 
-static inline uint32_t
-fake_readw(const void __iomem *ptr)
-{
-	uint16_t v;
-
-	v = *(const uint16_t __iomem *)ptr;
-	membar_consumer();
-
-	return v;
-}
-
 static inline void
 fake_writew(uint16_t v, void __iomem *ptr)
 {



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:29:28 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm [netbsd-7]:
nouveau_subdev_therm_temp.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1112):

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_temp.c:
 revision 1.2
More useful array bounds check for enum values.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.4.1 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_temp.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_temp.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_temp.c:1.1.1.1 src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_temp.c:1.1.1.1.4.1
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_temp.c:1.1.1.1	Wed Aug  6 12:36:32 2014
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_temp.c	Thu Feb 11 23:29:28 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_subdev_therm_temp.c,v 1.1.1.1 2014/08/06 12:36:32 riastradh Exp $	*/
+/*	$NetBSD: nouveau_subdev_therm_temp.c,v 1.1.1.1.4.1 2016/02/11 23:29:28 snj Exp $	*/
 
 /*
  * Copyright 2012 The Nouveau community
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_therm_temp.c,v 1.1.1.1 2014/08/06 12:36:32 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_therm_temp.c,v 1.1.1.1.4.1 2016/02/11 23:29:28 snj Exp $");
 
 #include "priv.h"
 
@@ -104,7 +104,7 @@ void nouveau_therm_sensor_event(struct n
 	};
 	int temperature = therm->temp_get(therm);
 
-	if (thrs < 0 || thrs > 3)
+	if ((unsigned)thrs >= __arraycount(thresolds))
 		return;
 
 	if (dir == NOUVEAU_THERM_THRS_FALLING)



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/asm

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:31:06 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/include/asm [netbsd-7]: unaligned.h

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1113):
sys/external/bsd/drm2/include/asm/unaligned.h: revision 1.4
Don't return void.
Caught by pcc.  Thanks, pcc!


To generate a diff of this commit:
cvs rdiff -u -r1.1.4.1 -r1.1.4.2 \
src/sys/external/bsd/drm2/include/asm/unaligned.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/asm/unaligned.h
diff -u src/sys/external/bsd/drm2/include/asm/unaligned.h:1.1.4.1 src/sys/external/bsd/drm2/include/asm/unaligned.h:1.1.4.2
--- src/sys/external/bsd/drm2/include/asm/unaligned.h:1.1.4.1	Fri Mar  6 21:39:10 2015
+++ src/sys/external/bsd/drm2/include/asm/unaligned.h	Thu Feb 11 23:31:06 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: unaligned.h,v 1.1.4.1 2015/03/06 21:39:10 snj Exp $	*/
+/*	$NetBSD: unaligned.h,v 1.1.4.2 2016/02/11 23:31:06 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -45,7 +45,7 @@ static inline void
 put_unaligned_le16(uint16_t v, void *p)
 {
 
-	return le16enc(p, v);
+	le16enc(p, v);
 }
 
 static inline uint32_t
@@ -59,7 +59,7 @@ static inline void
 put_unaligned_le32(uint32_t v, void *p)
 {
 
-	return le32enc(p, v);
+	le32enc(p, v);
 }
 
 #endif  /* _ASM_UNALIGNED_H_ */



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/nouveau

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 22:55:50 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/nouveau [netbsd-7]: nouveau_pci.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1081):
sys/external/bsd/drm2/nouveau/nouveau_pci.c: revision 1.6
push the real attach down via config_mountroot, like radeon, as we
need firmware files.. which are currently missing:
drm kern error: nouveau E[  PGRAPH][nouveau0] failed to load fuc409c


To generate a diff of this commit:
cvs rdiff -u -r1.3.2.4 -r1.3.2.5 \
src/sys/external/bsd/drm2/nouveau/nouveau_pci.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/nouveau/nouveau_pci.c
diff -u src/sys/external/bsd/drm2/nouveau/nouveau_pci.c:1.3.2.4 src/sys/external/bsd/drm2/nouveau/nouveau_pci.c:1.3.2.5
--- src/sys/external/bsd/drm2/nouveau/nouveau_pci.c:1.3.2.4	Thu Feb 11 22:52:58 2016
+++ src/sys/external/bsd/drm2/nouveau/nouveau_pci.c	Thu Feb 11 22:55:50 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_pci.c,v 1.3.2.4 2016/02/11 22:52:58 snj Exp $	*/
+/*	$NetBSD: nouveau_pci.c,v 1.3.2.5 2016/02/11 22:55:50 snj Exp $	*/
 
 /*-
  * Copyright (c) 2015 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_pci.c,v 1.3.2.4 2016/02/11 22:52:58 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_pci.c,v 1.3.2.5 2016/02/11 22:55:50 snj Exp $");
 
 #include 
 #include 
@@ -51,6 +51,7 @@ SIMPLEQ_HEAD(nouveau_pci_task_head, nouv
 
 struct nouveau_pci_softc {
 	device_t		sc_dev;
+	struct pci_attach_args	sc_pa;
 	enum {
 		NOUVEAU_TASK_ATTACH,
 		NOUVEAU_TASK_WORKQUEUE,
@@ -66,6 +67,7 @@ struct nouveau_pci_softc {
 
 static int	nouveau_pci_match(device_t, cfdata_t, void *);
 static void	nouveau_pci_attach(device_t, device_t, void *);
+static void	nouveau_attach_real(device_t);
 static int	nouveau_pci_detach(device_t, int);
 
 static bool	nouveau_pci_suspend(device_t, const pmf_qual_t *);
@@ -102,17 +104,27 @@ nouveau_pci_attach(device_t parent, devi
 {
 	struct nouveau_pci_softc *const sc = device_private(self);
 	const struct pci_attach_args *const pa = aux;
-	uint64_t devname;
-	int error;
 
 	pci_aprint_devinfo(pa, NULL);
 
 	sc->sc_dev = self;
+	sc->sc_pa = *pa;
 
 	if (!pmf_device_register(self, _pci_suspend,
 		_pci_resume))
 		aprint_error_dev(self, "unable to establish power handler\n");
 
+	config_mountroot(self, _attach_real);
+}
+
+static void
+nouveau_attach_real(device_t self)
+{
+	struct nouveau_pci_softc *const sc = device_private(self);
+	const struct pci_attach_args *const pa = >sc_pa;
+	uint64_t devname;
+	int error;
+
 	sc->sc_task_state = NOUVEAU_TASK_ATTACH;
 	SIMPLEQ_INIT(>sc_task_u.attach);
 



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/radeon

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:02:54 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/radeon [netbsd-7]: radeondrmkmsfb.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1083):
sys/external/bsd/drm2/radeon/radeondrmkmsfb.c: revision 1.6
set the "width" and "height" parameters from the surface_width and
surface_height members.  idea from the intel code and jmcneill@.
this makes the fb on my RV370 use the full display size, not the
(not actually connected) 800x600 the svideo output supports.
X still starts up at 800x600 mode, but xrandr can fix that.


To generate a diff of this commit:
cvs rdiff -u -r1.3.4.2 -r1.3.4.3 \
src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.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/radeon/radeondrmkmsfb.c
diff -u src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c:1.3.4.2 src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c:1.3.4.3
--- src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c:1.3.4.2	Wed Dec  3 23:00:17 2014
+++ src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c	Thu Feb 11 23:02:54 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: radeondrmkmsfb.c,v 1.3.4.2 2014/12/03 23:00:17 snj Exp $	*/
+/*	$NetBSD: radeondrmkmsfb.c,v 1.3.4.3 2016/02/11 23:02:54 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: radeondrmkmsfb.c,v 1.3.4.2 2014/12/03 23:00:17 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: radeondrmkmsfb.c,v 1.3.4.3 2016/02/11 23:02:54 snj Exp $");
 
 #ifdef _KERNEL_OPT
 #include "vga.h"
@@ -168,8 +168,8 @@ radeonfb_setconfig_task(struct radeon_ta
 	KASSERT(sc->sc_scheduled);
 
 	/* XXX Ugh...  Pass these parameters some other way!  */
-	prop_dictionary_set_uint32(dict, "width", sizes->fb_width);
-	prop_dictionary_set_uint32(dict, "height", sizes->fb_height);
+	prop_dictionary_set_uint32(dict, "width", sizes->surface_width);
+	prop_dictionary_set_uint32(dict, "height", sizes->surface_height);
 	prop_dictionary_set_uint8(dict, "depth", sizes->surface_bpp);
 	prop_dictionary_set_uint16(dict, "linebytes", rfa->rfa_fb_linebytes);
 	prop_dictionary_set_uint32(dict, "address", 0); /* XXX >32-bit */



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:06:01 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm [netbsd-7]:
nouveau_subdev_therm_base.c nouveau_subdev_therm_fan.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1084):

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_base.c:
 revision 1.2

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_fan.c:
 revision 1.2
disable the once-a-second and many-times-a-minute logs about thermals.
these trigger on multiple cards for me and totally spam my logs in the
normal case.  one card switches from 41% to 42% and back again quite
regularly.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.4.1 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_base.c
 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_fan.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_base.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_base.c:1.1.1.1 src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_base.c:1.1.1.1.4.1
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_base.c:1.1.1.1	Wed Aug  6 12:36:32 2014
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_base.c	Thu Feb 11 23:06:01 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_subdev_therm_base.c,v 1.1.1.1 2014/08/06 12:36:32 riastradh Exp $	*/
+/*	$NetBSD: nouveau_subdev_therm_base.c,v 1.1.1.1.4.1 2016/02/11 23:06:01 snj Exp $	*/
 
 /*
  * Copyright 2012 The Nouveau community
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_therm_base.c,v 1.1.1.1 2014/08/06 12:36:32 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_therm_base.c,v 1.1.1.1.4.1 2016/02/11 23:06:01 snj Exp $");
 
 #include 
 #include 
@@ -141,7 +141,9 @@ nouveau_therm_update(struct nouveau_ther
 	spin_unlock_irqrestore(>lock, flags);
 
 	if (duty >= 0) {
+#if 0 /* XXXMRG one log per second is a little excessive */
 		nv_debug(therm, "FAN target request: %d%%\n", duty);
+#endif
 		nouveau_therm_fan_set(therm, immd, duty);
 	}
 }
Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_fan.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_fan.c:1.1.1.1 src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_fan.c:1.1.1.1.4.1
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_fan.c:1.1.1.1	Wed Aug  6 12:36:32 2014
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/therm/nouveau_subdev_therm_fan.c	Thu Feb 11 23:06:01 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_subdev_therm_fan.c,v 1.1.1.1 2014/08/06 12:36:32 riastradh Exp $	*/
+/*	$NetBSD: nouveau_subdev_therm_fan.c,v 1.1.1.1.4.1 2016/02/11 23:06:01 snj Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -26,7 +26,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_therm_fan.c,v 1.1.1.1 2014/08/06 12:36:32 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_therm_fan.c,v 1.1.1.1.4.1 2016/02/11 23:06:01 snj Exp $");
 
 #include "priv.h"
 
@@ -53,7 +53,9 @@ nouveau_fan_update(struct nouveau_fan *f
 	target = max_t(u8, target, fan->bios.min_duty);
 	target = min_t(u8, target, fan->bios.max_duty);
 	if (fan->percent != target) {
+#if 0 /* XXXMRG one log per second is a little excessive */
 		nv_debug(therm, "FAN target: %d\n", target);
+#endif
 		fan->percent = target;
 	}
 
@@ -78,7 +80,9 @@ nouveau_fan_update(struct nouveau_fan *f
 		duty = target;
 	}
 
+#if 0 /* XXXMRG one log per second is a little excessive */
 	nv_debug(therm, "FAN update: %d\n", duty);
+#endif
 	ret = fan->set(therm, duty);
 	if (ret) {
 		spin_unlock_irqrestore(>lock, flags);



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/nouveau

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:08:41 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau [netbsd-7]: nouveau_bo.c
nouveau_drm.h

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1085):
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c: revision 1.6
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h: revision 1.3
provide a ttm-backed set of nouveau_uvm_ops{} in the ttm_bo_driver{}.
fixes NULL pointer derefs inside UVM due to lack of pager ops.
copy the DRM_FILE_PAGE_OFFSET vs !_LP64 workaround.
with these, X starts up on my GTX 440.


To generate a diff of this commit:
cvs rdiff -u -r1.4.4.1 -r1.4.4.2 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c
cvs rdiff -u -r1.1.1.1.4.1 -r1.1.1.1.4.2 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c:1.4.4.1 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c:1.4.4.2
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c:1.4.4.1	Sun Sep 21 17:41:52 2014
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c	Thu Feb 11 23:08:41 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_bo.c,v 1.4.4.1 2014/09/21 17:41:52 snj Exp $	*/
+/*	$NetBSD: nouveau_bo.c,v 1.4.4.2 2016/02/11 23:08:41 snj Exp $	*/
 
 /*
  * Copyright 2007 Dave Airlied
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_bo.c,v 1.4.4.1 2014/09/21 17:41:52 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_bo.c,v 1.4.4.2 2016/02/11 23:08:41 snj Exp $");
 
 #include 
 #include 
@@ -1568,10 +1568,21 @@ nouveau_bo_fence_flush(void *sync_obj)
 	return 0;
 }
 
+#ifdef __NetBSD__
+static const struct uvm_pagerops nouveau_uvm_ops = {
+	.pgo_reference = _bo_uvm_reference,
+	.pgo_detach = _bo_uvm_detach,
+	.pgo_fault = _bo_uvm_fault,
+};
+#endif
+
 struct ttm_bo_driver nouveau_bo_driver = {
 	.ttm_tt_create = _ttm_tt_create,
 	.ttm_tt_populate = _ttm_tt_populate,
 	.ttm_tt_unpopulate = _ttm_tt_unpopulate,
+#ifdef __NetBSD__
+	.ttm_uvm_ops = _uvm_ops,
+#endif
 	.invalidate_caches = nouveau_bo_invalidate_caches,
 	.init_mem_type = nouveau_bo_init_mem_type,
 	.evict_flags = nouveau_bo_evict_flags,

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h:1.1.1.1.4.1 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h:1.1.1.1.4.2
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h:1.1.1.1.4.1	Sun Sep 21 17:41:52 2014
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.h	Thu Feb 11 23:08:41 2016
@@ -40,7 +40,11 @@
 
 struct nouveau_channel;
 
+#ifdef _LP64
 #define DRM_FILE_PAGE_OFFSET (0x1ULL >> PAGE_SHIFT)
+#else
+#define DRM_FILE_PAGE_OFFSET (0xa000UL >> PAGE_SHIFT)
+#endif
 
 #include "nouveau_fence.h"
 #include "nouveau_bios.h"



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/drm

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:14:41 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/drm [netbsd-7]: drm_drv.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1087):
sys/external/bsd/drm2/drm/drm_drv.c: revision 1.17
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.9.2.4 -r1.9.2.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.9.2.4 src/sys/external/bsd/drm2/drm/drm_drv.c:1.9.2.5
--- src/sys/external/bsd/drm2/drm/drm_drv.c:1.9.2.4	Tue Mar 17 17:52:49 2015
+++ src/sys/external/bsd/drm2/drm/drm_drv.c	Thu Feb 11 23:14:41 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_drv.c,v 1.9.2.4 2015/03/17 17:52:49 riz Exp $	*/
+/*	$NetBSD: drm_drv.c,v 1.9.2.5 2016/02/11 23:14:41 snj Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.9.2.4 2015/03/17 17:52:49 riz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_drv.c,v 1.9.2.5 2016/02/11 23:14:41 snj Exp $");
 
 #include 
 #include 
@@ -392,7 +392,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: [netbsd-7] src/sys/external/bsd/drm2/drm

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:17:06 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/drm [netbsd-7]: drmfb.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1088):
sys/external/bsd/drm2/drm/drmfb.c: revision 1.2
If the "is_console" property is already specified, do not overwrite it.


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 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.2.2 src/sys/external/bsd/drm2/drm/drmfb.c:1.1.2.3
--- src/sys/external/bsd/drm2/drm/drmfb.c:1.1.2.2	Fri Mar  6 21:39:10 2015
+++ src/sys/external/bsd/drm2/drm/drmfb.c	Thu Feb 11 23:17:06 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: drmfb.c,v 1.1.2.2 2015/03/06 21:39:10 snj Exp $	*/
+/*	$NetBSD: drmfb.c,v 1.1.2.3 2016/02/11 23:17:06 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -39,7 +39,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.1.2.2 2015/03/06 21:39:10 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drmfb.c,v 1.1.2.3 2016/02/11 23:17:06 snj 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: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/nouveau

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 23:20:12 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau [netbsd-7]:
nouveau_nv50_display.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb [netbsd-7]:
nouveau_subdev_fb_nv50.c nouveau_subdev_fb_nvc0.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm [netbsd-7]:
nouveau_subdev_vm_nv04.c nouveau_subdev_vm_nv44.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1090):
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c: revision 
1.4

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c: 
revision 1.3

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nvc0.c: 
revision 1.3

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv04.c: 
revision 1.3

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv44.c: 
revision 1.3
use pci_dma64_available() to choose a valid DMA tag.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1.4.2 -r1.1.1.1.4.3 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c
cvs rdiff -u -r1.1.1.1.4.1 -r1.1.1.1.4.2 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c
 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nvc0.c
cvs rdiff -u -r1.1.1.1.4.1 -r1.1.1.1.4.2 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv04.c
 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/vm/nouveau_subdev_vm_nv44.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.1.1.1.4.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.1.1.1.4.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c:1.1.1.1.4.2	Fri Mar  6 21:39:08 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv50_display.c	Thu Feb 11 23:20:11 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_nv50_display.c,v 1.1.1.1.4.2 2015/03/06 21:39:08 snj Exp $	*/
+/*	$NetBSD: nouveau_nv50_display.c,v 1.1.1.1.4.3 2016/02/11 23:20:11 snj Exp $	*/
 
 	/*
  * Copyright 2011 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nv50_display.c,v 1.1.1.1.4.2 2015/03/06 21:39:08 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nv50_display.c,v 1.1.1.1.4.3 2016/02/11 23:20:11 snj Exp $");
 
 #include 
 #include 
@@ -184,8 +184,8 @@ nv50_dmac_destroy(struct nouveau_object 
 	if (dmac->ptr) {
 		struct pci_dev *pdev = nv_device(core)->pdev;
 #ifdef __NetBSD__
-		/* XXX pa_dmat or pa_dmat64? */
-		const bus_dma_tag_t dmat = pdev->pd_pa.pa_dmat64;
+		const bus_dma_tag_t dmat = pci_dma64_available(>pd_pa) ?
+		pdev->pd_pa.pa_dmat64 : pdev->pd_pa.pa_dmat;
 
 		bus_dmamap_unload(dmat, dmac->dmamap);
 		bus_dmamem_unmap(dmat, dmac->dmakva, PAGE_SIZE);
@@ -343,7 +343,10 @@ nv50_dmac_create(struct nouveau_object *
 
 #ifdef __NetBSD__
 {
-	const bus_dma_tag_t dmat = nv_device(core)->pdev->pd_pa.pa_dmat64;
+	struct nouveau_device *device = nv_device(core);
+	const bus_dma_tag_t dmat = pci_dma64_available(>pdev->pd_pa) ?
+	device->pdev->pd_pa.pa_dmat64 : device->pdev->pd_pa.pa_dmat;
+
 	int rsegs;
 
 	/* XXX errno NetBSD->Linux */

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c:1.1.1.1.4.1 src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c:1.1.1.1.4.2
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c:1.1.1.1.4.1	Fri Mar  6 21:39:09 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/fb/nouveau_subdev_fb_nv50.c	Thu Feb 11 23:20:11 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_subdev_fb_nv50.c,v 1.1.1.1.4.1 2015/03/06 21:39:09 snj Exp $	*/
+/*	$NetBSD: nouveau_subdev_fb_nv50.c,v 1.1.1.1.4.2 2016/02/11 23:20:11 snj Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_fb_nv50.c,v 1.1.1.1.4.1 2015/03/06 21:39:09 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_subdev_fb_nv50.c,v 1.1.1.1.4.2 2016/02/11 23:20:11 snj Exp $");
 
 #include 
 #include 
@@ -255,8 +255,8 @@ nv50_fb_ctor(struct nouveau_object *pare
 
 #ifdef __NetBSD__
 {
-	/* XXX pa_dmat or pa_dmat64?  */
-	const bus_dma_tag_t dmat = device->pdev->pd_pa.pa_dmat64;
+	const bus_dma_tag_t dmat = pci_dma64_available(>pdev->pd_pa) ?
+	device->pdev->pd_pa.pa_dmat64 : device->pdev->pd_pa.pa_dmat;
 	int nsegs;
 
 	priv->r100c08_map = NULL; /* paranoia */
@@ -321,7 +321,8 @@ 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/nouveau

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 22:48:23 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/nouveau [netbsd-7]: files.nouveau
nouveau_module.c nouveau_pci.c nouveau_pci.h nouveaufb.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1092):
sys/external/bsd/drm2/nouveau/files.nouveau: revision 1.9
sys/external/bsd/drm2/nouveau/nouveau_module.c: revision 1.4
sys/external/bsd/drm2/nouveau/nouveau_pci.c: revision 1.4
sys/external/bsd/drm2/nouveau/nouveau_pci.h: revision 1.2
sys/external/bsd/drm2/nouveau/nouveaufb.c: revision 1.3
Split nouveau@pci from nouveau so we can attach it to other busses.
nouveaufb still depends on nouveau_pci, but it is not applicable to
non-PCI devices anyway.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.3 -r1.2.4.4 \
src/sys/external/bsd/drm2/nouveau/files.nouveau
cvs rdiff -u -r1.1.4.2 -r1.1.4.3 \
src/sys/external/bsd/drm2/nouveau/nouveau_module.c
cvs rdiff -u -r1.3.2.2 -r1.3.2.3 \
src/sys/external/bsd/drm2/nouveau/nouveau_pci.c
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 \
src/sys/external/bsd/drm2/nouveau/nouveau_pci.h
cvs rdiff -u -r1.1.2.3 -r1.1.2.4 \
src/sys/external/bsd/drm2/nouveau/nouveaufb.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/nouveau/files.nouveau
diff -u src/sys/external/bsd/drm2/nouveau/files.nouveau:1.2.4.3 src/sys/external/bsd/drm2/nouveau/files.nouveau:1.2.4.4
--- src/sys/external/bsd/drm2/nouveau/files.nouveau:1.2.4.3	Fri Mar  6 21:39:11 2015
+++ src/sys/external/bsd/drm2/nouveau/files.nouveau	Thu Feb 11 22:48:22 2016
@@ -1,14 +1,15 @@
-#	$NetBSD: files.nouveau,v 1.2.4.3 2015/03/06 21:39:11 snj Exp $
+#	$NetBSD: files.nouveau,v 1.2.4.4 2016/02/11 22:48:22 snj Exp $
 
 define	nouveaufbbus	{ }
-device	nouveau: drmkms, drmkms_pci, drmkms_ttm, nouveaufbbus
-attach	nouveau at pci
+device	nouveau: drmkms, drmkms_ttm, nouveaufbbus
+
+attach	nouveau at pci with nouveau_pci: drmkms_pci
+file	external/bsd/drm2/nouveau/nouveau_pci.c			nouveau
 
 device	nouveaufb: nouveaufbbus, drmfb, drmfb_pci, wsemuldisplaydev
 attach	nouveaufb at nouveaufbbus
 
 # Local additions.  External sources are listd below.
-file	external/bsd/drm2/nouveau/nouveau_pci.c			nouveau
 file	external/bsd/drm2/nouveau/nouveau_sysfs.c		nouveau
 file	external/bsd/drm2/nouveau/nouveau_vga.c			nouveau
 file	external/bsd/drm2/nouveau/nouveaufb.c			nouveaufb

Index: src/sys/external/bsd/drm2/nouveau/nouveau_module.c
diff -u src/sys/external/bsd/drm2/nouveau/nouveau_module.c:1.1.4.2 src/sys/external/bsd/drm2/nouveau/nouveau_module.c:1.1.4.3
--- src/sys/external/bsd/drm2/nouveau/nouveau_module.c:1.1.4.2	Sun Jan 11 05:59:17 2015
+++ src/sys/external/bsd/drm2/nouveau/nouveau_module.c	Thu Feb 11 22:48:22 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_module.c,v 1.1.4.2 2015/01/11 05:59:17 snj Exp $	*/
+/*	$NetBSD: nouveau_module.c,v 1.1.4.3 2016/02/11 22:48:22 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,13 +30,10 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_module.c,v 1.1.4.2 2015/01/11 05:59:17 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_module.c,v 1.1.4.3 2016/02/11 22:48:22 snj Exp $");
 
 #include 
 #include 
-#ifndef _MODULE
-#include 
-#endif
 #include 
 
 #include 
@@ -45,7 +42,7 @@ __KERNEL_RCSID(0, "$NetBSD: nouveau_modu
 #include 
 #include 
 
-MODULE(MODULE_CLASS_DRIVER, nouveau, "drmkms,drmkms_pci"); /* XXX drmkms_i2c, drmkms_ttm */
+MODULE(MODULE_CLASS_DRIVER, nouveau, "drmkms"); /* XXX drmkms_i2c, drmkms_ttm */
 
 #ifdef _MODULE
 #include "ioconf.c"
@@ -58,53 +55,20 @@ extern struct drm_driver *const nouveau_
 static int
 nouveau_init(void)
 {
-	extern int drm_guarantee_initialized(void);
-	int error;
-
-	error = drm_guarantee_initialized();
-	if (error)
-		return error;
-
-	error = drm_pci_init(nouveau_drm_driver, NULL);
-	if (error) {
-		aprint_error("nouveau: failed to init pci: %d\n", error);
-		return error;
-	}
-
 	nouveau_objects_init();
 	nouveau_devices_init();
-#if 0/* XXX nouveau acpi */
-	nouveau_register_dsm_handler();
-#endif
 	drm_sysctl_init(_def);
 
 	return 0;
 }
 
-int	nouveau_guarantee_initialized(void); /* XXX */
-int
-nouveau_guarantee_initialized(void)
-{
-#ifdef _MODULE
-	return 0;
-#else
-	static ONCE_DECL(nouveau_init_once);
-
-	return RUN_ONCE(_init_once, _init);
-#endif
-}
-
 static void
 nouveau_fini(void)
 {
 
 	drm_sysctl_fini(_def);
-#if 0/* XXX nouveau acpi */
-	nouveau_unregister_dsm_handler();
-#endif
 	nouveau_devices_fini();
 	nouveau_objects_fini();
-	drm_pci_exit(nouveau_drm_driver, NULL);
 }
 
 static int
@@ -114,11 +78,7 @@ nouveau_modcmd(modcmd_t cmd, void *arg _
 
 	switch (cmd) {
 	case MODULE_CMD_INIT:
-#ifdef _MODULE
 		error = nouveau_init();
-#else
-		error = nouveau_guarantee_initialized();
-#endif
 		if (error) {
 			

CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2016-02-11 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Feb 11 22:52:58 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: intel_i2c.c
intel_pm.c intel_sdvo.c
src/sys/external/bsd/drm2/dist/drm/nouveau [netbsd-7]: nouveau_drm.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/core [netbsd-7]:
device.h
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bios [netbsd-7]:
nouveau_subdev_bios_base.c
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: radeon_display.c
radeon_gem.c radeon_i2c.c radeon_kms.c
src/sys/external/bsd/drm2/include/linux [netbsd-7]: pci.h
platform_device.h
src/sys/external/bsd/drm2/nouveau [netbsd-7]: nouveau_pci.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1080):
sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: revision 1.14
sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.8
sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c: revision 1.7
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c: revision 1.7
sys/external/bsd/drm2/dist/drm/nouveau/core/include/core/device.h: 
revision 1.5

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bios/nouveau_subdev_bios_base.c:
 revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c: revision 1.5
sys/external/bsd/drm2/dist/drm/radeon/radeon_gem.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/radeon_i2c.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/radeon_kms.c: revision 1.3
sys/external/bsd/drm2/include/linux/pci.h: revision 1.21
sys/external/bsd/drm2/include/linux/platform_device.h: revision 1.7
sys/external/bsd/drm2/nouveau/nouveau_pci.c: revision 1.5
Use nv_device_base(dev) like other callers, not dev->pdev->dev.
First step in fixing the struct device nonsense.  This won't actually
fix anything yet until we also fix nv_device_base.
--
dev->dev, not >pdev->dev.
Latter is a charlatan, soon to meet judgment for its sins.
--
dev->dev, not >pdev->dev.
Latter is a mistake that is all my fault.  Oops.
--
Eliminate Linux struct pci_dev::dev, struct platform_device::dev.


To generate a diff of this commit:
cvs rdiff -u -r1.4.2.2 -r1.4.2.3 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c
cvs rdiff -u -r1.4.2.3 -r1.4.2.4 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c
cvs rdiff -u -r1.5.2.1 -r1.5.2.2 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c
cvs rdiff -u -r1.2.4.3 -r1.2.4.4 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c
cvs rdiff -u -r1.2.4.2 -r1.2.4.3 \
src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/core/device.h
cvs rdiff -u -r1.1.1.1.4.1 -r1.1.1.1.4.2 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bios/nouveau_subdev_bios_base.c
cvs rdiff -u -r1.2.4.2 -r1.2.4.3 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c
cvs rdiff -u -r1.2 -r1.2.4.1 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_gem.c \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_i2c.c \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_kms.c
cvs rdiff -u -r1.7.2.8 -r1.7.2.9 \
src/sys/external/bsd/drm2/include/linux/pci.h
cvs rdiff -u -r1.4 -r1.4.2.1 \
src/sys/external/bsd/drm2/include/linux/platform_device.h
cvs rdiff -u -r1.3.2.3 -r1.3.2.4 \
src/sys/external/bsd/drm2/nouveau/nouveau_pci.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.4.2.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.4.2.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.4.2.2	Fri Mar  6 21:39:08 2015
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c	Thu Feb 11 22:52:58 2016
@@ -656,7 +656,7 @@ int intel_setup_gmbus(struct drm_device 
 			 "i915 gmbus %s",
 			 gmbus_ports[i].name);
 
-		bus->adapter.dev.parent = >pdev->dev;
+		bus->adapter.dev.parent = dev->dev;
 		bus->dev_priv = dev_priv;
 
 		bus->adapter.algo = _algorithm;

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4.2.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4.2.4
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4.2.3	Thu Jul 30 15:21:50 2015
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c	Thu Feb 11 22:52:58 2016
@@ -6020,7 +6020,7 @@ void intel_aux_display_runtime_put(struc
 void intel_runtime_pm_get(struct drm_i915_private *dev_priv)
 {
 	struct drm_device *dev = dev_priv->dev;
-	struct device *device = >pdev->dev;
+	struct device *device = dev->dev;
 
 	if (!HAS_RUNTIME_PM(dev))
 		return;
@@ -6032,7 +6032,7 @@ void intel_runtime_pm_get(struct drm_i91
 void intel_runtime_pm_put(struct 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo

2016-01-27 Thread Jeff Rizzo
Module Name:src
Committed By:   riz
Date:   Wed Jan 27 19:24:30 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo [netbsd-7]:
nouveau_engine_fifo_nvc0.c nouveau_engine_fifo_nve0.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1079):

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:
 revision 1.6

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nvc0.c:
 revision 1.5
don't try to wait if (cold), spin waiting for registers to clear.
same as in nouveau_engine_fifo_nve0.c 1.5.  should fix PR#50362.
minor re-format of the previous.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1.4.2 -r1.1.1.1.4.3 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nvc0.c
cvs rdiff -u -r1.1.1.1.4.3 -r1.1.1.1.4.4 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nvc0.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nvc0.c:1.1.1.1.4.2 src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nvc0.c:1.1.1.1.4.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nvc0.c:1.1.1.1.4.2	Fri Mar  6 21:39:09 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nvc0.c	Wed Jan 27 19:24:30 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_engine_fifo_nvc0.c,v 1.1.1.1.4.2 2015/03/06 21:39:09 snj Exp $	*/
+/*	$NetBSD: nouveau_engine_fifo_nvc0.c,v 1.1.1.1.4.3 2016/01/27 19:24:30 riz Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_nvc0.c,v 1.1.1.1.4.2 2015/03/06 21:39:09 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_nvc0.c,v 1.1.1.1.4.3 2016/01/27 19:24:30 riz Exp $");
 
 #include 
 #include 
@@ -115,17 +115,26 @@ nvc0_fifo_runlist_update(struct nvc0_fif
 	nv_wr32(priv, 0x002274, 0x01f0 | (p >> 3));
 
 #ifdef __NetBSD__
-{
-	int ret;
+	if (cold) {
+		uint count = 2000;
+		while (count-- > 0) {
+			if (!(nv_rd32(priv, 0x00227c) & 0x0010))
+break;
+			delay(1000);
+		}
+		if (count == 0)
+			nv_error(priv, "runlist update timeout\n");
+	} else {
+		int ret;
 
-	spin_lock(>runlist.lock);
-	DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, >runlist.wait,
-	>runlist.lock, msecs_to_jiffies(2000),
-	!(nv_rd32(priv, 0x00227c) & 0x0010));
-	if (ret == 0)
-		nv_error(priv, "runlist update timeout\n");
-	spin_unlock(>runlist.lock);
-}
+		spin_lock(>runlist.lock);
+		DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, >runlist.wait,
+		>runlist.lock, msecs_to_jiffies(2000),
+		!(nv_rd32(priv, 0x00227c) & 0x0010));
+		if (ret == 0)
+			nv_error(priv, "runlist update timeout\n");
+		spin_unlock(>runlist.lock);
+	}
 #else
 	if (wait_event_timeout(priv->runlist.wait,
 			   !(nv_rd32(priv, 0x00227c) & 0x0010),

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.1.1.1.4.3 src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.1.1.1.4.4
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.1.1.1.4.3	Fri Nov  6 23:03:20 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c	Wed Jan 27 19:24:30 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.3 2015/11/06 23:03:20 riz Exp $	*/
+/*	$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.4 2016/01/27 19:24:30 riz Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.3 2015/11/06 23:03:20 riz Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.4 2016/01/27 19:24:30 riz Exp $");
 
 #include 
 #include 
@@ -139,7 +139,8 @@ nve0_fifo_runlist_update(struct nve0_fif
 	if (cold) {
 		uint count = 2000;
 		while (count-- > 0) {
-			if (!(nv_rd32(priv, 0x002284 + (engine * 0x08)) & 0x0010))
+			if (!(nv_rd32(priv, 0x002284 +
+			(engine * 0x08)) & 0x0010))
 break;
 			delay(1000);
 		}



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/linux

2016-01-26 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Wed Jan 27 00:01:07 UTC 2016

Modified Files:
src/sys/external/bsd/drm2/include/linux [netbsd-7]: pci.h

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1077):
sys/external/bsd/drm2/include/linux/pci.h: revision 1.22
Use PCI ROM MD fallback if PCI ROM BAR points to invalid ROM.
We previously applied the PCI ROM MD fallback only if the PCI ROM BAR
was altogether unpopulated.  Some Radeon devices seem to have a
populated PCI ROM BAR pointing at a bogus ROM, while 0xc works
fine.
Fixes at least one manifestation of PR kern/49964.


To generate a diff of this commit:
cvs rdiff -u -r1.7.2.7 -r1.7.2.8 \
src/sys/external/bsd/drm2/include/linux/pci.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/linux/pci.h
diff -u src/sys/external/bsd/drm2/include/linux/pci.h:1.7.2.7 src/sys/external/bsd/drm2/include/linux/pci.h:1.7.2.8
--- src/sys/external/bsd/drm2/include/linux/pci.h:1.7.2.7	Thu Jul 30 15:46:41 2015
+++ src/sys/external/bsd/drm2/include/linux/pci.h	Wed Jan 27 00:01:07 2016
@@ -1,4 +1,4 @@
-/*	$NetBSD: pci.h,v 1.7.2.7 2015/07/30 15:46:41 snj Exp $	*/
+/*	$NetBSD: pci.h,v 1.7.2.8 2016/01/27 00:01:07 snj Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -496,6 +496,7 @@ pci_map_rom_md(struct pci_dev *pdev)
 	pdev->pd_rom_bst = pdev->pd_pa.pa_memt;
 	pdev->pd_rom_bsh = rom_bsh;
 	pdev->pd_rom_size = rom_size;
+	pdev->pd_kludges |= NBPCI_KLUDGE_MAP_ROM;
 
 	return 0;
 #else
@@ -512,9 +513,8 @@ pci_map_rom(struct pci_dev *pdev, size_t
 	if (pci_mapreg_map(>pd_pa, PCI_MAPREG_ROM, PCI_MAPREG_TYPE_ROM,
 		(BUS_SPACE_MAP_PREFETCHABLE | BUS_SPACE_MAP_LINEAR),
 		>pd_rom_bst, >pd_rom_bsh, NULL, >pd_rom_size)
-	!= 0 &&
-	pci_map_rom_md(pdev) != 0)
-		return NULL;
+	!= 0)
+		goto fail_mi;
 	pdev->pd_kludges |= NBPCI_KLUDGE_MAP_ROM;
 
 	/* XXX This type is obviously wrong in general...  */
@@ -522,14 +522,31 @@ pci_map_rom(struct pci_dev *pdev, size_t
 		pdev->pd_rom_size, PCI_ROM_CODE_TYPE_X86,
 		>pd_rom_found_bsh, >pd_rom_found_size)) {
 		pci_unmap_rom(pdev, NULL);
-		return NULL;
+		goto fail_mi;
 	}
+	goto success;
+
+fail_mi:
+	if (pci_map_rom_md(pdev) != 0)
+		goto fail_md;
 
+	/* XXX This type is obviously wrong in general...  */
+	if (pci_find_rom(>pd_pa, pdev->pd_rom_bst, pdev->pd_rom_bsh,
+		pdev->pd_rom_size, PCI_ROM_CODE_TYPE_X86,
+		>pd_rom_found_bsh, >pd_rom_found_size)) {
+		pci_unmap_rom(pdev, NULL);
+		goto fail_md;
+	}
+
+success:
 	KASSERT(pdev->pd_rom_found_size <= SIZE_T_MAX);
 	*sizep = pdev->pd_rom_found_size;
 	pdev->pd_rom_vaddr = bus_space_vaddr(pdev->pd_rom_bst,
 	pdev->pd_rom_found_bsh);
 	return pdev->pd_rom_vaddr;
+
+fail_md:
+	return NULL;
 }
 
 static inline void __pci_rom_iomem *



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/linux

2015-11-18 Thread SAITOH Masanobu
Module Name:src
Committed By:   msaitoh
Date:   Wed Nov 18 08:52:04 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/include/linux [netbsd-7]: hdmi.h

Log Message:
Pull up following revision(s) (requested by jmcneill in ticket #1039):
sys/external/bsd/drm2/include/linux/hdmi.h: revision 1.6
hdmi_audio_infoframe_pack: Initialize the entire output buffer.
hdmi_infoframe_checksum: Fix HDMI infoframe checksum calculations.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.1 -r1.2.4.2 \
src/sys/external/bsd/drm2/include/linux/hdmi.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/linux/hdmi.h
diff -u src/sys/external/bsd/drm2/include/linux/hdmi.h:1.2.4.1 src/sys/external/bsd/drm2/include/linux/hdmi.h:1.2.4.2
--- src/sys/external/bsd/drm2/include/linux/hdmi.h:1.2.4.1	Sun Jan 11 05:59:17 2015
+++ src/sys/external/bsd/drm2/include/linux/hdmi.h	Wed Nov 18 08:52:04 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: hdmi.h,v 1.2.4.1 2015/01/11 05:59:17 snj Exp $	*/
+/*	$NetBSD: hdmi.h,v 1.2.4.2 2015/11/18 08:52:04 msaitoh Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -217,7 +217,7 @@ hdmi_infoframe_checksum(void *buf, size_
 	uint8_t checksum = 0;
 
 	while (length--)
-		checksum = *p++;
+		checksum += *p++;
 
 	p = buf;
 	p[3] = (256 - checksum);
@@ -283,7 +283,13 @@ hdmi_audio_infoframe_pack(const struct h
 
 	p[4] = __SHIFTIN(frame->downmix_inhibit? 1 : 0, __BIT(7));
 
-	/* XXX p[5], p[6], p[7], p[8], p[9]?  */
+	/* PB6 to PB10 are reserved */
+	p[5] = 0;
+	p[6] = 0;
+	p[7] = 0;
+	p[8] = 0;
+	p[9] = 0;
+
 	CTASSERT(HDMI_AUDIO_INFOFRAME_SIZE == 10);
 
 	hdmi_infoframe_checksum(buf, length);



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/linux

2015-11-06 Thread Jeff Rizzo
Module Name:src
Committed By:   riz
Date:   Fri Nov  6 22:58:20 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/include/linux [netbsd-7]: bitops.h

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1001):
sys/external/bsd/drm2/include/linux/bitops.h: revision 1.10
sys/external/bsd/drm2/include/linux/bitops.h: revision 1.11
Fix indexing convention of Linux __ffs/__ffs64 shims.
They reject zero input, and yield zero-based indexing, unlike our
ffs/ffs64, which return zero for zero and yield one-based indexing.
May let nouveau make a little more progress toward booting!
Found by mrg@.
Fix comment in previous.


To generate a diff of this commit:
cvs rdiff -u -r1.7.2.2 -r1.7.2.3 \
src/sys/external/bsd/drm2/include/linux/bitops.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/linux/bitops.h
diff -u src/sys/external/bsd/drm2/include/linux/bitops.h:1.7.2.2 src/sys/external/bsd/drm2/include/linux/bitops.h:1.7.2.3
--- src/sys/external/bsd/drm2/include/linux/bitops.h:1.7.2.2	Fri Mar  6 21:39:10 2015
+++ src/sys/external/bsd/drm2/include/linux/bitops.h	Fri Nov  6 22:58:20 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: bitops.h,v 1.7.2.2 2015/03/06 21:39:10 snj Exp $	*/
+/*	$NetBSD: bitops.h,v 1.7.2.3 2015/11/06 22:58:20 riz Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -42,16 +42,24 @@
 
 #include 
 
+/*
+ * Linux __ffs/__ffs64 is zero-based; zero input is undefined.  Our
+ * ffs/ffs64 is one-based; zero input yields zero.
+ */
 static inline unsigned long
 __ffs(unsigned long x)
 {
-	return ffs64(x);
+
+	KASSERT(x != 0);
+	return ffs64(x) - 1;
 }
 
 static inline unsigned long
 __ffs64(uint64_t x)
 {
-	return ffs64(x);
+
+	KASSERT(x != 0);
+	return ffs64(x) - 1;
 }
 
 static inline unsigned int



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/nouveau

2015-11-06 Thread Jeff Rizzo
Module Name:src
Committed By:   riz
Date:   Fri Nov  6 23:03:20 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau [netbsd-7]: nouveau_drm.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo [netbsd-7]:
nouveau_engine_fifo_nve0.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1002):
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c: revision 1.6

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:
 revision 1.5
nouveau_drm.c:
- hook up an empty uvm_pagerops like radeon does.
- hook up nouveau_ttm_mmap_object().
nouveau_engine_fifo_nve0.c:
- if (cold), don't try to wait, but hard-spin until the timeout period.
with these in place, i am able to get working text-console with nouveau!
ok riastradh.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.2 -r1.2.4.3 \
src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c
cvs rdiff -u -r1.1.1.1.4.2 -r1.1.1.1.4.3 \

src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.2.4.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.2.4.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c:1.2.4.2	Fri Mar  6 21:39:08 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nouveau_drm.c	Fri Nov  6 23:03:20 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_drm.c,v 1.2.4.2 2015/03/06 21:39:08 snj Exp $	*/
+/*	$NetBSD: nouveau_drm.c,v 1.2.4.3 2015/11/06 23:03:20 riz Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_drm.c,v 1.2.4.2 2015/03/06 21:39:08 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_drm.c,v 1.2.4.3 2015/11/06 23:03:20 riz Exp $");
 
 #include 
 #include 
@@ -62,6 +62,7 @@ __KERNEL_RCSID(0, "$NetBSD: nouveau_drm.
 #include "nouveau_fbcon.h"
 #include "nouveau_fence.h"
 #include "nouveau_debugfs.h"
+#include "nouveau_ttm.h"
 
 MODULE_PARM_DESC(config, "option string to pass to driver core");
 char *nouveau_config;
@@ -87,6 +88,10 @@ module_param_named(runpm, nouveau_runtim
 static struct drm_driver driver;
 #ifdef __NetBSD__
 struct drm_driver *const nouveau_drm_driver = 
+
+/* XXX Kludge for the non-GEM GEM that nouveau uses.  */
+static const struct uvm_pagerops nouveau_gem_uvm_ops;
+
 #endif
 
 static u64
@@ -880,7 +885,11 @@ driver = {
 
 	.ioctls = nouveau_ioctls,
 	.num_ioctls = ARRAY_SIZE(nouveau_ioctls),
-#ifndef __NetBSD__
+#ifdef __NetBSD__
+	.fops = NULL,
+	.mmap_object = _ttm_mmap_object,
+	.gem_uvm_ops = _gem_uvm_ops,
+#else
 	.fops = _driver_fops,
 #endif
 

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.1.1.1.4.2 src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.1.1.1.4.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:1.1.1.1.4.2	Fri Mar  6 21:39:09 2015
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c	Fri Nov  6 23:03:20 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.2 2015/03/06 21:39:09 snj Exp $	*/
+/*	$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.3 2015/11/06 23:03:20 riz Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.2 2015/03/06 21:39:09 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_engine_fifo_nve0.c,v 1.1.1.1.4.3 2015/11/06 23:03:20 riz Exp $");
 
 #include 
 #include 
@@ -136,18 +136,27 @@ nve0_fifo_runlist_update(struct nve0_fif
 	nv_wr32(priv, 0x002274, (engine << 20) | (p >> 3));
 
 #ifdef __NetBSD__
-{
-	int ret;
+	if (cold) {
+		uint count = 2000;
+		while (count-- > 0) {
+			if (!(nv_rd32(priv, 0x002284 + (engine * 0x08)) & 0x0010))
+break;
+			delay(1000);
+		}
+		if (count == 0)
+			nv_error(priv, "runlist %d update timeout\n", engine);
+	} else {
+		int ret;
 
-	spin_lock(>lock);
-	DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, >wait, >lock,
-	msecs_to_jiffies(2000),
-	!(nv_rd32(priv, 0x002284 +
-		(engine * 0x08)) & 0x0010));
-	if (ret == 0)
-		nv_error(priv, "runlist %d update timeout\n", engine);
-	spin_unlock(>lock);
-}
+		spin_lock(>lock);
+		DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, >wait, >lock,
+		msecs_to_jiffies(2000),
+		!(nv_rd32(priv, 0x002284 +
+			(engine * 0x08)) & 0x0010));
+		if (ret == 0)
+			nv_error(priv, "runlist %d update timeout\n", engine);
+		spin_unlock(>lock);
+	}
 #else
 	if (wait_event_timeout(engn->wait, !(nv_rd32(priv, 0x002284 +
 			   

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/radeon

2015-11-04 Thread Jeff Rizzo
Module Name:src
Committed By:   riz
Date:   Wed Nov  4 16:27:25 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/include/radeon [netbsd-7]: cayman_reg_safe.h
evergreen_reg_safe.h r100_reg_safe.h r200_reg_safe.h
r300_reg_safe.h r420_reg_safe.h r600_reg_safe.h rn50_reg_safe.h
rs600_reg_safe.h rv515_reg_safe.h

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #905):
sys/external/bsd/drm2/include/radeon/r600_reg_safe.h: revision 1.2
sys/external/bsd/drm2/include/radeon/rn50_reg_safe.h: revision 1.2
sys/external/bsd/drm2/include/radeon/evergreen_reg_safe.h: revision 1.2
sys/external/bsd/drm2/include/radeon/r420_reg_safe.h: revision 1.2
sys/external/bsd/drm2/include/radeon/rv515_reg_safe.h: revision 1.2
sys/external/bsd/drm2/include/radeon/r100_reg_safe.h: revision 1.2
sys/external/bsd/drm2/include/radeon/r200_reg_safe.h: revision 1.2
sys/external/bsd/drm2/include/radeon/rs600_reg_safe.h: revision 1.2
sys/external/bsd/drm2/include/radeon/r300_reg_safe.h: revision 1.2
sys/external/bsd/drm2/include/radeon/cayman_reg_safe.h: revision 1.2
Regen to get real rcsids here.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.1.4.1 \
src/sys/external/bsd/drm2/include/radeon/cayman_reg_safe.h \
src/sys/external/bsd/drm2/include/radeon/evergreen_reg_safe.h \
src/sys/external/bsd/drm2/include/radeon/r100_reg_safe.h \
src/sys/external/bsd/drm2/include/radeon/r200_reg_safe.h \
src/sys/external/bsd/drm2/include/radeon/r300_reg_safe.h \
src/sys/external/bsd/drm2/include/radeon/r420_reg_safe.h \
src/sys/external/bsd/drm2/include/radeon/r600_reg_safe.h \
src/sys/external/bsd/drm2/include/radeon/rn50_reg_safe.h \
src/sys/external/bsd/drm2/include/radeon/rs600_reg_safe.h \
src/sys/external/bsd/drm2/include/radeon/rv515_reg_safe.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/radeon/cayman_reg_safe.h
diff -u src/sys/external/bsd/drm2/include/radeon/cayman_reg_safe.h:1.1 src/sys/external/bsd/drm2/include/radeon/cayman_reg_safe.h:1.1.4.1
--- src/sys/external/bsd/drm2/include/radeon/cayman_reg_safe.h:1.1	Wed Jul 16 20:59:58 2014
+++ src/sys/external/bsd/drm2/include/radeon/cayman_reg_safe.h	Wed Nov  4 16:27:25 2015
@@ -1,8 +1,8 @@
 /*
- *	$NetBSD: cayman_reg_safe.h,v 1.1 2014/07/16 20:59:58 riastradh Exp $
+ *	$NetBSD: cayman_reg_safe.h,v 1.1.4.1 2015/11/04 16:27:25 riz Exp $
  *
  * Stand back!  This file was automagically generated by
- *	NetBSD
+ *	NetBSD: mkregtable.awk,v 1.1 2014/07/16 20:59:58 riastradh Exp 
  */
 
 static const uint32_t cayman_reg_safe_bm[2047] = {
Index: src/sys/external/bsd/drm2/include/radeon/evergreen_reg_safe.h
diff -u src/sys/external/bsd/drm2/include/radeon/evergreen_reg_safe.h:1.1 src/sys/external/bsd/drm2/include/radeon/evergreen_reg_safe.h:1.1.4.1
--- src/sys/external/bsd/drm2/include/radeon/evergreen_reg_safe.h:1.1	Wed Jul 16 20:59:58 2014
+++ src/sys/external/bsd/drm2/include/radeon/evergreen_reg_safe.h	Wed Nov  4 16:27:25 2015
@@ -1,8 +1,8 @@
 /*
- *	$NetBSD: evergreen_reg_safe.h,v 1.1 2014/07/16 20:59:58 riastradh Exp $
+ *	$NetBSD: evergreen_reg_safe.h,v 1.1.4.1 2015/11/04 16:27:25 riz Exp $
  *
  * Stand back!  This file was automagically generated by
- *	NetBSD
+ *	NetBSD: mkregtable.awk,v 1.1 2014/07/16 20:59:58 riastradh Exp 
  */
 
 static const uint32_t evergreen_reg_safe_bm[2047] = {
Index: src/sys/external/bsd/drm2/include/radeon/r100_reg_safe.h
diff -u src/sys/external/bsd/drm2/include/radeon/r100_reg_safe.h:1.1 src/sys/external/bsd/drm2/include/radeon/r100_reg_safe.h:1.1.4.1
--- src/sys/external/bsd/drm2/include/radeon/r100_reg_safe.h:1.1	Wed Jul 16 20:59:58 2014
+++ src/sys/external/bsd/drm2/include/radeon/r100_reg_safe.h	Wed Nov  4 16:27:25 2015
@@ -1,8 +1,8 @@
 /*
- *	$NetBSD: r100_reg_safe.h,v 1.1 2014/07/16 20:59:58 riastradh Exp $
+ *	$NetBSD: r100_reg_safe.h,v 1.1.4.1 2015/11/04 16:27:25 riz Exp $
  *
  * Stand back!  This file was automagically generated by
- *	NetBSD
+ *	NetBSD: mkregtable.awk,v 1.1 2014/07/16 20:59:58 riastradh Exp 
  */
 
 static const uint32_t r100_reg_safe_bm[102] = {
Index: src/sys/external/bsd/drm2/include/radeon/r200_reg_safe.h
diff -u src/sys/external/bsd/drm2/include/radeon/r200_reg_safe.h:1.1 src/sys/external/bsd/drm2/include/radeon/r200_reg_safe.h:1.1.4.1
--- src/sys/external/bsd/drm2/include/radeon/r200_reg_safe.h:1.1	Wed Jul 16 20:59:58 2014
+++ src/sys/external/bsd/drm2/include/radeon/r200_reg_safe.h	Wed Nov  4 16:27:25 2015
@@ -1,8 +1,8 @@
 /*
- *	$NetBSD: r200_reg_safe.h,v 1.1 2014/07/16 20:59:58 riastradh Exp $
+ *	$NetBSD: r200_reg_safe.h,v 1.1.4.1 2015/11/04 16:27:25 riz Exp $
  *
  * Stand back!  This file was automagically generated by
- *	NetBSD
+ *	NetBSD: mkregtable.awk,v 1.1 2014/07/16 20:59:58 riastradh 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/radeon

2015-11-04 Thread Jeff Rizzo
Module Name:src
Committed By:   riz
Date:   Wed Nov  4 18:17:22 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: atombios_crtc.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #970):
sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c: revision 1.4
Apply preceeding change:
Don't reserve if atomic -- caller must have pre-pinned the buffer.
to avivo_crtc_do_set_base() as well.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.1 -r1.2.4.2 \
src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c:1.2.4.1 src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c:1.2.4.2
--- src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c:1.2.4.1	Thu Apr 23 07:31:17 2015
+++ src/sys/external/bsd/drm2/dist/drm/radeon/atombios_crtc.c	Wed Nov  4 18:17:22 2015
@@ -1382,24 +1382,26 @@ static int avivo_crtc_do_set_base(struct
 
 	obj = radeon_fb->obj;
 	rbo = gem_to_radeon_bo(obj);
-	r = radeon_bo_reserve(rbo, false);
-	if (unlikely(r != 0))
-		return r;
 
 	/* If atomic, assume fb object is pinned & idle & fenced and
 	 * just update base pointers
 	 */
-	if (atomic)
+	if (atomic) {
+		BUG_ON(rbo->pin_count == 0);
 		fb_location = radeon_bo_gpu_offset(rbo);
-	else {
+		tiling_flags = 0;
+	} else {
+		r = radeon_bo_reserve(rbo, false);
+		if (unlikely(r != 0))
+			return r;
 		r = radeon_bo_pin(rbo, RADEON_GEM_DOMAIN_VRAM, _location);
 		if (unlikely(r != 0)) {
 			radeon_bo_unreserve(rbo);
 			return -EINVAL;
 		}
+		radeon_bo_get_tiling_flags(rbo, _flags, NULL);
+		radeon_bo_unreserve(rbo);
 	}
-	radeon_bo_get_tiling_flags(rbo, _flags, NULL);
-	radeon_bo_unreserve(rbo);
 
 	switch (target_fb->bits_per_pixel) {
 	case 8:



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2015-08-04 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Tue Aug  4 17:18:40 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_gem.c

Log Message:
Pull up following revision(s) (requested by tsutsui in ticket #931):
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.32
Pull upstream fix to avoid kernel panic on starting X on Intel 855GM machines.
Reported in PR kern/49875, and ok'ed to commit by riastradh@.


To generate a diff of this commit:
cvs rdiff -u -r1.14.2.10 -r1.14.2.11 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.10 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.11
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.10	Thu Jul 30 15:38:39 2015
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Tue Aug  4 17:18:39 2015
@@ -4390,6 +4390,15 @@ unlock:
 
 static bool is_pin_display(struct drm_i915_gem_object *obj)
 {
+	struct i915_vma *vma;
+
+	if (list_empty(obj-vma_list))
+		return false;
+
+	vma = i915_gem_obj_to_ggtt(obj);
+	if (!vma)
+		return false;
+
 	/* There are 3 sources that pin objects:
 	 *   1. The display engine (scanouts, sprites, cursors);
 	 *   2. Reservations for execbuffer;
@@ -4401,7 +4410,7 @@ static bool is_pin_display(struct drm_i9
 	 * subtracting the potential reference by the user, any pin_count
 	 * remains, it must be due to another use by the display engine.
 	 */
-	return i915_gem_obj_to_ggtt(obj)-pin_count - !!obj-user_pin_count;
+	return vma-pin_count - !!obj-user_pin_count;
 }
 
 /*
@@ -4415,6 +4424,7 @@ i915_gem_object_pin_to_display_plane(str
  struct intel_ring_buffer *pipelined)
 {
 	u32 old_read_domains, old_write_domain;
+	bool was_pin_display;
 	int ret;
 
 	if (pipelined != obj-ring) {
@@ -4426,6 +4436,7 @@ i915_gem_object_pin_to_display_plane(str
 	/* Mark the pin_display early so that we account for the
 	 * display coherency whilst setting up the cache domains.
 	 */
+	was_pin_display = obj-pin_display;
 	obj-pin_display = true;
 
 	/* The display engine is not coherent with the LLC cache on gen6.  As
@@ -4468,7 +4479,8 @@ i915_gem_object_pin_to_display_plane(str
 	return 0;
 
 err_unpin_display:
-	obj-pin_display = is_pin_display(obj);
+	WARN_ON(was_pin_display != is_pin_display(obj));
+	obj-pin_display = was_pin_display;
 	return ret;
 }
 
@@ -5684,6 +5696,9 @@ struct i915_vma *i915_gem_obj_to_ggtt(st
 {
 	struct i915_vma *vma;
 
+	/* This WARN has probably outlived its usefulness (callers already
+	 * WARN if they don't find the GGTT vma they expect). When removing,
+	 * remember to remove the pre-check in is_pin_display() as well */
 	if (WARN_ON(list_empty(obj-vma_list)))
 		return NULL;
 



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/radeon

2015-07-30 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Jul 30 15:32:46 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]:
radeon_connectors.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #897):
sys/external/bsd/drm2/dist/drm/radeon/radeon_connectors.c: revisions 
1.2, 1.3
Don't pass along null encoder.  Noted by Coverity, CID 113253.
--
Add XXX comment for previous.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.4.1 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_connectors.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_connectors.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_connectors.c:1.1.1.1 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_connectors.c:1.1.1.1.4.1
--- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_connectors.c:1.1.1.1	Wed Jul 16 19:35:28 2014
+++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_connectors.c	Thu Jul 30 15:32:46 2015
@@ -822,7 +822,8 @@ radeon_vga_detect(struct drm_connector *
 		}
 	}
 
-	if (ret == connector_status_connected)
+	/* XXX Can encoder be null if the connector is connected here?  */
+	if (ret == connector_status_connected  encoder)
 		ret = radeon_connector_analog_encoder_conflict_solve(connector, encoder, ret, true);
 
 	/* RN50 and some RV100 asics in servers often have a hardcoded EDID in the



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2015-07-30 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Jul 30 15:21:50 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: intel_pm.c

Log Message:
Pull up following revision(s) (requested by abs in ticket #892):
sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.7
Avoid NULL dev_priv-vlv_pctx- deref in a WARN check on Lenovo B50-30,
add an additional check for the NULL dev_priv-vlv_pctx.
System now boots (though does not recognise any of the USB(3) ports)


To generate a diff of this commit:
cvs rdiff -u -r1.4.2.2 -r1.4.2.3 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4.2.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4.2.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4.2.2	Fri Mar  6 21:39:08 2015
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c	Thu Jul 30 15:21:50 2015
@@ -3625,6 +3625,8 @@ static void valleyview_check_pctx(struct
 {
 	unsigned long pctx_addr = I915_READ(VLV_PCBR)  ~4095;
 
+	if (WARN_ON(!dev_priv-vlv_pctx))
+		return;
 	WARN_ON(pctx_addr != dev_priv-mm.stolen_base +
 			 dev_priv-vlv_pctx-stolen-start);
 }



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2015-07-30 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Jul 30 15:38:39 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_gem.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #901):
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.30
Remove workaround for PR kern/49195.
Problem seems to have been properly fixed in rev. 1.25.


To generate a diff of this commit:
cvs rdiff -u -r1.14.2.9 -r1.14.2.10 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.9 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.10
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.9	Sun Jul  5 21:31:48 2015
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Thu Jul 30 15:38:39 2015
@@ -2815,21 +2815,10 @@ void i915_vma_move_to_active(struct i915
 static void
 i915_gem_object_move_to_inactive(struct drm_i915_gem_object *obj)
 {
-	struct drm_device *dev = obj-base.dev;
-	struct drm_i915_private *dev_priv = dev-dev_private;
+	struct drm_i915_private *dev_priv = obj-base.dev-dev_private;
 	struct i915_address_space *vm;
 	struct i915_vma *vma;
 
-	if ((obj-base.write_domain  I915_GEM_DOMAIN_GTT) != 0) {
-		printk(KERN_ERR %s: %p 0x%x flushing gtt\n, __func__, obj,
-			obj-base.write_domain);
-		i915_gem_object_flush_gtt_write_domain(obj);
-	}
-	if ((obj-base.write_domain  I915_GEM_DOMAIN_CPU) != 0) {
-		printk(KERN_ERR %s: %p 0x%x flushing cpu\n, __func__, obj,
-			obj-base.write_domain);
-		i915_gem_object_flush_cpu_write_domain(obj, false);
-	}
 	BUG_ON(obj-base.write_domain  ~I915_GEM_GPU_DOMAINS);
 	BUG_ON(!obj-active);
 



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/ttm

2015-07-30 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Jul 30 15:41:44 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/ttm [netbsd-7]: ttm_agp_backend.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #903):
sys/external/bsd/drm2/ttm/ttm_agp_backend.c: revision 1.4
kmem_free the container structure, not a substructure.


To generate a diff of this commit:
cvs rdiff -u -r1.1.4.1 -r1.1.4.2 \
src/sys/external/bsd/drm2/ttm/ttm_agp_backend.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/ttm/ttm_agp_backend.c
diff -u src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.1.4.1 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.1.4.2
--- src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.1.4.1	Fri Aug 15 11:11:59 2014
+++ src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c	Thu Jul 30 15:41:44 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ttm_agp_backend.c,v 1.1.4.1 2014/08/15 11:11:59 martin Exp $	*/
+/*	$NetBSD: ttm_agp_backend.c,v 1.1.4.2 2015/07/30 15:41:44 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ttm_agp_backend.c,v 1.1.4.1 2014/08/15 11:11:59 martin Exp $);
+__KERNEL_RCSID(0, $NetBSD: ttm_agp_backend.c,v 1.1.4.2 2015/07/30 15:41:44 snj Exp $);
 
 #include sys/types.h
 #include sys/kmem.h
@@ -156,7 +156,7 @@ ttm_agp_destroy(struct ttm_tt *ttm)
 	if (ttm_agp-bound)
 		ttm_agp_unbind(ttm);
 	ttm_tt_fini(ttm);
-	kmem_free(ttm, sizeof(*ttm));
+	kmem_free(ttm_agp, sizeof(*ttm_agp));
 }
 
 static const struct ttm_backend_func ttm_agp_backend_func = {



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/ttm

2015-07-30 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Jul 30 15:29:25 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/ttm [netbsd-7]: ttm_bo_vm.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #894):
sys/external/bsd/drm2/ttm/ttm_bo_vm.c: revisions 1.9, 1.10
Fix error branch: ttm_bo_unreserve on failure after ttm_bo_reserve.
Tiny chance this will fix PR kern/49862 by not leaking a ww_mutex
lock.
--
ttm_bo_unreserve in case of ttm_bo_uvm_fault_idle restart.
Better chance of fixing PR kern/49862 by avoiding leaking a buffer
ww_mutex lock.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.5 -r1.2.4.6 src/sys/external/bsd/drm2/ttm/ttm_bo_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/ttm/ttm_bo_vm.c
diff -u src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.5 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.6
--- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.5	Fri Nov 14 14:22:41 2014
+++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c	Thu Jul 30 15:29:25 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ttm_bo_vm.c,v 1.2.4.5 2014/11/14 14:22:41 martin Exp $	*/
+/*	$NetBSD: ttm_bo_vm.c,v 1.2.4.6 2015/07/30 15:29:25 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.2.4.5 2014/11/14 14:22:41 martin Exp $);
+__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.2.4.6 2015/07/30 15:29:25 snj Exp $);
 
 #include sys/types.h
 
@@ -118,7 +118,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u
 	/* drm prime buffers are not mappable.  XXX Catch this earlier?  */
 	if (bo-ttm  ISSET(bo-ttm-page_flags, TTM_PAGE_FLAG_SG)) {
 		ret = -EINVAL;
-		goto out0;
+		goto out1;
 	}
 
 	/* Notify the driver of a fault if it wants.  */
@@ -127,14 +127,15 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u
 		if (ret) {
 			if (ret == -ERESTART)
 ret = -EIO;
-			goto out0;
+			goto out1;
 		}
 	}
 
 	ret = ttm_bo_uvm_fault_idle(bo, ufi);
 	if (ret) {
-		/* Unlocks if it restarts.  */
 		KASSERT(ret == -ERESTART);
+		/* ttm_bo_uvm_fault_idle calls uvmfault_unlockall for us.  */
+		ttm_bo_unreserve(bo);
 		/* XXX errno Linux-NetBSD */
 		return -ret;
 	}



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2015-07-30 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Jul 30 15:46:41 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: radeon_bios.c
src/sys/external/bsd/drm2/include/linux [netbsd-7]: pci.h

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #906):
sys/external/bsd/drm2/include/linux/pci.h: revisions 1.18, 1.19
sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c: revision 1.4
Save the location of the found ROM so caller can bus_space_read it.
--
Use bus_space_read rather than kmemdup to read ROM.
jakllsch@ reports that on some 64-bit systems, kmemdup does 8-byte
reads, which yield garbage in the high word.  bus_space_read_region_1
does 1-byte reads instead, which seem to work.
Derived from a patch from jakllsch@.
--
Fix type of pd_rom_found_size: it's a size, not a handle.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.2.4.1 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c
cvs rdiff -u -r1.7.2.6 -r1.7.2.7 \
src/sys/external/bsd/drm2/include/linux/pci.h

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c:1.2 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c:1.2.4.1
--- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c:1.2	Wed Jul 16 20:59:57 2014
+++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c	Thu Jul 30 15:46:41 2015
@@ -116,6 +116,31 @@ static bool radeon_read_bios(struct rade
 		return false;
 	}
 
+#ifdef __NetBSD__
+	/*
+	 * Using kmemdup results in 4-byte memory access on 64-bit
+	 * systems, which yields bogus answers on some devices.  So we
+	 * use bus_space(9) to do guaranteed byte access with
+	 * bus_space_read_region_1 which seems to work better.
+	 */
+{
+	const bus_space_tag_t bst = rdev-pdev-pd_rom_bst;
+	const bus_space_handle_t bsh = rdev-pdev-pd_rom_found_bsh;
+
+	if (size == 0 ||
+	bus_space_read_1(bst, bsh, 0) != 0x55 ||
+	bus_space_read_1(bst, bsh, 1) != 0xaa) {
+		pci_unmap_rom(rdev-pdev, bios);
+		return false;
+	}
+	rdev-bios = kmalloc(size, GFP_KERNEL);
+	if (rdev-bios == NULL) {
+		pci_unmap_rom(rdev-pdev, bios);
+		return false;
+	}
+	bus_space_read_region_1(bst, bsh, 0, rdev-bios, size);
+}
+#else
 	if (size == 0 || bios[0] != 0x55 || bios[1] != 0xaa) {
 		pci_unmap_rom(rdev-pdev, bios);
 		return false;
@@ -125,6 +150,7 @@ static bool radeon_read_bios(struct rade
 		pci_unmap_rom(rdev-pdev, bios);
 		return false;
 	}
+#endif
 	pci_unmap_rom(rdev-pdev, bios);
 	return true;
 }

Index: src/sys/external/bsd/drm2/include/linux/pci.h
diff -u src/sys/external/bsd/drm2/include/linux/pci.h:1.7.2.6 src/sys/external/bsd/drm2/include/linux/pci.h:1.7.2.7
--- src/sys/external/bsd/drm2/include/linux/pci.h:1.7.2.6	Thu Apr 23 07:31:17 2015
+++ src/sys/external/bsd/drm2/include/linux/pci.h	Thu Jul 30 15:46:41 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: pci.h,v 1.7.2.6 2015/04/23 07:31:17 snj Exp $	*/
+/*	$NetBSD: pci.h,v 1.7.2.7 2015/07/30 15:46:41 snj Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -126,6 +126,8 @@ struct pci_dev {
 	bus_space_tag_t		pd_rom_bst;
 	bus_space_handle_t	pd_rom_bsh;
 	bus_size_t		pd_rom_size;
+	bus_space_handle_t	pd_rom_found_bsh;
+	bus_size_t		pd_rom_found_size;
 	void			*pd_rom_vaddr;
 	device_t		pd_dev;
 	struct drm_device	*pd_drm_dev; /* XXX Nouveau kludge!  */
@@ -504,8 +506,6 @@ pci_map_rom_md(struct pci_dev *pdev)
 static inline void __pci_rom_iomem *
 pci_map_rom(struct pci_dev *pdev, size_t *sizep)
 {
-	bus_space_handle_t bsh;
-	bus_size_t size;
 
 	KASSERT(!ISSET(pdev-pd_kludges, NBPCI_KLUDGE_MAP_ROM));
 
@@ -519,14 +519,16 @@ pci_map_rom(struct pci_dev *pdev, size_t
 
 	/* XXX This type is obviously wrong in general...  */
 	if (pci_find_rom(pdev-pd_pa, pdev-pd_rom_bst, pdev-pd_rom_bsh,
-		pdev-pd_rom_size, PCI_ROM_CODE_TYPE_X86, bsh, size)) {
+		pdev-pd_rom_size, PCI_ROM_CODE_TYPE_X86,
+		pdev-pd_rom_found_bsh, pdev-pd_rom_found_size)) {
 		pci_unmap_rom(pdev, NULL);
 		return NULL;
 	}
 
-	KASSERT(size = SIZE_T_MAX);
-	*sizep = size;
-	pdev-pd_rom_vaddr = bus_space_vaddr(pdev-pd_rom_bst, bsh);
+	KASSERT(pdev-pd_rom_found_size = SIZE_T_MAX);
+	*sizep = pdev-pd_rom_found_size;
+	pdev-pd_rom_vaddr = bus_space_vaddr(pdev-pd_rom_bst,
+	pdev-pd_rom_found_bsh);
 	return pdev-pd_rom_vaddr;
 }
 



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2015-07-30 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Jul 30 15:43:37 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm [netbsd-7]: drm_bufs.c
src/sys/external/bsd/drm2/dist/include/drm [netbsd-7]: drmP.h
src/sys/external/bsd/drm2/drm [netbsd-7]: drm_memory.c
src/sys/external/bsd/drm2/pci [netbsd-7]: drm_pci.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #904):
sys/external/bsd/drm2/dist/drm/drm_bufs.c: revision 1.7
sys/external/bsd/drm2/dist/include/drm/drmP.h: revision 1.11
sys/external/bsd/drm2/drm/drm_memory.c: revision 1.7
sys/external/bsd/drm2/pci/drm_pci.c: revision 1.13
Replace drm_ioremap by drm_core_ioremap, reducing diff a little.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.6.2.1 src/sys/external/bsd/drm2/dist/drm/drm_bufs.c
cvs rdiff -u -r1.7.2.2 -r1.7.2.3 \
src/sys/external/bsd/drm2/dist/include/drm/drmP.h
cvs rdiff -u -r1.6 -r1.6.2.1 src/sys/external/bsd/drm2/drm/drm_memory.c
cvs rdiff -u -r1.6.2.2 -r1.6.2.3 src/sys/external/bsd/drm2/pci/drm_pci.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/drm_bufs.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_bufs.c:1.6 src/sys/external/bsd/drm2/dist/drm/drm_bufs.c:1.6.2.1
--- src/sys/external/bsd/drm2/dist/drm/drm_bufs.c:1.6	Wed Jul 16 20:56:24 2014
+++ src/sys/external/bsd/drm2/dist/drm/drm_bufs.c	Thu Jul 30 15:43:36 2015
@@ -213,7 +213,7 @@ static int drm_addmap_core(struct drm_de
 		}
 		if (map-type == _DRM_REGISTERS) {
 #ifdef __NetBSD__
-			map-handle = drm_ioremap(dev, map);
+			drm_core_ioremap(map, dev);
 #else
 			if (map-flags  _DRM_WRITE_COMBINING)
 map-handle = ioremap_wc(map-offset,
@@ -351,7 +351,7 @@ static int drm_addmap_core(struct drm_de
 	if (!list) {
 		if (map-type == _DRM_REGISTERS)
 #ifdef __NetBSD__
-			drm_iounmap(dev, map);
+			drm_core_ioremapfree(map, dev);
 #else
 			iounmap(map-handle);
 #endif
@@ -372,7 +372,7 @@ static int drm_addmap_core(struct drm_de
 	if (ret) {
 		if (map-type == _DRM_REGISTERS)
 #ifdef __NetBSD__		/* XXX What about other map types...?  */
-			drm_iounmap(dev, map);
+			drm_core_ioremapfree(map, dev);
 #else
 			iounmap(map-handle);
 #endif
@@ -494,7 +494,7 @@ int drm_rmmap_locked(struct drm_device *
 	switch (map-type) {
 	case _DRM_REGISTERS:
 #ifdef __NetBSD__
-		drm_iounmap(dev, map);
+		drm_core_ioremapfree(map, dev);
 #else
 		iounmap(map-handle);
 #endif

Index: src/sys/external/bsd/drm2/dist/include/drm/drmP.h
diff -u src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.7.2.2 src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.7.2.3
--- src/sys/external/bsd/drm2/dist/include/drm/drmP.h:1.7.2.2	Fri Mar  6 21:39:10 2015
+++ src/sys/external/bsd/drm2/dist/include/drm/drmP.h	Thu Jul 30 15:43:37 2015
@@ -1437,9 +1437,7 @@ extern unsigned int drm_poll(struct file
 
 /* Memory management support (drm_memory.h) */
 #include drm/drm_memory.h
-#ifdef __NetBSD__		/* XXX move to drm_memory.h */
-extern void *drm_ioremap(struct drm_device *dev, struct drm_local_map *map);
-extern void drm_iounmap(struct drm_device *dev, struct drm_local_map *map);
+#ifdef __NetBSD__
 extern int drm_limit_dma_space(struct drm_device *, resource_size_t,
 resource_size_t);
 #endif

Index: src/sys/external/bsd/drm2/drm/drm_memory.c
diff -u src/sys/external/bsd/drm2/drm/drm_memory.c:1.6 src/sys/external/bsd/drm2/drm/drm_memory.c:1.6.2.1
--- src/sys/external/bsd/drm2/drm/drm_memory.c:1.6	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/drm/drm_memory.c	Thu Jul 30 15:43:37 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_memory.c,v 1.6 2014/07/16 20:56:25 riastradh Exp $	*/
+/*	$NetBSD: drm_memory.c,v 1.6.2.1 2015/07/30 15:43:37 snj 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.6 2014/07/16 20:56:25 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_memory.c,v 1.6.2.1 2015/07/30 15:43:37 snj Exp $);
 
 #ifdef _KERNEL_OPT
 #include agp_i810.h
@@ -74,8 +74,8 @@ drm_bus_borrow(bus_addr_t base, bus_size
 	return false;
 }
 
-void *
-drm_ioremap(struct drm_device *dev, struct drm_local_map *map)
+void
+drm_core_ioremap(struct drm_local_map *map, struct drm_device *dev)
 {
 	const bus_space_tag_t bst = dev-bst;
 	unsigned int unit;
@@ -125,19 +125,20 @@ drm_ioremap(struct drm_device *dev, stru
 	}
 
 	/* Failure!  */
-	return NULL;
+	return;
 
 win:	map-lm_data.bus_space.bst = bst;
-	return bus_space_vaddr(bst, map-lm_data.bus_space.bsh);
+	map-handle = bus_space_vaddr(bst, map-lm_data.bus_space.bsh);
 }
 
 void
-drm_iounmap(struct drm_device *dev, struct drm_local_map *map)
+drm_core_ioremapfree(struct drm_local_map *map, struct drm_device *dev)
 {
 	if (map-lm_data.bus_space.bus_map != NULL) {
 		bus_space_unmap(map-lm_data.bus_space.bst,
 		

CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2015-07-30 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Jul 30 15:50:16 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/include/linux [netbsd-7]: ww_mutex.h
src/sys/external/bsd/drm2/linux [netbsd-7]: linux_ww_mutex.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #907):
sys/external/bsd/drm2/linux/linux_ww_mutex.c: revision 1.2
sys/external/bsd/drm2/include/linux/ww_mutex.h: revision 1.11
Adapt ww_mutex to use LOCKDEBUG.
Should help track down PR 49862.


To generate a diff of this commit:
cvs rdiff -u -r1.4.4.3 -r1.4.4.4 \
src/sys/external/bsd/drm2/include/linux/ww_mutex.h
cvs rdiff -u -r1.1.2.2 -r1.1.2.3 \
src/sys/external/bsd/drm2/linux/linux_ww_mutex.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/include/linux/ww_mutex.h
diff -u src/sys/external/bsd/drm2/include/linux/ww_mutex.h:1.4.4.3 src/sys/external/bsd/drm2/include/linux/ww_mutex.h:1.4.4.4
--- src/sys/external/bsd/drm2/include/linux/ww_mutex.h:1.4.4.3	Fri Mar  6 21:39:10 2015
+++ src/sys/external/bsd/drm2/include/linux/ww_mutex.h	Thu Jul 30 15:50:15 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ww_mutex.h,v 1.4.4.3 2015/03/06 21:39:10 snj Exp $	*/
+/*	$NetBSD: ww_mutex.h,v 1.4.4.4 2015/07/30 15:50:15 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -56,7 +56,6 @@ struct ww_acquire_ctx {
 };
 
 struct ww_mutex {
-	kmutex_t		wwm_lock;
 	enum ww_mutex_state {
 		WW_UNLOCKED,	/* nobody owns it */
 		WW_OWNED,	/* owned by a lwp without a context */
@@ -67,9 +66,17 @@ struct ww_mutex {
 		struct lwp		*owner;
 		struct ww_acquire_ctx	*ctx;
 	}			wwm_u;
+	/*
+	 * XXX wwm_lock must *not* be first, so that the ww_mutex has a
+	 * different address from the kmutex for LOCKDEBUG purposes.
+	 */
+	kmutex_t		wwm_lock;
 	struct ww_class		*wwm_class;
 	struct rb_tree		wwm_waiters;
 	kcondvar_t		wwm_cv;
+#ifdef LOCKDEBUG
+	bool			wwm_debug;
+#endif
 };
 
 /* XXX Make the nm output a little more greppable...  */

Index: src/sys/external/bsd/drm2/linux/linux_ww_mutex.c
diff -u src/sys/external/bsd/drm2/linux/linux_ww_mutex.c:1.1.2.2 src/sys/external/bsd/drm2/linux/linux_ww_mutex.c:1.1.2.3
--- src/sys/external/bsd/drm2/linux/linux_ww_mutex.c:1.1.2.2	Fri Mar  6 21:39:10 2015
+++ src/sys/external/bsd/drm2/linux/linux_ww_mutex.c	Thu Jul 30 15:50:16 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_ww_mutex.c,v 1.1.2.2 2015/03/06 21:39:10 snj Exp $	*/
+/*	$NetBSD: linux_ww_mutex.c,v 1.1.2.3 2015/07/30 15:50:16 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,17 +30,28 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: linux_ww_mutex.c,v 1.1.2.2 2015/03/06 21:39:10 snj Exp $);
+__KERNEL_RCSID(0, $NetBSD: linux_ww_mutex.c,v 1.1.2.3 2015/07/30 15:50:16 snj Exp $);
 
 #include sys/types.h
 #include sys/atomic.h
 #include sys/condvar.h
+#include sys/lockdebug.h
 #include sys/lwp.h
 #include sys/mutex.h
 #include sys/rbtree.h
 
 #include linux/ww_mutex.h
 
+#define	WW_WANTLOCK(WW)			  \
+	LOCKDEBUG_WANTLOCK((WW)-wwm_debug, (WW),			  \
+	(uintptr_t)__builtin_return_address(0), 0)
+#define	WW_LOCKED(WW)			  \
+	LOCKDEBUG_LOCKED((WW)-wwm_debug, (WW), NULL,			  \
+	(uintptr_t)__builtin_return_address(0), 0)
+#define	WW_UNLOCKED(WW)			  \
+	LOCKDEBUG_UNLOCKED((WW)-wwm_debug, (WW),			  \
+	(uintptr_t)__builtin_return_address(0), 0)
+
 static int
 ww_acquire_ctx_compare(void *cookie __unused, const void *va, const void *vb)
 {
@@ -109,6 +120,53 @@ ww_acquire_fini(struct ww_acquire_ctx *c
 	ctx-wwx_owner = NULL;
 }
 
+#ifdef LOCKDEBUG
+static void
+ww_dump(volatile void *cookie)
+{
+	volatile struct ww_mutex *mutex = cookie;
+
+	printf_nolog(%-13s: , state);
+	switch (mutex-wwm_state) {
+	case WW_UNLOCKED:
+		printf_nolog(unlocked\n);
+		break;
+	case WW_OWNED:
+		printf_nolog(owned by lwp\n);
+		printf_nolog(%-13s: %p\n, owner, mutex-wwm_u.owner);
+		printf_nolog(%-13s: %s\n, waiters,
+		cv_has_waiters(__UNVOLATILE(mutex-wwm_cv))
+			? yes : no);
+		break;
+	case WW_CTX:
+		printf_nolog(owned via ctx\n);
+		printf_nolog(%-13s: %p\n, context, mutex-wwm_u.ctx);
+		printf_nolog(%-13s: %p\n, lwp,
+		mutex-wwm_u.ctx-wwx_owner);
+		printf_nolog(%-13s: %s\n, waiters,
+		cv_has_waiters(__UNVOLATILE(mutex-wwm_cv))
+			? yes : no);
+		break;
+	case WW_WANTOWN:
+		printf_nolog(owned via ctx\n);
+		printf_nolog(%-13s: %p\n, context, mutex-wwm_u.ctx);
+		printf_nolog(%-13s: %p\n, lwp,
+		mutex-wwm_u.ctx-wwx_owner);
+		printf_nolog(%-13s: %s\n, waiters, yes (noctx));
+		break;
+	default:
+		printf_nolog(unknown\n);
+		break;
+	}
+}
+
+static lockops_t ww_lockops = {
+	.lo_name = Wait/wound mutex,
+	.lo_type = LOCKOPS_SLEEP,
+	.lo_dump = ww_dump,
+};
+#endif
+
 void
 ww_mutex_init(struct ww_mutex *mutex, struct ww_class *class)
 {
@@ -122,12 +180,21 @@ ww_mutex_init(struct ww_mutex *mutex, st
 	

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/radeon

2015-07-30 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Thu Jul 30 16:29:38 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: radeon_bios.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #911):
sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c: revision 1.3
Fix two issues in NetBSD implementation of igp_read_bios_from_vram():
 * Allocate the correct buffer for the VGA BIOS image.
 * Abort if buffer allocation failed, not if buffer allocation succeeded.
Not directly tested, but I can't imagine this makes anything worse.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.1 -r1.2.4.2 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c:1.2.4.1 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c:1.2.4.2
--- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c:1.2.4.1	Thu Jul 30 15:46:41 2015
+++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_bios.c	Thu Jul 30 16:29:38 2015
@@ -72,7 +72,7 @@ static bool igp_read_bios_from_vram(stru
 	(size  256 * 1024) ||
 	(bus_space_read_1(bst, bsh, 0) != 0x55) ||
 	(bus_space_read_1(bst, bsh, 1) != 0xaa) ||
-	((rdev = kmalloc(size, GFP_KERNEL)) != NULL)) {
+	((rdev-bios = kmalloc(size, GFP_KERNEL)) == NULL)) {
 		bus_space_unmap(bst, bsh, size);
 		return false;
 	}



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/drm

2015-07-05 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Jul  5 21:29:26 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/drm [netbsd-7]: drm_vma_manager.c

Log Message:
Pull up following revision(s) (requested by chs in ticket #848):
sys/external/bsd/drm2/drm/drm_vma_manager.c: revision 1.3
plug memory leak in drm_vma_node_revoke().


To generate a diff of this commit:
cvs rdiff -u -r1.1.4.1 -r1.1.4.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.4.1 src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.1.4.2
--- src/sys/external/bsd/drm2/drm/drm_vma_manager.c:1.1.4.1	Fri Mar  6 21:39:10 2015
+++ src/sys/external/bsd/drm2/drm/drm_vma_manager.c	Sun Jul  5 21:29:26 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_vma_manager.c,v 1.1.4.1 2015/03/06 21:39:10 snj Exp $	*/
+/*	$NetBSD: drm_vma_manager.c,v 1.1.4.2 2015/07/05 21:29:26 snj 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.4.1 2015/03/06 21:39:10 snj Exp $);
+__KERNEL_RCSID(0, $NetBSD: drm_vma_manager.c,v 1.1.4.2 2015/07/05 21:29:26 snj 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: [netbsd-7] src/sys/external/bsd/drm2/radeon

2015-06-02 Thread Stephen Borrill
Module Name:src
Committed By:   sborrill
Date:   Tue Jun  2 14:50:50 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/radeon [netbsd-7]: radeon_pci.c

Log Message:
Pull up the following revisions(s) (requested by mrg in ticket #818):
sys/external/bsd/drm2/radeon/radeon_pci.c:  revision 1.10

Disable drmkms on R100 and most R200 cards. Works around PR#49744.


To generate a diff of this commit:
cvs rdiff -u -r1.4.4.2 -r1.4.4.3 \
src/sys/external/bsd/drm2/radeon/radeon_pci.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/radeon/radeon_pci.c
diff -u src/sys/external/bsd/drm2/radeon/radeon_pci.c:1.4.4.2 src/sys/external/bsd/drm2/radeon/radeon_pci.c:1.4.4.3
--- src/sys/external/bsd/drm2/radeon/radeon_pci.c:1.4.4.2	Thu Apr 23 07:31:17 2015
+++ src/sys/external/bsd/drm2/radeon/radeon_pci.c	Tue Jun  2 14:50:50 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: radeon_pci.c,v 1.4.4.2 2015/04/23 07:31:17 snj Exp $	*/
+/*	$NetBSD: radeon_pci.c,v 1.4.4.3 2015/06/02 14:50:50 sborrill Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: radeon_pci.c,v 1.4.4.2 2015/04/23 07:31:17 snj Exp $);
+__KERNEL_RCSID(0, $NetBSD: radeon_pci.c,v 1.4.4.3 2015/06/02 14:50:50 sborrill Exp $);
 
 #ifdef _KERNEL_OPT
 #include vga.h
@@ -118,10 +118,14 @@ extern struct drm_driver *const radeon_d
 extern const struct pci_device_id *const radeon_device_ids;
 extern const size_t radeon_n_device_ids;
 
+/* Set this to false if you want to match R100/R200 */
+bool radeon_pci_ignore_r100_r200 = true;
+
 static bool
 radeon_pci_lookup(const struct pci_attach_args *pa, unsigned long *flags)
 {
 	size_t i;
+	enum radeon_family fam;
 
 	for (i = 0; i  radeon_n_device_ids; i++) {
 		if ((PCI_VENDOR(pa-pa_id) == radeon_device_ids[i].vendor) 
@@ -133,6 +137,11 @@ radeon_pci_lookup(const struct pci_attac
 	if (i == radeon_n_device_ids)
 		return false;
 
+	/* NetBSD drm2 fails on R100 and many R200 chipsets, disable for now  */
+	fam = radeon_device_ids[i].driver_data  RADEON_FAMILY_MASK;
+	if (radeon_pci_ignore_r100_r200  fam  CHIP_RV280)
+		return false;
+
 	if (flags)
 		*flags = radeon_device_ids[i].driver_data;
 	return true;



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2015-05-22 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Fri May 22 17:28:37 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_gem_gtt.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #797):
sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c: revision 1.4
Fix kassert: npdp may be GEN8_LEGACY_PDPS exactly.
Tripped over by msaitoh, our first Broadwell user, apparently.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.3.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.3.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.3	Mon Jul 21 20:01:18 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c	Fri May 22 17:28:37 2015
@@ -575,7 +575,7 @@ gen8_ppgtt_allocate_page_directories(str
 
 	ppgtt-u.gen8-npdp = npdp;
 
-	KASSERT(nsegs  GEN8_LEGACY_PDPS);
+	KASSERT(nsegs = GEN8_LEGACY_PDPS);
 	CTASSERT(GEN8_LEGACY_PDPS == __arraycount(ppgtt-u.gen8-pd_segs));
 
 	/* XXX errno NetBSD-Linux */



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/radeon

2015-05-18 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Tue May 19 05:21:12 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: radeon_display.c

Log Message:
Pull up following revision(s) (requested by mrg in ticket #787):
sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c: revision 1.4
don't apply the don't set CLUT to RV280.  it isn't necessary for
my PCI 9250 card, and hoses the colours in X when running.
unfortunately, my RV250 does need this to avoid the console being
very very dark on black.
i'm curious what other earlier radeon card (anything matching any
of the card marked as:  CHIP_R100, CHIP_RV100, CHIP_RS100,
CHIP_RV200, CHIP_RS200, CHIP_R200, CHIP_RV250, and CHIP_RS300.)
the RV280 now works again properly, but the RV250 is still having
a problem waiting for commands to complete and it appears as if
X is hung, when infact it is asking the kernel quite frequently
if the job it asked for is complete, each time sleeping for a
short time and thus only appearing to take almost no CPU.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.1 -r1.2.4.2 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c:1.2.4.1 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c:1.2.4.2
--- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c:1.2.4.1	Thu Apr 23 07:31:17 2015
+++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_display.c	Tue May 19 05:21:12 2015
@@ -185,7 +185,7 @@ static void legacy_crtc_load_lut(struct 
 	 * At least the RV100 [vendor 1002 product 515e (rev. 0x02)]
 	 * has an old style palette
 	 */
-	if (ASIC_IS_RV100(rdev)) {
+	if (rdev-family  CHIP_RV280) {
 #ifdef notyet
 		/*
 		 * Leave CLUT alone for now. The code below gives us a



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2015-02-27 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Feb 27 11:23:54 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_gem.c
intel_i2c.c
src/sys/external/bsd/drm2/include/drm [netbsd-7]: drm_wait_netbsd.h

Log Message:
Pull up following revision(s) (requested by snj in ticket #553):
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.20
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.21
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.22
sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: revision 1.6
sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c: revision 1.7
sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: revision 1.6
Fix returned timeout in wait_seqno: remaining time, not time slept.
-
Fix return code of __wait_seqno.
-
MAX(ret, 0) is 0 if ret is negative, but if ret is negative we want
to return that negative value, meaning error.  Should've been
MIN(ret, 0), but I'll just rewrite it to clarify a wee bit.
-
If the GPU reset, call i915_gem_check_wedge and always return failure
like Linux does.  Caller must retry in that case.
-
Limit scope of ret and omit needless use of it to reduce confusion.
-
Make gmbus_wait_hw_status consistently use 50ms timeout like Linux.
-
Another attempt to fix the drm timed wait blarf blugh blahhh.
...and one more fix for __wait_seqno return value.
-
Also get the sense of the condition to wait until right.


To generate a diff of this commit:
cvs rdiff -u -r1.14.2.4 -r1.14.2.5 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
cvs rdiff -u -r1.4 -r1.4.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c
cvs rdiff -u -r1.4.2.1 -r1.4.2.2 \
src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.4 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.5
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.4	Tue Dec 30 11:57:49 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Fri Feb 27 11:23:53 2015
@@ -1441,9 +1441,33 @@ __wait_seqno(struct intel_ring_buffer *r
 
 	if (!irq_test_in_progress)
 		ring-irq_put(ring);
-	if (timeout)
-		timespecsub(after, before, timeout);
-	return MAX(ret, 0);	/* ignore remaining ticks */
+	if (timeout) {
+		struct timespec slept;
+
+		/* Compute slept = after - before.  */
+		timespecsub(after, before, slept);
+
+		/*
+		 * Return the time remaining, timeout - slept, if we
+		 * slept for less time than the timeout; or zero if we
+		 * timed out.
+		 */
+		if (timespeccmp(slept, timeout, ))
+			timespecsub(timeout, slept, timeout);
+		else
+			timespecclear(timeout);
+	}
+	if (wedged) {		/* GPU reset while we were waiting.  */
+		ret = i915_gem_check_wedge(dev_priv-gpu_error,
+		interruptible);
+		if (ret == 0)
+			ret = -EAGAIN;
+	}
+	if (ret  0)		/* Error.  */
+		return ret;
+	if (ret == 0)		/* Seqno didn't pass.  */
+		return -ETIME;
+	return 0;		/* Seqno passed, maybe time to spare.  */
 }
 #else
 static int __wait_seqno(struct intel_ring_buffer *ring, u32 seqno,

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.4.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.4	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c	Fri Feb 27 11:23:53 2015
@@ -269,9 +269,7 @@ gmbus_wait_hw_status(struct drm_i915_pri
 #endif
 	int reg_offset = dev_priv-gpio_mmio_base;
 	u32 gmbus2 = 0;
-#ifdef __NetBSD__
-	int ret;
-#else
+#ifndef __NetBSD__
 	DEFINE_WAIT(wait);
 #endif
 
@@ -291,21 +289,20 @@ gmbus_wait_hw_status(struct drm_i915_pri
 #ifdef __NetBSD__
 	spin_lock(dev_priv-gmbus_wait_lock);
 	if (cold) {
-		unsigned timo = 1000;
-		ret = 0;
+		unsigned timo = 50;
+
 		while (gmbus2 = I915_READ_NOTRACE(GMBUS2 + reg_offset),
 		!ISSET(gmbus2, (GMBUS_SATOER | gmbus2_status))) {
-			if (timo-- == 0) {
-ret = -ETIMEDOUT;
+			if (timo-- == 0)
 break;
-			}
-			DELAY(100);
+			DELAY(1000);
 		}
 	} else {
+		int ret;
 		DRM_SPIN_TIMED_WAIT_UNTIL(ret, dev_priv-gmbus_wait_queue,
-		dev_priv-gmbus_wait_lock, 1,
+		dev_priv-gmbus_wait_lock, mstohz(50),
 		(gmbus2 = I915_READ_NOTRACE(GMBUS2 + reg_offset),
-			!ISSET(gmbus2, (GMBUS_SATOER | gmbus2_status;
+			ISSET(gmbus2, (GMBUS_SATOER | gmbus2_status;
 	}
 	spin_unlock(dev_priv-gmbus_wait_lock);
 #else

Index: src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h
diff -u src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h:1.4.2.1 src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h:1.4.2.2
--- 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/radeon

2015-01-10 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Jan 11 06:29:15 UTC 2015

Modified Files:
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: radeon_ttm.c

Log Message:
Pull up following revision(s) (requested by chs in ticket #404):
sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c: revision 1.6
apply a patch from rjs@, which is necessary for radeondrmkms on i386:
set DRM_FILE_PAGE_OFFSET to 0xa000UL for 32 bit platforms.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.5.4.1 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c:1.5 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c:1.5.4.1
--- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c:1.5	Sat Jul 26 21:19:45 2014
+++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_ttm.c	Sun Jan 11 06:29:15 2015
@@ -50,7 +50,11 @@
 #include drm/bus_dma_hacks.h
 #endif
 
+#ifdef _LP64
 #define DRM_FILE_PAGE_OFFSET (0x1ULL  PAGE_SHIFT)
+#else
+#define DRM_FILE_PAGE_OFFSET (0xa000UL  PAGE_SHIFT)
+#endif
 
 static int radeon_ttm_debugfs_init(struct radeon_device *rdev);
 static void radeon_ttm_debugfs_fini(struct radeon_device *rdev);



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2014-12-30 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Dec 30 11:57:49 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_gem.c

Log Message:
Pull up following revision(s) (requested by nonaka in ticket #362):
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.19
Also need to flush an object from CPU domain.


To generate a diff of this commit:
cvs rdiff -u -r1.14.2.3 -r1.14.2.4 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.4
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.3	Mon Nov 10 19:45:54 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Tue Dec 30 11:57:49 2014
@@ -2851,6 +2851,13 @@ i915_gem_object_move_to_inactive(struct 
 #endif
 		i915_gem_object_flush_gtt_write_domain(obj);
 	}
+	if ((obj-base.write_domain  I915_GEM_DOMAIN_CPU) != 0) {
+#if 0
+		printk(KERN_ERR %s: %p 0x%x flushing cpu\n, __func__, obj,
+			obj-base.write_domain);
+#endif
+		i915_gem_object_flush_cpu_write_domain(obj, false);
+	}
 	BUG_ON(obj-base.write_domain  ~I915_GEM_GPU_DOMAINS);
 	BUG_ON(!obj-active);
 



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/radeon

2014-12-03 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Wed Dec  3 23:00:17 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/radeon [netbsd-7]: radeondrmkmsfb.c

Log Message:
Pull up following revision(s) (requested by chs in ticket #290):
sys/external/bsd/drm2/radeon/radeondrmkmsfb.c: revision 1.4
apply several changes from intelfb.c revs 1.7 through 1.9:
 - provide a setmode callback for genfb
 - add a pmf shutdown handler to switch genfb into polling mode
 - no need to call drm_fb_helper_set_config after genfb attaches,
   as the setmode callback is called by genfb_attach


To generate a diff of this commit:
cvs rdiff -u -r1.3.4.1 -r1.3.4.2 \
src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.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/radeon/radeondrmkmsfb.c
diff -u src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c:1.3.4.1 src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c:1.3.4.2
--- src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c:1.3.4.1	Fri Nov 28 10:03:03 2014
+++ src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c	Wed Dec  3 23:00:17 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: radeondrmkmsfb.c,v 1.3.4.1 2014/11/28 10:03:03 martin Exp $	*/
+/*	$NetBSD: radeondrmkmsfb.c,v 1.3.4.2 2014/12/03 23:00:17 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: radeondrmkmsfb.c,v 1.3.4.1 2014/11/28 10:03:03 martin Exp $);
+__KERNEL_RCSID(0, $NetBSD: radeondrmkmsfb.c,v 1.3.4.2 2014/12/03 23:00:17 snj Exp $);
 
 #ifdef _KERNEL_OPT
 #include vga.h
@@ -88,6 +88,12 @@ static int	radeonfb_genfb_ioctl(void *, 
 static paddr_t	radeonfb_genfb_mmap(void *, void *, off_t, int);
 static int	radeonfb_genfb_enable_polling(void *);
 static int	radeonfb_genfb_disable_polling(void *);
+static bool	radeonfb_genfb_shutdown(device_t, int);
+static bool	radeonfb_genfb_setmode(struct genfb_softc *, int);
+
+static const struct genfb_mode_callback radeonfb_genfb_mode_callback = {
+	.gmc_setmode = radeonfb_genfb_setmode,
+};
 
 CFATTACH_DECL_NEW(radeondrmkmsfb, sizeof(struct radeonfb_softc),
 radeonfb_match, radeonfb_attach, radeonfb_detach, NULL);
@@ -171,6 +177,9 @@ radeonfb_setconfig_task(struct radeon_ta
 	prop_dictionary_set_uint64(dict, virtual_address,
 	(uint64_t)(uintptr_t)rfa-rfa_fb_ptr);
 
+	prop_dictionary_set_uint64(dict, mode_callback,
+	(uint64_t)(uintptr_t)radeonfb_genfb_mode_callback);
+
 	/* XXX Whattakludge!  */
 #if NVGA  0
 	if (vga_is_console(rfa-rfa_fb_helper-dev-pdev-pd_pa.pa_iot, -1)) {
@@ -202,7 +211,8 @@ radeonfb_setconfig_task(struct radeon_ta
 	}
 	sc-sc_attached = true;
 
-	drm_fb_helper_set_config(sc-sc_rfa.rfa_fb_helper);
+	pmf_device_register1(sc-sc_dev, NULL, NULL,
+	radeonfb_genfb_shutdown);
 
 	/* Success!  */
 	sc-sc_scheduled = false;
@@ -343,3 +353,22 @@ radeonfb_genfb_disable_polling(void *coo
 
 	return drm_fb_helper_debug_leave_fb(sc-sc_rfa.rfa_fb_helper);
 }
+
+static bool
+radeonfb_genfb_shutdown(device_t self, int flags)
+{
+	genfb_enable_polling(self);
+	return true;
+}
+
+static bool
+radeonfb_genfb_setmode(struct genfb_softc *genfb, int mode)
+{
+	struct radeonfb_softc *sc = (struct radeonfb_softc *)genfb;
+
+	if (mode == WSDISPLAYIO_MODE_EMUL) {
+		drm_fb_helper_set_config(sc-sc_rfa.rfa_fb_helper);
+	}
+
+	return true;
+}



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2014-11-28 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Nov 28 10:01:27 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: intel_opregion.c

Log Message:
Pull up following revision(s) (requested by nonaka in ticket #271):
sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c: revision 1.8
Avoid NULL pointer dereference when acpivga isn't attached.


To generate a diff of this commit:
cvs rdiff -u -r1.5.2.1 -r1.5.2.2 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.5.2.1 src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.5.2.2
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.5.2.1	Tue Nov 11 09:06:32 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c	Fri Nov 28 10:01:27 2014
@@ -674,7 +674,9 @@ static void intel_didl_outputs(struct dr
 
 #ifdef __NetBSD__
 	ad = dev-pdev-pd_ad;
-	if (ad == NULL || !device_is_a(ad-ad_device, acpivga))
+	if (ad == NULL ||
+	ad-ad_device == NULL ||
+	!device_is_a(ad-ad_device, acpivga))
 		return;
 #else
 	handle = ACPI_HANDLE(dev-pdev-dev);



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2014-11-28 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Nov 28 10:03:03 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: radeon_fb.c
src/sys/external/bsd/drm2/radeon [netbsd-7]: radeondrmkmsfb.c
radeondrmkmsfb.h

Log Message:
Pull up following revision(s) (requested by nonaka in ticket #272):
sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c: revision 1.5
sys/external/bsd/drm2/radeon/radeondrmkmsfb.h: revision 1.2
sys/external/bsd/drm2/radeon/radeondrmkmsfb.c: revision 1.5
Use correct linebytes.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.4.4.1 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c
cvs rdiff -u -r1.3 -r1.3.4.1 \
src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c
cvs rdiff -u -r1.1 -r1.1.4.1 \
src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.h

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c:1.4 src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c:1.4.4.1
--- src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c:1.4	Sat Jul 26 06:37:53 2014
+++ src/sys/external/bsd/drm2/dist/drm/radeon/radeon_fb.c	Fri Nov 28 10:03:03 2014
@@ -255,6 +255,7 @@ static int radeonfb_create(struct drm_fb
 	rfa.rfa_fb_helper = helper;
 	rfa.rfa_fb_sizes = *sizes;
 	rfa.rfa_fb_ptr = rbo-kptr;
+	rfa.rfa_fb_linebytes = mode_cmd.pitches[0];
 
 	helper-fbdev = config_found_ia(rdev-ddev-dev, radeonfbbus, rfa,
 	NULL);

Index: src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c
diff -u src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c:1.3 src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c:1.3.4.1
--- src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c:1.3	Sat Jul 26 07:02:13 2014
+++ src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.c	Fri Nov 28 10:03:03 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: radeondrmkmsfb.c,v 1.3 2014/07/26 07:02:13 riastradh Exp $	*/
+/*	$NetBSD: radeondrmkmsfb.c,v 1.3.4.1 2014/11/28 10:03:03 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: radeondrmkmsfb.c,v 1.3 2014/07/26 07:02:13 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: radeondrmkmsfb.c,v 1.3.4.1 2014/11/28 10:03:03 martin Exp $);
 
 #ifdef _KERNEL_OPT
 #include vga.h
@@ -165,8 +165,7 @@ radeonfb_setconfig_task(struct radeon_ta
 	prop_dictionary_set_uint32(dict, width, sizes-fb_width);
 	prop_dictionary_set_uint32(dict, height, sizes-fb_height);
 	prop_dictionary_set_uint8(dict, depth, sizes-surface_bpp);
-	prop_dictionary_set_uint16(dict, linebytes,
-	roundup2((sizes-fb_width * howmany(sizes-surface_bpp, 8)), 64));
+	prop_dictionary_set_uint16(dict, linebytes, rfa-rfa_fb_linebytes);
 	prop_dictionary_set_uint32(dict, address, 0); /* XXX 32-bit */
 	CTASSERT(sizeof(uintptr_t) = sizeof(uint64_t));
 	prop_dictionary_set_uint64(dict, virtual_address,

Index: src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.h
diff -u src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.h:1.1 src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.h:1.1.4.1
--- src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.h:1.1	Fri Jul 25 12:35:03 2014
+++ src/sys/external/bsd/drm2/radeon/radeondrmkmsfb.h	Fri Nov 28 10:03:03 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: radeondrmkmsfb.h,v 1.1 2014/07/25 12:35:03 riastradh Exp $	*/
+/*	$NetBSD: radeondrmkmsfb.h,v 1.1.4.1 2014/11/28 10:03:03 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -39,6 +39,7 @@ struct radeonfb_attach_args {
 	struct drm_fb_helper			*rfa_fb_helper;
 	struct drm_fb_helper_surface_size	rfa_fb_sizes;
 	void	*rfa_fb_ptr;
+	uint32_trfa_fb_linebytes;
 };
 
 #endif	/* _RADEON_RADEONDRMKMS_H_ */



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2014-11-14 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Nov 14 14:22:41 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_gem_tiling.c
intel_display.c intel_dp.c intel_overlay.c intel_tv.c
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: atombios_dp.c
ci_dpm.c evergreen_cs.c kv_dpm.c r100.c radeon_drv.c rv770_dpm.c
si_dpm.c sumo_dpm.c trinity_dpm.c
src/sys/external/bsd/drm2/ttm [netbsd-7]: ttm_bo_vm.c

Log Message:
Pull up following revision(s) (requested by snj in ticket #224):
sys/external/bsd/drm2/dist/drm/radeon/radeon_drv.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c: revision 1.6
sys/external/bsd/drm2/dist/drm/radeon/sumo_dpm.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/atombios_dp.c: revision 1.4
sys/external/bsd/drm2/dist/drm/i915/intel_dp.c: revision 1.9
sys/external/bsd/drm2/dist/drm/radeon/trinity_dpm.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/r100.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/rv770_dpm.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/evergreen_cs.c: revision 1.3
sys/external/bsd/drm2/dist/drm/i915/i915_gem_tiling.c: revision 1.4
sys/external/bsd/drm2/dist/drm/radeon/evergreen_cs.c: revision 1.4
sys/external/bsd/drm2/dist/drm/i915/intel_display.c: revision 1.13
sys/external/bsd/drm2/dist/drm/radeon/si_dpm.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/kv_dpm.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/kv_dpm.c: revision 1.4
sys/external/bsd/drm2/dist/drm/radeon/ci_dpm.c: revision 1.3
sys/external/bsd/drm2/dist/drm/radeon/ci_dpm.c: revision 1.4
sys/external/bsd/drm2/dist/drm/i915/intel_tv.c: revision 1.6
sys/external/bsd/drm2/ttm/ttm_bo_vm.c: revision 1.8
test some pointers and return EINVAL instead of blindly assuming
they're valid.  converts kernel crashes in to app failures.
GL is still not working on evergreen for me.
Use %hhx for uint8_t, not %hx.
Mark some unused variables as such to shut up Clang.
Ifdef out nonsensical comparison until we update from upstream.
We don't use radeon_(un)register_atpx_handler at the moment.
Ifdef out another nonsensical comparison.
fix uninitialized
fix shadowing for min() and max() from libkern
Fix little C issues in i915drmkms hindering the Clang build.
- Test `x == NULL', not `container_of(x, t, base)-base == NULL'.
- Fix format strings in intel_dp_probe_oui to use %hhx for uint8_t.
- Omit needless ioread32 in intel_overlay.c.
- Ifdef out unused definitions in intel_tv.c.
Update comment to reflect recent change to.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.3.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_tiling.c
cvs rdiff -u -r1.10.2.1 -r1.10.2.2 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c
cvs rdiff -u -r1.7.2.1 -r1.7.2.2 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c
cvs rdiff -u -r1.5 -r1.5.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c
cvs rdiff -u -r1.4.2.1 -r1.4.2.2 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c
cvs rdiff -u -r1.2.4.1 -r1.2.4.2 \
src/sys/external/bsd/drm2/dist/drm/radeon/atombios_dp.c
cvs rdiff -u -r1.2 -r1.2.4.1 \
src/sys/external/bsd/drm2/dist/drm/radeon/ci_dpm.c \
src/sys/external/bsd/drm2/dist/drm/radeon/evergreen_cs.c \
src/sys/external/bsd/drm2/dist/drm/radeon/kv_dpm.c \
src/sys/external/bsd/drm2/dist/drm/radeon/r100.c \
src/sys/external/bsd/drm2/dist/drm/radeon/rv770_dpm.c \
src/sys/external/bsd/drm2/dist/drm/radeon/si_dpm.c \
src/sys/external/bsd/drm2/dist/drm/radeon/sumo_dpm.c \
src/sys/external/bsd/drm2/dist/drm/radeon/trinity_dpm.c
cvs rdiff -u -r1.4 -r1.4.4.1 \
src/sys/external/bsd/drm2/dist/drm/radeon/radeon_drv.c
cvs rdiff -u -r1.2.4.4 -r1.2.4.5 src/sys/external/bsd/drm2/ttm/ttm_bo_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/dist/drm/i915/i915_gem_tiling.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_tiling.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_tiling.c:1.3.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_tiling.c:1.3	Wed Jul 16 20:03:56 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_tiling.c	Fri Nov 14 14:22:41 2014
@@ -295,12 +295,14 @@ i915_gem_set_tiling(struct drm_device *d
 {
 	struct drm_i915_gem_set_tiling *args = data;
 	struct drm_i915_private *dev_priv = dev-dev_private;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	int ret = 0;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args-handle));
-	if (obj-base == NULL)
+	gobj = drm_gem_object_lookup(dev, file, args-handle);
+	if (gobj == NULL)
 		return -ENOENT;
+	obj = to_intel_bo(gobj);
 
 	if 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/radeon

2014-11-12 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Wed Nov 12 14:09:57 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/radeon [netbsd-7]: files.radeon

Log Message:
Pull up following revision(s) (requested by snj in ticket #215):
sys/external/bsd/drm2/radeon/files.radeon: revision 1.6
sys/external/bsd/drm2/radeon/files.radeon: revision 1.7
sys/external/bsd/drm2/radeon/files.radeon: revision 1.8
sys/external/bsd/drm2/radeon/files.radeon: revision 1.9
sys/external/bsd/drm2/radeon/files.radeon: revision 1.10
sys/external/bsd/drm2/radeon/files.radeon: revision 1.11
sys/external/bsd/drm2/radeon/files.radeon: revision 1.12
Suppress clang warning about `= {0}'.
Suppress some more missing field initializer warnings from Clang.
-Wno-unused-const-variable for radeon kv_dpm.c.
Spell -Wno-missing-prototypes correctly.
rv770_dpm.c needs -Wno-missing-field-initializers.
si_dpm.c needs -Wno-unused-const-variable.
trinity_dpm.c needs -Wno-unused-const-variable.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.5.4.1 src/sys/external/bsd/drm2/radeon/files.radeon

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/radeon/files.radeon
diff -u src/sys/external/bsd/drm2/radeon/files.radeon:1.5 src/sys/external/bsd/drm2/radeon/files.radeon:1.5.4.1
--- src/sys/external/bsd/drm2/radeon/files.radeon:1.5	Mon Jul 28 00:02:50 2014
+++ src/sys/external/bsd/drm2/radeon/files.radeon	Wed Nov 12 14:09:57 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: files.radeon,v 1.5 2014/07/28 00:02:50 riastradh Exp $
+#	$NetBSD: files.radeon,v 1.5.4.1 2014/11/12 14:09:57 martin Exp $
 
 define	radeonfbbus	{ }
 device	radeon: drmkms, drmkms_pci, drmkms_ttm, radeonfbbus, firmload
@@ -16,17 +16,18 @@ makeoptions	radeon	CWARNFLAGS.atombios_
 makeoptions	radeon	CWARNFLAGS.atombios_i2c.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.btc_dpm.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.ci_dpm.c+=-Wno-missing-field-initializers
-makeoptions	radeon	CWARNFLAGS.cik.c+=-Wno-missing-prototypes
+makeoptions	radeon	CWARNFLAGS.cik.c+=-Wno-missing-prototypes -Wno-missing-field-initializers
 makeoptions	radeon	CWARNFLAGS.cik_sdma.c+=-Wno-missing-prototypes
+makeoptions	radeon	CWARNFLAGS.cypress_dpm.c+=-Wno-missing-field-initializers
 makeoptions	radeon	CWARNFLAGS.dce6_afmt.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.evergreen.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.evergreen_cs.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.kv_dpm.c+=-Wno-missing-field-initializers
 makeoptions	radeon	CWARNFLAGS.kv_dpm.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.kv_dpm.c+=-Wno-shadow
-makeoptions	radeon	CWARNFLAGS.kv_dpm.c+=-Wno-type-limits
+makeoptions	radeon	CWARNFLAGS.kv_dpm.c+=-Wno-type-limits -Wno-unused-const-variable
 makeoptions	radeon	CWARNFLAGS.ni.c+=-Wno-missing-prototypes
-makeoptions	radeon	CWARNFLAGS.ni_dpm.c+=-Wno-missing-prototypes
+makeoptions	radeon	CWARNFLAGS.ni_dpm.c+=-Wno-missing-prototypes -Wno-missing-field-initializers
 makeoptions	radeon	CWARNFLAGS.r600.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.r600_cs.c+=-Wno-missing-field-initializers
 makeoptions	radeon	CWARNFLAGS.r600_cs.c+=-Wno-missing-prototypes
@@ -36,7 +37,7 @@ makeoptions	radeon	CWARNFLAGS.radeon_at
 makeoptions	radeon	CWARNFLAGS.radeon_atombios.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.radeon_clocks.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.radeon_combios.c+=-Wno-missing-field-initializers
-makeoptions	radeon	CWARNFLAGS.radeon_combios.c+=-Wno-prototypes-field-initializers
+makeoptions	radeon	CWARNFLAGS.radeon_combios.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.radeon_drv.c+=-Wno-missing-field-initializers
 makeoptions	radeon	CWARNFLAGS.radeon_gem.c+=-Wno-missing-prototypes
 makeoptions	radeon	CWARNFLAGS.radeon_irq_kms.c+=-Wno-missing-prototypes
@@ -49,13 +50,15 @@ makeoptions	radeonCWARNFLAGS.radeon
 makeoptions	radeonCWARNFLAGS.rs780_dpm.c+=-Wno-missing-prototypes
 makeoptions	radeonCWARNFLAGS.rv6xx_dpm.c+=-Wno-missing-prototypes
 makeoptions	radeonCWARNFLAGS.rv6xx_dpm.c+=-Wno-shadow
-makeoptions	radeonCWARNFLAGS.rv770.c+=-Wno-missing-prototypes
-makeoptions	radeonCWARNFLAGS.rv770_dpm.c+=-Wno-missing-prototypes
+makeoptions	radeonCWARNFLAGS.rv770.c+=-Wno-missing-prototypes -Wno-missing-field-initializers
+makeoptions	radeonCWARNFLAGS.rv770_dpm.c+=-Wno-missing-prototypes -Wno-missing-field-initializers
 makeoptions	radeonCWARNFLAGS.si.c+=-Wno-missing-prototypes
 makeoptions	radeonCWARNFLAGS.si_dpm.c+=-Wno-missing-field-initializers
 makeoptions	radeonCWARNFLAGS.si_dpm.c+=-Wno-missing-prototypes
+makeoptions	radeonCWARNFLAGS.si_dpm.c+=-Wno-unused-const-variable
 makeoptions	radeonCWARNFLAGS.sumo_dpm.c+=-Wno-missing-prototypes
 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2014-11-11 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Nov 11 09:06:32 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_dma.c
i915_drv.h intel_acpi.c intel_opregion.c
src/sys/external/bsd/drm2/i915drm [netbsd-7]: files.i915drmkms
src/sys/external/bsd/drm2/include/linux [netbsd-7]: acpi.h pci.h

Log Message:
Pull up following revision(s) (requested by nonaka in ticket #197):
sys/external/bsd/drm2/dist/drm/i915/i915_drv.h: revision 1.10
sys/external/bsd/drm2/include/linux/pci.h: revision 1.10
sys/external/bsd/drm2/dist/drm/i915/intel_acpi.c: revision 1.3
sys/external/bsd/drm2/dist/drm/i915/intel_acpi.c: revision 1.4
sys/external/bsd/drm2/dist/drm/i915/intel_acpi.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c: revision 1.6
sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c: revision 1.7
sys/external/bsd/drm2/include/linux/acpi.h: revision 1.3
sys/external/bsd/drm2/dist/drm/i915/i915_dma.c: revision 1.12
sys/external/bsd/drm2/i915drm/files.i915drmkms: revision 1.8
i915drmkms(4): Enable CONFIG_ACPI if NACPICA  0.
Now brightness can be adjusted via hotkey on Mouse Computer LB-J300X
(Clevo W330SU2).
Fix compilation (debug)
pci_attach_args of pci_find_device and match function is not the same thing.
fix PR/49372.


To generate a diff of this commit:
cvs rdiff -u -r1.10.2.1 -r1.10.2.2 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
cvs rdiff -u -r1.7.2.2 -r1.7.2.3 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
cvs rdiff -u -r1.2 -r1.2.4.1 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_acpi.c
cvs rdiff -u -r1.5 -r1.5.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c
cvs rdiff -u -r1.5.2.1 -r1.5.2.2 \
src/sys/external/bsd/drm2/i915drm/files.i915drmkms
cvs rdiff -u -r1.2 -r1.2.8.1 src/sys/external/bsd/drm2/include/linux/acpi.h
cvs rdiff -u -r1.7.2.2 -r1.7.2.3 \
src/sys/external/bsd/drm2/include/linux/pci.h

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.10.2.1 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.10.2.2
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.10.2.1	Mon Nov 10 19:45:54 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c	Tue Nov 11 09:06:32 2014
@@ -1375,7 +1375,11 @@ static int i915_load_modeset_init(struct
 		goto out;
 #endif
 
+#ifdef __NetBSD__
+	intel_register_dsm_handler(dev);
+#else
 	intel_register_dsm_handler();
+#endif
 
 #ifndef __NetBSD__		/* XXX vga */
 	ret = vga_switcheroo_register_client(dev-pdev, i915_switcheroo_ops, false);

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.7.2.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.7.2.3
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.7.2.2	Mon Nov 10 19:45:54 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h	Tue Nov 11 09:06:32 2014
@@ -30,6 +30,13 @@
 #ifndef _I915_DRV_H_
 #define _I915_DRV_H_
 
+#if defined(__NetBSD__)  (defined(i386) || defined(amd64))
+#include acpica.h
+#if (NACPICA  0)
+#define CONFIG_ACPI
+#endif
+#endif
+
 #include uapi/drm/i915_drm.h
 
 #include i915_reg.h
@@ -2720,8 +2727,8 @@ extern void intel_i2c_reset(struct drm_d
 
 /* intel_opregion.c */
 struct intel_encoder;
-extern int intel_opregion_setup(struct drm_device *dev);
 #ifdef CONFIG_ACPI
+extern int intel_opregion_setup(struct drm_device *dev);
 extern void intel_opregion_init(struct drm_device *dev);
 extern void intel_opregion_fini(struct drm_device *dev);
 extern void intel_opregion_asle_intr(struct drm_device *dev);
@@ -2730,6 +2737,7 @@ extern int intel_opregion_notify_encoder
 extern int intel_opregion_notify_adapter(struct drm_device *dev,
 	 pci_power_t state);
 #else
+static inline int intel_opregion_setup(struct drm_device *dev) { return 0; }
 static inline void intel_opregion_init(struct drm_device *dev) { return; }
 static inline void intel_opregion_fini(struct drm_device *dev) { return; }
 static inline void intel_opregion_asle_intr(struct drm_device *dev) { return; }
@@ -2747,10 +2755,22 @@ intel_opregion_notify_adapter(struct drm
 
 /* intel_acpi.c */
 #ifdef CONFIG_ACPI
+#ifdef __NetBSD__
+extern void intel_register_dsm_handler(struct drm_device *);
+#else
 extern void intel_register_dsm_handler(void);
+#endif
 extern void intel_unregister_dsm_handler(void);
 #else
+#ifdef __NetBSD__
+static inline void
+intel_register_dsm_handler(struct drm_device *dev)
+{
+	return;
+}
+#else
 static inline void intel_register_dsm_handler(void) { return; }
+#endif
 static inline void intel_unregister_dsm_handler(void) { return; }
 #endif /* CONFIG_ACPI */
 

Index: 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/linux

2014-11-11 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Tue Nov 11 09:09:33 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/include/linux [netbsd-7]: sched.h

Log Message:
Pull up following revision(s) (requested by nonaka in ticket #198):
sys/external/bsd/drm2/include/linux/sched.h: revision 1.5
return correct remaining jiffies.
fix X server hang when screen blank by DPMS.


To generate a diff of this commit:
cvs rdiff -u -r1.3.2.1 -r1.3.2.2 \
src/sys/external/bsd/drm2/include/linux/sched.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/linux/sched.h
diff -u src/sys/external/bsd/drm2/include/linux/sched.h:1.3.2.1 src/sys/external/bsd/drm2/include/linux/sched.h:1.3.2.2
--- src/sys/external/bsd/drm2/include/linux/sched.h:1.3.2.1	Thu Oct 30 09:20:47 2014
+++ src/sys/external/bsd/drm2/include/linux/sched.h	Tue Nov 11 09:09:32 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sched.h,v 1.3.2.1 2014/10/30 09:20:47 martin Exp $	*/
+/*	$NetBSD: sched.h,v 1.3.2.2 2014/11/11 09:09:32 martin Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -49,6 +49,7 @@ task_pid_nr(struct proc *p)
 static inline long
 schedule_timeout_uninterruptible(long timeout)
 {
+	long remain;
 	int start, end;
 
 	if (cold) {
@@ -61,7 +62,8 @@ schedule_timeout_uninterruptible(long ti
 	(void)kpause(loonix, false /*!intr*/, timeout, NULL);
 	end = hardclock_ticks;
 
-	return (end - start)  0 ? (end - start) : 0;
+	remain = timeout - (end - start);
+	return remain  0 ? remain : 0;
 }
 
 #endif  /* _LINUX_SCHED_H_ */



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2014-11-10 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Nov 10 19:45:54 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_cmd_parser.c
i915_debugfs.c i915_dma.c i915_drv.h i915_gem.c i915_irq.c
i915_ums.c intel_crt.c intel_ddi.c intel_display.c intel_dp.c
intel_drv.h intel_dsi.c intel_dsi_cmd.c intel_dvo.c intel_hdmi.c
intel_lvds.c intel_panel.c intel_pm.c intel_sdvo.c intel_sideband.c
intel_sprite.c intel_tv.c
src/sys/external/bsd/drm2/dist/uapi/drm [netbsd-7]: drm.h
src/sys/external/bsd/drm2/drm [netbsd-7]: drm_module.c
src/sys/external/bsd/drm2/i915drm [netbsd-7]: intelfb.c
src/sys/external/bsd/drm2/include/asm [netbsd-7]: processor.h
src/sys/external/bsd/drm2/include/linux [netbsd-7]: io-mapping.h
ww_mutex.h
src/sys/external/bsd/drm2/ttm [netbsd-7]: ttm_bo_vm.c

Log Message:
Pull up following revision(s) (requested by snj in ticket #191):
sys/external/bsd/drm2/include/linux/io-mapping.h: revision 1.4
sys/external/bsd/drm2/dist/uapi/drm/drm.h: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_panel.c: revision 1.5
sys/external/bsd/drm2/dist/uapi/drm/drm.h: revision 1.6
sys/external/bsd/drm2/dist/drm/i915/intel_drv.h: revision 1.7
sys/external/bsd/drm2/include/linux/ww_mutex.h: revision 1.7
sys/external/bsd/drm2/dist/drm/i915/intel_dp.c: revision 1.8
sys/external/bsd/drm2/dist/drm/i915/i915_ums.c: revision 1.2
sys/external/bsd/drm2/dist/drm/i915/intel_pm.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c: revision 1.2
sys/external/bsd/drm2/dist/drm/i915/i915_drv.h: revision 1.9
sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c: revision 1.4
sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c: revision 1.3
sys/external/bsd/drm2/dist/drm/i915/intel_display.c: revision 1.11
sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_display.c: revision 1.12
sys/external/bsd/drm2/include/asm/processor.h: revision 1.3
sys/external/bsd/drm2/dist/drm/i915/intel_crt.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c: revision 1.2
sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/intel_tv.c: revision 1.5
sys/external/bsd/drm2/dist/drm/i915/i915_dma.c: revision 1.11
sys/external/bsd/drm2/dist/drm/i915/i915_irq.c: revision 1.10
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.16
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.17
sys/external/bsd/drm2/ttm/ttm_bo_vm.c: revision 1.6
sys/external/bsd/drm2/ttm/ttm_bo_vm.c: revision 1.7
sys/external/bsd/drm2/drm/drm_module.c: revision 1.8
sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c: revision 1.2
sys/external/bsd/drm2/dist/drm/i915/intel_dsi_cmd.c: revision 1.2
sys/external/bsd/drm2/i915drm/intelfb.c: revision 1.10
sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c: revision 1.2
sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c: revision 1.6
sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c: revision 1.6
Code cleanup and minor bugfixes for drm2.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.3.4.1 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c
cvs rdiff -u -r1.1.1.2 -r1.1.1.2.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c
cvs rdiff -u -r1.10 -r1.10.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c
cvs rdiff -u -r1.7.2.1 -r1.7.2.2 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
cvs rdiff -u -r1.14.2.2 -r1.14.2.3 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
cvs rdiff -u -r1.6.2.3 -r1.6.2.4 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.4.1 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_ums.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi_cmd.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c
cvs rdiff -u -r1.4 -r1.4.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c
cvs rdiff -u -r1.7 -r1.7.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c
cvs rdiff -u -r1.6 -r1.6.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_drv.h
cvs rdiff -u -r1.2 -r1.2.4.1 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c
cvs 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2014-11-05 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Wed Nov  5 17:52:10 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: intel_panel.c

Log Message:
Pull up following revision(s) (requested by jmcneill in ticket #177):
sys/external/bsd/drm2/dist/drm/i915/intel_panel.c: revision 1.6
Merge 
https://github.com/torvalds/linux/commit/2e7eeeb59a92d09144fdb7d2dc1af77a10a7945b#diff-528092536eaeb3c5f7ff6dfeed53786d

 drm/i915: set backlight duty cycle after backlight enable for gen4
 For reasons I can't claim to fully understand gen4 seems to require
 backlight duty cycle setting after the backlight has been enabled, or
 else black screen follows. I don't have documentation for the correct
 sequence on gen4 either. Confirmed on Dell Latitude D630 and MacBook4,1.
 Without this patch, the screen on my T61 (i965) would be blank at boot
 unless I booted with the AC adapter unplugged.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.4.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.4.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.4	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c	Wed Nov  5 17:52:10 2014
@@ -730,9 +730,6 @@ static void i965_enable_backlight(struct
 	ctl = freq  16;
 	I915_WRITE(BLC_PWM_CTL, ctl);
 
-	/* XXX: combine this into above write? */
-	intel_panel_actually_set_backlight(connector, panel-backlight.level);
-
 	ctl2 = BLM_PIPE(pipe);
 	if (panel-backlight.combination_mode)
 		ctl2 |= BLM_COMBINATION_MODE;
@@ -741,6 +738,8 @@ static void i965_enable_backlight(struct
 	I915_WRITE(BLC_PWM_CTL2, ctl2);
 	POSTING_READ(BLC_PWM_CTL2);
 	I915_WRITE(BLC_PWM_CTL2, ctl2 | BLM_PWM_ENABLE);
+
+	intel_panel_actually_set_backlight(connector, panel-backlight.level);
 }
 
 static void vlv_enable_backlight(struct intel_connector *connector)



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2014-11-05 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Wed Nov  5 17:57:13 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_gem.c

Log Message:
Pull up following revision(s) (requested by sborrill in ticket #178):
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.18
When moving an object to inactive, make sure that we first flush it from
the GTT domain in case it belonged there. Also, fix some compilation issues
when turning on WATCH_GTT and WATCH_LISTS, although this is a lost cause;
most of the code has rotted beyond repair.


To generate a diff of this commit:
cvs rdiff -u -r1.14.2.1 -r1.14.2.2 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.1 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.2
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.1	Fri Aug 22 10:35:59 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Wed Nov  5 17:57:13 2014
@@ -58,6 +58,7 @@
 #include linux/time.h
 #include linux/err.h
 #include linux/bitops.h
+#include linux/printk.h
 #include asm/param.h
 #include asm/page.h
 
@@ -2826,10 +2827,18 @@ void i915_vma_move_to_active(struct i915
 static void
 i915_gem_object_move_to_inactive(struct drm_i915_gem_object *obj)
 {
-	struct drm_i915_private *dev_priv = obj-base.dev-dev_private;
+	struct drm_device *dev = obj-base.dev;
+	struct drm_i915_private *dev_priv = dev-dev_private;
 	struct i915_address_space *vm;
 	struct i915_vma *vma;
 
+	if ((obj-base.write_domain  I915_GEM_DOMAIN_GTT) != 0) {
+#if 0
+		printk(KERN_ERR %s: %p 0x%x flushing gtt\n, __func__, obj,
+			obj-base.write_domain);
+#endif
+		i915_gem_object_flush_gtt_write_domain(obj);
+	}
 	BUG_ON(obj-base.write_domain  ~I915_GEM_GPU_DOMAINS);
 	BUG_ON(!obj-active);
 
@@ -3934,7 +3943,7 @@ static void i915_gem_verify_gtt(struct d
 	struct drm_i915_gem_object *obj;
 	int err = 0;
 
-	list_for_each_entry(obj, dev_priv-mm.gtt_list, global_list) {
+	list_for_each_entry(obj, dev_priv-mm.bound_list, global_list) {
 		if (obj-gtt_space == NULL) {
 			printk(KERN_ERR object found on GTT list with no space reserved\n);
 			err++;



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/linux

2014-10-30 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Thu Oct 30 09:20:47 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/include/linux [netbsd-7]: sched.h

Log Message:
Pull up following revision(s) (requested by nonaka in ticket #161):
sys/external/bsd/drm2/include/linux/sched.h: revision 1.4
Don't call kpause(9) if cold.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.3.2.1 src/sys/external/bsd/drm2/include/linux/sched.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/linux/sched.h
diff -u src/sys/external/bsd/drm2/include/linux/sched.h:1.3 src/sys/external/bsd/drm2/include/linux/sched.h:1.3.2.1
--- src/sys/external/bsd/drm2/include/linux/sched.h:1.3	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/include/linux/sched.h	Thu Oct 30 09:20:47 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: sched.h,v 1.3 2014/07/16 20:56:25 riastradh Exp $	*/
+/*	$NetBSD: sched.h,v 1.3.2.1 2014/10/30 09:20:47 martin Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -51,12 +51,17 @@ schedule_timeout_uninterruptible(long ti
 {
 	int start, end;
 
+	if (cold) {
+		DELAY(timeout);
+		return 0;
+	}
+
 	start = hardclock_ticks;
 	/* XXX Integer truncation...not likely to matter here.  */
 	(void)kpause(loonix, false /*!intr*/, timeout, NULL);
 	end = hardclock_ticks;
 
-	return (end - start);
+	return (end - start)  0 ? (end - start) : 0;
 }
 
 #endif  /* _LINUX_SCHED_H_ */



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 17:41:53 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/nouveau [netbsd-7]: nouveau_bo.c
nouveau_drm.c nouveau_drm.h nouveau_fence.c nouveau_gem.c
nouveau_nv10_fence.c nouveau_nv50_display.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine [netbsd-7]:
nouveau_engine_xtensa.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/copy [netbsd-7]:
nouveau_engine_copy_nva3.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/crypt [netbsd-7]:
nouveau_engine_crypt_nv84.c nouveau_engine_crypt_nv98.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/device 
[netbsd-7]:
nouveau_engine_device_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/disp [netbsd-7]:
nouveau_engine_disp_dacnv50.c nouveau_engine_disp_nv04.c
nouveau_engine_disp_nv50.c nouveau_engine_disp_nvd0.c nv50.h
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo [netbsd-7]:
nouveau_engine_fifo_base.c nouveau_engine_fifo_nvc0.c
nouveau_engine_fifo_nve0.c nve0.h
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/graph [netbsd-7]:
nouveau_engine_graph_ctxnvd7.c nouveau_engine_graph_gm107.c
nouveau_engine_graph_nv50.c nouveau_engine_graph_nvc0.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon 
[netbsd-7]:
nouveau_engine_perfmon_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/core [netbsd-7]:
device.h
src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/engine 
[netbsd-7]:
device.h
src/sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev 
[netbsd-7]:
bar.h fb.h pwr.h
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bar [netbsd-7]:
nouveau_subdev_bar_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/instmem 
[netbsd-7]:
nouveau_subdev_instmem_nv04.c nouveau_subdev_instmem_nv40.c nv04.h
src/sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/pwr [netbsd-7]:
nouveau_subdev_pwr_base.c
src/sys/external/bsd/drm2/dist/drm/nouveau/dispnv04 [netbsd-7]:
nouveau_dispnv04_tvmodesnv17.c nouveau_dispnv04_tvnv17.c
src/sys/external/bsd/drm2/include/drm [netbsd-7]: drm_agp_netbsd.h
src/sys/external/bsd/drm2/include/linux [netbsd-7]: bitops.h i2c.h
mutex.h pagemap.h pm_runtime.h spinlock.h vmalloc.h
src/sys/external/bsd/drm2/nouveau [netbsd-7]: files.nouveau
nouveau_module.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #95):
sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/fb.h: 
revision 1.2
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_nv10_fence.c: revision 
1.2

sys/external/bsd/drm2/dist/drm/nouveau/core/subdev/bar/nouveau_subdev_bar_base.c:
 revision 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/include/engine/device.h: 
revision 1.2
sys/external/bsd/drm2/dist/drm/nouveau/core/include/subdev/pwr.h: 
revision 1.2

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/nouveau_engine_xtensa.c: 
revision 1.2
sys/external/bsd/drm2/include/linux/bitops.h: revision 1.8

sys/external/bsd/drm2/dist/drm/nouveau/dispnv04/nouveau_dispnv04_tvnv17.c: 
revision 1.3

sys/external/bsd/drm2/dist/drm/nouveau/dispnv04/nouveau_dispnv04_tvmodesnv17.c: 
revision 1.3
sys/external/bsd/drm2/dist/drm/nouveau/core/include/core/device.h: 
revision 1.3
sys/external/bsd/drm2/include/drm/drm_agp_netbsd.h: revision 1.4
sys/external/bsd/drm2/include/linux/spinlock.h: revision 1.4
sys/external/bsd/drm2/include/linux/pm_runtime.h: revision 1.3

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/crypt/nouveau_engine_crypt_nv98.c:
 revision 1.2
sys/external/bsd/drm2/nouveau/files.nouveau: revision 1.3

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/disp/nouveau_engine_disp_dacnv50.c:
 revision 1.2

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/fifo/nouveau_engine_fifo_nve0.c:
 revision 1.2

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/disp/nouveau_engine_disp_nv50.c:
 revision 1.2
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_gem.c: revision 1.3
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_bo.c: revision 1.5

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/perfmon/nouveau_engine_perfmon_base.c:
 revision 1.2

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/crypt/nouveau_engine_crypt_nv84.c:
 revision 1.2
sys/external/bsd/drm2/dist/drm/nouveau/nouveau_fence.c: revision 1.3

sys/external/bsd/drm2/dist/drm/nouveau/core/engine/graph/nouveau_engine_graph_nv50.c:
 revision 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/linux

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 17:48:40 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/include/linux [netbsd-7]: timer.h

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #96):
sys/external/bsd/drm2/include/linux/timer.h: revision 1.5
Add Linux timer_pending and del_timer.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.4.2.1 src/sys/external/bsd/drm2/include/linux/timer.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/linux/timer.h
diff -u src/sys/external/bsd/drm2/include/linux/timer.h:1.4 src/sys/external/bsd/drm2/include/linux/timer.h:1.4.2.1
--- src/sys/external/bsd/drm2/include/linux/timer.h:1.4	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/include/linux/timer.h	Sun Sep 21 17:48:40 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: timer.h,v 1.4 2014/07/16 20:56:25 riastradh Exp $	*/
+/*	$NetBSD: timer.h,v 1.4.2.1 2014/09/21 17:48:40 snj Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -83,12 +83,26 @@ mod_timer_pinned(struct timer_list *time
 }
 
 static inline void
+del_timer(struct timer_list *timer)
+{
+
+	callout_stop(timer-tl_callout);
+}
+
+static inline void
 del_timer_sync(struct timer_list *timer)
 {
 
 	callout_halt(timer-tl_callout, NULL);
 }
 
+static inline bool
+timer_pending(struct timer_list *timer)
+{
+
+	return callout_pending(timer-tl_callout);
+}
+
 /*
  * XXX This is bogus -- the Linux version does various machinations to
  * give some jitter so that stuff doesn't wake up all at once.



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 17:55:03 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/via [netbsd-7]: via_dma.c
via_dmablit.c via_dmablit.h via_drv.h via_irq.c via_video.c
Added Files:
src/sys/external/bsd/drm2/via [netbsd-7]: files.via

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #97):
sys/external/bsd/drm2/dist/drm/via/via_video.c: revision 1.2
sys/external/bsd/drm2/dist/drm/via/via_dmablit.c: revision 1.2
sys/external/bsd/drm2/dist/drm/via/via_dmablit.h: revision 1.2
sys/external/bsd/drm2/via/files.via: revision 1.1
sys/external/bsd/drm2/dist/drm/via/via_irq.c: revision 1.2
sys/external/bsd/drm2/dist/drm/via/via_drv.h: revision 1.2
sys/external/bsd/drm2/dist/drm/via/via_dma.c: revision 1.2
Partial viadrm2 snapshot.
To do:
- autoconf attachment (shouldn't be hard)
- viafb (maybe steal unichromefb and adapt attachment structure)
- actually run it (no hardware here)


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.2 -r1.1.1.2.2.1 \
src/sys/external/bsd/drm2/dist/drm/via/via_dma.c \
src/sys/external/bsd/drm2/dist/drm/via/via_dmablit.c \
src/sys/external/bsd/drm2/dist/drm/via/via_drv.h \
src/sys/external/bsd/drm2/dist/drm/via/via_irq.c \
src/sys/external/bsd/drm2/dist/drm/via/via_video.c
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.10.1 \
src/sys/external/bsd/drm2/dist/drm/via/via_dmablit.h
cvs rdiff -u -r0 -r1.1.2.2 src/sys/external/bsd/drm2/via/files.via

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/via/via_dma.c
diff -u src/sys/external/bsd/drm2/dist/drm/via/via_dma.c:1.1.1.2 src/sys/external/bsd/drm2/dist/drm/via/via_dma.c:1.1.1.2.2.1
--- src/sys/external/bsd/drm2/dist/drm/via/via_dma.c:1.1.1.2	Wed Jul 16 19:35:29 2014
+++ src/sys/external/bsd/drm2/dist/drm/via/via_dma.c	Sun Sep 21 17:55:03 2014
@@ -39,6 +39,8 @@
 #include via_drv.h
 #include via_3d_reg.h
 
+#include linux/delay.h
+
 #define CMDBUF_ALIGNMENT_SIZE   (0x100)
 #define CMDBUF_ALIGNMENT_MASK   (0x0ff)
 
@@ -234,13 +236,21 @@ static int via_dma_init(struct drm_devic
 
 	switch (init-func) {
 	case VIA_INIT_DMA:
+#ifdef __NetBSD__
+		if (!DRM_SUSER())
+#else
 		if (!capable(CAP_SYS_ADMIN))
+#endif
 			retcode = -EPERM;
 		else
 			retcode = via_initialize(dev, dev_priv, init);
 		break;
 	case VIA_CLEANUP_DMA:
+#ifdef __NetBSD__
+		if (!DRM_SUSER())
+#else
 		if (!capable(CAP_SYS_ADMIN))
+#endif
 			retcode = -EPERM;
 		else
 			retcode = via_dma_cleanup(dev);
@@ -586,13 +596,11 @@ static inline void via_dummy_bitblt(drm_
 
 static void via_cmdbuf_jump(drm_via_private_t *dev_priv)
 {
-	uint32_t agp_base;
 	uint32_t pause_addr_lo, pause_addr_hi;
 	uint32_t jump_addr_lo, jump_addr_hi;
 	volatile uint32_t *last_pause_ptr;
 	uint32_t dma_low_save1, dma_low_save2;
 
-	agp_base = dev_priv-dma_offset + (uint32_t) dev_priv-agpAddr;
 	via_align_cmd(dev_priv, HC_HAGPBpID_JUMP, 0, jump_addr_hi,
 		  jump_addr_lo, 0);
 
Index: src/sys/external/bsd/drm2/dist/drm/via/via_dmablit.c
diff -u src/sys/external/bsd/drm2/dist/drm/via/via_dmablit.c:1.1.1.2 src/sys/external/bsd/drm2/dist/drm/via/via_dmablit.c:1.1.1.2.2.1
--- src/sys/external/bsd/drm2/dist/drm/via/via_dmablit.c:1.1.1.2	Wed Jul 16 19:35:29 2014
+++ src/sys/external/bsd/drm2/dist/drm/via/via_dmablit.c	Sun Sep 21 17:55:03 2014
@@ -41,6 +41,7 @@
 
 #include linux/pagemap.h
 #include linux/slab.h
+#include linux/timer.h
 
 #define VIA_PGDN(x)	 (((unsigned long)(x))  PAGE_MASK)
 #define VIA_PGOFF(x)	(((unsigned long)(x))  ~PAGE_MASK)
@@ -61,8 +62,12 @@ typedef struct _drm_via_descriptor {
 
 
 static void
-via_unmap_blit_from_device(struct pci_dev *pdev, drm_via_sg_info_t *vsg)
+via_unmap_blit_from_device(struct drm_device *dev, struct pci_dev *pdev,
+drm_via_sg_info_t *vsg)
 {
+#ifdef __NetBSD__
+	bus_dmamap_unload(dev-dmat, vsg-dmamap);
+#else
 	int num_desc = vsg-num_desc;
 	unsigned cur_descriptor_page = num_desc / vsg-descriptors_per_page;
 	unsigned descriptor_this_page = num_desc % vsg-descriptors_per_page;
@@ -82,6 +87,7 @@ via_unmap_blit_from_device(struct pci_de
 		next = (dma_addr_t) desc_ptr-next;
 		desc_ptr--;
 	}
+#endif
 }
 
 /*
@@ -101,7 +107,9 @@ via_map_blit_for_device(struct pci_dev *
 	unsigned num_descriptors_this_page = 0;
 	unsigned char *mem_addr = xfer-mem_addr;
 	unsigned char *cur_mem;
+#ifndef __NetBSD__
 	unsigned char *first_addr = (unsigned char *)VIA_PGDN(mem_addr);
+#endif
 	uint32_t fb_addr = xfer-fb_addr;
 	uint32_t cur_fb;
 	unsigned long line_len;
@@ -126,18 +134,31 @@ via_map_blit_for_device(struct pci_dev *
 			line_len -= remaining_len;
 
 			if (mode == 1) {
+#ifdef __NetBSD__
+const bus_dma_segment_t *const seg =
+vsg-dmamap-dm_segs[atop(cur_mem)];
+desc_ptr-mem_addr =
+seg-ds_addr + trunc_page((vaddr_t)cur_mem);

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/drm

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 18:00:33 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/include/drm [netbsd-7]: drm_wait_netbsd.h

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #98):
sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h: revision 1.5
Return 0, not uninitialized, if the condition is already true.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.4.2.1 \
src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h
diff -u src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h:1.4 src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h:1.4.2.1
--- src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h:1.4	Wed Jul 16 20:59:58 2014
+++ src/sys/external/bsd/drm2/include/drm/drm_wait_netbsd.h	Sun Sep 21 18:00:33 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_wait_netbsd.h,v 1.4 2014/07/16 20:59:58 riastradh Exp $	*/
+/*	$NetBSD: drm_wait_netbsd.h,v 1.4.2.1 2014/09/21 18:00:33 snj Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -177,6 +177,7 @@ DRM_SPIN_WAKEUP_ALL(drm_waitqueue_t *q, 
 	KASSERT(!cpu_intr_p());		\
 	KASSERT(!cpu_softintr_p());	\
 	KASSERT(!cold);			\
+	(RET) = 0;			\
 	while (!(CONDITION)) {		\
 		/* XXX errno NetBSD-Linux */\
 		(RET) = -WAIT((Q), (INTERLOCK)-sl_lock);		\



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/linux

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 18:01:28 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/include/linux [netbsd-7]: io-mapping.h

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #98):
sys/external/bsd/drm2/include/linux/io-mapping.h: revision 1.3
Make Linux io_mapping actually work.
Can't use bus_space_map/bus_space_unmap in interrupt context, where
Linux uses this io_mapping abstraction.  Instead, do uvm_km_alloc up
front and then use bus_space_mmap/pmap_kenter_pa to map it.
XXX Should bus_space_reserve the region (but that's x86-only for now).
XXX Should use direct map if possible.
XXX Should set an MTRR WC too in case of direct map or no PAT.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.2.8.1 \
src/sys/external/bsd/drm2/include/linux/io-mapping.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/linux/io-mapping.h
diff -u src/sys/external/bsd/drm2/include/linux/io-mapping.h:1.2 src/sys/external/bsd/drm2/include/linux/io-mapping.h:1.2.8.1
--- src/sys/external/bsd/drm2/include/linux/io-mapping.h:1.2	Tue Mar 18 18:20:43 2014
+++ src/sys/external/bsd/drm2/include/linux/io-mapping.h	Sun Sep 21 18:01:28 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: io-mapping.h,v 1.2 2014/03/18 18:20:43 riastradh Exp $	*/
+/*	$NetBSD: io-mapping.h,v 1.2.8.1 2014/09/21 18:01:28 snj Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -32,40 +32,58 @@
 #ifndef _LINUX_IO_MAPPING_H_
 #define _LINUX_IO_MAPPING_H_
 
+#include sys/param.h
 #include sys/bus.h
 #include sys/kmem.h
 #include sys/systm.h
 
+#include uvm/uvm_extern.h
+
 struct io_mapping {
 	bus_space_tag_t		diom_bst;
 	bus_addr_t		diom_addr;
 	bus_size_t		diom_size;
-	int			diom_flags;
-	bus_space_handle_t	diom_bsh;
-	void			*diom_vaddr;
+	vaddr_t			diom_va;
+	bool			diom_mapped;
 };
 
 static inline struct io_mapping *
 bus_space_io_mapping_create_wc(bus_space_tag_t bst, bus_addr_t addr,
 bus_size_t size)
 {
-	struct io_mapping *const mapping = kmem_alloc(sizeof(*mapping),
-	KM_SLEEP);
+	struct io_mapping *mapping;
+	bus_size_t offset;
+
+	KASSERT(PAGE_SIZE = size);
+	KASSERT(0 == (size  (PAGE_SIZE - 1)));
+	KASSERT(__type_fit(off_t, size));
+
+	/*
+	 * XXX For x86: Reserve the region (bus_space_reserve) and set
+	 * an MTRR to make it write-combining.  Doesn't matter if we
+	 * have PAT and we use pmap_kenter_pa, but matters if we don't
+	 * have PAT or if we later make this use direct map.
+	 */
+
+	/* Make sure the region is mappable.  */
+	for (offset = 0; offset  size; offset += PAGE_SIZE) {
+		if (bus_space_mmap(bst, addr, offset, PROT_READ|PROT_WRITE,
+			BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_PREFETCHABLE)
+		== (paddr_t)-1)
+			return NULL;
+	}
+
+	/* Create a mapping record.  */
+	mapping = kmem_alloc(sizeof(*mapping), KM_SLEEP);
 	mapping-diom_bst = bst;
 	mapping-diom_addr = addr;
 	mapping-diom_size = size;
-	mapping-diom_flags = 0;
-	mapping-diom_flags |= BUS_SPACE_MAP_LINEAR;
-	mapping-diom_flags |= BUS_SPACE_MAP_PREFETCHABLE;
-	mapping-diom_vaddr = NULL;
-
-	bus_space_handle_t bsh;
-	if (bus_space_map(mapping-diom_bst, addr, PAGE_SIZE,
-		mapping-diom_flags, bsh)) {
-		kmem_free(mapping, sizeof(*mapping));
-		return NULL;
-	}
-	bus_space_unmap(mapping-diom_bst, bsh, PAGE_SIZE);
+	mapping-diom_mapped = false;
+
+	/* Allocate kva for one page.  */
+	mapping-diom_va = uvm_km_alloc(kernel_map, PAGE_SIZE, PAGE_SIZE,
+	UVM_KMF_VAONLY | UVM_KMF_WAITVA);
+	KASSERT(mapping-diom_va != 0);
 
 	return mapping;
 }
@@ -74,44 +92,61 @@ static inline void
 io_mapping_free(struct io_mapping *mapping)
 {
 
-	KASSERT(mapping-diom_vaddr == NULL);
+	KASSERT(!mapping-diom_mapped);
+
+	uvm_km_free(kernel_map, mapping-diom_va, PAGE_SIZE, UVM_KMF_VAONLY);
 	kmem_free(mapping, sizeof(*mapping));
 }
 
 static inline void *
 io_mapping_map_wc(struct io_mapping *mapping, unsigned long offset)
 {
+	paddr_t cookie;
 
-	KASSERT(mapping-diom_vaddr == NULL);
-	KASSERT(ISSET(mapping-diom_flags, BUS_SPACE_MAP_LINEAR));
-	if (bus_space_map(mapping-diom_bst, (mapping-diom_addr + offset),
-		PAGE_SIZE, mapping-diom_flags, mapping-diom_bsh))
-		panic(Unable to make I/O mapping!); /* XXX */
-	mapping-diom_vaddr = bus_space_vaddr(mapping-diom_bst,
-	mapping-diom_bsh);
+	KASSERT(0 == (offset  (PAGE_SIZE - 1)));
+	KASSERT(PAGE_SIZE = mapping-diom_size);
+	KASSERT(offset = (mapping-diom_size - PAGE_SIZE));
+	KASSERT(__type_fit(off_t, offset));
+	KASSERT(!mapping-diom_mapped);
+
+	cookie = bus_space_mmap(mapping-diom_bst, mapping-diom_addr, offset,
+	PROT_READ|PROT_WRITE,
+	BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_PREFETCHABLE);
+	KASSERT(cookie != (paddr_t)-1);
+
+	pmap_kenter_pa(mapping-diom_va, pmap_phys_address(cookie),
+	PROT_READ|PROT_WRITE, pmap_mmap_flags(cookie));
+	pmap_update(pmap_kernel());
 
-	return mapping-diom_vaddr;
+	

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/linux

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 18:03:33 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/linux [netbsd-7]: linux_work.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #98):
sys/external/bsd/drm2/linux/linux_work.c: revision 1.8
Don't forget to lock wq_lock around handling wq_delayed.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.7.2.1 src/sys/external/bsd/drm2/linux/linux_work.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/linux/linux_work.c
diff -u src/sys/external/bsd/drm2/linux/linux_work.c:1.7 src/sys/external/bsd/drm2/linux/linux_work.c:1.7.2.1
--- src/sys/external/bsd/drm2/linux/linux_work.c:1.7	Tue Jul 29 17:36:06 2014
+++ src/sys/external/bsd/drm2/linux/linux_work.c	Sun Sep 21 18:03:33 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_work.c,v 1.7 2014/07/29 17:36:06 riastradh Exp $	*/
+/*	$NetBSD: linux_work.c,v 1.7.2.1 2014/09/21 18:03:33 snj Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: linux_work.c,v 1.7 2014/07/29 17:36:06 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: linux_work.c,v 1.7.2.1 2014/09/21 18:03:33 snj Exp $);
 
 #include sys/types.h
 #include sys/param.h
@@ -577,7 +577,9 @@ queue_delayed_work(struct workqueue_stru
 			linux_worker_intr, dw);
 			dw-work.w_state = WORK_DELAYED;
 			dw-work.w_wq = wq;
+			mutex_enter(wq-wq_lock);
 			TAILQ_INSERT_HEAD(wq-wq_delayed, dw, dw_entry);
+			mutex_exit(wq-wq_lock);
 		}
 		newly_queued = true;
 		break;
@@ -636,7 +638,9 @@ mod_delayed_work(struct workqueue_struct
 			linux_worker_intr, dw);
 			dw-work.w_state = WORK_DELAYED;
 			dw-work.w_wq = wq;
+			mutex_enter(wq-wq_lock);
 			TAILQ_INSERT_HEAD(wq-wq_delayed, dw, dw_entry);
+			mutex_exit(wq-wq_lock);
 		}
 		timer_modified = false;
 		break;



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/ttm

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 18:04:38 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/ttm [netbsd-7]: ttm_bo_vm.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #98):
sys/external/bsd/drm2/ttm/ttm_bo_vm.c: revision 1.5
We dropped vmobjlock, so reacquire it before uvmfault_unlockall.


To generate a diff of this commit:
cvs rdiff -u -r1.2.4.2 -r1.2.4.3 src/sys/external/bsd/drm2/ttm/ttm_bo_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/ttm/ttm_bo_vm.c
diff -u src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.2 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.3
--- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.2	Fri Aug 22 10:35:59 2014
+++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c	Sun Sep 21 18:04:38 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ttm_bo_vm.c,v 1.2.4.2 2014/08/22 10:35:59 martin Exp $	*/
+/*	$NetBSD: ttm_bo_vm.c,v 1.2.4.3 2014/09/21 18:04:38 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.2.4.2 2014/08/22 10:35:59 martin Exp $);
+__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.2.4.3 2014/09/21 18:04:38 snj Exp $);
 
 #include sys/types.h
 
@@ -107,9 +107,11 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u
 		if (ret != -EBUSY)
 			goto out0;
 		/*
-		 * It's currently locked.  Unlock the fault, wait for
-		 * it, and start over.
+		 * It's currently locked.  Unlock the fault (requires
+		 * relocking uobj's vmobjlock first), wait for it, and
+		 * start over.
 		 */
+		mutex_enter(uobj-vmobjlock);
 		uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, uobj);
 		(void)ttm_bo_wait_unreserved(bo);
 		return -ERESTART;



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 18:10:52 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_irq.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #99):
sys/external/bsd/drm2/dist/drm/i915/i915_irq.c: revision 1.7
Fix i915 locking around error handling.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.6.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c	Sun Sep 21 18:10:52 2014
@@ -1099,7 +1099,9 @@ static void notify_ring(struct drm_devic
 {
 	unsigned long flags;
 	spin_lock_irqsave(dev_priv-irq_lock, flags);
-	/* XXX Set a flag under the lock...  */
+	/*
+	 * XXX Set a flag under the lock or push the lock out to callers.
+	 */
 	DRM_SPIN_WAKEUP_ALL(ring-irq_queue, dev_priv-irq_lock);
 	spin_unlock_irqrestore(dev_priv-irq_lock, flags);
 }
@@ -1315,8 +1317,10 @@ static void snb_gt_irq_handler(struct dr
 	if (gt_iir  (GT_BLT_CS_ERROR_INTERRUPT |
 		  GT_BSD_CS_ERROR_INTERRUPT |
 		  GT_RENDER_CS_MASTER_ERROR_INTERRUPT)) {
+		spin_lock(dev_priv-irq_lock);
 		i915_handle_error(dev, false, GT error interrupt 0x%08x,
   gt_iir);
+		spin_unlock(dev_priv-irq_lock);
 	}
 
 	if (gt_iir  GT_PARITY_ERROR(dev))
@@ -1589,9 +1593,11 @@ static void gen6_rps_irq_handler(struct 
 			notify_ring(dev_priv-dev, dev_priv-ring[VECS]);
 
 		if (pm_iir  PM_VEBOX_CS_ERROR_INTERRUPT) {
+			spin_lock(dev_priv-irq_lock);
 			i915_handle_error(dev_priv-dev, false,
 	  VEBOX CS error interrupt 0x%08x,
 	  pm_iir);
+			spin_unlock(dev_priv-irq_lock);
 		}
 	}
 }
@@ -2357,6 +2363,8 @@ void i915_handle_error(struct drm_device
 	va_list args;
 	char error_msg[80];
 
+	assert_spin_locked(dev_priv-irq_lock);
+
 	va_start(args, fmt);
 	vscnprintf(error_msg, sizeof(error_msg), fmt, args);
 	va_end(args);
@@ -2734,6 +2742,8 @@ static void i915_hangcheck_elapsed(unsig
 	if (!i915.enable_hangcheck)
 		return;
 
+	spin_lock(dev_priv-irq_lock);
+
 	for_each_ring(ring, dev_priv, i) {
 		u64 acthd;
 		u32 seqno;
@@ -2747,9 +2757,7 @@ static void i915_hangcheck_elapsed(unsig
 		if (ring-hangcheck.seqno == seqno) {
 			if (ring_idle(ring, seqno)) {
 ring-hangcheck.action = HANGCHECK_IDLE;
-
 #ifdef __NetBSD__
-spin_lock(dev_priv-irq_lock);
 if (DRM_SPIN_WAITERS_P(ring-irq_queue,
 	dev_priv-irq_lock)) {
 	if (!test_and_set_bit(ring-id, dev_priv-gpu_error.missed_irq_rings)) {
@@ -2765,7 +2773,6 @@ static void i915_hangcheck_elapsed(unsig
 } else {
 	busy = false;
 }
-spin_unlock(dev_priv-irq_lock);
 #else
 if (waitqueue_active(ring-irq_queue)) {
 	/* Issue a wake-up to catch stuck h/w. */
@@ -2845,6 +2852,8 @@ static void i915_hangcheck_elapsed(unsig
 	if (rings_hung)
 		return i915_handle_error(dev, true, Ring hung);
 
+	spin_unlock(dev_priv-irq_lock);
+
 	if (busy_count)
 		/* Reset timer case chip hangs without another request
 		 * being added */



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 18:11:38 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_irq.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #99):
sys/external/bsd/drm2/dist/drm/i915/i915_irq.c: revision 1.9
Lock irq_lock around i915_error_wake_up in i915_error_work_func.


To generate a diff of this commit:
cvs rdiff -u -r1.6.2.1 -r1.6.2.2 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6.2.1 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6.2.2
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6.2.1	Sun Sep 21 18:10:52 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c	Sun Sep 21 18:11:37 2014
@@ -2250,7 +2250,9 @@ static void i915_error_work_func(struct 
 		 * Note: The wake_up also serves as a memory barrier so that
 		 * waiters see the update value of the reset counter atomic_t.
 		 */
+		spin_lock(dev_priv-irq_lock);
 		i915_error_wake_up(dev_priv, true);
+		spin_unlock(dev_priv-irq_lock);
 	}
 }
 



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/i915

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 18:12:18 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_irq.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #99):
sys/external/bsd/drm2/dist/drm/i915/i915_irq.c: revision 1.8
Fix two mistakes in previous.
- i915_error_wake_up is given irq_lock, so it need not take that.
- Unlock irq_lock on exit from i915_hangcheck_elapsed if ring_hung.
XXX This introduces the lock order irq_lock - pending_flip_lock.
How about just using irq_lock for pending flips?


To generate a diff of this commit:
cvs rdiff -u -r1.6.2.2 -r1.6.2.3 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6.2.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6.2.3
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6.2.2	Sun Sep 21 18:11:37 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c	Sun Sep 21 18:12:18 2014
@@ -2138,11 +2138,10 @@ static void i915_error_wake_up(struct dr
 	 * a gpu reset pending so that i915_error_work_func can acquire them).
 	 */
 
+	assert_spin_locked(dev_priv-irq_lock);
 #ifdef __NetBSD__
-	spin_lock(dev_priv-irq_lock);
 	for_each_ring(ring, dev_priv, i)
 		DRM_SPIN_WAKEUP_ALL(ring-irq_queue, dev_priv-irq_lock);
-	spin_unlock(dev_priv-irq_lock);
 
 	spin_lock(dev_priv-pending_flip_lock);
 	DRM_SPIN_WAKEUP_ALL(dev_priv-pending_flip_queue,
@@ -2851,8 +2850,11 @@ static void i915_hangcheck_elapsed(unsig
 		}
 	}
 
-	if (rings_hung)
-		return i915_handle_error(dev, true, Ring hung);
+	if (rings_hung) {
+		i915_handle_error(dev, true, Ring hung);
+		spin_unlock(dev_priv-irq_lock);
+		return;
+	}
 
 	spin_unlock(dev_priv-irq_lock);
 



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/linux

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 18:22:22 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/linux [netbsd-7]: linux_kmap.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #101):
sys/external/bsd/drm2/linux/linux_kmap.c: revisions 1.5-1.10
- Use an adaptive lock where a spin lock is not needed.
- Tweak style.
- Assert sleepable where appropriate.
- Use __diagused, not __unused.
- Use direct map where available.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.4.8.1 src/sys/external/bsd/drm2/linux/linux_kmap.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/linux/linux_kmap.c
diff -u src/sys/external/bsd/drm2/linux/linux_kmap.c:1.4 src/sys/external/bsd/drm2/linux/linux_kmap.c:1.4.8.1
--- src/sys/external/bsd/drm2/linux/linux_kmap.c:1.4	Fri Mar 28 23:22:27 2014
+++ src/sys/external/bsd/drm2/linux/linux_kmap.c	Sun Sep 21 18:22:22 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_kmap.c,v 1.4 2014/03/28 23:22:27 riastradh Exp $	*/
+/*	$NetBSD: linux_kmap.c,v 1.4.8.1 2014/09/21 18:22:22 snj Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,13 +30,17 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: linux_kmap.c,v 1.4 2014/03/28 23:22:27 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: linux_kmap.c,v 1.4.8.1 2014/09/21 18:22:22 snj Exp $);
 
 #include sys/types.h
 #include sys/kmem.h
 #include sys/mutex.h
 #include sys/rbtree.h
 
+#ifdef __HAVE_MM_MD_DIRECT_MAPPED_PHYS
+#include dev/mm.h
+#endif
+
 #include uvm/uvm_extern.h
 
 #include linux/highmem.h
@@ -48,12 +52,6 @@ __KERNEL_RCSID(0, $NetBSD: linux_kmap.c
  * use at a time.
  */
 
-/*
- * XXX Use direct-mapped physical pages where available, e.g. amd64.
- *
- * XXX ...or add an abstraction to uvm for this.  (uvm_emap?)
- */
-
 static kmutex_t linux_kmap_atomic_lock;
 static vaddr_t linux_kmap_atomic_vaddr;
 
@@ -106,7 +104,7 @@ int
 linux_kmap_init(void)
 {
 
-	/* IPL_VM is needed to block pmap_kenter_pa.  */
+	/* IPL_VM since interrupt handlers use kmap_atomic.  */
 	mutex_init(linux_kmap_atomic_lock, MUTEX_DEFAULT, IPL_VM);
 
 	linux_kmap_atomic_vaddr = uvm_km_alloc(kernel_map, PAGE_SIZE, 0,
@@ -115,7 +113,7 @@ linux_kmap_init(void)
 	KASSERT(linux_kmap_atomic_vaddr != 0);
 	KASSERT(!pmap_extract(pmap_kernel(), linux_kmap_atomic_vaddr, NULL));
 
-	mutex_init(linux_kmap_lock, MUTEX_DEFAULT, IPL_VM);
+	mutex_init(linux_kmap_lock, MUTEX_DEFAULT, IPL_NONE);
 	rb_tree_init(linux_kmap_entries, linux_kmap_entry_ops);
 
 	return 0;
@@ -125,9 +123,8 @@ void
 linux_kmap_fini(void)
 {
 
-	KASSERT(rb_tree_iterate(linux_kmap_entries, NULL, RB_DIR_RIGHT) ==
-	NULL);
-#if 0/* XXX no rb_tree_destroy*/
+	KASSERT(RB_TREE_MIN(linux_kmap_entries) == NULL);
+#if 0/* XXX no rb_tree_destroy */
 	rb_tree_destroy(linux_kmap_entries);
 #endif
 	mutex_destroy(linux_kmap_lock);
@@ -145,16 +142,18 @@ void *
 kmap_atomic(struct page *page)
 {
 	const paddr_t paddr = uvm_vm_page_to_phys(page-p_vmp);
+	vaddr_t vaddr;
 
-	mutex_spin_enter(linux_kmap_atomic_lock);
+#ifdef __HAVE_MM_MD_DIRECT_MAPPED_PHYS
+	if (mm_md_direct_mapped_phys(paddr, vaddr))
+		return (void *)vaddr;
+#endif
 
+	mutex_spin_enter(linux_kmap_atomic_lock);
 	KASSERT(linux_kmap_atomic_vaddr != 0);
 	KASSERT(!pmap_extract(pmap_kernel(), linux_kmap_atomic_vaddr, NULL));
-
-	const vaddr_t vaddr = linux_kmap_atomic_vaddr;
-	const int prot = (VM_PROT_READ | VM_PROT_WRITE);
-	const int flags = 0;
-	pmap_kenter_pa(vaddr, paddr, prot, flags);
+	vaddr = linux_kmap_atomic_vaddr;
+	pmap_kenter_pa(vaddr, paddr, (VM_PROT_READ | VM_PROT_WRITE), 0);
 	pmap_update(pmap_kernel());
 
 	return (void *)vaddr;
@@ -165,6 +164,19 @@ kunmap_atomic(void *addr)
 {
 	const vaddr_t vaddr = (vaddr_t)addr;
 
+#ifdef __HAVE_MM_MD_DIRECT_MAPPED_PHYS
+{
+	paddr_t paddr;
+	vaddr_t vaddr1;
+	bool ok __diagused;
+
+	ok = pmap_extract(pmap_kernel(), vaddr, paddr);
+	KASSERT(ok);
+	if (mm_md_direct_mapped_phys(paddr, vaddr1)  vaddr1 == vaddr)
+		return;
+}
+#endif
+
 	KASSERT(mutex_owned(linux_kmap_atomic_lock));
 	KASSERT(linux_kmap_atomic_vaddr == vaddr);
 	KASSERT(pmap_extract(pmap_kernel(), vaddr, NULL));
@@ -179,7 +191,16 @@ void *
 kmap(struct page *page)
 {
 	const paddr_t paddr = VM_PAGE_TO_PHYS(page-p_vmp);
-	const vaddr_t vaddr = uvm_km_alloc(kernel_map, PAGE_SIZE, 0,
+	vaddr_t vaddr;
+
+	ASSERT_SLEEPABLE();
+
+#ifdef __HAVE_MM_MD_DIRECT_MAPPED_PHYS
+	if (mm_md_direct_mapped_phys(paddr, vaddr))
+		return (void *)vaddr;
+#endif
+
+	vaddr = uvm_km_alloc(kernel_map, PAGE_SIZE, 0,
 	(UVM_KMF_VAONLY | UVM_KMF_WAITVA));
 	KASSERT(vaddr != 0);
 
@@ -188,16 +209,14 @@ kmap(struct page *page)
 	lke-lke_paddr = paddr;
 	lke-lke_vaddr = vaddr;
 
-	mutex_spin_enter(linux_kmap_lock);
-	struct linux_kmap_entry *const collision __unused =
+	mutex_enter(linux_kmap_lock);
+	struct linux_kmap_entry *const collision 

CVS commit: [netbsd-7] src/sys/external/bsd/drm2/include/linux

2014-09-21 Thread Soren Jacobsen
Module Name:src
Committed By:   snj
Date:   Sun Sep 21 18:31:06 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/include/linux [netbsd-7]: ww_mutex.h

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #102):
sys/external/bsd/drm2/include/linux/ww_mutex.h: revisions 1.5, 1.6
Use KASSERTMSG in ww_acquire_fini to show number of locks held.
Omit vestigial notes on porting before the API was made to match.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.4.4.1 \
src/sys/external/bsd/drm2/include/linux/ww_mutex.h

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

Modified files:

Index: src/sys/external/bsd/drm2/include/linux/ww_mutex.h
diff -u src/sys/external/bsd/drm2/include/linux/ww_mutex.h:1.4 src/sys/external/bsd/drm2/include/linux/ww_mutex.h:1.4.4.1
--- src/sys/external/bsd/drm2/include/linux/ww_mutex.h:1.4	Sat Jul 26 21:36:40 2014
+++ src/sys/external/bsd/drm2/include/linux/ww_mutex.h	Sun Sep 21 18:31:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ww_mutex.h,v 1.4 2014/07/26 21:36:40 riastradh Exp $	*/
+/*	$NetBSD: ww_mutex.h,v 1.4.4.1 2014/09/21 18:31:06 snj Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -29,17 +29,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-/*
- * Notes on porting:
- *
- * - We require a context for all locks, so ww_mutex_lock(m, NULL) is
- *   not kosher.  Locking without a context is too painful to
- *   contemplate.
- *
- * - We require passing the context to trylock and unlock.  Unlocking
- *   the wrong lock is too serious an error to pass up detection.
- */
-
 #ifndef _ASM_WW_MUTEX_H_
 #define _ASM_WW_MUTEX_H_
 
@@ -119,7 +108,8 @@ static inline void
 ww_acquire_fini(struct ww_acquire_ctx *ctx)
 {
 
-	KASSERT(ctx-wwx_acquired == 0);
+	KASSERTMSG((ctx-wwx_acquired == 0), ctx %p still holds %u locks,
+	ctx, ctx-wwx_acquired);
 	ctx-wwx_acquired = ~0U;	/* Fail if called again. */
 }
 



CVS commit: [netbsd-7] src/sys/external/bsd/drm2/dist/drm/radeon

2014-08-29 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Aug 29 11:51:47 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/radeon [netbsd-7]: atombios_dp.c

Log Message:
Pull up following revision(s) (requested by mrg in ticket #66):
sys/external/bsd/drm2/dist/drm/radeon/atombios_dp.c: revision 1.3
hack around an evergreen attach crash for now: provide a hard coded
name for the i2c.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.2.4.1 \
src/sys/external/bsd/drm2/dist/drm/radeon/atombios_dp.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/radeon/atombios_dp.c
diff -u src/sys/external/bsd/drm2/dist/drm/radeon/atombios_dp.c:1.2 src/sys/external/bsd/drm2/dist/drm/radeon/atombios_dp.c:1.2.4.1
--- src/sys/external/bsd/drm2/dist/drm/radeon/atombios_dp.c:1.2	Wed Jul 16 20:59:57 2014
+++ src/sys/external/bsd/drm2/dist/drm/radeon/atombios_dp.c	Fri Aug 29 11:51:47 2014
@@ -212,6 +212,10 @@ void radeon_dp_aux_init(struct radeon_co
 	radeon_connector-ddc_bus-rec.hpd = radeon_connector-hpd.hpd;
 	radeon_connector-ddc_bus-aux.dev = radeon_connector-base.kdev;
 	radeon_connector-ddc_bus-aux.transfer = radeon_dp_aux_transfer;
+#ifdef __NetBSD__
+	/* XXX dervied from sysfs/i2c on linux. */
+	radeon_connector-ddc_bus-aux.name = radeon_dp_aux;
+#endif
 	ret = drm_dp_aux_register_i2c_bus(radeon_connector-ddc_bus-aux);
 	if (!ret)
 		radeon_connector-ddc_bus-has_aux = true;



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2014-08-22 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Aug 22 10:32:19 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_drv.h
src/sys/external/bsd/drm2/i915drm [netbsd-7]: files.i915drmkms

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #45):
sys/external/bsd/drm2/dist/drm/i915/i915_drv.h: revision 1.8
sys/external/bsd/drm2/i915drm/files.i915drmkms: revision 1.6
Restore Intel opregion stuff.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.7.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
cvs rdiff -u -r1.5 -r1.5.2.1 \
src/sys/external/bsd/drm2/i915drm/files.i915drmkms

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.7 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.7.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.7	Thu Jul 24 21:18:40 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h	Fri Aug 22 10:32:18 2014
@@ -2720,8 +2720,8 @@ extern void intel_i2c_reset(struct drm_d
 
 /* intel_opregion.c */
 struct intel_encoder;
-#ifdef CONFIG_ACPI
 extern int intel_opregion_setup(struct drm_device *dev);
+#ifdef CONFIG_ACPI
 extern void intel_opregion_init(struct drm_device *dev);
 extern void intel_opregion_fini(struct drm_device *dev);
 extern void intel_opregion_asle_intr(struct drm_device *dev);
@@ -2730,7 +2730,6 @@ extern int intel_opregion_notify_encoder
 extern int intel_opregion_notify_adapter(struct drm_device *dev,
 	 pci_power_t state);
 #else
-static inline int intel_opregion_setup(struct drm_device *dev) { return 0; }
 static inline void intel_opregion_init(struct drm_device *dev) { return; }
 static inline void intel_opregion_fini(struct drm_device *dev) { return; }
 static inline void intel_opregion_asle_intr(struct drm_device *dev) { return; }

Index: src/sys/external/bsd/drm2/i915drm/files.i915drmkms
diff -u src/sys/external/bsd/drm2/i915drm/files.i915drmkms:1.5 src/sys/external/bsd/drm2/i915drm/files.i915drmkms:1.5.2.1
--- src/sys/external/bsd/drm2/i915drm/files.i915drmkms:1.5	Sat Jul 26 18:13:44 2014
+++ src/sys/external/bsd/drm2/i915drm/files.i915drmkms	Fri Aug 22 10:32:19 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: files.i915drmkms,v 1.5 2014/07/26 18:13:44 riastradh Exp $
+#	$NetBSD: files.i915drmkms,v 1.5.2.1 2014/08/22 10:32:19 martin Exp $
 
 define	intelfbbus	{ }
 device	i915drmkms: drmkms, drmkms_pci, intelfbbus
@@ -60,8 +60,7 @@ file	external/bsd/drm2/dist/drm/i915/int
 file	external/bsd/drm2/dist/drm/i915/intel_i2c.c	i915drmkms
 file	external/bsd/drm2/dist/drm/i915/intel_lvds.c	i915drmkms
 file	external/bsd/drm2/dist/drm/i915/intel_modes.c	i915drmkms
-# XXX Restore once I figure out what this does...
-#file	external/bsd/drm2/dist/drm/i915/intel_opregion.c	i915drmkms
+file	external/bsd/drm2/dist/drm/i915/intel_opregion.c	i915drmkms
 file	external/bsd/drm2/dist/drm/i915/intel_overlay.c	i915drmkms
 file	external/bsd/drm2/dist/drm/i915/intel_panel.c	i915drmkms
 file	external/bsd/drm2/dist/drm/i915/intel_pm.c	i915drmkms



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2014-08-22 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Aug 22 10:36:00 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915 [netbsd-7]: i915_gem.c
src/sys/external/bsd/drm2/ttm [netbsd-7]: ttm_bo_vm.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #46):
sys/external/bsd/drm2/dist/drm/i915/i915_gem.c: revision 1.15
sys/external/bsd/drm2/ttm/ttm_bo_vm.c: revision 1.4
Do not take the {ttm,gem} vmobjlock in the fault handler.
- We don't need this lock.
- uvm does nothing between taking it and calling the fault handler.
- Now that the uvm_aobj shares vmobjlock with the {ttm,gem} uvm
  object, we must not hold the lock when we call uvm_obj_wirepages on
  the uvm_aobj.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.14.2.1 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
cvs rdiff -u -r1.2.4.1 -r1.2.4.2 src/sys/external/bsd/drm2/ttm/ttm_bo_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/dist/drm/i915/i915_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14	Wed Jul 16 21:48:53 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Fri Aug 22 10:35:59 2014
@@ -1842,6 +1842,9 @@ i915_gem_fault(struct uvm_faultinfo *ufi
 
 	intel_runtime_pm_get(dev_priv);
 
+	/* Thanks, uvm, but we don't need this lock.  */
+	mutex_exit(uobj-vmobjlock);
+
 	ret = i915_mutex_lock_interruptible(dev);
 	if (ret)
 		goto out;
@@ -1880,6 +1883,7 @@ unpin:
 unlock:
 	mutex_unlock(dev-struct_mutex);
 out:
+	mutex_enter(uobj-vmobjlock);
 	uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, uobj);
 	if (ret == -ERESTART)
 		uvm_wait(i915flt);

Index: src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c
diff -u src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.1 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.2
--- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.1	Mon Aug 18 07:49:10 2014
+++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c	Fri Aug 22 10:35:59 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ttm_bo_vm.c,v 1.2.4.1 2014/08/18 07:49:10 martin Exp $	*/
+/*	$NetBSD: ttm_bo_vm.c,v 1.2.4.2 2014/08/22 10:35:59 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.2.4.1 2014/08/18 07:49:10 martin Exp $);
+__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.2.4.2 2014/08/22 10:35:59 martin Exp $);
 
 #include sys/types.h
 
@@ -92,6 +92,9 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u
 	unsigned mmapflags;
 	int ret;
 
+	/* Thanks, uvm, but we don't need this lock.  */
+	mutex_exit(uobj-vmobjlock);
+
 	/* Copy-on-write mappings make no sense for the graphics aperture.  */
 	if (UVM_ET_ISCOPYONWRITE(ufi-entry)) {
 		ret = -EIO;
@@ -199,7 +202,8 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u
 out3:	pmap_update(ufi-orig_map-pmap);
 out2:	ttm_mem_io_unlock(man);
 out1:	ttm_bo_unreserve(bo);
-out0:	uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, uobj);
+out0:	mutex_enter(uobj-vmobjlock);
+	uvmfault_unlockall(ufi, ufi-entry-aref.ar_amap, uobj);
 	/* XXX errno Linux-NetBSD */
 	return -ret;
 }



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2014-08-18 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Mon Aug 18 07:49:10 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/dist/drm [netbsd-7]: drm_gem.c
src/sys/external/bsd/drm2/dist/drm/ttm [netbsd-7]: ttm_bo.c
src/sys/external/bsd/drm2/ttm [netbsd-7]: ttm_bo_vm.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #36):
sys/external/bsd/drm2/dist/drm/drm_gem.c: revision 1.5
sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c: revision 1.5
sys/external/bsd/drm2/ttm/ttm_bo_vm.c: revision 1.3
sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c: revision 1.6
bus_space_mmap cookies are not paddrs, so don't pmap_enter them!
For gem and ttm objects backed by uvm_aobjs, share the vmobjlock.
XXX pullup to 7
Simplify previous.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.4.2.1 src/sys/external/bsd/drm2/dist/drm/drm_gem.c
cvs rdiff -u -r1.4 -r1.4.2.1 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c
cvs rdiff -u -r1.2 -r1.2.4.1 src/sys/external/bsd/drm2/ttm/ttm_bo_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/dist/drm/drm_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.4 src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.4.2.1
--- src/sys/external/bsd/drm2/dist/drm/drm_gem.c:1.4	Wed Jul 16 20:56:24 2014
+++ src/sys/external/bsd/drm2/dist/drm/drm_gem.c	Mon Aug 18 07:49:10 2014
@@ -155,6 +155,13 @@ int drm_gem_object_init(struct drm_devic
 
 #ifdef __NetBSD__
 	obj-gemo_shm_uao = uao_create(size, 0);
+	/*
+	 * XXX This is gross.  We ought to do it the other way around:
+	 * set the uao to have the main uvm object's lock.  However,
+	 * uvm_obj_setlock is not safe on uvm_aobjs.
+	 */
+	mutex_obj_hold(obj-gemo_shm_uao-vmobjlock);
+	uvm_obj_setlock(obj-gemo_uvmobj, obj-gemo_shm_uao-vmobjlock);
 #else
 	filp = shmem_file_setup(drm mm object, size, VM_NORESERVE);
 	if (IS_ERR(filp))

Index: src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c
diff -u src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c:1.4 src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c:1.4.2.1
--- src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c:1.4	Sun Jul 27 00:40:39 2014
+++ src/sys/external/bsd/drm2/dist/drm/ttm/ttm_bo.c	Mon Aug 18 07:49:10 2014
@@ -33,6 +33,7 @@
 #ifdef __NetBSD__
 #include sys/types.h
 #include uvm/uvm_extern.h
+#include uvm/uvm_object.h
 #endif
 
 #include drm/ttm/ttm_module.h
@@ -286,7 +287,21 @@ static int ttm_bo_add_ttm(struct ttm_buf
 		break;
 	}
 
+#ifdef __NetBSD__
+	if (ret)
+		return ret;
+
+	/*
+	 * XXX This is gross.  We ought to do it the other way around:
+	 * set the uao to have the main uvm object's lock.  However,
+	 * uvm_obj_setlock is not safe on uvm_aobjs.
+	 */
+	mutex_obj_hold(bo-ttm-swap_storage-vmobjlock);
+	uvm_obj_setlock(bo-uvmobj, bo-ttm-swap_storage-vmobjlock);
+	return 0;
+#else
 	return ret;
+#endif
 }
 
 static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo,

Index: src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c
diff -u src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.1
--- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2	Sat Aug  9 00:18:58 2014
+++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c	Mon Aug 18 07:49:10 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ttm_bo_vm.c,v 1.2 2014/08/09 00:18:58 riastradh Exp $	*/
+/*	$NetBSD: ttm_bo_vm.c,v 1.2.4.1 2014/08/18 07:49:10 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.2 2014/08/09 00:18:58 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: ttm_bo_vm.c,v 1.2.4.1 2014/08/18 07:49:10 martin Exp $);
 
 #include sys/types.h
 
@@ -89,6 +89,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u
 	unsigned i;
 	vm_prot_t vm_prot;	/* VM_PROT_* */
 	pgprot_t pgprot;	/* VM_PROT_* | PMAP_* cacheability flags */
+	unsigned mmapflags;
 	int ret;
 
 	/* Copy-on-write mappings make no sense for the graphics aperture.  */
@@ -178,13 +179,19 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u
 		/* XXX PGO_ALLPAGES?  */
 		if (pps[i] == PGO_DONTCARE)
 			continue;
-		if (bo-mem.bus.is_iomem)
-			paddr = bus_space_mmap(bdev-memt, u.base,
-			((startpage + i)  PAGE_SHIFT), vm_prot, 0);
-		else
+		if (bo-mem.bus.is_iomem) {
+			const paddr_t cookie = bus_space_mmap(bdev-memt,
+			u.base, ((startpage + i)  PAGE_SHIFT), vm_prot,
+			0);
+
+			paddr = pmap_phys_address(cookie);
+			mmapflags = pmap_mmap_flags(cookie);
+		} else {
 			paddr = page_to_phys(u.ttm-pages[startpage + i]);
+			mmapflags = 0;
+		}
 		ret = -pmap_enter(ufi-orig_map-pmap, vaddr + i*PAGE_SIZE,
-		paddr, vm_prot, (PMAP_CANFAIL | pgprot));
+		paddr, vm_prot, (PMAP_CANFAIL | pgprot | mmapflags));
 		if (ret)
 			goto out3;
 	}



CVS commit: [netbsd-7] src/sys/external/bsd/drm2

2014-08-15 Thread Martin Husemann
Module Name:src
Committed By:   martin
Date:   Fri Aug 15 11:11:59 UTC 2014

Modified Files:
src/sys/external/bsd/drm2/include/linux [netbsd-7]: pci.h
src/sys/external/bsd/drm2/ttm [netbsd-7]: ttm_agp_backend.c

Log Message:
Pull up following revision(s) (requested by riastradh in ticket #18):
sys/external/bsd/drm2/ttm/ttm_agp_backend.c: revision 1.2
sys/external/bsd/drm2/ttm/ttm_agp_backend.c: revision 1.3
sys/external/bsd/drm2/include/linux/pci.h: revision 1.8
Fix shifts  masks in Linux pci_read_config_{word,byte}.
Use ttm_dma_tt_init in ttm_agp_tt_create so we can use ttm_bus_dma.
Zero ttm_agp objects on creation.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.7.2.1 src/sys/external/bsd/drm2/include/linux/pci.h
cvs rdiff -u -r1.1 -r1.1.4.1 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.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/include/linux/pci.h
diff -u src/sys/external/bsd/drm2/include/linux/pci.h:1.7 src/sys/external/bsd/drm2/include/linux/pci.h:1.7.2.1
--- src/sys/external/bsd/drm2/include/linux/pci.h:1.7	Wed Aug  6 13:52:06 2014
+++ src/sys/external/bsd/drm2/include/linux/pci.h	Fri Aug 15 11:11:59 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: pci.h,v 1.7 2014/08/06 13:52:06 riastradh Exp $	*/
+/*	$NetBSD: pci.h,v 1.7.2.1 2014/08/15 11:11:59 martin Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -200,7 +200,7 @@ pci_read_config_word(struct pci_dev *pde
 {
 	KASSERT(!ISSET(reg, 1));
 	*valuep = pci_conf_read(pdev-pd_pa.pa_pc, pdev-pd_pa.pa_tag,
-	(reg ~ 3))  (8 * (reg  3));
+	(reg ~ 2))  (8 * (reg  2));
 	return 0;
 }
 
@@ -208,7 +208,7 @@ static inline int
 pci_read_config_byte(struct pci_dev *pdev, int reg, uint8_t *valuep)
 {
 	*valuep = pci_conf_read(pdev-pd_pa.pa_pc, pdev-pd_pa.pa_tag,
-	(reg ~ 1))  (8 * (reg  1));
+	(reg ~ 3))  (8 * (reg  3));
 	return 0;
 }
 

Index: src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c
diff -u src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.1 src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.1.4.1
--- src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c:1.1	Wed Jul 16 20:59:58 2014
+++ src/sys/external/bsd/drm2/ttm/ttm_agp_backend.c	Fri Aug 15 11:11:59 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ttm_agp_backend.c,v 1.1 2014/07/16 20:59:58 riastradh Exp $	*/
+/*	$NetBSD: ttm_agp_backend.c,v 1.1.4.1 2014/08/15 11:11:59 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: ttm_agp_backend.c,v 1.1 2014/07/16 20:59:58 riastradh Exp $);
+__KERNEL_RCSID(0, $NetBSD: ttm_agp_backend.c,v 1.1.4.1 2014/08/15 11:11:59 martin Exp $);
 
 #include sys/types.h
 #include sys/kmem.h
@@ -57,11 +57,11 @@ ttm_agp_tt_create(struct ttm_bo_device *
 {
 	struct ttm_agp *ttm_agp;
 
-	ttm_agp = kmem_alloc(sizeof(*ttm_agp), KM_SLEEP);
+	ttm_agp = kmem_zalloc(sizeof(*ttm_agp), KM_SLEEP);
 	ttm_agp-agp = bridge-abd_sc;
 	ttm_agp-ttm_dma.ttm.func = ttm_agp_backend_func;
 
-	if (ttm_tt_init(ttm_agp-ttm_dma.ttm, bdev, size, page_flags,
+	if (ttm_dma_tt_init(ttm_agp-ttm_dma, bdev, size, page_flags,
 		dummy_read_page) != 0)
 		goto fail;