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

2021-05-29 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Sat May 29 08:45:38 UTC 2021

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_drv.h

Log Message:
i915drmkms: Fix LOCKDEBUG panic and potential deadlock.

This path is taken with a spin lock held, and possibly even in
interrupt context, where taking vmobjlock is not kosher, but we are
guaranteed to have the queue populated and unchanging.

XXX pullup-9


To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.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_drv.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.32 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.33
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.32	Sun Feb 23 15:46:40 2020
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h	Sat May 29 08:45:38 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_drv.h,v 1.32 2020/02/23 15:46:40 ad Exp $	*/
+/*	$NetBSD: i915_drv.h,v 1.33 2021/05/29 08:45:38 riastradh Exp $	*/
 
 /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*-
  */
@@ -3021,9 +3021,10 @@ i915_gem_object_get_page(struct drm_i915
 		 * lock to prevent them from disappearing.
 		 */
 		KASSERT(obj->pages != NULL);
-		rw_enter(obj->base.filp->vmobjlock, RW_WRITER);
-		page = uvm_pagelookup(obj->base.filp, ptoa(n));
-		rw_exit(obj->base.filp->vmobjlock);
+		TAILQ_FOREACH(page, >pageq, pageq.queue) {
+			if (n-- == 0)
+break;
+		}
 	}
 	KASSERT(page != NULL);
 	return container_of(page, struct page, p_vmp);



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

2020-10-30 Thread Maya Rashish
Module Name:src
Committed By:   maya
Date:   Sat Oct 31 04:05:42 UTC 2020

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_sprite.c

Log Message:
Match linux here and wait without interrupts.

>From David H. Gutteridge in PR port-amd64/5
There's a second part to the patch, but "make our code behave the way
the upstream code does" is very welcome.
Also PR kern/54515 and possibly others.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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_sprite.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.10 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.11
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.10	Fri Feb 14 04:36:12 2020
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c	Sat Oct 31 04:05:42 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_sprite.c,v 1.10 2020/02/14 04:36:12 riastradh Exp $	*/
+/*	$NetBSD: intel_sprite.c,v 1.11 2020/10/31 04:05:42 maya Exp $	*/
 
 /*
  * Copyright © 2011 Intel Corporation
@@ -32,7 +32,7 @@
  * support.
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.10 2020/02/14 04:36:12 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.11 2020/10/31 04:05:42 maya Exp $");
 
 #include 
 #include 
@@ -124,7 +124,7 @@ void intel_pipe_update_start(struct inte
 	trace_i915_pipe_update_start(crtc);
 
 #ifdef __NetBSD__
-	DRM_SPIN_TIMED_WAIT_UNTIL(ret, wq, >vbl_lock, timeout,
+	DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(ret, wq, >vbl_lock, timeout,
 	(scanline = intel_get_crtc_scanline(crtc),
 		scanline < min || scanline > max));
 	if (ret <= 0)



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

2020-05-03 Thread Nia Alarie
Module Name:src
Committed By:   nia
Date:   Sun May  3 13:34:38 UTC 2020

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_i2c.c

Log Message:
drm/i915: There's no real reason the user should care that we're about to
fall back to bitbanging, so let's change the message from DRM_INFO to
DRM_DEBUG_KMS.

https://lists.freedesktop.org/archives/intel-gfx/2016-March/089133.html


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.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.19 src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.20
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c:1.19	Fri Feb 14 14:34:58 2020
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_i2c.c	Sun May  3 13:34:38 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_i2c.c,v 1.19 2020/02/14 14:34:58 maya Exp $	*/
+/*	$NetBSD: intel_i2c.c,v 1.20 2020/05/03 13:34:38 nia Exp $	*/
 
 /*
  * Copyright (c) 2006 Dave Airlie 
@@ -29,7 +29,7 @@
  *	Chris Wilson 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_i2c.c,v 1.19 2020/02/14 14:34:58 maya Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_i2c.c,v 1.20 2020/05/03 13:34:38 nia Exp $");
 
 #include 
 #include 
@@ -643,8 +643,8 @@ clear_err:
 	goto out;
 
 timeout:
-	DRM_INFO("GMBUS [%s] timed out, falling back to bit banging on pin %d\n",
-		 bus->adapter.name, bus->reg0 & 0xff);
+	DRM_DEBUG_KMS("GMBUS [%s] timed out, falling back to bit banging on pin %d\n",
+		 bus->adapter.name, bus->reg0 & 0xff);
 	I915_WRITE(GMBUS0, 0);
 
 	/* Hardware may not support GMBUS over these pins? Try GPIO bitbanging instead. */



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

2020-02-14 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Fri Feb 14 09:39:57 UTC 2020

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_fbdev.c

Log Message:
Nix another conditional ALIGN.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.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_fbdev.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.12
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.11	Fri Feb 14 09:39:37 2020
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c	Fri Feb 14 09:39:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_fbdev.c,v 1.11 2020/02/14 09:39:37 riastradh Exp $	*/
+/*	$NetBSD: intel_fbdev.c,v 1.12 2020/02/14 09:39:57 riastradh Exp $	*/
 
 /*
  * Copyright © 2007 David Airlie
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.11 2020/02/14 09:39:37 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.12 2020/02/14 09:39:57 riastradh Exp $");
 
 #include 
 #include 
@@ -53,6 +53,7 @@ __KERNEL_RCSID(0, "$NetBSD: intel_fbdev.
 
 #ifdef __NetBSD__
 #include "intelfb.h"
+#include 
 #endif
 
 #ifndef __NetBSD__
@@ -145,13 +146,8 @@ static int intelfb_alloc(struct drm_fb_h
 	mode_cmd.width = sizes->surface_width;
 	mode_cmd.height = sizes->surface_height;
 
-#ifdef __NetBSD__
-	mode_cmd.pitches[0] = round_up(mode_cmd.width *
-DIV_ROUND_UP(sizes->surface_bpp, 8), 64);
-#else
 	mode_cmd.pitches[0] = ALIGN(mode_cmd.width *
 DIV_ROUND_UP(sizes->surface_bpp, 8), 64);
-#endif
 	mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp,
 			  sizes->surface_depth);
 



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

2020-02-13 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Fri Feb 14 04:36:12 UTC 2020

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_debugfs.c i915_dma.c
i915_drv.h i915_irq.c intel_audio.c intel_crt.c intel_ddi.c
intel_display.c intel_dp.c intel_dp_mst.c intel_drv.h intel_dsi.c
intel_dvo.c intel_fbc.c intel_fifo_underrun.c intel_hdmi.c
intel_lvds.c intel_overlay.c intel_panel.c intel_pm.c intel_psr.c
intel_runtime_pm.c intel_sdvo.c intel_sideband.c intel_sprite.c
intel_tv.c

Log Message:
Undo the `enum pipe' -> `enum i915_pipe' rename.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c
cvs rdiff -u -r1.29 -r1.30 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.30 -r1.31 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c
cvs rdiff -u -r1.10 -r1.11 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c
cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c
cvs rdiff -u -r1.11 -r1.12 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_drv.h
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_fifo_underrun.c
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c
cvs rdiff -u -r1.8 -r1.9 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c
cvs rdiff -u -r1.12 -r1.13 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c
cvs rdiff -u -r1.21 -r1.22 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c
cvs rdiff -u -r1.9 -r1.10 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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_debugfs.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c:1.3	Mon Aug 27 04:58:23 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c	Fri Feb 14 04:36:11 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_debugfs.c,v 1.3 2018/08/27 04:58:23 riastradh Exp $	*/
+/*	$NetBSD: i915_debugfs.c,v 1.4 2020/02/14 04:36:11 riastradh Exp $	*/
 
 /*
  * Copyright © 2008 Intel Corporation
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_debugfs.c,v 1.3 2018/08/27 04:58:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_debugfs.c,v 1.4 2020/02/14 04:36:11 riastradh Exp $");
 
 #include 
 #include 
@@ -3286,7 +3286,7 @@ static int i915_drrs_status(struct seq_f
 struct pipe_crc_info {
 	const char *name;
 	struct drm_device *dev;
-	enum i915_pipe pipe;
+	enum pipe pipe;
 };
 
 static int i915_dp_mst_info(struct seq_file *m, void *unused)
@@ -3462,7 +3462,7 @@ static struct pipe_crc_info i915_pipe_cr
 };
 
 static int i915_pipe_crc_create(struct dentry *root, struct drm_minor *minor,
-enum i915_pipe pipe)
+enum pipe pipe)
 {
 	struct drm_device *dev = minor->dev;
 	struct dentry *ent;
@@ -3536,7 +3536,7 @@ static int i8xx_pipe_crc_ctl_reg(enum in
 	return 0;
 }
 
-static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum i915_pipe pipe,
+static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum pipe pipe,
  enum intel_pipe_crc_source *source)
 {
 	struct intel_encoder *encoder;
@@ -3589,7 +3589,7 @@ static int i9xx_pipe_crc_auto_source(str
 }
 
 static int vlv_pipe_crc_ctl_reg(struct drm_device *dev,
-enum i915_pipe pipe,
+enum pipe pipe,
 enum intel_pipe_crc_source *source,
 uint32_t *val)
 {
@@ -3660,7 +3660,7 @@ static int vlv_pipe_crc_ctl_reg(struct d
 }
 
 static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev,
- enum i915_pipe pipe,
+ enum pipe pipe,
  enum intel_pipe_crc_source *source,
  uint32_t *val)
 {
@@ -3736,7 +3736,7 @@ static int i9xx_pipe_crc_ctl_reg(struct 
 }
 
 static void vlv_undo_pipe_scramble_reset(struct drm_device *dev,
-	 enum i915_pipe pipe)
+	

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

2020-02-10 Thread Maya Rashish
Module Name:src
Committed By:   maya
Date:   Mon Feb 10 21:54:26 UTC 2020

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_opregion.c

Log Message:
Use a closer equivalent to MEMREMAP_WB: BUS_SPACE_MAP_CACHEABLE

Not a fix for PR port-amd64/54808


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 \
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.14 src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.15
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.14	Mon Aug 27 13:54:48 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c	Mon Feb 10 21:54:26 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_opregion.c,v 1.14 2018/08/27 13:54:48 riastradh Exp $	*/
+/*	$NetBSD: intel_opregion.c,v 1.15 2020/02/10 21:54:26 maya Exp $	*/
 
 /*
  * Copyright 2008 Intel Corporation 
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.14 2018/08/27 13:54:48 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.15 2020/02/10 21:54:26 maya Exp $");
 
 #include 
 #include 
@@ -997,7 +997,7 @@ int intel_opregion_setup(struct drm_devi
 #ifdef __NetBSD__
 	opregion->bst = dev->pdev->pd_pa.pa_memt;
 	err = -bus_space_map(opregion->bst, asls, OPREGION_SIZE,
-	BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_PREFETCHABLE, >bsh);
+	BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_CACHEABLE, >bsh);
 	if (err) {
 		DRM_DEBUG_DRIVER("Failed to map opregion: %d\n", err);
 		return err;



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

2019-12-05 Thread Maya Rashish
Module Name:src
Committed By:   maya
Date:   Thu Dec  5 20:25:54 UTC 2019

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c

Log Message:
Use the original linux function rather than my wrong translation.

...Include the header to have it.

Thanks Riastradh!


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.19 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.20
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.19	Thu Dec  5 20:03:09 2019
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Thu Dec  5 20:25:54 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.19 2019/12/05 20:03:09 maya Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.20 2019/12/05 20:25:54 maya Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,10 +28,11 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.19 2019/12/05 20:03:09 maya Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.20 2019/12/05 20:25:54 maya Exp $");
 
 #include "i915_drv.h"
 #include 
+#include 
 
 /**
  * DOC: batch buffer command parser
@@ -1259,7 +1260,7 @@ static void init_whitelist(struct intel_
 {
 	const u32 batch_cmds = DIV_ROUND_UP(batch_len, sizeof(u32));
 	const u32 exact_size = BITS_TO_LONGS(batch_cmds);
-	u32 next_size = BITS_TO_LONGS(powerof2(batch_cmds));
+	u32 next_size = BITS_TO_LONGS(roundup_pow_of_two(batch_cmds));
 	unsigned long *next_whitelist;
 
 	if (CMDPARSER_USES_GGTT(ctx->i915))



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

2018-10-06 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Sat Oct  6 15:33:35 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_panel.c

Log Message:
conditionally disable unused functions (clang)


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 \
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.11 src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.12
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.11	Thu Sep 13 04:25:55 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c	Sat Oct  6 11:33:35 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_panel.c,v 1.11 2018/09/13 08:25:55 mrg Exp $	*/
+/*	$NetBSD: intel_panel.c,v 1.12 2018/10/06 15:33:35 christos Exp $	*/
 
 /*
  * Copyright © 2006-2010 Intel Corporation
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.11 2018/09/13 08:25:55 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.12 2018/10/06 15:33:35 christos Exp $");
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
@@ -432,6 +432,7 @@ static uint32_t scale(uint32_t source_va
 	return target_val;
 }
 
+#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE)
 /* Scale user_level in range [0..user_max] to [hw_min..hw_max]. */
 static inline u32 scale_user_to_hw(struct intel_connector *connector,
    u32 user_level, u32 user_max)
@@ -441,6 +442,7 @@ static inline u32 scale_user_to_hw(struc
 	return scale(user_level, 0, user_max,
 		 panel->backlight.min, panel->backlight.max);
 }
+#endif
 
 /* Scale user_level in range [0..user_max] to [0..hw_max], clamping the result
  * to [hw_min..hw_max]. */
@@ -456,6 +458,7 @@ static inline u32 clamp_user_to_hw(struc
 	return hw_level;
 }
 
+#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE)
 /* Scale hw_level in range [hw_min..hw_max] to [0..user_max]. */
 static inline u32 scale_hw_to_user(struct intel_connector *connector,
    u32 hw_level, u32 user_max)
@@ -465,6 +468,7 @@ static inline u32 scale_hw_to_user(struc
 	return scale(hw_level, panel->backlight.min, panel->backlight.max,
 		 0, user_max);
 }
+#endif
 
 static u32 intel_panel_compute_brightness(struct intel_connector *connector,
 	  u32 val)



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

2018-09-23 Thread Christos Zoulas
Module Name:src
Committed By:   christos
Date:   Mon Sep 24 00:42:34 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_display.c

Log Message:
Add more casts to make clang happy.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_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/i915/intel_display.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.23 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.24
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.23	Thu Sep 13 04:25:55 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c	Sun Sep 23 20:42:34 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_display.c,v 1.23 2018/09/13 08:25:55 mrg Exp $	*/
+/*	$NetBSD: intel_display.c,v 1.24 2018/09/24 00:42:34 christos Exp $	*/
 
 /*
  * Copyright © 2006-2007 Intel Corporation
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.23 2018/09/13 08:25:55 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.24 2018/09/24 00:42:34 christos Exp $");
 
 #include 
 #include 
@@ -2039,7 +2039,7 @@ static void lpt_enable_pch_transcoder(st
 
 	/* FDI must be feeding us bits for PCH ports */
 	assert_fdi_tx_enabled(dev_priv, (enum i915_pipe) cpu_transcoder);
-	assert_fdi_rx_enabled(dev_priv, TRANSCODER_A);
+	assert_fdi_rx_enabled(dev_priv, (enum i915_pipe) TRANSCODER_A);
 
 	/* Workaround: set timing override bit. */
 	val = I915_READ(TRANS_CHICKEN2(PIPE_A));
@@ -2132,7 +2132,7 @@ static void intel_enable_pipe(struct int
 	assert_sprites_disabled(dev_priv, pipe);
 
 	if (HAS_PCH_LPT(dev_priv->dev))
-		pch_transcoder = TRANSCODER_A;
+		pch_transcoder = (enum i915_pipe)TRANSCODER_A;
 	else
 		pch_transcoder = pipe;
 
@@ -4307,7 +4307,7 @@ static void lpt_pch_enable(struct drm_cr
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
 
-	assert_pch_transcoder_disabled(dev_priv, TRANSCODER_A);
+	assert_pch_transcoder_disabled(dev_priv, (enum i915_pipe) TRANSCODER_A);
 
 	lpt_program_iclkip(crtc);
 



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

2018-09-21 Thread Kamil Rytarowski
Module Name:src
Committed By:   kamil
Date:   Fri Sep 21 11:49:16 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c

Log Message:
Avoid stack protector violation

'const int' is not a real constant in C and it cannot be used to define an
array with a number of elements, as it's turned into a variable length
array.

Triggered by GCC when building with more debug options.


To generate a diff of this commit:
cvs rdiff -u -r1.26 -r1.27 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.26 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.27
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.26	Thu Sep 13 08:25:55 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c	Fri Sep 21 11:49:16 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_dma.c,v 1.26 2018/09/13 08:25:55 mrg Exp $	*/
+/*	$NetBSD: i915_dma.c,v 1.27 2018/09/21 11:49:16 kamil Exp $	*/
 
 /* i915_dma.c -- DMA support for the I915 -*- linux-c -*-
  */
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.26 2018/09/13 08:25:55 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.27 2018/09/21 11:49:16 kamil Exp $");
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
@@ -705,7 +705,7 @@ static void broadwell_sseu_info_init(str
 	struct intel_device_info *info;
 	const int s_max = 3, ss_max = 3, eu_max = 8;
 	int s, ss;
-	u32 fuse2, eu_disable[s_max], s_enable, ss_disable;
+	u32 fuse2, eu_disable[3], s_enable, ss_disable;
 
 	fuse2 = I915_READ(GEN8_FUSE2);
 	s_enable = (fuse2 & GEN8_F2_S_ENA_MASK) >> GEN8_F2_S_ENA_SHIFT;



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

2018-09-08 Thread Paul Goyette
Module Name:src
Committed By:   pgoyette
Date:   Sun Sep  9 03:04:43 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c

Log Message:
Add __diagused attribute to some diagnostic routines.

OK riastradh@


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.17 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.18
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.17	Mon Aug 27 14:50:04 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Sun Sep  9 03:04:43 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.17 2018/08/27 14:50:04 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.18 2018/09/09 03:04:43 pgoyette Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.17 2018/08/27 14:50:04 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.18 2018/09/09 03:04:43 pgoyette Exp $");
 
 #include "i915_drv.h"
 
@@ -555,6 +555,7 @@ static u32 gen7_blt_get_cmd_length_mask(
 	return 0;
 }
 
+__diagused
 static bool validate_cmds_sorted(struct intel_engine_cs *ring,
  const struct drm_i915_cmd_table *cmd_tables,
  int cmd_table_count)
@@ -611,6 +612,7 @@ static bool check_sorted(int ring_id,
 	return ret;
 }
 
+__diagused
 static bool validate_regs_sorted(struct intel_engine_cs *ring)
 {
 	return check_sorted(ring->id, ring->reg_table, ring->reg_count) &&



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

2018-09-02 Thread Taylor R Campbell
Module Name:src
Committed By:   riastradh
Date:   Sun Sep  2 17:36:57 UTC 2018

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_display.c intel_dp.c

Log Message:
Initialize and destroy dev_priv->drrs.mutex only once.

Not once per connector!

Candidate fix for:
https://mail-index.netbsd.org/current-users/2018/08/30/msg034155.html


To generate a diff of this commit:
cvs rdiff -u -r1.21 -r1.22 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c
cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/drm2/dist/drm/i915/intel_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/i915/intel_display.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.21 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.22
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.21	Mon Aug 27 07:28:41 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c	Sun Sep  2 17:36:57 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_display.c,v 1.21 2018/08/27 07:28:41 riastradh Exp $	*/
+/*	$NetBSD: intel_display.c,v 1.22 2018/09/02 17:36:57 riastradh Exp $	*/
 
 /*
  * Copyright © 2006-2007 Intel Corporation
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.21 2018/08/27 07:28:41 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.22 2018/09/02 17:36:57 riastradh Exp $");
 
 #include 
 #include 
@@ -14775,8 +14775,10 @@ static void intel_init_display(struct dr
 
 #ifdef __NetBSD__
 	linux_mutex_init(_priv->pps_mutex);
+	linux_mutex_init(_priv->drrs.mutex);
 #else
 	mutex_init(_priv->pps_mutex);
+	mutex_init(_priv->drrs.mutex);
 #endif
 }
 
@@ -15710,10 +15712,12 @@ void intel_modeset_cleanup(struct drm_de
 
 #ifdef __NetBSD__
 	linux_mutex_destroy(_priv->psr.lock);
+	linux_mutex_destroy(_priv->drrs.mutex);
 	linux_mutex_destroy(_priv->pps_mutex);
 	linux_mutex_destroy(_priv->fbc.lock);
 #else
 	mutex_destroy(_priv->psr.lock);
+	mutex_destroy(_priv->drrs.mutex);
 	mutex_destroy(_priv->pps_mutex);
 	mutex_destroy(_priv->fbc.lock);
 #endif

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.17 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.18
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.17	Mon Aug 27 13:41:23 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c	Sun Sep  2 17:36:57 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_dp.c,v 1.17 2018/08/27 13:41:23 riastradh Exp $	*/
+/*	$NetBSD: intel_dp.c,v 1.18 2018/09/02 17:36:57 riastradh Exp $	*/
 
 /*
  * Copyright © 2008 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.17 2018/08/27 13:41:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.18 2018/09/02 17:36:57 riastradh Exp $");
 
 #include 
 #include 
@@ -5014,8 +5014,6 @@ static void
 intel_dp_connector_destroy(struct drm_connector *connector)
 {
 	struct intel_connector *intel_connector = to_intel_connector(connector);
-	struct drm_device *dev = intel_connector->base.dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
 
 	kfree(intel_connector->detect_edid);
 
@@ -5028,11 +5026,6 @@ intel_dp_connector_destroy(struct drm_co
 		intel_panel_fini(_connector->panel);
 
 	drm_connector_cleanup(connector);
-#ifdef __NetBSD__
-	linux_mutex_destroy(_priv->drrs.mutex);
-#else
-	mutex_destroy(_priv->drrs.mutex);
-#endif
 	kfree(connector);
 }
 
@@ -6025,12 +6018,6 @@ intel_dp_init_connector(struct intel_dig
 
 	intel_dp->pps_pipe = INVALID_PIPE;
 
-#ifdef __NetBSD__
-	linux_mutex_init(_priv->drrs.mutex);
-#else
-	mutex_init(_priv->drrs.mutex);
-#endif
-
 	/* intel_dp vfuncs */
 	if (INTEL_INFO(dev)->gen >= 9)
 		intel_dp->get_aux_clock_divider = skl_get_aux_clock_divider;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_vgpu.c

Log Message:
Simulate bus_space_read_8 with two bus_space_read_4 on 32-bit x86.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.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_vgpu.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.3	Mon Aug 27 07:16:10 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c	Mon Aug 27 16:15:34 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_vgpu.c,v 1.3 2018/08/27 07:16:10 riastradh Exp $	*/
+/*	$NetBSD: i915_vgpu.c,v 1.4 2018/08/27 16:15:34 riastradh Exp $	*/
 
 /*
  * Copyright(c) 2011-2015 Intel Corporation. All rights reserved.
@@ -24,7 +24,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_vgpu.c,v 1.3 2018/08/27 07:16:10 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_vgpu.c,v 1.4 2018/08/27 16:15:34 riastradh Exp $");
 
 #include "intel_drv.h"
 #include "i915_vgpu.h"
@@ -75,8 +75,15 @@ void i915_check_vgpu(struct drm_device *
 		return;
 
 #ifdef __NetBSD__
+#  ifdef _LP64
 	magic = bus_space_read_8(dev_priv->regs_bst, dev_priv->regs_bsh,
 	vgtif_reg(magic));
+#  else
+	magic = bus_space_read_4(dev_priv->regs_bst, dev_priv->regs_bsh,
+	vgtif_reg(magic));
+	magic |= (uint64_t)bus_space_read_4(dev_priv->regs_bst,
+	dev_priv->regs_bsh, vgtif_reg(magic) + 4) << 32;
+#  endif
 #else
 	magic = readq(dev_priv->regs + vgtif_reg(magic));
 #endif



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_vgpu.h

Log Message:
Use offsetof, not undefined behaviour.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.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_vgpu.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.h:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.h:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.h:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.h	Mon Aug 27 16:15:48 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_vgpu.h,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: i915_vgpu.h,v 1.3 2018/08/27 16:15:48 riastradh Exp $	*/
 
 /*
  * Copyright(c) 2011-2015 Intel Corporation. All rights reserved.
@@ -110,7 +110,7 @@ struct vgt_if {
 } __packed;
 
 #define vgtif_reg(x) \
-	(VGT_PVINFO_PAGE + (long)&((struct vgt_if *)NULL)->x)
+	(VGT_PVINFO_PAGE + offsetof(struct vgt_if, x))
 
 /* vGPU display status to be used by the host side */
 #define VGT_DRV_DISPLAY_NOT_READY 0



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gpu_error.c

Log Message:
Omit print with wrong format -- vestige of merge.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.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_gpu_error.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.10
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.9	Mon Aug 27 14:49:05 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c	Mon Aug 27 16:14:55 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gpu_error.c,v 1.9 2018/08/27 14:49:05 riastradh Exp $	*/
+/*	$NetBSD: i915_gpu_error.c,v 1.10 2018/08/27 16:14:55 riastradh Exp $	*/
 
 /*
  * Copyright (c) 2008 Intel Corporation
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gpu_error.c,v 1.9 2018/08/27 14:49:05 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gpu_error.c,v 1.10 2018/08/27 16:14:55 riastradh Exp $");
 
 #include 
 
@@ -356,8 +356,6 @@ int i915_error_state_to_str(struct drm_i
 	err_printf(m, "Time: %"PRIdMAX" s %ld us\n", (intmax_t)error->time.tv_sec,
 		   (long)error->time.tv_usec);
 	err_printf(m, "Kernel: %d\n", __NetBSD_Version__);
-	err_printf(m, "Time: %ld s %ld us\n", error->time.tv_sec,
-		   (long)error->time.tv_usec);
 	max_hangcheck_score = 0;
 	for (i = 0; i < ARRAY_SIZE(error->ring); i++) {
 		if (error->ring[i].hangcheck_score > max_hangcheck_score)



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_gtt.c

Log Message:
Scale offset by size of unit, gen6_pte_t.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 \
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.14 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.15
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.14	Mon Aug 27 14:53:30 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c	Mon Aug 27 14:53:54 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_gtt.c,v 1.14 2018/08/27 14:53:30 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_gtt.c,v 1.15 2018/08/27 14:53:54 riastradh Exp $	*/
 
 /*
  * Copyright © 2010 Daniel Vetter
@@ -26,7 +26,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.14 2018/08/27 14:53:30 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.15 2018/08/27 14:53:54 riastradh Exp $");
 
 #include 
 #include 
@@ -1776,7 +1776,8 @@ static void gen6_write_pde(struct i915_p
 	pd_entry |= GEN6_PDE_VALID;
 
 #ifdef __NetBSD__
-	bus_space_write_4(bst, bsh, pd_base + pde, pd_entry);
+	CTASSERT(sizeof(gen6_pte_t) == 4);
+	bus_space_write_4(bst, bsh, pd_base + 4*pde, pd_entry);
 #else
 	writel(pd_entry, ppgtt->pd_addr + pde);
 #endif



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_gtt.c

Log Message:
Pass the vaddr we mapped to kunmap_px.  Thanks, void *.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 \
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.13 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.14
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.13	Mon Aug 27 14:52:40 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c	Mon Aug 27 14:53:30 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_gtt.c,v 1.13 2018/08/27 14:52:40 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_gtt.c,v 1.14 2018/08/27 14:53:30 riastradh Exp $	*/
 
 /*
  * Copyright © 2010 Daniel Vetter
@@ -26,7 +26,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.13 2018/08/27 14:52:40 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.14 2018/08/27 14:53:30 riastradh Exp $");
 
 #include 
 #include 
@@ -817,7 +817,7 @@ static void gen8_ppgtt_clear_pte_range(s
 			num_entries--;
 		}
 
-		kunmap_px(ppgtt, pt);
+		kunmap_px(ppgtt, pt_vaddr);
 
 		pte = 0;
 		if (++pde == I915_PDES) {



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_lrc.c

Log Message:
Simplify loop with bus_space_set_region_4

Match the original copypasta in intel_ringbuffer.c.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.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_lrc.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.7	Mon Aug 27 14:52:56 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c	Mon Aug 27 14:53:12 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_lrc.c,v 1.7 2018/08/27 14:52:56 riastradh Exp $	*/
+/*	$NetBSD: intel_lrc.c,v 1.8 2018/08/27 14:53:12 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -135,7 +135,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.7 2018/08/27 14:52:56 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.8 2018/08/27 14:53:12 riastradh Exp $");
 
 #include 
 #include 
@@ -745,18 +745,15 @@ intel_logical_ring_advance_and_submit(st
 
 static void __wrap_ring_buffer(struct intel_ringbuffer *ringbuf)
 {
-#ifdef __NetBSD__
-	bus_size_t tail;
-	int rem = ringbuf->size - ringbuf->tail;
-
-	tail = ringbuf->tail;
-	rem /= 4;
-	for (; rem --> 0; tail += 4)
-		bus_space_write_4(ringbuf->bst, ringbuf->bsh, tail, MI_NOOP);
-#else
+#ifndef __NetBSD__
 	uint32_t __iomem *virt;
+#endif
 	int rem = ringbuf->size - ringbuf->tail;
 
+#ifdef __NetBSD__
+	bus_space_set_region_4(ringbuf->bst, ringbuf->bsh, ringbuf->tail,
+	MI_NOOP, rem/4);
+#else
 	virt = ringbuf->virtual_start + ringbuf->tail;
 	rem /= 4;
 	while (rem--)



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_irq.c intel_lrc.c

Log Message:
Advance by 4-byte quantities, not by 1-byte quantities.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.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.15 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.16
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.15	Mon Aug 27 14:45:11 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c	Mon Aug 27 14:52:56 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_irq.c,v 1.15 2018/08/27 14:45:11 riastradh Exp $	*/
+/*	$NetBSD: i915_irq.c,v 1.16 2018/08/27 14:52:56 riastradh Exp $	*/
 
 /* i915_irq.c -- IRQ support for the I915 -*- linux-c -*-
  */
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_irq.c,v 1.15 2018/08/27 14:45:11 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_irq.c,v 1.16 2018/08/27 14:52:56 riastradh Exp $");
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
@@ -2677,6 +2677,34 @@ void i915_handle_error(struct drm_device
 	}
 
 	i915_reset_and_wakeup(dev);
+
+do {
+	struct i915_error_state_file_priv error_priv;
+	struct drm_i915_error_state_buf error_str;
+	int ret;
+
+	memset(_priv, 0, sizeof(error_priv));
+
+	ret = i915_error_state_buf_init(_str, dev_priv, 512*1024, 0);
+	if (ret) {
+		DRM_ERROR("Failed to initialize error buf: %d\n", ret);
+		break;
+	}
+	error_priv.dev = dev;
+	i915_error_state_get(dev, _priv);
+
+	ret = i915_error_state_to_str(_str, _priv);
+	if (ret) {
+		DRM_ERROR("Failed to format error buf: %d\n", ret);
+		i915_error_state_put(_priv);
+	}
+
+	error_str.buf[MIN(error_str.size - 1, error_str.bytes)] = '\0';
+	DRM_ERROR("Error state:\n%s\n", error_str.buf);
+
+	i915_error_state_buf_release(_str);
+	i915_error_state_put(_priv);
+} while (0);
 }
 
 /* Called from drm generic code, passed 'crtc' which

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.6	Mon Aug 27 07:24:25 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c	Mon Aug 27 14:52:56 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_lrc.c,v 1.6 2018/08/27 07:24:25 riastradh Exp $	*/
+/*	$NetBSD: intel_lrc.c,v 1.7 2018/08/27 14:52:56 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -135,7 +135,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.6 2018/08/27 07:24:25 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.7 2018/08/27 14:52:56 riastradh Exp $");
 
 #include 
 #include 
@@ -751,8 +751,8 @@ static void __wrap_ring_buffer(struct in
 
 	tail = ringbuf->tail;
 	rem /= 4;
-	while (rem--)
-		bus_space_write_4(ringbuf->bst, ringbuf->bsh, tail++, MI_NOOP);
+	for (; rem --> 0; tail += 4)
+		bus_space_write_4(ringbuf->bst, ringbuf->bsh, tail, MI_NOOP);
 #else
 	uint32_t __iomem *virt;
 	int rem = ringbuf->size - ringbuf->tail;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_gtt.c

Log Message:
Zero the scratch page.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 \
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.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.13
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.12	Mon Aug 27 14:49:39 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c	Mon Aug 27 14:52:40 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_gtt.c,v 1.12 2018/08/27 14:49:39 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_gtt.c,v 1.13 2018/08/27 14:52:40 riastradh Exp $	*/
 
 /*
  * Copyright © 2010 Daniel Vetter
@@ -26,7 +26,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.12 2018/08/27 14:49:39 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.13 2018/08/27 14:52:40 riastradh Exp $");
 
 #include 
 #include 
@@ -321,6 +321,9 @@ static gen6_pte_t iris_pte_encode(dma_ad
 	return pte;
 }
 
+static void *kmap_page_dma(struct i915_page_dma *);
+static void kunmap_page_dma(struct drm_device *, void *);
+
 static int __setup_page_dma(struct drm_device *dev,
 			struct i915_page_dma *p, gfp_t flags)
 {
@@ -354,6 +357,12 @@ fail2: __unused
 		bus_dmamap_destroy(dev->dmat, p->map);
 		goto fail1;
 	}
+
+	if (flags & __GFP_ZERO) {
+		void *va = kmap_page_dma(p);
+		memset(va, 0, PAGE_SIZE);
+		kunmap_page_dma(dev, va);
+	}
 #else
 	struct device *device = >pdev->dev;
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c i915_gem.c
i915_gem_render_state.c

Log Message:
Handle uvm object reference counts in uvm_map more carefully.

Acquire a reference unconditionally first; then let uvm_map consume
it on success, and release it ourselves on failure.

As we did before -- acquiring a fresh reference on success -- another
thread might release the reference with a concurrent uvm_unmap before
we could acquire it back, thereby destroying the object.

XXX pullup-7 in part (i915_gem_fault)
XXX pullup-8 in part (i915_gem_fault)


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c
cvs rdiff -u -r1.52 -r1.53 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
cvs rdiff -u -r1.8 -r1.9 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.16 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.17
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.16	Mon Aug 27 14:46:38 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 14:50:04 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.16 2018/08/27 14:46:38 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.17 2018/08/27 14:50:04 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.16 2018/08/27 14:46:38 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.17 2018/08/27 14:50:04 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -928,16 +928,18 @@ static u32 *copy_batch(struct drm_i915_g
 	- srcstart;
 	vaddr_t srcva = 0;	/* hint */
 
+	/* Acquire a reference for uvm_map to consume.  */
+	uao_reference(src_obj->base.filp);
+
 	/* XXX errno NetBSD->Linux */
 	ret = -uvm_map(kernel_map, , srclen, src_obj->base.filp,
 	srcstart, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW,
 		UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT));
 	if (ret) {
+		uao_detach(src_obj->base.filp);
 		DRM_DEBUG_DRIVER("CMD: Failed to vmap batch: %d\n", ret);
 		goto unpin_src;
 	}
-	/* uvm_map consumes caller's reference on success.  */
-	uao_reference(src_obj->base.filp);
 	src_base = (const void *)srcva;
 #else
 	src_base = vmap_batch(src_obj, batch_start_offset, batch_len);
@@ -959,16 +961,18 @@ static u32 *copy_batch(struct drm_i915_g
 	const u32 dstlen = roundup(0 + batch_len, PAGE_SIZE) - dststart;
 	vaddr_t dstva = 0;	/* hint */
 
+	/* Acquire a reference for uvm_map to consume.  */
+	uao_reference(dest_obj->base.filp);
+
 	/* XXX errno NetBSD->Linux */
 	ret = -uvm_map(kernel_map, , dstlen, dest_obj->base.filp,
 	dststart, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW,
 		UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT));
 	if (ret) {
+		uao_detach(dest_obj->base.filp);
 		DRM_DEBUG_DRIVER("CMD: Failed to vmap shadow batch: %d\n", ret);
 		goto unmap_src;
 	}
-	/* uvm_map consumes caller's reference on success.  */
-	uao_reference(dest_obj->base.filp);
 	dst = (void *)dstva;
 #else
 	dst = vmap_batch(dest_obj, 0, batch_len);

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.52 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.53
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.52	Mon Aug 27 14:47:02 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Mon Aug 27 14:50:04 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem.c,v 1.52 2018/08/27 14:47:02 riastradh Exp $	*/
+/*	$NetBSD: i915_gem.c,v 1.53 2018/08/27 14:50:04 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.52 2018/08/27 14:47:02 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.53 2018/08/27 14:50:04 riastradh Exp $");
 
 #ifdef __NetBSD__
 #if 0/* XXX uvmhist option?  */
@@ -1956,6 +1956,8 @@ i915_gem_mmap_ioctl(struct drm_device *d
 	}
 
 #ifdef __NetBSD__
+	/* Acquire a reference for uvm_map to consume.  */
+	uao_reference(obj->filp);
 	addr = (*curproc->p_emul->e_vm_default_addr)(curproc,
 	(vaddr_t)curproc->p_vmspace->vm_daddr, args->size,
 	curproc->p_vmspace->vm_map.flags & VM_MAP_TOPDOWN);
@@ -1966,10 +1968,10 @@ i915_gem_mmap_ioctl(struct drm_device *d
 		(VM_PROT_READ | VM_PROT_WRITE), UVM_INH_COPY, UVM_ADV_NORMAL,
 		0));
 	if (ret) {
+		uao_detach(obj->filp);
 		drm_gem_object_unreference_unlocked(obj);
 		return ret;
 	}
-	uao_reference(obj->filp);
 	drm_gem_object_unreference_unlocked(obj);
 #else
 	addr = 

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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_gtt.c

Log Message:
Pass waitok/nowait flags to bus_dma.  Use boundary=0.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 \
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.11 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.12
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c:1.11	Mon Aug 27 07:17:35 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c	Mon Aug 27 14:49:39 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_gtt.c,v 1.11 2018/08/27 07:17:35 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_gtt.c,v 1.12 2018/08/27 14:49:39 riastradh Exp $	*/
 
 /*
  * Copyright © 2010 Daniel Vetter
@@ -26,7 +26,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.11 2018/08/27 07:17:35 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.12 2018/08/27 14:49:39 riastradh Exp $");
 
 #include 
 #include 
@@ -325,24 +325,30 @@ static int __setup_page_dma(struct drm_d
 			struct i915_page_dma *p, gfp_t flags)
 {
 #ifdef __NetBSD__
+	int busdmaflags = 0;
 	int error;
 	int nseg = 1;
 
-	error = bus_dmamem_alloc(dev->dmat, PAGE_SIZE, PAGE_SIZE, PAGE_SIZE,
-	>seg, nseg, , BUS_DMA_WAITOK);
+	if (flags & __GFP_WAIT)
+		busdmaflags |= BUS_DMA_WAITOK;
+	else
+		busdmaflags |= BUS_DMA_NOWAIT;
+
+	error = bus_dmamem_alloc(dev->dmat, PAGE_SIZE, PAGE_SIZE, 0, >seg,
+	nseg, , busdmaflags);
 	if (error) {
 fail0:		p->map = NULL;
 		return -error;	/* XXX errno NetBSD->Linux */
 	}
 	KASSERT(nseg == 1);
-	error = bus_dmamap_create(dev->dmat, PAGE_SIZE, 1, PAGE_SIZE,
-	PAGE_SIZE, BUS_DMA_WAITOK, >map);
+	error = bus_dmamap_create(dev->dmat, PAGE_SIZE, 1, PAGE_SIZE, 0,
+	busdmaflags, >map);
 	if (error) {
 fail1:		bus_dmamem_free(dev->dmat, >seg, 1);
 		goto fail0;
 	}
 	error = bus_dmamap_load_raw(dev->dmat, p->map, >seg, 1, PAGE_SIZE,
-	BUS_DMA_WAITOK);
+	busdmaflags);
 	if (error) {
 fail2: __unused
 		bus_dmamap_destroy(dev->dmat, p->map);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gpu_error.c

Log Message:
Lock around use of irq_queue.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.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_gpu_error.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.9
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c:1.8	Mon Aug 27 07:09:28 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gpu_error.c	Mon Aug 27 14:49:05 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gpu_error.c,v 1.8 2018/08/27 07:09:28 riastradh Exp $	*/
+/*	$NetBSD: i915_gpu_error.c,v 1.9 2018/08/27 14:49:05 riastradh Exp $	*/
 
 /*
  * Copyright (c) 2008 Intel Corporation
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gpu_error.c,v 1.8 2018/08/27 07:09:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gpu_error.c,v 1.9 2018/08/27 14:49:05 riastradh Exp $");
 
 #include 
 
@@ -929,8 +929,10 @@ static void i915_record_ring_state(struc
 	}
 
 #ifdef __NetBSD__
+	spin_lock(_priv->irq_lock);
 	ering->waiting = DRM_SPIN_WAITERS_P(>irq_queue,
 	_priv->irq_lock);
+	spin_unlock(_priv->irq_lock);
 #else
 	ering->waiting = waitqueue_active(>irq_queue);
 #endif



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c i915_drv.h
i915_gem.c

Log Message:
Work around ioctl ABI mistake in i915 drm.

A flags argument was added to the I915_GEM_MMAP ioctl.  The version
of xf86-video-intel we imported was compiled to use the new ioctl
structure including the flags argument, but without initializing the
flags argument, so it would be userland stack garbage causing
i915_gem_mmap_ioctl to fail.

Newer xf86-video-intel will query the mmap version first before
trying to use either the older ioctl structure, with the original
shorter argument and thus no stack garbage (which will be padded with
to the full length in the kernel by drm_ioctl), or the newer ioctl
structure, with the argument initialized.

libdrm does not appear to be affected by this -- it zeroes the longer
structure before passing it in.

Patch from mrg@, diagnosis and explanation by me.


To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c \
src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
cvs rdiff -u -r1.51 -r1.52 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_dma.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.23 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.24
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.23	Mon Aug 27 13:43:39 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c	Mon Aug 27 14:47:02 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_dma.c,v 1.23 2018/08/27 13:43:39 riastradh Exp $	*/
+/*	$NetBSD: i915_dma.c,v 1.24 2018/08/27 14:47:02 riastradh Exp $	*/
 
 /* i915_dma.c -- DMA support for the I915 -*- linux-c -*-
  */
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.23 2018/08/27 13:43:39 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.24 2018/08/27 14:47:02 riastradh Exp $");
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
@@ -160,6 +160,9 @@ static int i915_getparam(struct drm_devi
 		value = 1;
 		break;
 	case I915_PARAM_MMAP_VERSION:
+#ifdef __NetBSD__
+		dev_priv->quirks |= QUIRK_NETBSD_VERSION_CALLED;
+#endif
 		value = 1;
 		break;
 	case I915_PARAM_SUBSLICE_TOTAL:
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.23 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.24
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.23	Mon Aug 27 13:43:39 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h	Mon Aug 27 14:47:02 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_drv.h,v 1.23 2018/08/27 13:43:39 riastradh Exp $	*/
+/*	$NetBSD: i915_drv.h,v 1.24 2018/08/27 14:47:02 riastradh Exp $	*/
 
 /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*-
  */
@@ -1042,6 +1042,11 @@ enum intel_sbi_destination {
 #define QUIRK_PIPEB_FORCE (1<<4)
 #define QUIRK_PIN_SWIZZLED_PAGES (1<<5)
 
+#ifdef __NetBSD__
+/* NetBSD hack to note version was called and thus mmap flags valid. */
+#define QUIRK_NETBSD_VERSION_CALLED (1ul<<31)
+#endif
+
 struct intel_fbdev;
 struct intel_fbc_work;
 

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.51 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.52
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.51	Mon Aug 27 14:44:46 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Mon Aug 27 14:47:02 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem.c,v 1.51 2018/08/27 14:44:46 riastradh Exp $	*/
+/*	$NetBSD: i915_gem.c,v 1.52 2018/08/27 14:47:02 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.51 2018/08/27 14:44:46 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.52 2018/08/27 14:47:02 riastradh Exp $");
 
 #ifdef __NetBSD__
 #if 0/* XXX uvmhist option?  */
@@ -1930,7 +1930,11 @@ i915_gem_mmap_ioctl(struct drm_device *d
 	struct drm_gem_object *obj;
 	unsigned long addr;
 #ifdef __NetBSD__
+	struct drm_i915_private *dev_priv = dev->dev_private;
 	int ret;
+
+	if ((dev_priv->quirks & QUIRK_NETBSD_VERSION_CALLED) == 0)
+		args->flags = 0;
 #endif
 
 	if (args->flags & ~(I915_MMAP_WC))



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c

Log Message:
Use kcopy, not memcpy, in case of failure to page in dst.  From chs@.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.14 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.15
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.14	Mon Aug 27 14:45:57 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 14:46:10 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.14 2018/08/27 14:45:57 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.15 2018/08/27 14:46:10 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.14 2018/08/27 14:45:57 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.15 2018/08/27 14:46:10 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -983,7 +983,15 @@ static u32 *copy_batch(struct drm_i915_g
 	if (needs_clflush)
 		drm_clflush_virt_range(src, batch_len);
 
+#ifdef __NetBSD__
+	ret = -kcopy(dst, src, batch_len);
+	if (ret) {
+		uvm_unmap(kernel_map, dstva, dstva + dstlen);
+		goto unmap_src;
+	}
+#else
 	memcpy(dst, src, batch_len);
+#endif
 
 unmap_src:
 #ifdef __NetBSD__



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c

Log Message:
Fix order of arguments to kcopy.  @#&!$!*#

Add const qualifiers to src to compiler will detect this.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.15 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.16
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.15	Mon Aug 27 14:46:10 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 14:46:38 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.15 2018/08/27 14:46:10 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.16 2018/08/27 14:46:38 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.15 2018/08/27 14:46:10 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.16 2018/08/27 14:46:38 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -905,7 +905,7 @@ static u32 *copy_batch(struct drm_i915_g
 		   u32 batch_len)
 {
 	int needs_clflush = 0;
-	void *src_base, *src;
+	const void *src_base, *src;
 	void *dst = NULL;
 	int ret;
 
@@ -938,7 +938,7 @@ static u32 *copy_batch(struct drm_i915_g
 	}
 	/* uvm_map consumes caller's reference on success.  */
 	uao_reference(src_obj->base.filp);
-	src_base = (void *)srcva;
+	src_base = (const void *)srcva;
 #else
 	src_base = vmap_batch(src_obj, batch_start_offset, batch_len);
 	if (!src_base) {
@@ -979,12 +979,12 @@ static u32 *copy_batch(struct drm_i915_g
 	}
 #endif
 
-	src = (char *)src_base + offset_in_page(batch_start_offset);
+	src = (const char *)src_base + offset_in_page(batch_start_offset);
 	if (needs_clflush)
 		drm_clflush_virt_range(src, batch_len);
 
 #ifdef __NetBSD__
-	ret = -kcopy(dst, src, batch_len);
+	ret = -kcopy(src, dst, batch_len);
 	if (ret) {
 		uvm_unmap(kernel_map, dstva, dstva + dstlen);
 		goto unmap_src;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c

Log Message:
Forgot again to restore reference consumed by uvm_map.

Add missing errno comment while here.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.13 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.14
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.13	Mon Aug 27 14:45:31 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 14:45:57 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.13 2018/08/27 14:45:31 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.14 2018/08/27 14:45:57 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.13 2018/08/27 14:45:31 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.14 2018/08/27 14:45:57 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -936,6 +936,8 @@ static u32 *copy_batch(struct drm_i915_g
 		DRM_DEBUG_DRIVER("CMD: Failed to vmap batch: %d\n", ret);
 		goto unpin_src;
 	}
+	/* uvm_map consumes caller's reference on success.  */
+	uao_reference(src_obj->base.filp);
 	src_base = (void *)srcva;
 #else
 	src_base = vmap_batch(src_obj, batch_start_offset, batch_len);
@@ -957,6 +959,7 @@ static u32 *copy_batch(struct drm_i915_g
 	const u32 dstlen = roundup(0 + batch_len, PAGE_SIZE) - dststart;
 	vaddr_t dstva = 0;	/* hint */
 
+	/* XXX errno NetBSD->Linux */
 	ret = -uvm_map(kernel_map, , dstlen, dest_obj->base.filp,
 	dststart, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW,
 		UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT));
@@ -964,6 +967,8 @@ static u32 *copy_batch(struct drm_i915_g
 		DRM_DEBUG_DRIVER("CMD: Failed to vmap shadow batch: %d\n", ret);
 		goto unmap_src;
 	}
+	/* uvm_map consumes caller's reference on success.  */
+	uao_reference(dest_obj->base.filp);
 	dst = (void *)dstva;
 #else
 	dst = vmap_batch(dest_obj, 0, batch_len);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_irq.c

Log Message:
Narrow scope of locks in i915 error checks to reduce deadlocks.

Not really sure why I had put some of these locks here...


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 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.14 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.15
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.14	Mon Aug 27 07:14:55 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c	Mon Aug 27 14:45:11 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_irq.c,v 1.14 2018/08/27 07:14:55 riastradh Exp $	*/
+/*	$NetBSD: i915_irq.c,v 1.15 2018/08/27 14:45:11 riastradh Exp $	*/
 
 /* i915_irq.c -- IRQ support for the I915 -*- linux-c -*-
  */
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_irq.c,v 1.14 2018/08/27 07:14:55 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_irq.c,v 1.15 2018/08/27 14:45:11 riastradh Exp $");
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
@@ -1007,7 +1007,6 @@ static void notify_ring(struct intel_eng
 
 #ifdef __NetBSD__
 	spin_lock_irqsave(_priv->irq_lock, flags);
-	/* XXX Set a flag under the lock or push the lock out to callers.  */
 	DRM_SPIN_WAKEUP_ALL(>irq_queue, _priv->irq_lock);
 	spin_unlock_irqrestore(_priv->irq_lock, flags);
 #else
@@ -1496,7 +1495,6 @@ static void gmbus_irq_handler(struct drm
 
 #ifdef __NetBSD__
 	spin_lock(_priv->gmbus_wait_lock);
-	/* XXX Set a flag here...  */
 	DRM_SPIN_WAKEUP_ALL(_priv->gmbus_wait_queue,
 	_priv->gmbus_wait_lock);
 	spin_unlock(_priv->gmbus_wait_lock);
@@ -1511,7 +1509,6 @@ static void dp_aux_irq_handler(struct dr
 
 #ifdef __NetBSD__
 	spin_lock(_priv->gmbus_wait_lock);
-	/* XXX Set a flag here...  */
 	DRM_SPIN_WAKEUP_ALL(_priv->gmbus_wait_queue,
 	_priv->gmbus_wait_lock);
 	spin_unlock(_priv->gmbus_wait_lock);
@@ -2416,10 +2413,12 @@ static void i915_error_wake_up(struct dr
 	 * a gpu reset pending so that i915_error_work_func can acquire them).
 	 */
 
-	assert_spin_locked(_priv->irq_lock);
 #ifdef __NetBSD__
-	for_each_ring(ring, dev_priv, i)
+	for_each_ring(ring, dev_priv, i) {
+		spin_lock(_priv->irq_lock);
 		DRM_SPIN_WAKEUP_ALL(>irq_queue, _priv->irq_lock);
+		spin_unlock(_priv->irq_lock);
+	}
 
 	spin_lock(_priv->pending_flip_lock);
 	DRM_SPIN_WAKEUP_ALL(_priv->pending_flip_queue,
@@ -2537,9 +2536,7 @@ static void i915_reset_and_wakeup(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(_priv->irq_lock);
 		i915_error_wake_up(dev_priv, true);
-		spin_unlock(_priv->irq_lock);
 	}
 }
 
@@ -2652,8 +2649,6 @@ void i915_handle_error(struct drm_device
 	va_list args;
 	char error_msg[80];
 
-	assert_spin_locked(_priv->irq_lock);
-
 	va_start(args, fmt);
 	vscnprintf(error_msg, sizeof(error_msg), fmt, args);
 	va_end(args);
@@ -3047,8 +3042,6 @@ static void i915_hangcheck_elapsed(struc
 	if (!i915.enable_hangcheck)
 		return;
 
-	spin_lock(_priv->irq_lock);
-
 	for_each_ring(ring, dev_priv, i) {
 		u64 acthd;
 		u32 seqno;
@@ -3063,6 +3056,7 @@ static void i915_hangcheck_elapsed(struc
 			if (ring_idle(ring, seqno)) {
 ring->hangcheck.action = HANGCHECK_IDLE;
 #ifdef __NetBSD__
+spin_lock(_priv->irq_lock);
 if (DRM_SPIN_WAITERS_P(>irq_queue,
 	_priv->irq_lock)) {
 	if (!test_and_set_bit(ring->id, _priv->gpu_error.missed_irq_rings)) {
@@ -3078,6 +3072,7 @@ static void i915_hangcheck_elapsed(struc
 } else {
 	busy = false;
 }
+spin_unlock(_priv->irq_lock);
 #else
 if (waitqueue_active(>irq_queue)) {
 	/* Issue a wake-up to catch stuck h/w. */
@@ -3159,12 +3154,9 @@ static void i915_hangcheck_elapsed(struc
 
 	if (rings_hung) {
 		i915_handle_error(dev, true, "Ring hung");
-		spin_unlock(_priv->irq_lock);
 		return;
 	}
 
-	spin_unlock(_priv->irq_lock);
-
 	if (busy_count)
 		/* Reset timer case chip hangs without another request
 		 * being added */



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c

Log Message:
For reasons beyond me, map does size/offset but unmap does start/end.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.13
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.12	Mon Aug 27 14:44:30 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 14:45:31 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.12 2018/08/27 14:44:30 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.13 2018/08/27 14:45:31 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.12 2018/08/27 14:44:30 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.13 2018/08/27 14:45:31 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -982,7 +982,7 @@ static u32 *copy_batch(struct drm_i915_g
 
 unmap_src:
 #ifdef __NetBSD__
-	uvm_unmap(kernel_map, srcva, srclen);
+	uvm_unmap(kernel_map, srcva, srcva + srclen);
 #else
 	vunmap(src_base);
 #endif
@@ -1239,7 +1239,7 @@ int i915_parse_cmds(struct intel_engine_
 
 #ifdef __NetBSD__
 	uvm_unmap(kernel_map, (vaddr_t)batch_base,
-	roundup(batch_len, PAGE_SIZE));
+	(vaddr_t)batch_base + roundup(batch_len, PAGE_SIZE));
 #else
 	vunmap(batch_base);
 #endif



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c

Log Message:
Need irq_lock to wait on irq_queue.  From mrg@.


To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 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.50 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.51
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.50	Mon Aug 27 14:14:29 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Mon Aug 27 14:44:46 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem.c,v 1.50 2018/08/27 14:14:29 riastradh Exp $	*/
+/*	$NetBSD: i915_gem.c,v 1.51 2018/08/27 14:44:46 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.50 2018/08/27 14:14:29 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.51 2018/08/27 14:44:46 riastradh Exp $");
 
 #ifdef __NetBSD__
 #if 0/* XXX uvmhist option?  */
@@ -1448,6 +1448,7 @@ int __i915_wait_request(struct drm_i915_
 	((wedged = (reset_counter !=	  \
 		atomic_read(_priv->gpu_error.reset_counter))) ||	  \
 	i915_gem_request_completed(req, false))
+	spin_lock(_priv->irq_lock);
 	if (timeout) {
 		int ticks = missed_irq(dev_priv, ring) ? 1 :
 		nsecs_to_jiffies_timeout(*timeout);
@@ -1474,6 +1475,7 @@ int __i915_wait_request(struct drm_i915_
 		}
 		/* ret is negative on failure or zero on success.  */
 	}
+	spin_unlock(_priv->irq_lock);
 	if (wedged) {
 		ret = i915_gem_check_wedge(_priv->gpu_error, interruptible);
 		if (ret == 0)



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c

Log Message:
Use uvm_map directly and make sure we unmap correct length.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.12
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.11	Mon Aug 27 14:44:16 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 14:44:30 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.11 2018/08/27 14:44:16 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.12 2018/08/27 14:44:30 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.11 2018/08/27 14:44:16 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.12 2018/08/27 14:44:30 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -860,28 +860,10 @@ find_reg(const struct drm_i915_reg_descr
 	return NULL;
 }
 
+#ifndef __NetBSD__
 static u32 *vmap_batch(struct drm_i915_gem_object *obj,
 		   unsigned start, unsigned len)
 {
-#ifdef __NetBSD__
-	/* Round to an integral number of pages starting on page boundary.  */
-	unsigned start0 = rounddown(start, PAGE_SIZE);
-	unsigned len0 = roundup(start + len, PAGE_SIZE) - start0;
-	vaddr_t va = 0;
-	int error;
-
-	error = uvm_map(kernel_map, , len0, obj->base.filp, start0,
-	PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE,
-		UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT));
-	if (error)
-		return NULL;
-
-	/* uvm_map consumes a reference on success.  */
-	uao_reference(obj->base.filp);
-
-	/* Caller will take care of finding the offset in the page.  */
-	return (void *)va;
-#else
 	int i;
 	void *addr = NULL;
 	struct sg_page_iter sg_iter;
@@ -913,8 +895,8 @@ finish:
 	if (pages)
 		drm_free_large(pages);
 	return (u32*)addr;
-#endif	/* __NetBSD__ */
 }
+#endif	/* __NetBSD__ */
 
 /* Returns a vmap'd pointer to dest_obj, which the caller must unmap */
 static u32 *copy_batch(struct drm_i915_gem_object *dest_obj,
@@ -940,12 +922,29 @@ static u32 *copy_batch(struct drm_i915_g
 		return ERR_PTR(ret);
 	}
 
+#ifdef __NetBSD__
+	const u32 srcstart = rounddown(batch_start_offset, PAGE_SIZE);
+	const u32 srclen = roundup(batch_start_offset + batch_len, PAGE_SIZE)
+	- srcstart;
+	vaddr_t srcva = 0;	/* hint */
+
+	/* XXX errno NetBSD->Linux */
+	ret = -uvm_map(kernel_map, , srclen, src_obj->base.filp,
+	srcstart, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW,
+		UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT));
+	if (ret) {
+		DRM_DEBUG_DRIVER("CMD: Failed to vmap batch: %d\n", ret);
+		goto unpin_src;
+	}
+	src_base = (void *)srcva;
+#else
 	src_base = vmap_batch(src_obj, batch_start_offset, batch_len);
 	if (!src_base) {
 		DRM_DEBUG_DRIVER("CMD: Failed to vmap batch\n");
 		ret = -ENOMEM;
 		goto unpin_src;
 	}
+#endif
 
 	ret = i915_gem_object_set_to_cpu_domain(dest_obj, true);
 	if (ret) {
@@ -953,12 +952,27 @@ static u32 *copy_batch(struct drm_i915_g
 		goto unmap_src;
 	}
 
+#ifdef __NetBSD__
+	const u32 dststart = rounddown(0, PAGE_SIZE);
+	const u32 dstlen = roundup(0 + batch_len, PAGE_SIZE) - dststart;
+	vaddr_t dstva = 0;	/* hint */
+
+	ret = -uvm_map(kernel_map, , dstlen, dest_obj->base.filp,
+	dststart, PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW,
+		UVM_INH_NONE, UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT));
+	if (ret) {
+		DRM_DEBUG_DRIVER("CMD: Failed to vmap shadow batch: %d\n", ret);
+		goto unmap_src;
+	}
+	dst = (void *)dstva;
+#else
 	dst = vmap_batch(dest_obj, 0, batch_len);
 	if (!dst) {
 		DRM_DEBUG_DRIVER("CMD: Failed to vmap shadow batch\n");
 		ret = -ENOMEM;
 		goto unmap_src;
 	}
+#endif
 
 	src = (char *)src_base + offset_in_page(batch_start_offset);
 	if (needs_clflush)
@@ -968,7 +982,7 @@ static u32 *copy_batch(struct drm_i915_g
 
 unmap_src:
 #ifdef __NetBSD__
-	uvm_unmap(kernel_map, (vaddr_t)src_base, batch_len);
+	uvm_unmap(kernel_map, srcva, srclen);
 #else
 	vunmap(src_base);
 #endif
@@ -1224,7 +1238,8 @@ int i915_parse_cmds(struct intel_engine_
 	}
 
 #ifdef __NetBSD__
-	uvm_unmap(kernel_map, (vaddr_t)batch_base, batch_obj->base.size);
+	uvm_unmap(kernel_map, (vaddr_t)batch_base,
+	roundup(batch_len, PAGE_SIZE));
 #else
 	vunmap(batch_base);
 #endif



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c

Log Message:
Fix mapping of non-page-aligned stuff in vmap_batch.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.10 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.11
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.10	Mon Aug 27 14:44:04 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 14:44:16 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.10 2018/08/27 14:44:04 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.11 2018/08/27 14:44:16 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.10 2018/08/27 14:44:04 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.11 2018/08/27 14:44:16 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -864,11 +864,14 @@ static u32 *vmap_batch(struct drm_i915_g
 		   unsigned start, unsigned len)
 {
 #ifdef __NetBSD__
+	/* Round to an integral number of pages starting on page boundary.  */
+	unsigned start0 = rounddown(start, PAGE_SIZE);
+	unsigned len0 = roundup(start + len, PAGE_SIZE) - start0;
 	vaddr_t va = 0;
 	int error;
 
-	error = uvm_map(kernel_map, , len, obj->base.filp, start,
-	sizeof(u32), UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE,
+	error = uvm_map(kernel_map, , len0, obj->base.filp, start0,
+	PAGE_SIZE, UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE,
 		UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT));
 	if (error)
 		return NULL;
@@ -876,6 +879,7 @@ static u32 *vmap_batch(struct drm_i915_g
 	/* uvm_map consumes a reference on success.  */
 	uao_reference(obj->base.filp);
 
+	/* Caller will take care of finding the offset in the page.  */
 	return (void *)va;
 #else
 	int i;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c

Log Message:
Remove wrong comment.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.9
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.8	Mon Aug 27 07:44:43 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 14:43:48 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.8 2018/08/27 07:44:43 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.9 2018/08/27 14:43:48 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.8 2018/08/27 07:44:43 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.9 2018/08/27 14:43:48 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -867,7 +867,6 @@ static u32 *vmap_batch(struct drm_i915_g
 	vaddr_t va = 0;
 	int error;
 
-	/* XXX errno NetBSD->Linux */
 	error = uvm_map(kernel_map, , len, obj->base.filp, start,
 	sizeof(u32), UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE,
 		UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT));



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c
i915_gem_render_state.c

Log Message:
uvm_map consumes reference on success, so be sure to acquire another.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.10
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.9	Mon Aug 27 14:43:48 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 14:44:04 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.9 2018/08/27 14:43:48 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.10 2018/08/27 14:44:04 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.9 2018/08/27 14:43:48 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.10 2018/08/27 14:44:04 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -873,6 +873,9 @@ static u32 *vmap_batch(struct drm_i915_g
 	if (error)
 		return NULL;
 
+	/* uvm_map consumes a reference on success.  */
+	uao_reference(obj->base.filp);
+
 	return (void *)va;
 #else
 	int i;

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.7	Mon Aug 27 13:43:22 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c	Mon Aug 27 14:44:04 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_render_state.c,v 1.7 2018/08/27 13:43:22 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_render_state.c,v 1.8 2018/08/27 14:44:04 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.7 2018/08/27 13:43:22 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.8 2018/08/27 14:44:04 riastradh Exp $");
 
 #include "i915_drv.h"
 #include "intel_renderstate.h"
@@ -121,6 +121,8 @@ static int render_state_setup(struct ren
 		UVM_ADV_NORMAL, 0));
 	if (ret)
 		return ret;
+	/* uvm_map consumes a reference on success.  */
+	uao_reference(so->obj->base.filp);
 	d = (void *)kva;
 #else
 	page = sg_page(so->obj->pages->sgl);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_sprite.c

Log Message:
Fix intel pipe update locking and whining.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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_sprite.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.7	Mon Aug 27 07:28:26 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c	Mon Aug 27 14:43:00 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_sprite.c,v 1.7 2018/08/27 07:28:26 riastradh Exp $	*/
+/*	$NetBSD: intel_sprite.c,v 1.8 2018/08/27 14:43:00 riastradh Exp $	*/
 
 /*
  * Copyright © 2011 Intel Corporation
@@ -32,7 +32,7 @@
  * support.
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.7 2018/08/27 07:28:26 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.8 2018/08/27 14:43:00 riastradh Exp $");
 
 #include 
 #include 
@@ -115,7 +115,7 @@ void intel_pipe_update_start(struct inte
 	if (min <= 0 || max <= 0)
 		return;
 
-	if (WARN_ON(drm_crtc_vblank_get(>base)))
+	if (WARN_ON(drm_crtc_vblank_get_locked(>base)))
 		return;
 
 	crtc->debug.min_vbl = min;
@@ -126,9 +126,10 @@ void intel_pipe_update_start(struct inte
 	DRM_SPIN_TIMED_WAIT_UNTIL(ret, wq, >vbl_lock, timeout,
 	(scanline = intel_get_crtc_scanline(crtc),
 		scanline < min || scanline > max));
-	if (ret)
-		DRM_ERROR("Potential atomic update failure on pipe %c\n",
-		pipe_name(crtc->pipe));
+	if (ret <= 0)
+		DRM_ERROR("Potential atomic update failure on pipe %c: %d\n",
+		pipe_name(crtc->pipe), ret ? ret : -EWOULDBLOCK);
+	drm_crtc_vblank_put_locked(>base);
 #else
 	for (;;) {
 		/*
@@ -156,9 +157,9 @@ void intel_pipe_update_start(struct inte
 	}
 
 	finish_wait(wq, );
-#endif
 
 	drm_crtc_vblank_put(>base);
+#endif
 
 	crtc->debug.scanline_start = scanline;
 	crtc->debug.start_vbl_time = ktime_get();



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_opregion.c

Log Message:
Newline-terminate error message.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 \
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.13 src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.14
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.13	Mon Aug 27 07:26:30 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c	Mon Aug 27 13:54:48 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_opregion.c,v 1.13 2018/08/27 07:26:30 riastradh Exp $	*/
+/*	$NetBSD: intel_opregion.c,v 1.14 2018/08/27 13:54:48 riastradh Exp $	*/
 
 /*
  * Copyright 2008 Intel Corporation 
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.13 2018/08/27 07:26:30 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.14 2018/08/27 13:54:48 riastradh Exp $");
 
 #include 
 #include 
@@ -999,7 +999,7 @@ int intel_opregion_setup(struct drm_devi
 	err = -bus_space_map(opregion->bst, asls, OPREGION_SIZE,
 	BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_PREFETCHABLE, >bsh);
 	if (err) {
-		DRM_DEBUG_DRIVER("Failed to map opregion: %d", err);
+		DRM_DEBUG_DRIVER("Failed to map opregion: %d\n", err);
 		return err;
 	}
 	base = bus_space_vaddr(opregion->bst, opregion->bsh);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c

Log Message:
With , we can now use cpu_has_pat.


To generate a diff of this commit:
cvs rdiff -u -r1.48 -r1.49 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.48 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.49
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.48	Mon Aug 27 13:41:37 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Mon Aug 27 13:44:29 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem.c,v 1.48 2018/08/27 13:41:37 riastradh Exp $	*/
+/*	$NetBSD: i915_gem.c,v 1.49 2018/08/27 13:44:29 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.48 2018/08/27 13:41:37 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.49 2018/08/27 13:44:29 riastradh Exp $");
 
 #ifdef __NetBSD__
 #if 0/* XXX uvmhist option?  */
@@ -67,6 +67,7 @@ __KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v
 #include 
 #include 
 #include 
+#include 
 
 #define RQ_BUG_ON(expr)
 
@@ -1933,11 +1934,8 @@ i915_gem_mmap_ioctl(struct drm_device *d
 	if (args->flags & ~(I915_MMAP_WC))
 		return -EINVAL;
 
-#if 0
-	/* XXX cpu_has_pat == CPUID_PAT, do we care to do this check */
 	if (args->flags & I915_MMAP_WC && !cpu_has_pat)
 		return -ENODEV;
-#endif
 
 	obj = drm_gem_object_lookup(dev, file, args->handle);
 	if (obj == NULL)



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_dma.c i915_drv.h
intel_uncore.c

Log Message:
Fold local intel_uncore_destroy into upstream intel_uncore_fini.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c \
src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
cvs rdiff -u -r1.8 -r1.9 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.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.22 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.23
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.22	Mon Aug 27 07:18:18 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c	Mon Aug 27 13:43:39 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_dma.c,v 1.22 2018/08/27 07:18:18 riastradh Exp $	*/
+/*	$NetBSD: i915_dma.c,v 1.23 2018/08/27 13:43:39 riastradh Exp $	*/
 
 /* i915_dma.c -- DMA support for the I915 -*- linux-c -*-
  */
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.22 2018/08/27 07:18:18 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_dma.c,v 1.23 2018/08/27 13:43:39 riastradh Exp $");
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
@@ -1183,7 +1183,6 @@ out_gtt:
 out_freecsr:
 	intel_csr_ucode_fini(dev);
 	intel_uncore_fini(dev);
-	intel_uncore_destroy(dev);
 	pci_iounmap(dev->pdev, dev_priv->regs);
 put_bridge:
 	pci_dev_put(dev_priv->bridge_dev);
@@ -1294,7 +1293,6 @@ int i915_driver_unload(struct drm_device
 	i915_global_gtt_cleanup(dev);
 
 	intel_uncore_fini(dev);
-	intel_uncore_destroy(dev);
 	if (dev_priv->regs != NULL)
 		pci_iounmap(dev->pdev, dev_priv->regs);
 
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.22 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.23
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.22	Mon Aug 27 07:57:12 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h	Mon Aug 27 13:43:39 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_drv.h,v 1.22 2018/08/27 07:57:12 riastradh Exp $	*/
+/*	$NetBSD: i915_drv.h,v 1.23 2018/08/27 13:43:39 riastradh Exp $	*/
 
 /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*-
  */
@@ -2798,7 +2798,6 @@ extern void intel_uncore_early_sanitize(
 extern void intel_uncore_init(struct drm_device *dev);
 extern void intel_uncore_check_errors(struct drm_device *dev);
 extern void intel_uncore_fini(struct drm_device *dev);
-extern void intel_uncore_destroy(struct drm_device *dev);
 extern void intel_uncore_forcewake_reset(struct drm_device *dev, bool restore);
 const char *intel_uncore_forcewake_domain_to_str(const enum forcewake_domain_id id);
 void intel_uncore_forcewake_get(struct drm_i915_private *dev_priv,

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.9
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.8	Mon Aug 27 07:29:20 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c	Mon Aug 27 13:43:39 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_uncore.c,v 1.8 2018/08/27 07:29:20 riastradh Exp $	*/
+/*	$NetBSD: intel_uncore.c,v 1.9 2018/08/27 13:43:39 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -24,7 +24,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_uncore.c,v 1.8 2018/08/27 07:29:20 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_uncore.c,v 1.9 2018/08/27 13:43:39 riastradh Exp $");
 
 #include "i915_drv.h"
 #include "intel_drv.h"
@@ -1288,17 +1288,16 @@ void intel_uncore_init(struct drm_device
 
 void intel_uncore_fini(struct drm_device *dev)
 {
+#ifdef __NetBSD__
+	struct drm_i915_private *const dev_priv = dev->dev_private;
+	unsigned i;
+#endif
+
 	/* Paranoia: make sure we have disabled everything before we exit. */
 	intel_uncore_sanitize(dev);
 	intel_uncore_forcewake_reset(dev, false);
-}
 
-void intel_uncore_destroy(struct drm_device *dev)
-{
 #ifdef __NetBSD__
-	struct drm_i915_private *const dev_priv = dev->dev_private;
-	unsigned i;
-
 	for (i = 0; i < FW_DOMAIN_ID_COUNT; i++) {
 		if (dev_priv->uncore.fw_domains & (1u << i))
 			teardown_timer(_priv->uncore.fw_domain[i].timer);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_render_state.c

Log Message:
Initialize kva hint for uvm_map to avoid using uninitialized memory.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.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_render_state.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.5	Mon Aug 27 07:19:01 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c	Mon Aug 27 13:43:12 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_render_state.c,v 1.5 2018/08/27 07:19:01 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_render_state.c,v 1.6 2018/08/27 13:43:12 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.5 2018/08/27 07:19:01 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.6 2018/08/27 13:43:12 riastradh Exp $");
 
 #include "i915_drv.h"
 #include "intel_renderstate.h"
@@ -101,7 +101,7 @@ static int render_state_setup(struct ren
 	const struct intel_renderstate_rodata *rodata = so->rodata;
 	unsigned int i = 0, reloc_index = 0;
 #ifdef __NetBSD__
-	vaddr_t kva;
+	vaddr_t kva = 0;	/* hint */
 #else
 	struct page *page;
 #endif



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_render_state.c

Log Message:
Move hint setting nearer to uvm_map for clarity.  CTASSERT page size.

Elsewhere this code says 4096, rather than PAGE_SIZE.  PAGE_SIZE is
the smallest unit that uvm_map accepts, so it had better match.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.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_render_state.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.6	Mon Aug 27 13:43:12 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c	Mon Aug 27 13:43:22 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_render_state.c,v 1.6 2018/08/27 13:43:12 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_render_state.c,v 1.7 2018/08/27 13:43:22 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.6 2018/08/27 13:43:12 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.7 2018/08/27 13:43:22 riastradh Exp $");
 
 #include "i915_drv.h"
 #include "intel_renderstate.h"
@@ -101,7 +101,7 @@ static int render_state_setup(struct ren
 	const struct intel_renderstate_rodata *rodata = so->rodata;
 	unsigned int i = 0, reloc_index = 0;
 #ifdef __NetBSD__
-	vaddr_t kva = 0;	/* hint */
+	vaddr_t kva;
 #else
 	struct page *page;
 #endif
@@ -113,6 +113,8 @@ static int render_state_setup(struct ren
 		return ret;
 
 #ifdef __NetBSD__
+	CTASSERT(PAGE_SIZE == 4096);
+	kva = 0;		/* hint */
 	/* XXX errno NetBSD->Linux */
 	ret = -uvm_map(kernel_map, , PAGE_SIZE, so->obj->base.filp, 0,
 	sizeof(*d), UVM_MAPFLAG(UVM_PROT_W, UVM_PROT_W, UVM_INH_NONE,



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c

Log Message:
Remove temporary diagnostic now that I know I forgot uio_offset.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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_guc_loader.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.10 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.11
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.10	Mon Aug 27 13:42:35 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c	Mon Aug 27 13:43:01 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_guc_loader.c,v 1.10 2018/08/27 13:42:35 riastradh Exp $	*/
+/*	$NetBSD: intel_guc_loader.c,v 1.11 2018/08/27 13:43:01 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -29,7 +29,7 @@
  *Alex Dai 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.10 2018/08/27 13:42:35 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.11 2018/08/27 13:43:01 riastradh Exp $");
 
 #include 
 #include 
@@ -539,36 +539,6 @@ static void guc_fw_fetch(struct drm_devi
 		goto fail;
 	}
 
-#ifdef __NetBSD__		/* XXX temporary diagnostic kludge */
-	{
-		void *buf = kmem_alloc(fw->size, KM_SLEEP);
-		struct iovec iov;
-		struct uio uio;
-		iov.iov_base = buf;
-		iov.iov_len = fw->size;
-		uio.uio_iov = 
-		uio.uio_iovcnt = 1;
-		uio.uio_offset = 0;
-		uio.uio_resid = fw->size;
-		uio.uio_rw = UIO_READ;
-		UIO_SETUP_SYSSPACE();
-		err = -ubc_uiomove(obj->base.filp, , fw->size,
-		UVM_ADV_NORMAL, UBC_READ);
-		if (err) {
-			DRM_DEBUG_DRIVER("ubc_uiomove failed for test: %d\n",
-			err);
-			kmem_free(buf, fw->size);
-			goto fail;
-		}
-		if (memcmp(fw->data, buf, fw->size) != 0) {
-			DRM_DEBUG_DRIVER("firmware copy corrupted\n");
-			kmem_free(buf, fw->size);
-			goto fail;
-		}
-		kmem_free(buf, fw->size);
-	}
-#endif
-
 	guc_fw->guc_fw_obj = obj;
 	guc_fw->guc_fw_size = fw->size;
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c

Log Message:
Don't forget to initialize uio_offset.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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_guc_loader.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.10
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.9	Mon Aug 27 13:42:12 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c	Mon Aug 27 13:42:35 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_guc_loader.c,v 1.9 2018/08/27 13:42:12 riastradh Exp $	*/
+/*	$NetBSD: intel_guc_loader.c,v 1.10 2018/08/27 13:42:35 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -29,7 +29,7 @@
  *Alex Dai 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.9 2018/08/27 13:42:12 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.10 2018/08/27 13:42:35 riastradh Exp $");
 
 #include 
 #include 
@@ -548,6 +548,7 @@ static void guc_fw_fetch(struct drm_devi
 		iov.iov_len = fw->size;
 		uio.uio_iov = 
 		uio.uio_iovcnt = 1;
+		uio.uio_offset = 0;
 		uio.uio_resid = fw->size;
 		uio.uio_rw = UIO_READ;
 		UIO_SETUP_SYSSPACE();



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c

Log Message:
Transfer from the correct offset.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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_guc_loader.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.9
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.8	Mon Aug 27 13:41:50 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c	Mon Aug 27 13:42:12 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_guc_loader.c,v 1.8 2018/08/27 13:41:50 riastradh Exp $	*/
+/*	$NetBSD: intel_guc_loader.c,v 1.9 2018/08/27 13:42:12 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -29,7 +29,7 @@
  *Alex Dai 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.8 2018/08/27 13:41:50 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.9 2018/08/27 13:42:12 riastradh Exp $");
 
 #include 
 #include 
@@ -262,7 +262,7 @@ static int guc_ucode_xfer_dma(struct drm
 	iov.iov_len = UOS_RSA_SIG_SIZE;
 	uio.uio_iov = 
 	uio.uio_iovcnt = 1;
-	uio.uio_offset = 0;
+	uio.uio_offset = offset;
 	uio.uio_resid = UOS_RSA_SIG_SIZE;
 	uio.uio_rw = UIO_READ;
 	UIO_SETUP_SYSSPACE();



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c

Log Message:
Temporary diagnostic kludge: confirm the ubc_uiomove worked as expected.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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_guc_loader.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.7	Mon Aug 27 13:40:28 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c	Mon Aug 27 13:41:50 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_guc_loader.c,v 1.7 2018/08/27 13:40:28 riastradh Exp $	*/
+/*	$NetBSD: intel_guc_loader.c,v 1.8 2018/08/27 13:41:50 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -29,7 +29,7 @@
  *Alex Dai 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.7 2018/08/27 13:40:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.8 2018/08/27 13:41:50 riastradh Exp $");
 
 #include 
 #include 
@@ -539,6 +539,35 @@ static void guc_fw_fetch(struct drm_devi
 		goto fail;
 	}
 
+#ifdef __NetBSD__		/* XXX temporary diagnostic kludge */
+	{
+		void *buf = kmem_alloc(fw->size, KM_SLEEP);
+		struct iovec iov;
+		struct uio uio;
+		iov.iov_base = buf;
+		iov.iov_len = fw->size;
+		uio.uio_iov = 
+		uio.uio_iovcnt = 1;
+		uio.uio_resid = fw->size;
+		uio.uio_rw = UIO_READ;
+		UIO_SETUP_SYSSPACE();
+		err = -ubc_uiomove(obj->base.filp, , fw->size,
+		UVM_ADV_NORMAL, UBC_READ);
+		if (err) {
+			DRM_DEBUG_DRIVER("ubc_uiomove failed for test: %d\n",
+			err);
+			kmem_free(buf, fw->size);
+			goto fail;
+		}
+		if (memcmp(fw->data, buf, fw->size) != 0) {
+			DRM_DEBUG_DRIVER("firmware copy corrupted\n");
+			kmem_free(buf, fw->size);
+			goto fail;
+		}
+		kmem_free(buf, fw->size);
+	}
+#endif
+
 	guc_fw->guc_fw_obj = obj;
 	guc_fw->guc_fw_size = fw->size;
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c

Log Message:
Guess what uvm criterion means we should discard backing pages.


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 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.47 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.48
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.47	Mon Aug 27 13:40:28 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Mon Aug 27 13:41:37 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem.c,v 1.47 2018/08/27 13:40:28 riastradh Exp $	*/
+/*	$NetBSD: i915_gem.c,v 1.48 2018/08/27 13:41:37 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.47 2018/08/27 13:40:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.48 2018/08/27 13:41:37 riastradh Exp $");
 
 #ifdef __NetBSD__
 #if 0/* XXX uvmhist option?  */
@@ -5025,9 +5025,6 @@ struct drm_i915_gem_object *i915_gem_all
 
 static bool discard_backing_storage(struct drm_i915_gem_object *obj)
 {
-#ifdef __NetBSD__
-	panic("XXX");
-#else
 	/* If we are the last user of the backing storage (be it shmemfs
 	 * pages or stolen etc), we know that the pages are going to be
 	 * immediately released. In this case, we can then skip copying
@@ -5047,6 +5044,10 @@ static bool discard_backing_storage(stru
 	 * acquiring such a reference whilst we are in the middle of
 	 * freeing the object.
 	 */
+#ifdef __NetBSD__
+	/* XXX This number might be a fencepost.  */
+	return obj->base.filp->uo_refs == 1;
+#else
 	return atomic_long_read(>base.filp->f_count) == 1;
 #endif
 }



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c intel_guc_loader.c

Log Message:
Don't forget to set .uio_offset and to call UIO_SETUP_SYSSPACE.


To generate a diff of this commit:
cvs rdiff -u -r1.46 -r1.47 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
cvs rdiff -u -r1.6 -r1.7 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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.46 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.47
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.46	Mon Aug 27 07:45:55 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Mon Aug 27 13:40:28 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem.c,v 1.46 2018/08/27 07:45:55 riastradh Exp $	*/
+/*	$NetBSD: i915_gem.c,v 1.47 2018/08/27 13:40:28 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.46 2018/08/27 07:45:55 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.47 2018/08/27 13:40:28 riastradh Exp $");
 
 #ifdef __NetBSD__
 #if 0/* XXX uvmhist option?  */
@@ -5845,6 +5845,7 @@ i915_gem_object_create_from_data(struct 
 	struct uio uio = {
 	.uio_iov = ,
 	.uio_iovcnt = 1,
+	.uio_offset = 0,
 	.uio_resid = size,
 	.uio_rw = UIO_WRITE,
 	};
@@ -5868,6 +5869,7 @@ i915_gem_object_create_from_data(struct 
 
 	i915_gem_object_pin_pages(obj);
 #ifdef __NetBSD__
+	UIO_SETUP_SYSSPACE();
 	/* XXX errno NetBSD->Linux */
 	ret = -ubc_uiomove(obj->base.filp, , size, UVM_ADV_NORMAL,
 	UBC_WRITE);

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.6	Mon Aug 27 07:22:59 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c	Mon Aug 27 13:40:28 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_guc_loader.c,v 1.6 2018/08/27 07:22:59 riastradh Exp $	*/
+/*	$NetBSD: intel_guc_loader.c,v 1.7 2018/08/27 13:40:28 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -29,7 +29,7 @@
  *Alex Dai 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.6 2018/08/27 07:22:59 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.7 2018/08/27 13:40:28 riastradh Exp $");
 
 #include 
 #include 
@@ -262,8 +262,10 @@ static int guc_ucode_xfer_dma(struct drm
 	iov.iov_len = UOS_RSA_SIG_SIZE;
 	uio.uio_iov = 
 	uio.uio_iovcnt = 1;
+	uio.uio_offset = 0;
 	uio.uio_resid = UOS_RSA_SIG_SIZE;
 	uio.uio_rw = UIO_READ;
+	UIO_SETUP_SYSSPACE();
 	/* XXX errno NetBSD->Linux */
 	ret = -ubc_uiomove(fw_obj->base.filp, , UOS_RSA_SIG_SIZE,
 	UVM_ADV_NORMAL, UBC_READ);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_audio.c

Log Message:
Const cast for read from const void *.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.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_audio.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.3	Mon Aug 27 07:19:23 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c	Mon Aug 27 07:56:36 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_audio.c,v 1.3 2018/08/27 07:19:23 riastradh Exp $	*/
+/*	$NetBSD: intel_audio.c,v 1.4 2018/08/27 07:56:36 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -24,7 +24,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_audio.c,v 1.3 2018/08/27 07:19:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_audio.c,v 1.4 2018/08/27 07:56:36 riastradh Exp $");
 
 #include 
 #include 
@@ -243,7 +243,7 @@ static void g4x_audio_codec_enable(struc
 	len = min(drm_eld_size(eld) / 4, len);
 	DRM_DEBUG_DRIVER("ELD size %d\n", len);
 	for (i = 0; i < len; i++)
-		I915_WRITE(G4X_HDMIW_HDMIEDID, *((uint32_t *)eld + i));
+		I915_WRITE(G4X_HDMIW_HDMIEDID, *((const uint32_t *)eld + i));
 
 	tmp = I915_READ(G4X_AUD_CNTL_ST);
 	tmp |= eldv;
@@ -322,7 +322,7 @@ static void hsw_audio_codec_enable(struc
 	/* Up to 84 bytes of hw ELD buffer */
 	len = min(drm_eld_size(eld), 84);
 	for (i = 0; i < len / 4; i++)
-		I915_WRITE(HSW_AUD_EDID_DATA(pipe), *((uint32_t *)eld + i));
+		I915_WRITE(HSW_AUD_EDID_DATA(pipe), *((const uint32_t *)eld + i));
 
 	/* ELD valid */
 	tmp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD);
@@ -471,7 +471,7 @@ static void ilk_audio_codec_enable(struc
 	/* Up to 84 bytes of hw ELD buffer */
 	len = min(drm_eld_size(eld), 84);
 	for (i = 0; i < len / 4; i++)
-		I915_WRITE(hdmiw_hdmiedid, *((uint32_t *)eld + i));
+		I915_WRITE(hdmiw_hdmiedid, *((const uint32_t *)eld + i));
 
 	/* ELD valid */
 	tmp = I915_READ(aud_cntrl_st2);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_fbdev.c

Log Message:
Ifdef out linux fb api stuff.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.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_fbdev.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.9
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.8	Mon Aug 27 07:55:28 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c	Mon Aug 27 07:55:39 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_fbdev.c,v 1.8 2018/08/27 07:55:28 riastradh Exp $	*/
+/*	$NetBSD: intel_fbdev.c,v 1.9 2018/08/27 07:55:39 riastradh Exp $	*/
 
 /*
  * Copyright © 2007 David Airlie
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.8 2018/08/27 07:55:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.9 2018/08/27 07:55:39 riastradh Exp $");
 
 #include 
 #include 
@@ -327,8 +327,10 @@ static int intelfb_create(struct drm_fb_
 #endif
 	return 0;
 
+#ifndef __NetBSD__
 out_destroy_fbi:
 	drm_fb_helper_release_fbi(helper);
+#endif
 out_unpin:
 	i915_gem_object_ggtt_unpin(obj);
 	drm_gem_object_unreference(>base);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_fbdev.c

Log Message:
Fix 64-bit printf.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.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_fbdev.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c:1.7	Mon Aug 27 06:16:37 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbdev.c	Mon Aug 27 07:55:28 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_fbdev.c,v 1.7 2018/08/27 06:16:37 riastradh Exp $	*/
+/*	$NetBSD: intel_fbdev.c,v 1.8 2018/08/27 07:55:28 riastradh Exp $	*/
 
 /*
  * Copyright © 2007 David Airlie
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.7 2018/08/27 06:16:37 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_fbdev.c,v 1.8 2018/08/27 07:55:28 riastradh Exp $");
 
 #include 
 #include 
@@ -317,7 +317,7 @@ static int intelfb_create(struct drm_fb_
 
 	/* Use default scratch pixmap (info->pixmap.flags = FB_PIXMAP_SYSTEM) */
 
-	DRM_DEBUG_KMS("allocated %dx%d fb: 0x%08llx, bo %p\n",
+	DRM_DEBUG_KMS("allocated %dx%d fb: 0x%08"PRIx64", bo %p\n",
 		  fb->width, fb->height,
 		  i915_gem_obj_ggtt_offset(obj), obj);
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_drv.c

Log Message:
Disable legacy mmap in i915.


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_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/dist/drm/i915/i915_drv.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c:1.11 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c:1.12
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c:1.11	Mon Aug 27 07:04:44 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.c	Mon Aug 27 07:51:16 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_drv.c,v 1.11 2018/08/27 07:04:44 riastradh Exp $	*/
+/*	$NetBSD: i915_drv.c,v 1.12 2018/08/27 07:51:16 riastradh Exp $	*/
 
 /* i915_drv.c -- i830,i845,i855,i865,i915 driver -*- linux-c -*-
  */
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_drv.c,v 1.11 2018/08/27 07:04:44 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_drv.c,v 1.12 2018/08/27 07:51:16 riastradh Exp $");
 
 #include 
 #include 
@@ -1769,7 +1769,7 @@ static struct drm_driver driver = {
 	.gem_free_object = i915_gem_free_object,
 #ifdef __NetBSD__
 	/* XXX Not clear the `or legacy' part is important here.  */
-	.mmap_object = _gem_or_legacy_mmap_object,
+	.mmap_object = _gem_mmap_object,
 	.gem_uvm_ops = _gem_uvm_ops,
 #else
 	.gem_vm_ops = _gem_vm_ops,



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c

Log Message:
Just use uvm_map on the uvm object instead of futzing with pages.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.7	Mon Aug 27 07:17:35 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 07:44:43 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.8 2018/08/27 07:44:43 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.8 2018/08/27 07:44:43 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -863,13 +863,22 @@ find_reg(const struct drm_i915_reg_descr
 static u32 *vmap_batch(struct drm_i915_gem_object *obj,
 		   unsigned start, unsigned len)
 {
-	int i;
-	void *addr = NULL;
 #ifdef __NetBSD__
-	struct vm_page *page;
+	vaddr_t va = 0;
+	int error;
+
+	/* XXX errno NetBSD->Linux */
+	error = uvm_map(kernel_map, , len, obj->base.filp, start,
+	sizeof(u32), UVM_MAPFLAG(UVM_PROT_RW, UVM_PROT_RW, UVM_INH_NONE,
+		UVM_ADV_SEQUENTIAL, UVM_FLAG_NOWAIT));
+	if (error)
+		return NULL;
+
+	return (void *)va;
 #else
+	int i;
+	void *addr = NULL;
 	struct sg_page_iter sg_iter;
-#endif
 	int first_page = start >> PAGE_SHIFT;
 	int last_page = (len + start + 4095) >> PAGE_SHIFT;
 	int npages = last_page - first_page;
@@ -882,26 +891,11 @@ static u32 *vmap_batch(struct drm_i915_g
 	}
 
 	i = 0;
-#ifdef __NetBSD__
-	/*
-	 * XXX Why do we work through the page queue instead of just
-	 * using uvm_map?
-	 */
-	TAILQ_FOREACH(page, >pageq, pageq.queue) {
-		if (first_page-- > 0)
-			continue;
-		if (i == npages)
-			break;
-		pages[i] = container_of(page, struct page, p_vmp);
-		i++;
-	}
-#else
 	for_each_sg_page(obj->pages->sgl, _iter, obj->pages->nents, first_page) {
 		pages[i++] = sg_page_iter_page(_iter);
 		if (i == npages)
 			break;
 	}
-#endif
 
 	addr = vmap(pages, i, 0, PAGE_KERNEL);
 	if (addr == NULL) {
@@ -913,6 +907,7 @@ finish:
 	if (pages)
 		drm_free_large(pages);
 	return (u32*)addr;
+#endif	/* __NetBSD__ */
 }
 
 /* Returns a vmap'd pointer to dest_obj, which the caller must unmap */
@@ -967,7 +962,7 @@ static u32 *copy_batch(struct drm_i915_g
 
 unmap_src:
 #ifdef __NetBSD__
-	vunmap(src_base, batch_len / PAGE_SIZE);
+	uvm_unmap(kernel_map, (vaddr_t)src_base, batch_len);
 #else
 	vunmap(src_base);
 #endif
@@ -1223,7 +1218,7 @@ int i915_parse_cmds(struct intel_engine_
 	}
 
 #ifdef __NetBSD__
-	vunmap(batch_base, batch_obj->base.size / PAGE_SIZE);
+	uvm_unmap(kernel_map, (vaddr_t)batch_base, batch_obj->base.size);
 #else
 	vunmap(batch_base);
 #endif



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_pm.c

Log Message:
Mark unused.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 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.13 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.14
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.13	Mon Aug 27 07:27:51 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c	Mon Aug 27 07:29:37 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_pm.c,v 1.13 2018/08/27 07:27:51 riastradh Exp $	*/
+/*	$NetBSD: intel_pm.c,v 1.14 2018/08/27 07:29:37 riastradh Exp $	*/
 
 /*
  * Copyright © 2012 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_pm.c,v 1.13 2018/08/27 07:27:51 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_pm.c,v 1.14 2018/08/27 07:29:37 riastradh Exp $");
 
 #include 
 #include 
@@ -489,14 +489,14 @@ static const struct intel_watermark_para
 	.guard_size = 2,
 	.cacheline_size = G4X_FIFO_LINE_SIZE,
 };
-static const struct intel_watermark_params valleyview_wm_info = {
+static const struct intel_watermark_params valleyview_wm_info __unused = {
 	.fifo_size = VALLEYVIEW_FIFO_SIZE,
 	.max_wm = VALLEYVIEW_MAX_WM,
 	.default_wm = VALLEYVIEW_MAX_WM,
 	.guard_size = 2,
 	.cacheline_size = G4X_FIFO_LINE_SIZE,
 };
-static const struct intel_watermark_params valleyview_cursor_wm_info = {
+static const struct intel_watermark_params valleyview_cursor_wm_info __unused = {
 	.fifo_size = I965_CURSOR_FIFO,
 	.max_wm = VALLEYVIEW_CURSOR_MAX_WM,
 	.default_wm = I965_CURSOR_DFT_WM,



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_runtime_pm.c

Log Message:
Fix mutex destroy pointer.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_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_runtime_pm.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.4	Mon Aug 27 07:30:25 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c	Mon Aug 27 07:30:37 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_runtime_pm.c,v 1.4 2018/08/27 07:30:25 riastradh Exp $	*/
+/*	$NetBSD: intel_runtime_pm.c,v 1.5 2018/08/27 07:30:37 riastradh Exp $	*/
 
 /*
  * Copyright © 2012-2014 Intel Corporation
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.4 2018/08/27 07:30:25 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.5 2018/08/27 07:30:37 riastradh Exp $");
 
 #include 
 #include 
@@ -1939,9 +1939,9 @@ void intel_power_domains_fini(struct drm
 	intel_display_set_init_power(dev_priv, true);
 
 #ifdef __NetBSD__
-	linux_mutex_destroy(_priv->power_domains->lock);
+	linux_mutex_destroy(_priv->power_domains.lock);
 #else
-	mutex_destroy(_priv->power_domains->lock);
+	mutex_destroy(_priv->power_domains.lock);
 #endif
 }
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_ringbuffer.c

Log Message:
Fix up some borken merges.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.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_ringbuffer.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c:1.7	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.c	Mon Aug 27 07:29:50 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_ringbuffer.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_ringbuffer.c,v 1.8 2018/08/27 07:29:50 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2010 Intel Corporation
@@ -30,7 +30,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_ringbuffer.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_ringbuffer.c,v 1.8 2018/08/27 07:29:50 riastradh Exp $");
 
 #include 
 #include 
@@ -670,7 +670,12 @@ intel_fini_pipe_control(struct intel_eng
 		return;
 
 	if (INTEL_INFO(dev)->gen >= 5) {
+#ifdef __NetBSD__
+		kunmap(container_of(TAILQ_FIRST(>scratch.obj->pageq),
+			struct page, p_vmp));
+#else
 		kunmap(sg_page(ring->scratch.obj->pages->sgl));
+#endif
 		i915_gem_object_ggtt_unpin(ring->scratch.obj);
 	}
 
@@ -703,7 +708,7 @@ intel_init_pipe_control(struct intel_eng
 	ring->scratch.gtt_offset = i915_gem_obj_ggtt_offset(ring->scratch.obj);
 #ifdef __NetBSD__
 	ring->scratch.cpu_page =
-	kmap(container_of(TAILQ_FIRST(>scratch.obj->igo_pageq),
+	kmap(container_of(TAILQ_FIRST(>scratch.obj->pageq),
 		struct page, p_vmp));
 #else
 	ring->scratch.cpu_page = kmap(sg_page(ring->scratch.obj->pages->sgl));
@@ -1954,7 +1959,7 @@ static void cleanup_status_page(struct i
 		return;
 
 #ifdef __NetBSD__
-	kunmap(container_of(TAILQ_FIRST(>igo_pageq), struct page, p_vmp));
+	kunmap(container_of(TAILQ_FIRST(>pageq), struct page, p_vmp));
 #else
 	kunmap(sg_page(obj->pages->sgl));
 #endif
@@ -2007,15 +2012,10 @@ err_unref:
 	ring->status_page.gfx_addr = i915_gem_obj_ggtt_offset(obj);
 #ifdef __NetBSD__
 	ring->status_page.page_addr =
-	kmap(container_of(TAILQ_FIRST(>igo_pageq), struct page,
-		p_vmp));
+	kmap(container_of(TAILQ_FIRST(>pageq), struct page, p_vmp));
 #else
 	ring->status_page.page_addr = kmap(sg_page(obj->pages->sgl));
 #endif
-	if (ring->status_page.page_addr == NULL) {
-		ret = -ENOMEM;
-		goto err_unpin;
-	}
 	memset(ring->status_page.page_addr, 0, PAGE_SIZE);
 
 	DRM_DEBUG_DRIVER("%s hws offset: 0x%08x\n",
@@ -2047,8 +2047,8 @@ void intel_unpin_ringbuffer_obj(struct i
 	bus_space_unmap(ringbuf->bst, ringbuf->bsh, ringbuf->size);
 #else
 	iounmap(ringbuf->virtual_start);
-#endif
 	ringbuf->virtual_start = NULL;
+#endif
 	i915_gem_object_ggtt_unpin(ringbuf->obj);
 }
 
@@ -2072,7 +2072,7 @@ int intel_pin_and_map_ringbuffer_obj(str
 #ifdef __NetBSD__
 	/* XXX errno NetBSD->Linux */
 	ringbuf->bst = dev_priv->dev->pdev->pd_pa.pa_memt;
-	ret = -bus_space_map(ring->bst, (dev_priv->gtt.mappable_base +
+	ret = -bus_space_map(ringbuf->bst, (dev_priv->gtt.mappable_base +
 		i915_gem_obj_ggtt_offset(obj)),
 	ringbuf->size, BUS_SPACE_MAP_PREFETCHABLE, >bsh);
 	if (ret) {
@@ -2238,6 +2238,7 @@ void intel_cleanup_ring_buffer(struct in
 
 	if (ring->cleanup)
 		ring->cleanup(ring);
+
 	if (I915_NEED_GFX_HWS(ring->dev)) {
 		cleanup_status_page(ring);
 	} else {
@@ -2292,8 +2293,8 @@ static void __wrap_ring_buffer(struct in
 	int rem = ringbuf->size - ringbuf->tail;
 
 #ifdef __NetBSD__
-	bus_space_set_region_4(ring->bst, ring->bsh, ring->tail, MI_NOOP,
-	rem/4);
+	bus_space_set_region_4(ringbuf->bst, ringbuf->bsh, ringbuf->tail,
+	MI_NOOP, rem/4);
 #else
 	virt = ringbuf->virtual_start + ringbuf->tail;
 	rem /= 4;
@@ -2845,7 +2846,6 @@ int intel_init_render_ring_buffer(struct
 		ret = intel_init_pipe_control(ring);
 		if (ret)
 			return ret;
-		}
 	}
 
 	return 0;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_runtime_pm.c

Log Message:
enum pipe -> enum i915_pipe


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_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_runtime_pm.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c	Mon Aug 27 07:30:13 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_runtime_pm.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_runtime_pm.c,v 1.3 2018/08/27 07:30:13 riastradh Exp $	*/
 
 /*
  * Copyright © 2012-2014 Intel Corporation
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.3 2018/08/27 07:30:13 riastradh Exp $");
 
 #include 
 #include 
@@ -868,7 +868,7 @@ static bool vlv_power_well_enabled(struc
 
 static void vlv_display_power_well_init(struct drm_i915_private *dev_priv)
 {
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	/*
 	 * Enable the CRI clock source so we can get at the
@@ -960,7 +960,7 @@ static void vlv_dpio_cmn_power_well_enab
 static void vlv_dpio_cmn_power_well_disable(struct drm_i915_private *dev_priv,
 	struct i915_power_well *power_well)
 {
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DPIO_CMN_BC);
 
@@ -1101,7 +1101,7 @@ static void chv_dpio_cmn_power_well_enab
 	   struct i915_power_well *power_well)
 {
 	enum dpio_phy phy;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	uint32_t tmp;
 
 	WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DPIO_CMN_BC &&
@@ -1191,7 +1191,7 @@ static void chv_dpio_cmn_power_well_disa
 static void assert_chv_phy_powergate(struct drm_i915_private *dev_priv, enum dpio_phy phy,
  enum dpio_channel ch, bool override, unsigned int mask)
 {
-	enum pipe pipe = phy == DPIO_PHY0 ? PIPE_A : PIPE_C;
+	enum i915_pipe pipe = phy == DPIO_PHY0 ? PIPE_A : PIPE_C;
 	u32 reg, val, expected, actual;
 
 	/*
@@ -1314,7 +1314,7 @@ void chv_phy_powergate_lanes(struct inte
 static bool chv_pipe_power_well_enabled(struct drm_i915_private *dev_priv,
 	struct i915_power_well *power_well)
 {
-	enum pipe pipe = power_well->data;
+	enum i915_pipe pipe = power_well->data;
 	bool enabled;
 	u32 state, ctrl;
 
@@ -1344,7 +1344,7 @@ static void chv_set_pipe_power_well(stru
 struct i915_power_well *power_well,
 bool enable)
 {
-	enum pipe pipe = power_well->data;
+	enum i915_pipe pipe = power_well->data;
 	u32 state;
 	u32 ctrl;
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_runtime_pm.c

Log Message:
Implement vga twiddling.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_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_runtime_pm.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c:1.3	Mon Aug 27 07:30:13 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_runtime_pm.c	Mon Aug 27 07:30:25 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_runtime_pm.c,v 1.3 2018/08/27 07:30:13 riastradh Exp $	*/
+/*	$NetBSD: intel_runtime_pm.c,v 1.4 2018/08/27 07:30:25 riastradh Exp $	*/
 
 /*
  * Copyright © 2012-2014 Intel Corporation
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.3 2018/08/27 07:30:13 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_runtime_pm.c,v 1.4 2018/08/27 07:30:25 riastradh Exp $");
 
 #include 
 #include 
@@ -197,6 +197,33 @@ void intel_display_set_init_power(struct
 	dev_priv->power_domains.init_power_on = enable;
 }
 
+static inline void
+touch_vga_msr(struct drm_device *dev)
+{
+#ifdef __NetBSD__
+	const bus_addr_t vgabase = 0x3c0;
+	const bus_space_tag_t iot = dev->pdev->pd_pa.pa_iot;
+	bus_space_handle_t ioh;
+	uint8_t msr;
+	int error;
+
+	error = bus_space_map(iot, vgabase, 0x10, 0, );
+	if (error) {
+		device_printf(dev->pdev->pd_dev,
+		"unable to map VGA registers: %d\n", error);
+	} else {
+		CTASSERT(vgabase <= VGA_MSR_READ);
+		msr = bus_space_read_1(iot, ioh, VGA_MSR_READ - vgabase);
+		bus_space_write_1(iot, ioh, VGA_MSR_READ - vgabase, msr);
+		bus_space_unmap(iot, ioh, 0x10);
+	}
+#else
+	vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO);
+	outb(inb(VGA_MSR_READ), VGA_MSR_WRITE);
+	vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
+#endif
+}
+
 /*
  * Starting with Haswell, we have a "Power Down Well" that can be turned off
  * when not needed anymore. We have 4 registers that can request the power well
@@ -217,9 +244,7 @@ static void hsw_power_well_post_enable(s
 	 * sure vgacon can keep working normally without triggering interrupts
 	 * and error messages.
 	 */
-	vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO);
-	outb(inb(VGA_MSR_READ), VGA_MSR_WRITE);
-	vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
+	touch_vga_msr(dev);
 
 	if (IS_BROADWELL(dev))
 		gen8_irq_power_well_post_enable(dev_priv,
@@ -242,9 +267,7 @@ static void skl_power_well_post_enable(s
 	 * and error messages.
 	 */
 	if (power_well->data == SKL_DISP_PW_2) {
-		vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO);
-		outb(inb(VGA_MSR_READ), VGA_MSR_WRITE);
-		vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
+		touch_vga_msr(dev);
 
 		gen8_irq_power_well_post_enable(dev_priv,
 		1 << PIPE_C | 1 << PIPE_B);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_psr.c

Log Message:
Do not meddle in the affairs of strict aliasing,

for it is quick to anger and you are tasty with a bit of mustard on
your undefined behaviour.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.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_psr.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.4	Mon Aug 27 07:28:41 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c	Mon Aug 27 07:28:57 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_psr.c,v 1.4 2018/08/27 07:28:41 riastradh Exp $	*/
+/*	$NetBSD: intel_psr.c,v 1.5 2018/08/27 07:28:57 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -54,7 +54,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.4 2018/08/27 07:28:41 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.5 2018/08/27 07:28:57 riastradh Exp $");
 
 #include 
 
@@ -86,7 +86,8 @@ static void intel_psr_write_vsc(struct i
 	struct intel_crtc *crtc = to_intel_crtc(dig_port->base.base.crtc);
 	enum transcoder cpu_transcoder = crtc->config->cpu_transcoder;
 	u32 ctl_reg = HSW_TVIDEO_DIP_CTL(cpu_transcoder);
-	uint32_t *data = (uint32_t *) vsc_psr;
+	uint32_t data;
+	const char *ptr = (const char *)vsc_psr;
 	unsigned int i;
 
 	/* As per BSPec (Pipe Video Data Island Packet), we need to disable
@@ -96,9 +97,9 @@ static void intel_psr_write_vsc(struct i
 	POSTING_READ(ctl_reg);
 
 	for (i = 0; i < sizeof(*vsc_psr); i += 4) {
-		I915_WRITE(HSW_TVIDEO_DIP_VSC_DATA(cpu_transcoder,
-		   i >> 2), *data);
-		data++;
+		memcpy(, [i], 4);
+		I915_WRITE(HSW_TVIDEO_DIP_VSC_DATA(cpu_transcoder, i >> 2),
+		data);
 	}
 	for (; i < VIDEO_DIP_VSC_DATA_SIZE; i += 4)
 		I915_WRITE(HSW_TVIDEO_DIP_VSC_DATA(cpu_transcoder,



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_uncore.c

Log Message:
Fix multiple typos in merge attepmt.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.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_uncore.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c:1.7	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_uncore.c	Mon Aug 27 07:29:20 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_uncore.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_uncore.c,v 1.8 2018/08/27 07:29:20 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -24,7 +24,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_uncore.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_uncore.c,v 1.8 2018/08/27 07:29:20 riastradh Exp $");
 
 #include "i915_drv.h"
 #include "intel_drv.h"
@@ -1299,9 +1299,9 @@ void intel_uncore_destroy(struct drm_dev
 	struct drm_i915_private *const dev_priv = dev->dev_private;
 	unsigned i;
 
-	for (i = 0; i < FW_DOMAIN_ID_COUNT) {
+	for (i = 0; i < FW_DOMAIN_ID_COUNT; i++) {
 		if (dev_priv->uncore.fw_domains & (1u << i))
-			teardown_timer(_priv->uncore.fw_domwin[i].timer);
+			teardown_timer(_priv->uncore.fw_domain[i].timer);
 	}
 #endif
 }



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_display.c intel_psr.c

Log Message:
Init and destroy dev_priv->psr.lock.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.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_display.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.20 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.21
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.20	Mon Aug 27 07:21:16 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c	Mon Aug 27 07:28:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_display.c,v 1.20 2018/08/27 07:21:16 riastradh Exp $	*/
+/*	$NetBSD: intel_display.c,v 1.21 2018/08/27 07:28:41 riastradh Exp $	*/
 
 /*
  * Copyright © 2006-2007 Intel Corporation
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.20 2018/08/27 07:21:16 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.21 2018/08/27 07:28:41 riastradh Exp $");
 
 #include 
 #include 
@@ -15709,9 +15709,11 @@ void intel_modeset_cleanup(struct drm_de
 	intel_teardown_gmbus(dev);
 
 #ifdef __NetBSD__
+	linux_mutex_destroy(_priv->psr.lock);
 	linux_mutex_destroy(_priv->pps_mutex);
 	linux_mutex_destroy(_priv->fbc.lock);
 #else
+	mutex_destroy(_priv->psr.lock);
 	mutex_destroy(_priv->pps_mutex);
 	mutex_destroy(_priv->fbc.lock);
 #endif

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.3	Mon Aug 27 07:28:04 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c	Mon Aug 27 07:28:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_psr.c,v 1.3 2018/08/27 07:28:04 riastradh Exp $	*/
+/*	$NetBSD: intel_psr.c,v 1.4 2018/08/27 07:28:41 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -54,7 +54,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.3 2018/08/27 07:28:04 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.4 2018/08/27 07:28:41 riastradh Exp $");
 
 #include 
 
@@ -757,5 +757,9 @@ void intel_psr_init(struct drm_device *d
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
 	INIT_DELAYED_WORK(_priv->psr.work, intel_psr_work);
+#ifdef __NetBSD__
+	linux_mutex_init(_priv->psr.lock);
+#else
 	mutex_init(_priv->psr.lock);
+#endif
 }



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_psr.c intel_sprite.c

Log Message:
enum pipe -> enum i915_pipe


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c
cvs rdiff -u -r1.4 -r1.5 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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_psr.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_psr.c	Mon Aug 27 07:28:04 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_psr.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_psr.c,v 1.3 2018/08/27 07:28:04 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -54,7 +54,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_psr.c,v 1.3 2018/08/27 07:28:04 riastradh Exp $");
 
 #include 
 
@@ -114,7 +114,7 @@ static void vlv_psr_setup_vsc(struct int
 	struct drm_device *dev = intel_dig_port->base.base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct drm_crtc *crtc = intel_dig_port->base.base.crtc;
-	enum pipe pipe = to_intel_crtc(crtc)->pipe;
+	enum i915_pipe pipe = to_intel_crtc(crtc)->pipe;
 	uint32_t val;
 
 	/* VLV auto-generate VSC package as per EDP 1.3 spec, Table 3.10 */
@@ -226,7 +226,7 @@ static void vlv_psr_enable_source(struct
 	struct drm_device *dev = dig_port->base.base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct drm_crtc *crtc = dig_port->base.base.crtc;
-	enum pipe pipe = to_intel_crtc(crtc)->pipe;
+	enum i915_pipe pipe = to_intel_crtc(crtc)->pipe;
 
 	/* Transition from PSR_state 0 to PSR_state 1, i.e. PSR Inactive */
 	I915_WRITE(VLV_PSRCTL(pipe),
@@ -241,7 +241,7 @@ static void vlv_psr_activate(struct inte
 	struct drm_device *dev = dig_port->base.base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct drm_crtc *crtc = dig_port->base.base.crtc;
-	enum pipe pipe = to_intel_crtc(crtc)->pipe;
+	enum i915_pipe pipe = to_intel_crtc(crtc)->pipe;
 
 	/* Let's do the transition from PSR_state 1 to PSR_state 2
 	 * that is PSR transition to active - static frame transmission.
@@ -520,7 +520,7 @@ static void intel_psr_work(struct work_s
 		container_of(work, typeof(*dev_priv), psr.work.work);
 	struct intel_dp *intel_dp = dev_priv->psr.enabled;
 	struct drm_crtc *crtc = dp_to_dig_port(intel_dp)->base.base.crtc;
-	enum pipe pipe = to_intel_crtc(crtc)->pipe;
+	enum i915_pipe pipe = to_intel_crtc(crtc)->pipe;
 
 	/* We have to make sure PSR is ready for re-enable
 	 * otherwise it keeps disabled until next full enable/disable cycle.
@@ -564,7 +564,7 @@ static void intel_psr_exit(struct drm_de
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_dp *intel_dp = dev_priv->psr.enabled;
 	struct drm_crtc *crtc = dp_to_dig_port(intel_dp)->base.base.crtc;
-	enum pipe pipe = to_intel_crtc(crtc)->pipe;
+	enum i915_pipe pipe = to_intel_crtc(crtc)->pipe;
 	u32 val;
 
 	if (!dev_priv->psr.active)
@@ -618,7 +618,7 @@ void intel_psr_single_frame_update(struc
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct drm_crtc *crtc;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	u32 val;
 
 	/*
@@ -666,7 +666,7 @@ void intel_psr_invalidate(struct drm_dev
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct drm_crtc *crtc;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	mutex_lock(_priv->psr.lock);
 	if (!dev_priv->psr.enabled) {
@@ -704,7 +704,7 @@ void intel_psr_flush(struct drm_device *
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct drm_crtc *crtc;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	int delay_ms = HAS_DDI(dev) ? 100 : 500;
 
 	mutex_lock(_priv->psr.lock);

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.4	Mon Aug 27 06:16:50 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c	Mon Aug 27 07:28:04 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_sprite.c,v 1.4 2018/08/27 06:16:50 riastradh Exp $	*/
+/*	$NetBSD: intel_sprite.c,v 1.5 2018/08/27 07:28:04 riastradh Exp $	*/
 
 /*
  * Copyright © 2011 Intel Corporation
@@ -32,7 +32,7 @@
  * support.
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.4 2018/08/27 06:16:50 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.5 2018/08/27 07:28:04 riastradh Exp $");
 
 #include 
 #include 
@@ -87,7 

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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_sprite.c

Log Message:
Fix pipe update waits.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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_sprite.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.5	Mon Aug 27 07:28:04 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c	Mon Aug 27 07:28:15 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_sprite.c,v 1.5 2018/08/27 07:28:04 riastradh Exp $	*/
+/*	$NetBSD: intel_sprite.c,v 1.6 2018/08/27 07:28:15 riastradh Exp $	*/
 
 /*
  * Copyright © 2011 Intel Corporation
@@ -32,7 +32,7 @@
  * support.
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.5 2018/08/27 07:28:04 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.6 2018/08/27 07:28:15 riastradh Exp $");
 
 #include 
 #include 
@@ -92,6 +92,7 @@ void intel_pipe_update_start(struct inte
 	int scanline, min, max, vblank_start;
 #ifdef __NetBSD__
 	drm_waitqueue_t *wq = drm_crtc_vblank_waitqueue(>base);
+	int ret;
 #else
 	wait_queue_head_t *wq = drm_crtc_vblank_waitqueue(>base);
 	DEFINE_WAIT(wait);
@@ -105,7 +106,11 @@ void intel_pipe_update_start(struct inte
 	min = vblank_start - usecs_to_scanlines(adjusted_mode, 100);
 	max = vblank_start - 1;
 
+#ifdef __NetBSD__
+	spin_lock(>vbl_lock);
+#else
 	local_irq_disable();
+#endif
 
 	if (min <= 0 || max <= 0)
 		return;
@@ -118,7 +123,12 @@ void intel_pipe_update_start(struct inte
 	trace_i915_pipe_update_start(crtc);
 
 #ifdef __NetBSD__
-	panic("XXX");
+	DRM_SPIN_TIMED_WAIT_UNTIL(ret, wq, >vbl_lock, timeout,
+	(scanline = intel_get_crtc_scanline(crtc),
+		scanline < min || scanline > max));
+	if (ret)
+		DRM_ERROR("Potential atomic update failure on pipe %c\n",
+		pipe_name(crtc->pipe));
 #else
 	for (;;) {
 		/*
@@ -177,7 +187,11 @@ void intel_pipe_update_end(struct intel_
 
 	trace_i915_pipe_update_end(crtc, end_vbl_count, scanline_end);
 
+#ifdef __NetBSD__
+	spin_unlock(>vbl_lock);
+#else
 	local_irq_enable();
+#endif
 
 	if (crtc->debug.start_vbl_count &&
 	crtc->debug.start_vbl_count != end_vbl_count) {



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_sprite.c

Log Message:
Fix 64-bit printf.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.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_sprite.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.6	Mon Aug 27 07:28:15 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c	Mon Aug 27 07:28:26 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_sprite.c,v 1.6 2018/08/27 07:28:15 riastradh Exp $	*/
+/*	$NetBSD: intel_sprite.c,v 1.7 2018/08/27 07:28:26 riastradh Exp $	*/
 
 /*
  * Copyright © 2011 Intel Corporation
@@ -32,7 +32,7 @@
  * support.
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.6 2018/08/27 07:28:15 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_sprite.c,v 1.7 2018/08/27 07:28:26 riastradh Exp $");
 
 #include 
 #include 
@@ -195,7 +195,7 @@ void intel_pipe_update_end(struct intel_
 
 	if (crtc->debug.start_vbl_count &&
 	crtc->debug.start_vbl_count != end_vbl_count) {
-		DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %lld us, min %d, max %d, scanline start %d, end %d\n",
+		DRM_ERROR("Atomic update failure on pipe %c (start=%u end=%u) time %"PRIdMAX" us, min %d, max %d, scanline start %d, end %d\n",
 			  pipe_name(pipe), crtc->debug.start_vbl_count,
 			  end_vbl_count,
 			  ktime_us_delta(end_vbl_time, crtc->debug.start_vbl_time),



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_drv.h

Log Message:
Add __UNCONST.  Used only for fetches, sometimes const.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.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_drv.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.20 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.21
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.20	Mon Aug 27 07:26:30 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h	Mon Aug 27 07:26:43 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_drv.h,v 1.20 2018/08/27 07:26:30 riastradh Exp $	*/
+/*	$NetBSD: i915_drv.h,v 1.21 2018/08/27 07:26:43 riastradh Exp $	*/
 
 /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*-
  */
@@ -2504,9 +2504,9 @@ struct drm_i915_cmd_table {
 #define __I915__(p) ({ \
 	struct drm_i915_private *__p; \
 	if (__builtin_types_compatible_p(typeof(*p), struct drm_i915_private)) \
-		__p = (struct drm_i915_private *)p; \
+		__p = (struct drm_i915_private *)__UNCONST(p); \
 	else if (__builtin_types_compatible_p(typeof(*p), struct drm_device)) \
-		__p = to_i915((struct drm_device *)p); \
+		__p = to_i915((struct drm_device *)__UNCONST(p)); \
 	else \
 		BUILD_BUG(); \
 	__p; \



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_ddi.c

Log Message:
Need  for div_u64, div64_u64.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.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_ddi.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.6	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c	Mon Aug 27 07:26:08 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_ddi.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_ddi.c,v 1.7 2018/08/27 07:26:08 riastradh Exp $	*/
 
 /*
  * Copyright © 2012 Intel Corporation
@@ -28,7 +28,9 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_ddi.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_ddi.c,v 1.7 2018/08/27 07:26:08 riastradh Exp $");
+
+#include 
 
 #include "i915_drv.h"
 #include "intel_drv.h"



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_overlay.c intel_panel.c
intel_pm.c

Log Message:
enum pipe -> enum i915_pipe


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c
cvs rdiff -u -r1.8 -r1.9 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c
cvs rdiff -u -r1.11 -r1.12 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_overlay.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c:1.7	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_overlay.c	Mon Aug 27 07:26:59 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_overlay.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_overlay.c,v 1.8 2018/08/27 07:26:59 riastradh Exp $	*/
 
 /*
  * Copyright © 2009
@@ -28,7 +28,7 @@
  * Derived from Xorg ddx, xf86-video-intel, src/i830_video.c
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_overlay.c,v 1.7 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_overlay.c,v 1.8 2018/08/27 07:26:59 riastradh Exp $");
 
 #include 
 #include 
@@ -767,7 +767,7 @@ static int intel_overlay_do_put_image(st
 	bool scale_changed = false;
 	struct drm_device *dev __diagused = overlay->dev;
 	u32 swidth, swidthsw, sheight, ostride;
-	enum pipe pipe = overlay->crtc->pipe;
+	enum i915_pipe pipe = overlay->crtc->pipe;
 
 	WARN_ON(!mutex_is_locked(>struct_mutex));
 	WARN_ON(!drm_modeset_is_locked(>mode_config.connection_mutex));

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.8 src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.9
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.8	Mon Aug 27 06:16:50 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c	Mon Aug 27 07:26:59 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_panel.c,v 1.8 2018/08/27 06:16:50 riastradh Exp $	*/
+/*	$NetBSD: intel_panel.c,v 1.9 2018/08/27 07:26:59 riastradh Exp $	*/
 
 /*
  * Copyright © 2006-2010 Intel Corporation
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.8 2018/08/27 06:16:50 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.9 2018/08/27 07:26:59 riastradh Exp $");
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
@@ -1061,7 +1061,7 @@ static void bxt_enable_backlight(struct 
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_panel *panel = >panel;
-	enum pipe pipe = intel_get_pipe_from_connector(connector);
+	enum i915_pipe pipe = intel_get_pipe_from_connector(connector);
 	u32 pwm_ctl, val;
 
 	/* To use 2nd set of backlight registers, utility pin has to be
@@ -1453,7 +1453,7 @@ static u32 get_backlight_min_vbt(struct 
 	return scale(min, 0, 255, 0, panel->backlight.max);
 }
 
-static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unused)
+static int lpt_setup_backlight(struct intel_connector *connector, enum i915_pipe unused)
 {
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -1483,7 +1483,7 @@ static int lpt_setup_backlight(struct in
 	return 0;
 }
 
-static int pch_setup_backlight(struct intel_connector *connector, enum pipe unused)
+static int pch_setup_backlight(struct intel_connector *connector, enum i915_pipe unused)
 {
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -1514,7 +1514,7 @@ static int pch_setup_backlight(struct in
 	return 0;
 }
 
-static int i9xx_setup_backlight(struct intel_connector *connector, enum pipe unused)
+static int i9xx_setup_backlight(struct intel_connector *connector, enum i915_pipe unused)
 {
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -1552,7 +1552,7 @@ static int i9xx_setup_backlight(struct i
 	return 0;
 }
 
-static int i965_setup_backlight(struct intel_connector *connector, enum pipe unused)
+static int i965_setup_backlight(struct intel_connector *connector, enum i915_pipe unused)
 {
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -1586,7 +1586,7 @@ static int i965_setup_backlight(struct i
 	return 0;
 }
 
-static int vlv_setup_backlight(struct intel_connector *connector, enum pipe pipe)
+static int vlv_setup_backlight(struct intel_connector *connector, enum i915_pipe pipe)
 {
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = 

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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_panel.c

Log Message:
Ifdef out muppets.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 \
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.9 src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.10
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.9	Mon Aug 27 07:26:59 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c	Mon Aug 27 07:27:16 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_panel.c,v 1.9 2018/08/27 07:26:59 riastradh Exp $	*/
+/*	$NetBSD: intel_panel.c,v 1.10 2018/08/27 07:27:16 riastradh Exp $	*/
 
 /*
  * Copyright © 2006-2010 Intel Corporation
@@ -31,7 +31,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.9 2018/08/27 07:26:59 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_panel.c,v 1.10 2018/08/27 07:27:16 riastradh Exp $");
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
@@ -550,6 +550,7 @@ static u32 bxt_get_backlight(struct inte
 	return I915_READ(BXT_BLC_PWM_DUTY(panel->backlight.controller));
 }
 
+#ifndef __NetBSD__		/* XXX mipi */
 static u32 pwm_get_backlight(struct intel_connector *connector)
 {
 	struct intel_panel *panel = >panel;
@@ -558,6 +559,7 @@ static u32 pwm_get_backlight(struct inte
 	duty_ns = pwm_get_duty_cycle(panel->backlight.pwm);
 	return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS);
 }
+#endif
 
 #if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE)
 static u32 intel_panel_get_backlight(struct intel_connector *connector)
@@ -650,6 +652,7 @@ static void bxt_set_backlight(struct int
 	I915_WRITE(BXT_BLC_PWM_DUTY(panel->backlight.controller), level);
 }
 
+#ifndef __NetBSD__		/* XXX mipi */
 static void pwm_set_backlight(struct intel_connector *connector, u32 level)
 {
 	struct intel_panel *panel = >panel;
@@ -657,6 +660,7 @@ static void pwm_set_backlight(struct int
 
 	pwm_config(panel->backlight.pwm, duty_ns, CRC_PMIC_PWM_PERIOD_NS);
 }
+#endif
 
 static void
 intel_panel_actually_set_backlight(struct intel_connector *connector, u32 level)
@@ -669,6 +673,7 @@ intel_panel_actually_set_backlight(struc
 	panel->backlight.set(connector, level);
 }
 
+#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE)
 /* set backlight brightness to level in range [0..max], scaling wrt hw min */
 static void intel_panel_set_backlight(struct intel_connector *connector,
   u32 user_level, u32 user_max)
@@ -693,6 +698,7 @@ static void intel_panel_set_backlight(st
 
 	mutex_unlock(_priv->backlight_lock);
 }
+#endif
 
 /* set backlight brightness to level in range [0..max], assuming hw min is
  * respected.
@@ -830,6 +836,7 @@ static void bxt_disable_backlight(struct
 	}
 }
 
+#ifndef __NetBSD__		/* XXX mipi */
 static void pwm_disable_backlight(struct intel_connector *connector)
 {
 	struct intel_panel *panel = >panel;
@@ -839,6 +846,7 @@ static void pwm_disable_backlight(struct
 	usleep_range(2000, 3000);
 	pwm_disable(panel->backlight.pwm);
 }
+#endif
 
 void intel_panel_disable_backlight(struct intel_connector *connector)
 {
@@ -1106,6 +1114,7 @@ static void bxt_enable_backlight(struct 
 			pwm_ctl | BXT_BLC_PWM_ENABLE);
 }
 
+#ifndef __NetBSD__		/* XXX mipi */
 static void pwm_enable_backlight(struct intel_connector *connector)
 {
 	struct intel_panel *panel = >panel;
@@ -1113,6 +1122,7 @@ static void pwm_enable_backlight(struct 
 	pwm_enable(panel->backlight.pwm);
 	intel_panel_actually_set_backlight(connector, panel->backlight.level);
 }
+#endif
 
 void intel_panel_enable_backlight(struct intel_connector *connector)
 {
@@ -1665,6 +1675,7 @@ bxt_setup_backlight(struct intel_connect
 	return 0;
 }
 
+#ifndef __NetBSD__		/* XXX mipi */
 static int pwm_setup_backlight(struct intel_connector *connector,
 			   enum i915_pipe pipe)
 {
@@ -1747,9 +1758,11 @@ void intel_panel_destroy_backlight(struc
 	struct intel_connector *intel_connector = to_intel_connector(connector);
 	struct intel_panel *panel = _connector->panel;
 
+#ifndef __NetBSD__		/* XXX mipi */
 	/* dispose of the pwm */
 	if (panel->backlight.pwm)
 		pwm_put(panel->backlight.pwm);
+#endif
 
 	panel->backlight.present = false;
 }
@@ -1788,11 +1801,15 @@ intel_panel_init_backlight_funcs(struct 
 		panel->backlight.hz_to_pwm = pch_hz_to_pwm;
 	} else if (IS_VALLEYVIEW(dev)) {
 		if (dev_priv->vbt.has_mipi) {
+#ifdef __NetBSD__
+			panic("no muppets supported, sorry");
+#else
 			panel->backlight.setup = pwm_setup_backlight;
 			panel->backlight.enable = pwm_enable_backlight;
 			panel->backlight.disable = pwm_disable_backlight;
 			panel->backlight.set = pwm_set_backlight;
 			panel->backlight.get = pwm_get_backlight;
+#endif
 		} else {
 			

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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_drv.h intel_opregion.c

Log Message:
Use a prefetchable linear bus space mapping.  No __iomem.


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
cvs rdiff -u -r1.12 -r1.13 \
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/i915_drv.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.19 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.20
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.19	Mon Aug 27 07:19:01 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h	Mon Aug 27 07:26:30 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_drv.h,v 1.19 2018/08/27 07:19:01 riastradh Exp $	*/
+/*	$NetBSD: i915_drv.h,v 1.20 2018/08/27 07:26:30 riastradh Exp $	*/
 
 /* i915_drv.h -- Private header for the I915 driver -*- linux-c -*-
  */
@@ -475,6 +475,10 @@ struct opregion_asle;
 #endif
 
 struct intel_opregion {
+#ifdef __NetBSD__
+	bus_space_tag_t bst;
+	bus_space_handle_t bsh;
+#endif
 	struct opregion_header *header;
 	struct opregion_acpi *acpi;
 	struct opregion_swsci *swsci;

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.12 src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.13
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c:1.12	Mon Aug 27 06:34:44 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c	Mon Aug 27 07:26:30 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_opregion.c,v 1.12 2018/08/27 06:34:44 riastradh Exp $	*/
+/*	$NetBSD: intel_opregion.c,v 1.13 2018/08/27 07:26:30 riastradh Exp $	*/
 
 /*
  * Copyright 2008 Intel Corporation 
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.12 2018/08/27 06:34:44 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_opregion.c,v 1.13 2018/08/27 07:26:30 riastradh Exp $");
 
 #include 
 #include 
@@ -600,7 +600,7 @@ static void
 intel_opregion_video_event(ACPI_HANDLE hdl, uint32_t notify, void *opaque)
 {
 	device_t self = opaque;
-	struct opregion_acpi __iomem *acpi;
+	struct opregion_acpi *acpi;
 
 	DRM_DEBUG_DRIVER("notify=0x%08x\n", notify);
 
@@ -647,9 +647,11 @@ static int intel_opregion_video_event(st
 }
 #endif
 
+#ifndef __NetBSD__
 static struct notifier_block intel_opregion_notifier = {
 	.notifier_call = intel_opregion_video_event,
 };
+#endif
 
 /*
  * Initialise the DIDL field in opregion. This passes a list of devices to
@@ -895,7 +897,11 @@ void intel_opregion_fini(struct drm_devi
 	}
 
 	/* just clear all opregion memory pointers now */
+#ifdef __NetBSD__
+	bus_space_unmap(opregion->bst, opregion->bsh, OPREGION_SIZE);
+#else
 	memunmap(opregion->header);
+#endif
 	opregion->header = NULL;
 	opregion->acpi = NULL;
 	opregion->swsci = NULL;
@@ -989,7 +995,14 @@ int intel_opregion_setup(struct drm_devi
 	INIT_WORK(>asle_work, asle_work);
 #endif
 #ifdef __NetBSD__
-	base = acpi_os_ioremap(asls, OPREGION_SIZE);
+	opregion->bst = dev->pdev->pd_pa.pa_memt;
+	err = -bus_space_map(opregion->bst, asls, OPREGION_SIZE,
+	BUS_SPACE_MAP_LINEAR|BUS_SPACE_MAP_PREFETCHABLE, >bsh);
+	if (err) {
+		DRM_DEBUG_DRIVER("Failed to map opregion: %d", err);
+		return err;
+	}
+	base = bus_space_vaddr(opregion->bst, opregion->bsh);
 #else
 	base = memremap(asls, OPREGION_SIZE, MEMREMAP_WB);
 #endif
@@ -1029,7 +1042,11 @@ int intel_opregion_setup(struct drm_devi
 	return 0;
 
 err_out:
+#ifdef __NetBSD__
+	bus_space_unmap(opregion->bst, opregion->bsh, OPREGION_SIZE);
+#else
 	memunmap(base);
+#endif
 	return err;
 }
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_dp.c

Log Message:
Mark some variables __unused or __lockep_used.


To generate a diff of this commit:
cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/dist/drm/i915/intel_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/i915/intel_dp.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.14 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.15
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.14	Mon Aug 27 07:25:18 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c	Mon Aug 27 07:25:30 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_dp.c,v 1.14 2018/08/27 07:25:18 riastradh Exp $	*/
+/*	$NetBSD: intel_dp.c,v 1.15 2018/08/27 07:25:30 riastradh Exp $	*/
 
 /*
  * Copyright © 2008 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.14 2018/08/27 07:25:18 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.15 2018/08/27 07:25:30 riastradh Exp $");
 
 #include 
 #include 
@@ -382,7 +382,7 @@ vlv_power_sequencer_pipe(struct intel_dp
 {
 	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
 	struct drm_device *dev = intel_dig_port->base.base.dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
+	struct drm_i915_private *dev_priv __lockdep_used = dev->dev_private;
 	struct intel_encoder *encoder;
 	unsigned int pipes = (1 << PIPE_A) | (1 << PIPE_B);
 	enum i915_pipe pipe;
@@ -1951,7 +1951,7 @@ static void edp_panel_vdd_schedule_off(s
  */
 static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
 {
-	struct drm_i915_private *dev_priv =
+	struct drm_i915_private *dev_priv __lockdep_used =
 		intel_dp_to_dev(intel_dp)->dev_private;
 
 	lockdep_assert_held(_priv->pps_mutex);
@@ -2714,7 +2714,7 @@ static void vlv_detach_power_sequencer(s
 static void vlv_steal_power_sequencer(struct drm_device *dev,
   enum i915_pipe pipe)
 {
-	struct drm_i915_private *dev_priv = dev->dev_private;
+	struct drm_i915_private *dev_priv __lockdep_used = dev->dev_private;
 	struct intel_encoder *encoder;
 
 	lockdep_assert_held(_priv->pps_mutex);
@@ -2753,7 +2753,7 @@ static void vlv_init_panel_power_sequenc
 	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
 	struct intel_encoder *encoder = _dig_port->base;
 	struct drm_device *dev = encoder->base.dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
+	struct drm_i915_private *dev_priv __lockdep_used = dev->dev_private;
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
 
 	lockdep_assert_held(_priv->pps_mutex);
@@ -5538,8 +5538,8 @@ static void intel_dp_set_drrs_state(stru
 	struct intel_encoder *encoder;
 	struct intel_digital_port *dig_port = NULL;
 	struct intel_dp *intel_dp = dev_priv->drrs.dp;
-	struct intel_crtc_state *config = NULL;
-	struct intel_crtc *intel_crtc = NULL;
+	struct intel_crtc_state *config __unused = NULL;
+	struct intel_crtc *intel_crtc __unused = NULL;
 	enum drrs_refresh_rate_type index = DRRS_HIGH_RR;
 
 	if (refresh_rate <= 0) {



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_dp.c

Log Message:
Move dev_priv->drrs.mutex initialization and add destruction.

This way it is easy to make sure the initialization is matched by
destruction even if we don't always need to create this mutex.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/external/bsd/drm2/dist/drm/i915/intel_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/i915/intel_dp.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.15 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.16
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.15	Mon Aug 27 07:25:30 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c	Mon Aug 27 07:25:43 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_dp.c,v 1.15 2018/08/27 07:25:30 riastradh Exp $	*/
+/*	$NetBSD: intel_dp.c,v 1.16 2018/08/27 07:25:43 riastradh Exp $	*/
 
 /*
  * Copyright © 2008 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.15 2018/08/27 07:25:30 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.16 2018/08/27 07:25:43 riastradh Exp $");
 
 #include 
 #include 
@@ -5018,6 +5018,8 @@ static void
 intel_dp_connector_destroy(struct drm_connector *connector)
 {
 	struct intel_connector *intel_connector = to_intel_connector(connector);
+	struct drm_device *dev = intel_connector->base.dev;
+	struct drm_i915_private *dev_priv = dev->dev_private;
 
 	kfree(intel_connector->detect_edid);
 
@@ -5030,6 +5032,11 @@ intel_dp_connector_destroy(struct drm_co
 		intel_panel_fini(_connector->panel);
 
 	drm_connector_cleanup(connector);
+#ifdef __NetBSD__
+	linux_mutex_destroy(_priv->drrs.mutex);
+#else
+	mutex_destroy(_priv->drrs.mutex);
+#endif
 	kfree(connector);
 }
 
@@ -5875,7 +5882,6 @@ intel_dp_drrs_init(struct intel_connecto
 	struct drm_display_mode *downclock_mode = NULL;
 
 	INIT_DELAYED_WORK(_priv->drrs.work, intel_edp_drrs_downclock_work);
-	mutex_init(_priv->drrs.mutex);
 
 	if (INTEL_INFO(dev)->gen <= 6) {
 		DRM_DEBUG_KMS("DRRS supported for Gen7 and above\n");
@@ -6023,6 +6029,12 @@ intel_dp_init_connector(struct intel_dig
 
 	intel_dp->pps_pipe = INVALID_PIPE;
 
+#ifdef __NetBSD__
+	linux_mutex_init(_priv->drrs.mutex);
+#else
+	mutex_init(_priv->drrs.mutex);
+#endif
+
 	/* intel_dp vfuncs */
 	if (INTEL_INFO(dev)->gen >= 9)
 		intel_dp->get_aux_clock_divider = skl_get_aux_clock_divider;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_csr.c

Log Message:
Need  for THIS_MODULE.  Use a working struct device pointer.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.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_csr.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_csr.c	Mon Aug 27 07:25:06 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_csr.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_csr.c,v 1.3 2018/08/27 07:25:06 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -24,9 +24,10 @@
  *
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_csr.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_csr.c,v 1.3 2018/08/27 07:25:06 riastradh Exp $");
 
 #include 
+#include 
 #include "i915_drv.h"
 #include "i915_reg.h"
 
@@ -454,7 +455,7 @@ void intel_csr_ucode_init(struct drm_dev
 
 	/* CSR supported for platform, load firmware */
 	ret = request_firmware_nowait(THIS_MODULE, true, csr->fw_path,
-_priv->dev->pdev->dev,
+dev_priv->dev->dev,
 GFP_KERNEL, dev_priv,
 finish_csr_load);
 	if (ret) {



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_dp.c

Log Message:
Need  for le16_to_cpu.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/external/bsd/drm2/dist/drm/i915/intel_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/i915/intel_dp.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.13 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.14
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.13	Mon Aug 27 07:21:48 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c	Mon Aug 27 07:25:18 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_dp.c,v 1.13 2018/08/27 07:21:48 riastradh Exp $	*/
+/*	$NetBSD: intel_dp.c,v 1.14 2018/08/27 07:25:18 riastradh Exp $	*/
 
 /*
  * Copyright © 2008 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.13 2018/08/27 07:21:48 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.14 2018/08/27 07:25:18 riastradh Exp $");
 
 #include 
 #include 
@@ -39,6 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_lrc.c

Log Message:
We don't deal in waitqueues.  We only deal in DRM_WAITQUEUEs.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.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_lrc.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.5	Mon Aug 27 07:24:12 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c	Mon Aug 27 07:24:25 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_lrc.c,v 1.5 2018/08/27 07:24:12 riastradh Exp $	*/
+/*	$NetBSD: intel_lrc.c,v 1.6 2018/08/27 07:24:25 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -135,7 +135,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.5 2018/08/27 07:24:12 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.6 2018/08/27 07:24:25 riastradh Exp $");
 
 #include 
 #include 
@@ -1928,6 +1928,10 @@ void intel_logical_ring_cleanup(struct i
 	}
 
 	lrc_destroy_wa_ctx_obj(ring);
+
+#ifdef __NetBSD__
+	DRM_DESTROY_WAITQUEUE(>irq_queue);
+#endif
 }
 
 static int logical_ring_init(struct drm_device *dev, struct intel_engine_cs *ring)
@@ -1941,7 +1945,11 @@ static int logical_ring_init(struct drm_
 	INIT_LIST_HEAD(>active_list);
 	INIT_LIST_HEAD(>request_list);
 	i915_gem_batch_pool_init(dev, >batch_pool);
+#ifdef __NetBSD__
+	DRM_INIT_WAITQUEUE(>irq_queue, "i915lrc");
+#else
 	init_waitqueue_head(>irq_queue);
+#endif
 
 	INIT_LIST_HEAD(>execlist_queue);
 	INIT_LIST_HEAD(>execlist_retired_req_list);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_lrc.c intel_ringbuffer.h

Log Message:
Stash the ring status page somewhere more convenient.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.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/intel_lrc.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.4	Mon Aug 27 07:24:01 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c	Mon Aug 27 07:24:12 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_lrc.c,v 1.4 2018/08/27 07:24:01 riastradh Exp $	*/
+/*	$NetBSD: intel_lrc.c,v 1.5 2018/08/27 07:24:12 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -135,7 +135,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.4 2018/08/27 07:24:01 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.5 2018/08/27 07:24:12 riastradh Exp $");
 
 #include 
 #include 
@@ -1923,7 +1923,7 @@ void intel_logical_ring_cleanup(struct i
 	i915_gem_batch_pool_fini(>batch_pool);
 
 	if (ring->status_page.obj) {
-		kunmap(sg_page(ring->status_page.obj->pages->sgl));
+		kunmap(ring->status_page.page);
 		ring->status_page.obj = NULL;
 	}
 
@@ -2450,6 +2450,7 @@ static void lrc_setup_hardware_status_pa
 	ring->status_page.gfx_addr = i915_gem_obj_ggtt_offset(default_ctx_obj)
 			+ LRC_PPHWSP_PN * PAGE_SIZE;
 	page = i915_gem_object_get_page(default_ctx_obj, LRC_PPHWSP_PN);
+	ring->status_page.page = page;
 	ring->status_page.page_addr = kmap(page);
 	ring->status_page.obj = default_ctx_obj;
 

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.6
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h:1.5	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ringbuffer.h	Mon Aug 27 07:24:12 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_ringbuffer.h,v 1.5 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_ringbuffer.h,v 1.6 2018/08/27 07:24:12 riastradh Exp $	*/
 
 #ifndef _INTEL_RINGBUFFER_H_
 #define _INTEL_RINGBUFFER_H_
@@ -29,6 +29,7 @@
 #define I915_RING_FREE_SPACE 64
 
 struct  intel_hw_status_page {
+	struct page	*page;
 	u32		*page_addr;
 	unsigned int	gfx_addr;
 	struct		drm_i915_gem_object *obj;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c

Log Message:
Use the struct device pointer that works, not the one that doesn't exist.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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_guc_loader.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.4	Mon Aug 27 07:22:38 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c	Mon Aug 27 07:22:49 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_guc_loader.c,v 1.4 2018/08/27 07:22:38 riastradh Exp $	*/
+/*	$NetBSD: intel_guc_loader.c,v 1.5 2018/08/27 07:22:49 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -29,7 +29,7 @@
  *Alex Dai 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.4 2018/08/27 07:22:38 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.5 2018/08/27 07:22:49 riastradh Exp $");
 
 #include 
 #include 
@@ -491,7 +491,7 @@ static void guc_fw_fetch(struct drm_devi
 	DRM_DEBUG_DRIVER("before requesting firmware: GuC fw fetch status %s\n",
 		intel_guc_fw_status_repr(guc_fw->guc_fw_fetch_status));
 
-	err = request_firmware(, guc_fw->guc_fw_path, >pdev->dev);
+	err = request_firmware(, guc_fw->guc_fw_path, dev->dev);
 	if (err)
 		goto fail;
 	if (!fw)



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_dp_mst.c

Log Message:
Mark unused variables, pipe -> i915_pipe.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.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_dp_mst.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.c:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp_mst.c	Mon Aug 27 07:22:08 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_dp_mst.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_dp_mst.c,v 1.3 2018/08/27 07:22:08 riastradh Exp $	*/
 
 /*
  * Copyright © 2008 Intel Corporation
@@ -26,7 +26,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_dp_mst.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_dp_mst.c,v 1.3 2018/08/27 07:22:08 riastradh Exp $");
 
 #include 
 #include "i915_drv.h"
@@ -220,7 +220,7 @@ static void intel_mst_enable_dp(struct i
 	struct drm_device *dev = intel_dig_port->base.base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	enum port port = intel_dig_port->port;
-	int ret;
+	int ret __unused;
 
 	DRM_DEBUG_KMS("%d\n", intel_dp->active_mst_links);
 
@@ -234,7 +234,7 @@ static void intel_mst_enable_dp(struct i
 }
 
 static bool intel_dp_mst_enc_get_hw_state(struct intel_encoder *encoder,
-  enum pipe *pipe)
+  enum i915_pipe *pipe)
 {
 	struct intel_dp_mst_encoder *intel_mst = enc_to_mst(>base);
 	*pipe = intel_mst->pipe;
@@ -407,7 +407,7 @@ static const struct drm_encoder_funcs in
 static bool intel_dp_mst_get_hw_state(struct intel_connector *connector)
 {
 	if (connector->encoder && connector->base.state->crtc) {
-		enum pipe pipe;
+		enum i915_pipe pipe;
 		if (!connector->encoder->get_hw_state(connector->encoder, ))
 			return false;
 		return true;
@@ -523,7 +523,7 @@ static struct drm_dp_mst_topology_cbs ms
 };
 
 static struct intel_dp_mst_encoder *
-intel_dp_create_fake_mst_encoder(struct intel_digital_port *intel_dig_port, enum pipe pipe)
+intel_dp_create_fake_mst_encoder(struct intel_digital_port *intel_dig_port, enum i915_pipe pipe)
 {
 	struct intel_dp_mst_encoder *intel_mst;
 	struct intel_encoder *intel_encoder;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_lrc.c

Log Message:
round_up, not ALIGN.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.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_lrc.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.3	Mon Aug 27 07:23:50 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c	Mon Aug 27 07:24:01 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_lrc.c,v 1.3 2018/08/27 07:23:50 riastradh Exp $	*/
+/*	$NetBSD: intel_lrc.c,v 1.4 2018/08/27 07:24:01 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -135,7 +135,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.3 2018/08/27 07:23:50 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.4 2018/08/27 07:24:01 riastradh Exp $");
 
 #include 
 #include 
@@ -1198,7 +1198,11 @@ static inline uint32_t wa_ctx_start(stru
 uint32_t offset,
 uint32_t start_alignment)
 {
+#ifdef __NetBSD__		/* XXX ALIGN means something else */
+	return wa_ctx->offset = round_up(offset, start_alignment);
+#else
 	return wa_ctx->offset = ALIGN(offset, start_alignment);
+#endif
 }
 
 static inline int wa_ctx_end(struct i915_wa_ctx_bb *wa_ctx,



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c

Log Message:
const const const


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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_guc_loader.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.5	Mon Aug 27 07:22:49 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c	Mon Aug 27 07:22:59 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_guc_loader.c,v 1.5 2018/08/27 07:22:49 riastradh Exp $	*/
+/*	$NetBSD: intel_guc_loader.c,v 1.6 2018/08/27 07:22:59 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -29,7 +29,7 @@
  *Alex Dai 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.5 2018/08/27 07:22:49 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.6 2018/08/27 07:22:59 riastradh Exp $");
 
 #include 
 #include 
@@ -513,8 +513,8 @@ static void guc_fw_fetch(struct drm_devi
 	 * in terms of bytes (u8).
 	 */
 	css_header = fw->data + UOS_CSS_HEADER_OFFSET;
-	guc_fw->guc_fw_major_found = *(u16 *)(css_header + UOS_VER_MAJOR_OFFSET);
-	guc_fw->guc_fw_minor_found = *(u16 *)(css_header + UOS_VER_MINOR_OFFSET);
+	guc_fw->guc_fw_major_found = *(const u16 *)(css_header + UOS_VER_MAJOR_OFFSET);
+	guc_fw->guc_fw_minor_found = *(const u16 *)(css_header + UOS_VER_MINOR_OFFSET);
 
 	if (guc_fw->guc_fw_major_found != guc_fw->guc_fw_major_wanted ||
 	guc_fw->guc_fw_minor_found < guc_fw->guc_fw_minor_wanted) {



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c

Log Message:
Implement i915_gem_object_invalidate with PGO_DEACTIVATE.


To generate a diff of this commit:
cvs rdiff -u -r1.44 -r1.45 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.44 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.45
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.44	Mon Aug 27 07:23:22 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Mon Aug 27 07:23:37 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem.c,v 1.44 2018/08/27 07:23:22 riastradh Exp $	*/
+/*	$NetBSD: i915_gem.c,v 1.45 2018/08/27 07:23:37 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.44 2018/08/27 07:23:22 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.45 2018/08/27 07:23:37 riastradh Exp $");
 
 #ifdef __NetBSD__
 #if 0/* XXX uvmhist option?  */
@@ -2585,9 +2585,10 @@ static void
 i915_gem_object_invalidate(struct drm_i915_gem_object *obj)
 {
 #ifdef __NetBSD__
-	panic("XXX");
+	struct uvm_object *uobj;
 #else
 	struct address_space *mapping;
+#endif
 
 	switch (obj->madv) {
 	case I915_MADV_DONTNEED:
@@ -2599,6 +2600,12 @@ i915_gem_object_invalidate(struct drm_i9
 	if (obj->base.filp == NULL)
 		return;
 
+#ifdef __NetBSD__
+	uobj = obj->base.filp;
+	mutex_enter(uobj->vmobjlock);
+	(*uobj->pgops->pgo_put)(uobj, 0, obj->base.size,
+	PGO_ALLPAGES|PGO_DEACTIVATE|PGO_CLEANIT);
+#else
 	mapping = file_inode(obj->base.filp)->i_mapping,
 	invalidate_mapping_pages(mapping, 0, (loff_t)-1);
 #endif



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_dvo.c

Log Message:
pipe -> i915_pipe


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.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_dvo.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c:1.3	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c	Mon Aug 27 07:22:18 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_dvo.c,v 1.3 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_dvo.c,v 1.4 2018/08/27 07:22:18 riastradh Exp $	*/
 
 /*
  * Copyright 2006 Dave Airlie 
@@ -27,7 +27,7 @@
  *	Eric Anholt 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_dvo.c,v 1.3 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_dvo.c,v 1.4 2018/08/27 07:22:18 riastradh Exp $");
 
 #include 
 #include 
@@ -457,7 +457,7 @@ void intel_dvo_init(struct drm_device *d
 		struct i2c_adapter *i2c;
 		int gpio;
 		bool dvoinit;
-		enum pipe pipe;
+		enum i915_pipe pipe;
 		uint32_t dpll[I915_MAX_PIPES];
 
 		/* Allow the I2C driver info to specify the GPIO to be used in



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_hdmi.c

Log Message:
pipe -> i915_pipe


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.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_hdmi.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c:1.6	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c	Mon Aug 27 07:23:10 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_hdmi.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_hdmi.c,v 1.7 2018/08/27 07:23:10 riastradh Exp $	*/
 
 /*
  * Copyright 2006 Dave Airlie 
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_hdmi.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_hdmi.c,v 1.7 2018/08/27 07:23:10 riastradh Exp $");
 
 #include 
 #include 
@@ -1043,7 +1043,7 @@ static void cpt_enable_hdmi(struct intel
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
 	struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(>base);
-	enum pipe pipe = crtc->pipe;
+	enum i915_pipe pipe = crtc->pipe;
 	u32 temp;
 
 	temp = I915_READ(intel_hdmi->hdmi_reg);
@@ -1628,7 +1628,7 @@ static void chv_data_lane_soft_reset(str
 	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
 	enum dpio_channel ch = vlv_dport_to_channel(enc_to_dig_port(>base));
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
-	enum pipe pipe = crtc->pipe;
+	enum i915_pipe pipe = crtc->pipe;
 	uint32_t val;
 
 	val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW0(ch));
@@ -1674,7 +1674,7 @@ static void chv_hdmi_pre_pll_enable(stru
 	struct intel_crtc *intel_crtc =
 		to_intel_crtc(encoder->base.crtc);
 	enum dpio_channel ch = vlv_dport_to_channel(dport);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	u32 val;
 
 	intel_hdmi_prepare(encoder);
@@ -1748,7 +1748,7 @@ static void chv_hdmi_pre_pll_enable(stru
 static void chv_hdmi_post_pll_disable(struct intel_encoder *encoder)
 {
 	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
-	enum pipe pipe = to_intel_crtc(encoder->base.crtc)->pipe;
+	enum i915_pipe pipe = to_intel_crtc(encoder->base.crtc)->pipe;
 	u32 val;
 
 	mutex_lock(_priv->sb_lock);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c

Log Message:
Translate sg_pcopy_to_buffer to ubc_uiomove.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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_guc_loader.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.3	Mon Aug 27 07:22:27 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c	Mon Aug 27 07:22:38 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_guc_loader.c,v 1.3 2018/08/27 07:22:27 riastradh Exp $	*/
+/*	$NetBSD: intel_guc_loader.c,v 1.4 2018/08/27 07:22:38 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -29,7 +29,7 @@
  *Alex Dai 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.3 2018/08/27 07:22:27 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.4 2018/08/27 07:22:38 riastradh Exp $");
 
 #include 
 #include 
@@ -243,7 +243,12 @@ static int guc_ucode_xfer_dma(struct drm
 	struct intel_guc_fw *guc_fw = _priv->guc.guc_fw;
 	struct drm_i915_gem_object *fw_obj = guc_fw->guc_fw_obj;
 	unsigned long offset;
+#ifdef __NetBSD__
+	struct iovec iov;
+	struct uio uio;
+#else
 	struct sg_table *sg = fw_obj->pages;
+#endif
 	u32 status, ucode_size, rsa[UOS_RSA_SIG_SIZE / sizeof(u32)];
 	int i, ret = 0;
 
@@ -252,7 +257,21 @@ static int guc_ucode_xfer_dma(struct drm
 	I915_WRITE(DMA_COPY_SIZE, ucode_size);
 
 	/* Copy RSA signature from the fw image to HW for verification */
+#ifdef __NetBSD__
+	iov.iov_base = rsa;
+	iov.iov_len = UOS_RSA_SIG_SIZE;
+	uio.uio_iov = 
+	uio.uio_iovcnt = 1;
+	uio.uio_resid = UOS_RSA_SIG_SIZE;
+	uio.uio_rw = UIO_READ;
+	/* XXX errno NetBSD->Linux */
+	ret = -ubc_uiomove(fw_obj->base.filp, , UOS_RSA_SIG_SIZE,
+	UVM_ADV_NORMAL, UBC_READ);
+	if (ret)
+		return ret;
+#else
 	sg_pcopy_to_buffer(sg->sgl, sg->nents, rsa, UOS_RSA_SIG_SIZE, offset);
+#endif
 	for (i = 0; i < UOS_RSA_SIG_SIZE / sizeof(u32); i++)
 		I915_WRITE(UOS_RSA_SCRATCH(i), rsa[i]);
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_dp.c

Log Message:
More enum pipe -> enum i915_pipe, ugh.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/external/bsd/drm2/dist/drm/i915/intel_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/i915/intel_dp.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.12 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.13
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.12	Mon Aug 27 06:16:01 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c	Mon Aug 27 07:21:48 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_dp.c,v 1.12 2018/08/27 06:16:01 riastradh Exp $	*/
+/*	$NetBSD: intel_dp.c,v 1.13 2018/08/27 07:21:48 riastradh Exp $	*/
 
 /*
  * Copyright © 2008 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.12 2018/08/27 06:16:01 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_dp.c,v 1.13 2018/08/27 07:21:48 riastradh Exp $");
 
 #include 
 #include 
@@ -137,7 +137,7 @@ static bool edp_panel_vdd_on(struct inte
 static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync);
 static void vlv_init_panel_power_sequencer(struct intel_dp *intel_dp);
 static void vlv_steal_power_sequencer(struct drm_device *dev,
-  enum pipe pipe);
+  enum i915_pipe pipe);
 
 static unsigned int intel_dp_unused_lane_mask(int lane_count)
 {
@@ -312,7 +312,7 @@ vlv_power_sequencer_kick(struct intel_dp
 	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
 	struct drm_device *dev = intel_dig_port->base.base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe = intel_dp->pps_pipe;
+	enum i915_pipe pipe = intel_dp->pps_pipe;
 	bool pll_enabled, release_cl_override = false;
 	enum dpio_phy phy = DPIO_PHY(pipe);
 	enum dpio_channel ch = vlv_pipe_to_channel(pipe);
@@ -441,32 +441,32 @@ vlv_power_sequencer_pipe(struct intel_dp
 }
 
 typedef bool (*vlv_pipe_check)(struct drm_i915_private *dev_priv,
-			   enum pipe pipe);
+			   enum i915_pipe pipe);
 
 static bool vlv_pipe_has_pp_on(struct drm_i915_private *dev_priv,
-			   enum pipe pipe)
+			   enum i915_pipe pipe)
 {
 	return I915_READ(VLV_PIPE_PP_STATUS(pipe)) & PP_ON;
 }
 
 static bool vlv_pipe_has_vdd_on(struct drm_i915_private *dev_priv,
-enum pipe pipe)
+enum i915_pipe pipe)
 {
 	return I915_READ(VLV_PIPE_PP_CONTROL(pipe)) & EDP_FORCE_VDD;
 }
 
 static bool vlv_pipe_any(struct drm_i915_private *dev_priv,
-			 enum pipe pipe)
+			 enum i915_pipe pipe)
 {
 	return true;
 }
 
-static enum pipe
+static enum i915_pipe
 vlv_initial_pps_pipe(struct drm_i915_private *dev_priv,
 		 enum port port,
 		 vlv_pipe_check pipe_check)
 {
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	for (pipe = PIPE_A; pipe <= PIPE_B; pipe++) {
 		u32 port_sel = I915_READ(VLV_PIPE_PP_ON_DELAYS(pipe)) &
@@ -593,7 +593,7 @@ static int edp_notify_handler(struct not
 	pps_lock(intel_dp);
 
 	if (IS_VALLEYVIEW(dev)) {
-		enum pipe pipe = vlv_power_sequencer_pipe(intel_dp);
+		enum i915_pipe pipe = vlv_power_sequencer_pipe(intel_dp);
 		u32 pp_ctrl_reg, pp_div_reg;
 		u32 pp_div;
 
@@ -2291,7 +2291,7 @@ static bool intel_dp_get_hw_state(struct
 	if (IS_GEN7(dev) && port == PORT_A) {
 		*pipe = PORT_TO_PIPE_CPT(tmp);
 	} else if (HAS_PCH_CPT(dev) && port != PORT_A) {
-		enum pipe p;
+		enum i915_pipe p;
 
 		for_each_pipe(dev_priv, p) {
 			u32 trans_dp = I915_READ(TRANS_DP_CTL(p));
@@ -2447,7 +2447,7 @@ static void chv_data_lane_soft_reset(str
 	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
 	enum dpio_channel ch = vlv_dport_to_channel(enc_to_dig_port(>base));
 	struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
-	enum pipe pipe = crtc->pipe;
+	enum i915_pipe pipe = crtc->pipe;
 	uint32_t val;
 
 	val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW0(ch));
@@ -2688,7 +2688,7 @@ static void vlv_detach_power_sequencer(s
 {
 	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
 	struct drm_i915_private *dev_priv = intel_dig_port->base.base.dev->dev_private;
-	enum pipe pipe = intel_dp->pps_pipe;
+	enum i915_pipe pipe = intel_dp->pps_pipe;
 	int pp_on_reg = VLV_PIPE_PP_ON_DELAYS(pipe);
 
 	edp_panel_vdd_off_sync(intel_dp);
@@ -2711,7 +2711,7 @@ static void vlv_detach_power_sequencer(s
 }
 
 static void vlv_steal_power_sequencer(struct drm_device *dev,
-  enum pipe pipe)
+  enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_encoder *encoder;
@@ -2944,7 +2944,7 @@ static void chv_dp_pre_pll_enable(struct
 	struct intel_crtc *intel_crtc =
 		to_intel_crtc(encoder->base.crtc);
 	enum dpio_channel ch = vlv_dport_to_channel(dport);
-	enum pipe pipe = 

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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_lrc.c

Log Message:
bus_space_write_4, not iowrite32.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.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_lrc.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lrc.c	Mon Aug 27 07:23:50 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_lrc.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_lrc.c,v 1.3 2018/08/27 07:23:50 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -135,7 +135,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_lrc.c,v 1.3 2018/08/27 07:23:50 riastradh Exp $");
 
 #include 
 #include 
@@ -745,6 +745,15 @@ intel_logical_ring_advance_and_submit(st
 
 static void __wrap_ring_buffer(struct intel_ringbuffer *ringbuf)
 {
+#ifdef __NetBSD__
+	bus_size_t tail;
+	int rem = ringbuf->size - ringbuf->tail;
+
+	tail = ringbuf->tail;
+	rem /= 4;
+	while (rem--)
+		bus_space_write_4(ringbuf->bst, ringbuf->bsh, tail++, MI_NOOP);
+#else
 	uint32_t __iomem *virt;
 	int rem = ringbuf->size - ringbuf->tail;
 
@@ -752,6 +761,7 @@ static void __wrap_ring_buffer(struct in
 	rem /= 4;
 	while (rem--)
 		iowrite32(MI_NOOP, virt++);
+#endif
 
 	ringbuf->tail = 0;
 	intel_ring_update_space(ringbuf);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_guc_loader.c

Log Message:
Need  for MODULE_FIRMWARE.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.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_guc_loader.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_guc_loader.c	Mon Aug 27 07:22:27 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_guc_loader.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_guc_loader.c,v 1.3 2018/08/27 07:22:27 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -29,9 +29,10 @@
  *Alex Dai 
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_guc_loader.c,v 1.3 2018/08/27 07:22:27 riastradh Exp $");
 
 #include 
+#include 
 #include "i915_drv.h"
 #include "intel_guc.h"
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_display.c

Log Message:
Tweak intel_display.c to make it compile.


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_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/i915/intel_display.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.19 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.20
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.19	Mon Aug 27 06:34:15 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c	Mon Aug 27 07:21:16 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_display.c,v 1.19 2018/08/27 06:34:15 riastradh Exp $	*/
+/*	$NetBSD: intel_display.c,v 1.20 2018/08/27 07:21:16 riastradh Exp $	*/
 
 /*
  * Copyright © 2006-2007 Intel Corporation
@@ -27,7 +27,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.19 2018/08/27 06:34:15 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_display.c,v 1.20 2018/08/27 07:21:16 riastradh Exp $");
 
 #include 
 #include 
@@ -36,6 +36,8 @@ __KERNEL_RCSID(0, "$NetBSD: intel_displa
 #include 
 #include 
 #include 
+#include 
+#include 
 #include 
 #include 
 #include "intel_drv.h"
@@ -3989,6 +3991,7 @@ void intel_crtc_wait_for_pending_flips(s
 	bool timedout;
 	if (cold) {
 		unsigned timo = 1000;
+		timedout = false;
 		while (intel_crtc_has_pending_flip(crtc)) {
 			if (WARN_ON(timo-- == 0)) {
 /* Give up.  */
@@ -7502,7 +7505,7 @@ static void chv_prepare_pll(struct intel
 	int dpll_reg = DPLL(crtc->pipe);
 	enum dpio_channel port = vlv_pipe_to_channel(pipe);
 	u32 loopfilter, tribuf_calcntr;
-	u32 bestn, bestm1, bestm2, bestp1, bestp2, bestm2_frac;
+	u32 bestn __unused, bestm1 __unused, bestm2, bestp1, bestp2, bestm2_frac;
 	u32 dpio_val;
 	int vco;
 
@@ -12771,7 +12774,7 @@ static void
 check_connector_state(struct drm_device *dev,
 		  struct drm_atomic_state *old_state)
 {
-	struct drm_connector_state *old_conn_state;
+	struct drm_connector_state *old_conn_state __unused;
 	struct drm_connector *connector;
 	int i;
 
@@ -13595,7 +13598,7 @@ skl_max_scale(struct intel_crtc *intel_c
 {
 	int max_scale;
 	struct drm_device *dev;
-	struct drm_i915_private *dev_priv;
+	struct drm_i915_private *dev_priv __unused;
 	int crtc_clock, cdclk;
 
 	if (!intel_crtc || !crtc_state)
@@ -13655,7 +13658,7 @@ intel_commit_primary_plane(struct drm_pl
 	struct drm_framebuffer *fb = state->base.fb;
 	struct drm_device *dev = plane->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	struct intel_crtc *intel_crtc;
+	struct intel_crtc *intel_crtc __unused;
 	struct drm_rect *src = >src;
 
 	crtc = crtc ? crtc : plane->crtc;
@@ -14443,7 +14446,7 @@ static int intel_framebuffer_init(struct
 	case I915_FORMAT_MOD_Y_TILED:
 	case I915_FORMAT_MOD_Yf_TILED:
 		if (INTEL_INFO(dev)->gen < 9) {
-			DRM_DEBUG("Unsupported tiling 0x%llx!\n",
+			DRM_DEBUG("Unsupported tiling 0x%"PRIx64"!\n",
   mode_cmd->modifier[0]);
 			return -EINVAL;
 		}
@@ -14451,7 +14454,7 @@ static int intel_framebuffer_init(struct
 	case I915_FORMAT_MOD_X_TILED:
 		break;
 	default:
-		DRM_DEBUG("Unsupported fb modifier 0x%llx!\n",
+		DRM_DEBUG("Unsupported fb modifier 0x%"PRIx64"!\n",
 			  mode_cmd->modifier[0]);
 		return -EINVAL;
 	}
@@ -15707,8 +15710,10 @@ void intel_modeset_cleanup(struct drm_de
 
 #ifdef __NetBSD__
 	linux_mutex_destroy(_priv->pps_mutex);
+	linux_mutex_destroy(_priv->fbc.lock);
 #else
 	mutex_destroy(_priv->pps_mutex);
+	mutex_destroy(_priv->fbc.lock);
 #endif
 }
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_fbc.c

Log Message:
Tweak intel_fbc.c to make it compile.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.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_fbc.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_fbc.c	Mon Aug 27 07:21:33 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_fbc.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_fbc.c,v 1.3 2018/08/27 07:21:33 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -41,7 +41,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_fbc.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_fbc.c,v 1.3 2018/08/27 07:21:33 riastradh Exp $");
 
 #include "intel_drv.h"
 #include "i915_drv.h"
@@ -530,7 +530,7 @@ static void set_no_fbc_reason(struct drm
 static struct drm_crtc *intel_fbc_find_crtc(struct drm_i915_private *dev_priv)
 {
 	struct drm_crtc *crtc = NULL, *tmp_crtc;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	bool pipe_a_only = false;
 
 	if (IS_HASWELL(dev_priv) || INTEL_INFO(dev_priv)->gen >= 8)
@@ -555,7 +555,7 @@ static struct drm_crtc *intel_fbc_find_c
 
 static bool multiple_pipes_ok(struct drm_i915_private *dev_priv)
 {
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	int n_pipes = 0;
 	struct drm_crtc *crtc;
 
@@ -663,7 +663,7 @@ static int intel_fbc_alloc_cfb(struct dr
 
 	dev_priv->fbc.uncompressed_size = size;
 
-	DRM_DEBUG_KMS("reserved %llu bytes of contiguous stolen space for FBC, threshold: %d\n",
+	DRM_DEBUG_KMS("reserved %"PRIu64" bytes of contiguous stolen space for FBC, threshold: %d\n",
 		  dev_priv->fbc.compressed_fb.size,
 		  dev_priv->fbc.threshold);
 
@@ -1087,9 +1087,13 @@ void intel_fbc_flush(struct drm_i915_pri
  */
 void intel_fbc_init(struct drm_i915_private *dev_priv)
 {
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
+#ifdef __NetBSD__
+	linux_mutex_init(_priv->fbc.lock);
+#else
 	mutex_init(_priv->fbc.lock);
+#endif
 
 	if (!HAS_FBC(dev_priv)) {
 		dev_priv->fbc.enabled = false;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_atomic_plane.c

Log Message:
Mark unused variable.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_atomic_plane.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_atomic_plane.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_atomic_plane.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_atomic_plane.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_atomic_plane.c:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_atomic_plane.c	Mon Aug 27 07:19:44 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_atomic_plane.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_atomic_plane.c,v 1.3 2018/08/27 07:19:44 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -34,7 +34,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_atomic_plane.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_atomic_plane.c,v 1.3 2018/08/27 07:19:44 riastradh Exp $");
 
 #include 
 #include 
@@ -112,7 +112,7 @@ static int intel_plane_atomic_check(stru
 struct drm_plane_state *state)
 {
 	struct drm_crtc *crtc = state->crtc;
-	struct intel_crtc *intel_crtc;
+	struct intel_crtc *intel_crtc __unused;
 	struct intel_crtc_state *crtc_state;
 	struct intel_plane *intel_plane = to_intel_plane(plane);
 	struct intel_plane_state *intel_state = to_intel_plane_state(state);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_stolen.c

Log Message:
Re-enable i915 GSM now that pci_bus_config_read/write_* is here.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.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_stolen.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.9 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.10
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.9	Mon Aug 27 07:17:35 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c	Mon Aug 27 07:20:39 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_stolen.c,v 1.9 2018/08/27 07:17:35 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_stolen.c,v 1.10 2018/08/27 07:20:39 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2012 Intel Corporation
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.9 2018/08/27 07:17:35 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.10 2018/08/27 07:20:39 riastradh Exp $");
 
 #include 
 #include 
@@ -112,7 +112,6 @@ static unsigned long i915_stolen_to_phys
 	 *
 	 */
 	base = 0;
-#ifndef __NetBSD__		/* XXX i915 gem gsm stolen memory base */
 	if (INTEL_INFO(dev)->gen >= 3) {
 		/* Read Graphics Base of Stolen Memory directly */
 		pci_read_config_dword(dev->pdev, 0x5c, );
@@ -201,7 +200,6 @@ static unsigned long i915_stolen_to_phys
 
 		base = tom - tseg_size - dev_priv->gtt.stolen_size;
 	}
-#endif
 
 	if (base == 0)
 		return 0;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_bios.c

Log Message:
Fix up intel_bios.c.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_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/i915/intel_bios.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c:1.6	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_bios.c	Mon Aug 27 07:19:55 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_bios.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_bios.c,v 1.7 2018/08/27 07:19:55 riastradh Exp $	*/
 
 /*
  * Copyright © 2006 Intel Corporation
@@ -27,7 +27,7 @@
  *
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_bios.c,v 1.6 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_bios.c,v 1.7 2018/08/27 07:19:55 riastradh Exp $");
 
 #include 
 #include 
@@ -81,9 +81,10 @@ find_section(const void *_bdb, int secti
 static u16
 get_blocksize(const void *p)
 {
-	u16 *block_ptr, block_size;
+	const u16 *block_ptr;
+	u16 block_size;
 
-	block_ptr = (u16 *)((char *)p - 2);
+	block_ptr = (const u16 *)((const char *)p - 2);
 	block_size = *block_ptr;
 	return block_size;
 }
@@ -838,7 +839,7 @@ parse_mipi(struct drm_i915_private *dev_
 	 */
 	for (i = 0; i < MAX_MIPI_CONFIGURATIONS; i++) {
 		panel_id = *seq_data;
-		seq_size = *((u16 *) (seq_data + 1));
+		seq_size = *((const u16 *) (seq_data + 1));
 		if (panel_id == panel_type)
 			break;
 
@@ -1255,7 +1256,7 @@ static const struct bdb_header *validate
 	 const void *_vbt,
 	 const char *source)
 {
-	size_t offset = _vbt - base;
+	size_t offset = (const char *)_vbt - (const char *)base;
 	const struct vbt_header *vbt = _vbt;
 	const struct bdb_header *bdb;
 
@@ -1275,7 +1276,7 @@ static const struct bdb_header *validate
 		return NULL;
 	}
 
-	bdb = base + offset;
+	bdb = (const void *)((const char *)base + offset);
 	if (offset + bdb->bdb_size > size) {
 		DRM_DEBUG_DRIVER("BDB incomplete\n");
 		return NULL;
@@ -1286,6 +1287,21 @@ static const struct bdb_header *validate
 	return bdb;
 }
 
+#ifdef __NetBSD__
+#  define	__iomem	__pci_rom_iomem
+#  define	ioread32	fake_ioread32
+static inline uint32_t
+fake_ioread32(const void __iomem *p)
+{
+	uint32_t v;
+
+	v = *(const uint32_t __iomem *)p;
+	__insn_barrier();
+
+	return v;
+}
+#endif
+
 static const struct bdb_header *find_vbt(void __iomem *bios, size_t size)
 {
 	const struct bdb_header *bdb = NULL;
@@ -1293,7 +1309,7 @@ static const struct bdb_header *find_vbt
 
 	/* Scour memory looking for the VBT signature. */
 	for (i = 0; i + 4 < size; i++) {
-		if (ioread32(bios + i) == *((const u32 *) "$VBT")) {
+		if (ioread32((char __iomem *)bios + i) == *((const u32 *) "$VBT")) {
 			/*
 			 * This is the one place where we explicitly discard the
 			 * address space (__iomem) of the BIOS/VBT. From now on
@@ -1302,7 +1318,7 @@ static const struct bdb_header *find_vbt
 			 */
 			void *_bios = (void __force *) bios;
 
-			bdb = validate_vbt(_bios, size, _bios + i, "PCI ROM");
+			bdb = validate_vbt(_bios, size, (char *)_bios + i, "PCI ROM");
 			break;
 		}
 	}
@@ -1319,9 +1335,6 @@ static const struct bdb_header *find_vbt
  *
  * Returns 0 on success, nonzero on failure.
  */
-#ifdef __NetBSD__
-#  define	__iomem	__pci_rom_iomem
-#endif
 int
 intel_parse_bios(struct drm_device *dev)
 {
@@ -1373,8 +1386,10 @@ intel_parse_bios(struct drm_device *dev)
 
 	return 0;
 }
+
 #ifdef __NetBSD__
 #  undef	__iomem
+#  undef	ioread32
 #endif
 
 /**



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_shrinker.c

Log Message:
Use gemo_shm_uao rather than filp.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.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_shrinker.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.4	Mon Aug 27 07:18:37 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c	Mon Aug 27 07:18:47 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_shrinker.c,v 1.4 2018/08/27 07:18:37 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_shrinker.c,v 1.5 2018/08/27 07:18:47 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.4 2018/08/27 07:18:37 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.5 2018/08/27 07:18:47 riastradh Exp $");
 
 #include 
 #include 
@@ -317,7 +317,11 @@ i915_gem_shrinker_oom(struct notifier_bl
 	 */
 	unbound = bound = pinned = 0;
 	list_for_each_entry(obj, _priv->mm.unbound_list, global_list) {
+#ifdef __NetBSD__
+		if (!obj->base.gemo_shm_uao)
+#else
 		if (!obj->base.filp) /* not backed by a freeable object */
+#endif
 			continue;
 
 		if (obj->pages_pin_count)
@@ -326,7 +330,11 @@ i915_gem_shrinker_oom(struct notifier_bl
 			unbound += obj->base.size;
 	}
 	list_for_each_entry(obj, _priv->mm.bound_list, global_list) {
+#ifdef __NetBSD__
+		if (!obj->base.gemo_shm_uao)
+#else
 		if (!obj->base.filp)
+#endif
 			continue;
 
 		if (obj->pages_pin_count)



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: intel_audio.c

Log Message:
Give intel_audio.c half a chance of compiling.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.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_audio.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_audio.c	Mon Aug 27 07:19:23 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: intel_audio.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: intel_audio.c,v 1.3 2018/08/27 07:19:23 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -24,7 +24,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: intel_audio.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intel_audio.c,v 1.3 2018/08/27 07:19:23 riastradh Exp $");
 
 #include 
 #include 
@@ -186,7 +186,7 @@ static bool intel_eld_uptodate(struct dr
 	I915_WRITE(reg_elda, tmp);
 
 	for (i = 0; i < drm_eld_size(eld) / 4; i++)
-		if (I915_READ(reg_edid) != *((uint32_t *)eld + i))
+		if (I915_READ(reg_edid) != *((const uint32_t *)eld + i))
 			return false;
 
 	return true;
@@ -254,7 +254,7 @@ static void hsw_audio_codec_disable(stru
 {
 	struct drm_i915_private *dev_priv = encoder->base.dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	uint32_t tmp;
 
 	DRM_DEBUG_KMS("Disable audio codec on pipe %c\n", pipe_name(pipe));
@@ -286,7 +286,7 @@ static void hsw_audio_codec_enable(struc
 {
 	struct drm_i915_private *dev_priv = connector->dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	struct i915_audio_component *acomp = dev_priv->audio_component;
 	const uint8_t *eld = connector->eld;
 	struct intel_digital_port *intel_dig_port =
@@ -367,7 +367,7 @@ static void ilk_audio_codec_disable(stru
 	struct intel_digital_port *intel_dig_port =
 		enc_to_dig_port(>base);
 	enum port port = intel_dig_port->port;
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	uint32_t tmp, eldv;
 	int aud_config;
 	int aud_cntrl_st2;
@@ -416,7 +416,7 @@ static void ilk_audio_codec_enable(struc
 	struct intel_digital_port *intel_dig_port =
 		enc_to_dig_port(>base);
 	enum port port = intel_dig_port->port;
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	uint8_t *eld = connector->eld;
 	uint32_t eldv;
 	uint32_t tmp;
@@ -643,7 +643,7 @@ static int i915_audio_component_sync_aud
 	struct intel_crtc *crtc;
 	struct drm_display_mode *mode;
 	struct i915_audio_component *acomp = dev_priv->audio_component;
-	enum pipe pipe = -1;
+	enum i915_pipe pipe = -1;
 	u32 tmp;
 	int n;
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_shrinker.c

Log Message:
Horrible kludgey mutex_is_locked_by that should work here.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.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_shrinker.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.2	Mon Aug 27 04:58:23 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c	Mon Aug 27 07:18:28 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_shrinker.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_shrinker.c,v 1.3 2018/08/27 07:18:28 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.3 2018/08/27 07:18:28 riastradh Exp $");
 
 #include 
 #include 
@@ -39,6 +39,16 @@ __KERNEL_RCSID(0, "$NetBSD: i915_gem_shr
 #include "i915_drv.h"
 #include "i915_trace.h"
 
+#ifdef __NetBSD__
+/* XXX argh argh argh argh argh argh argh argh */
+static bool mutex_is_locked_by(struct mutex *mutex, struct proc *proc)
+{
+
+	KASSERT(proc == curproc);
+	/* Actually answers `do we own mutex?'.  */
+	return mutex_is_locked(mutex);
+}
+#else
 static bool mutex_is_locked_by(struct mutex *mutex, struct task_struct *task)
 {
 	if (!mutex_is_locked(mutex))
@@ -51,6 +61,7 @@ static bool mutex_is_locked_by(struct mu
 	return false;
 #endif
 }
+#endif
 
 /**
  * i915_gem_shrink - Shrink buffer object caches



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_cmd_parser.c i915_drv.h
i915_gem.c i915_gem_fence.c i915_gem_gtt.c i915_gem_render_state.c
i915_gem_stolen.c i915_guc_submission.c

Log Message:
Rework how we map i915 drm gem objects.

The old way made no sense at all.  This way might make sense.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c \
src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c
cvs rdiff -u -r1.17 -r1.18 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
cvs rdiff -u -r1.40 -r1.41 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_fence.c \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c
cvs rdiff -u -r1.10 -r1.11 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_gtt.c
cvs rdiff -u -r1.8 -r1.9 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.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_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.6	Mon Aug 27 07:04:02 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Aug 27 07:17:35 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_cmd_parser.c,v 1.6 2018/08/27 07:04:02 riastradh Exp $	*/
+/*	$NetBSD: i915_cmd_parser.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $	*/
 
 /*
  * Copyright © 2013 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.6 2018/08/27 07:04:02 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_cmd_parser.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $");
 
 #include "i915_drv.h"
 
@@ -883,7 +883,11 @@ static u32 *vmap_batch(struct drm_i915_g
 
 	i = 0;
 #ifdef __NetBSD__
-	TAILQ_FOREACH(page, >igo_pageq, pageq.queue) {
+	/*
+	 * XXX Why do we work through the page queue instead of just
+	 * using uvm_map?
+	 */
+	TAILQ_FOREACH(page, >pageq, pageq.queue) {
 		if (first_page-- > 0)
 			continue;
 		if (i == npages)
Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.6	Mon Aug 27 07:16:31 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c	Mon Aug 27 07:17:35 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_guc_submission.c,v 1.6 2018/08/27 07:16:31 riastradh Exp $	*/
+/*	$NetBSD: i915_guc_submission.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -24,7 +24,7 @@
  *
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.6 2018/08/27 07:16:31 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.7 2018/08/27 07:17:35 riastradh Exp $");
 
 #include 
 #include 
@@ -381,90 +381,6 @@ static void guc_init_proc_desc(struct in
 	kunmap_atomic(base);
 }
 
-#ifdef __NetBSD__
-/*
- * bus_dmamem_move_atomic(dmat, seg, nseg, buf, nbytes, rw)
- *
- *	Transfer nbytes of data between the bus_dma segments seg[0],
- *	seg[1], ..., seg[nseg-1] and buf, in the direction specified by
- *	rw: reading from or writing to the DMA segments.
- *
- *	Cannot fail.
- */
-static void
-bus_dmamem_move(bus_dma_tag_t dmat, bus_dma_segment_t *seg, int nseg,
-bus_size_t skip, void *buf, size_t nbytes, enum uio_rw rw)
-{
-	char *ptr = buf;
-	void *kva;
-	int i;
-
-	/* Find the first segment that we need to copy from.  */
-	for (i = 0; skip < seg[i].ds_len; skip -= seg[i].ds_len, i++)
-		KASSERT(i < nseg);
-
-	/* Copy as much as we requested from the segments.  */
-	do {
-		paddr_t pa;
-		bus_size_t seglen;
-
-		KASSERT(i < nseg);
-		KASSERT(skip < seg[i].ds_len);
-		pa = seg[i].ds_addr;
-		seglen = MIN(seg[i].ds_len, nbytes);
-		i++;
-
-		while (seglen) {
-			struct vm_page *vm_page = PHYS_TO_VM_PAGE(pa);
-			struct page *page = container_of(vm_page, struct page,
-			p_vmp);
-			size_t copy = MIN(PAGE_SIZE - skip, seglen);
-			const char *src;
-			char *dst;
-
-			kva = kmap_atomic(page);
-			switch (rw) {
-			case UIO_READ:
-src = kva;
-src += skip;
-dst = ptr;
-			case UIO_WRITE:
-src = ptr;
-dst = kva;
-dst += skip;
-			}
-			memcpy(dst, src, copy);
-			kunmap_atomic(kva);
-
-			pa += PAGE_SIZE;
-			seglen -= copy;
-			ptr += copy;
-			nbytes -= copy;
-			skip = 0; /* after the first, we're page-aligned */
-		}
-	} while (nbytes);
-}
-
-static void
-bus_dmamem_write(bus_dma_tag_t dmat, bus_dma_segment_t *seg, int nseg,
-

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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_shrinker.c

Log Message:
Use kpause for schedule_timeout_killable/fatal_signal_pending.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.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_shrinker.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.4
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c:1.3	Mon Aug 27 07:18:28 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_shrinker.c	Mon Aug 27 07:18:37 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_shrinker.c,v 1.3 2018/08/27 07:18:28 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_shrinker.c,v 1.4 2018/08/27 07:18:37 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -25,7 +25,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.3 2018/08/27 07:18:28 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_shrinker.c,v 1.4 2018/08/27 07:18:37 riastradh Exp $");
 
 #include 
 #include 
@@ -289,9 +289,15 @@ i915_gem_shrinker_oom(struct notifier_bl
 	bool unlock;
 
 	while (!i915_gem_shrinker_lock(dev, ) && --timeout) {
+#ifdef __NetBSD__
+		int error = kpause("i915shnk", true, 1, NULL);
+		if (error == EINTR || error == ERESTART)
+			return NOTIFY_DONE;
+#else
 		schedule_timeout_killable(1);
 		if (fatal_signal_pending(current))
 			return NOTIFY_DONE;
+#endif
 	}
 	if (timeout == 0) {
 		pr_err("Unable to purge GPU memory due lock contention.\n");



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem.c

Log Message:
Compute the number of bytes written as expected.


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 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.41 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.42
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.41	Mon Aug 27 07:17:35 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Mon Aug 27 07:17:58 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem.c,v 1.41 2018/08/27 07:17:35 riastradh Exp $	*/
+/*	$NetBSD: i915_gem.c,v 1.42 2018/08/27 07:17:58 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2015 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.41 2018/08/27 07:17:35 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem.c,v 1.42 2018/08/27 07:17:58 riastradh Exp $");
 
 #ifdef __NetBSD__
 #if 0/* XXX uvmhist option?  */
@@ -5906,6 +5906,7 @@ i915_gem_object_create_from_data(struct 
 	UBC_WRITE);
 	if (ret)
 		goto fail;
+	bytes = size - uio.uio_resid;
 #else
 	sg = obj->pages;
 	bytes = sg_copy_from_buffer(sg->sgl, sg->nents, (void *)data, size);



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_render_state.c

Log Message:
Use bus_dmamem_map instead of kmap(sg_page(...)).


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.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_render_state.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c:1.2	Mon Aug 27 04:58:23 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_render_state.c	Mon Aug 27 07:16:40 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_render_state.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_render_state.c,v 1.3 2018/08/27 07:16:40 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -28,7 +28,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.2 2018/08/27 04:58:23 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_render_state.c,v 1.3 2018/08/27 07:16:40 riastradh Exp $");
 
 #include "i915_drv.h"
 #include "intel_renderstate.h"
@@ -100,7 +100,11 @@ static int render_state_setup(struct ren
 {
 	const struct intel_renderstate_rodata *rodata = so->rodata;
 	unsigned int i = 0, reloc_index = 0;
+#ifdef __NetBSD__
+	void *kva;
+#else
 	struct page *page;
+#endif
 	u32 *d;
 	int ret;
 
@@ -108,8 +112,17 @@ static int render_state_setup(struct ren
 	if (ret)
 		return ret;
 
+#ifdef __NetBSD__
+	/* XXX errno NetBSD->Linux */
+	ret = -bus_dmamem_map(so->obj->base.dev->dmat, so->obj->pages,
+	so->obj->igo_nsegs, PAGE_SIZE, , BUS_DMA_WAITOK);
+	if (ret)
+		return ret;
+	d = kva;
+#else
 	page = sg_page(so->obj->pages->sgl);
 	d = kmap(page);
+#endif
 
 	while (i < rodata->batch_items) {
 		u32 s = rodata->batch[i];
@@ -146,9 +159,17 @@ static int render_state_setup(struct ren
 	 * Since we are sending length, we need to strictly conform to
 	 * all requirements. For Gen2 this must be a multiple of 8.
 	 */
+#ifdef __NetBSD__		/* XXX ALIGN means something else.  */
+	so->aux_batch_size = round_up(so->aux_batch_size, 8);
+#else
 	so->aux_batch_size = ALIGN(so->aux_batch_size, 8);
+#endif
 
+#ifdef __NetBSD__
+	bus_dmamem_unmap(so->obj->base.dev->dmat, kva, PAGE_SIZE);
+#else
 	kunmap(page);
+#endif
 
 	ret = i915_gem_object_set_to_gtt_domain(so->obj, false);
 	if (ret)
@@ -162,7 +183,11 @@ static int render_state_setup(struct ren
 	return 0;
 
 err_out:
+#ifdef __NetBSD__
+	bus_dmamem_unmap(so->obj->base.dev->dmat, kva, PAGE_SIZE);
+#else
 	kunmap(page);
+#endif
 	return ret;
 }
 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_guc_submission.c

Log Message:
Implement a bus_dma version of Linux sg_pcopy_from_buffer.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.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_guc_submission.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.5	Mon Aug 27 07:16:20 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c	Mon Aug 27 07:16:31 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_guc_submission.c,v 1.5 2018/08/27 07:16:20 riastradh Exp $	*/
+/*	$NetBSD: i915_guc_submission.c,v 1.6 2018/08/27 07:16:31 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -24,7 +24,7 @@
  *
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.5 2018/08/27 07:16:20 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.6 2018/08/27 07:16:31 riastradh Exp $");
 
 #include 
 #include 
@@ -381,6 +381,90 @@ static void guc_init_proc_desc(struct in
 	kunmap_atomic(base);
 }
 
+#ifdef __NetBSD__
+/*
+ * bus_dmamem_move_atomic(dmat, seg, nseg, buf, nbytes, rw)
+ *
+ *	Transfer nbytes of data between the bus_dma segments seg[0],
+ *	seg[1], ..., seg[nseg-1] and buf, in the direction specified by
+ *	rw: reading from or writing to the DMA segments.
+ *
+ *	Cannot fail.
+ */
+static void
+bus_dmamem_move(bus_dma_tag_t dmat, bus_dma_segment_t *seg, int nseg,
+bus_size_t skip, void *buf, size_t nbytes, enum uio_rw rw)
+{
+	char *ptr = buf;
+	void *kva;
+	int i;
+
+	/* Find the first segment that we need to copy from.  */
+	for (i = 0; skip < seg[i].ds_len; skip -= seg[i].ds_len, i++)
+		KASSERT(i < nseg);
+
+	/* Copy as much as we requested from the segments.  */
+	do {
+		paddr_t pa;
+		bus_size_t seglen;
+
+		KASSERT(i < nseg);
+		KASSERT(skip < seg[i].ds_len);
+		pa = seg[i].ds_addr;
+		seglen = MIN(seg[i].ds_len, nbytes);
+		i++;
+
+		while (seglen) {
+			struct vm_page *vm_page = PHYS_TO_VM_PAGE(pa);
+			struct page *page = container_of(vm_page, struct page,
+			p_vmp);
+			size_t copy = MIN(PAGE_SIZE - skip, seglen);
+			const char *src;
+			char *dst;
+
+			kva = kmap_atomic(page);
+			switch (rw) {
+			case UIO_READ:
+src = kva;
+src += skip;
+dst = ptr;
+			case UIO_WRITE:
+src = ptr;
+dst = kva;
+dst += skip;
+			}
+			memcpy(dst, src, copy);
+			kunmap_atomic(kva);
+
+			pa += PAGE_SIZE;
+			seglen -= copy;
+			ptr += copy;
+			nbytes -= copy;
+			skip = 0; /* after the first, we're page-aligned */
+		}
+	} while (nbytes);
+}
+
+static void
+bus_dmamem_write(bus_dma_tag_t dmat, bus_dma_segment_t *seg, int nseg,
+bus_size_t skip, const void *buf, size_t nbytes)
+{
+
+	bus_dmamem_move(dmat, seg, nseg, skip, __UNCONST(buf), nbytes,
+	UIO_WRITE);
+}
+
+#if 0
+static void
+bus_dmamem_read(bus_dma_tag_t dmat, bus_dma_segment_t *seg, int nseg,
+bus_size_t skip, void *buf, size_t nbytes)
+{
+
+	bus_dmamem_move(dmat, seg, nseg, skip, buf, nbytes, UIO_READ);
+}
+#endif
+#endif
+
 /*
  * Initialise/clear the context descriptor shared with the GuC firmware.
  *
@@ -394,7 +478,9 @@ static void guc_init_ctx_desc(struct int
 {
 	struct intel_context *ctx = client->owner;
 	struct guc_context_desc desc;
+#ifndef __NetBSD__
 	struct sg_table *sg;
+#endif
 	int i;
 
 	memset(, 0, sizeof(desc));
@@ -452,8 +538,13 @@ static void guc_init_ctx_desc(struct int
 	desc.db_trigger_cpu = 0;
 	desc.db_trigger_uk = client->doorbell_offset +
 		i915_gem_obj_ggtt_offset(client->client_obj);
+#ifdef __NetBSD__
+	desc.db_trigger_phy = client->doorbell_offset +
+	client->client_obj->igo_dmamap->dm_segs[0].ds_addr;
+#else
 	desc.db_trigger_phy = client->doorbell_offset +
 		sg_dma_address(client->client_obj->pages->sgl);
+#endif
 
 	desc.process_desc = client->proc_desc_offset +
 		i915_gem_obj_ggtt_offset(client->client_obj);
@@ -470,14 +561,36 @@ static void guc_init_ctx_desc(struct int
 	desc.desc_private = (uintptr_t)client;
 
 	/* Pool context is pinned already */
+#ifdef __NetBSD__
+	bus_dma_tag_t dmat = guc->ctx_pool_obj->base.dev->dmat;
+	bus_dma_segment_t *seg = guc->ctx_pool_obj->pages;
+	int nseg = guc->ctx_pool_obj->igo_nsegs;
+	bus_size_t skip = sizeof(desc) * client->ctx_index;
+	size_t nbytes = sizeof(desc);
+
+	bus_dmamem_write(dmat, seg, nseg, skip, , nbytes);
+#else
 	sg = guc->ctx_pool_obj->pages;
 	sg_pcopy_from_buffer(sg->sgl, sg->nents, , sizeof(desc),
 			 sizeof(desc) * client->ctx_index);
+#endif
 }
 
 static void guc_fini_ctx_desc(struct intel_guc *guc,
 			  struct i915_guc_client 

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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_guc_submission.c

Log Message:
Include  for bitmap operations.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.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_guc_submission.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.5
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c:1.4	Mon Aug 27 07:09:52 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_guc_submission.c	Mon Aug 27 07:16:20 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_guc_submission.c,v 1.4 2018/08/27 07:09:52 riastradh Exp $	*/
+/*	$NetBSD: i915_guc_submission.c,v 1.5 2018/08/27 07:16:20 riastradh Exp $	*/
 
 /*
  * Copyright © 2014 Intel Corporation
@@ -24,8 +24,9 @@
  *
  */
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.4 2018/08/27 07:09:52 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_guc_submission.c,v 1.5 2018/08/27 07:16:20 riastradh Exp $");
 
+#include 
 #include 
 #include 
 #include 



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_vgpu.c

Log Message:
Use bus_space.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.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_vgpu.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c:1.2	Mon Aug 27 04:58:24 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_vgpu.c	Mon Aug 27 07:16:10 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_vgpu.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $	*/
+/*	$NetBSD: i915_vgpu.c,v 1.3 2018/08/27 07:16:10 riastradh Exp $	*/
 
 /*
  * Copyright(c) 2011-2015 Intel Corporation. All rights reserved.
@@ -24,7 +24,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_vgpu.c,v 1.2 2018/08/27 04:58:24 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_vgpu.c,v 1.3 2018/08/27 07:16:10 riastradh Exp $");
 
 #include "intel_drv.h"
 #include "i915_vgpu.h"
@@ -74,13 +74,26 @@ void i915_check_vgpu(struct drm_device *
 	if (!IS_HASWELL(dev))
 		return;
 
+#ifdef __NetBSD__
+	magic = bus_space_read_8(dev_priv->regs_bst, dev_priv->regs_bsh,
+	vgtif_reg(magic));
+#else
 	magic = readq(dev_priv->regs + vgtif_reg(magic));
+#endif
 	if (magic != VGT_MAGIC)
 		return;
 
+#ifdef __NetBSD__
+	version = INTEL_VGT_IF_VERSION_ENCODE(
+		bus_space_read_2(dev_priv->regs_bst, dev_priv->regs_bsh,
+		vgtif_reg(version_major)),
+		bus_space_read_2(dev_priv->regs_bst, dev_priv->regs_bsh,
+		vgtif_reg(version_minor)));
+#else
 	version = INTEL_VGT_IF_VERSION_ENCODE(
 		readw(dev_priv->regs + vgtif_reg(version_major)),
 		readw(dev_priv->regs + vgtif_reg(version_minor)));
+#endif
 	if (version != INTEL_VGT_IF_VERSION) {
 		DRM_INFO("VGT interface version mismatch!\n");
 		return;



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

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

Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_gem_stolen.c

Log Message:
Ifdef out more graphics stolen memory stuff for now.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.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_stolen.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.7 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.8
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c:1.7	Mon Aug 27 06:08:38 2018
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem_stolen.c	Mon Aug 27 07:16:00 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: i915_gem_stolen.c,v 1.7 2018/08/27 06:08:38 riastradh Exp $	*/
+/*	$NetBSD: i915_gem_stolen.c,v 1.8 2018/08/27 07:16:00 riastradh Exp $	*/
 
 /*
  * Copyright © 2008-2012 Intel Corporation
@@ -29,7 +29,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.7 2018/08/27 06:08:38 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_stolen.c,v 1.8 2018/08/27 07:16:00 riastradh Exp $");
 
 #include 
 #include 
@@ -94,8 +94,8 @@ void i915_gem_stolen_remove_node(struct 
 
 static unsigned long i915_stolen_to_physical(struct drm_device *dev)
 {
-#ifndef __NetBSD__
 	struct drm_i915_private *dev_priv = dev->dev_private;
+#ifndef __NetBSD__
 	struct resource *r;
 #endif
 	u32 base;
@@ -112,12 +112,11 @@ static unsigned long i915_stolen_to_phys
 	 *
 	 */
 	base = 0;
+#ifndef __NetBSD__		/* XXX i915 gem gsm stolen memory base */
 	if (INTEL_INFO(dev)->gen >= 3) {
-#ifndef __NetBSD__		/* XXX disable this for now */
 		/* Read Graphics Base of Stolen Memory directly */
 		pci_read_config_dword(dev->pdev, 0x5c, );
 		base &= ~((1<<20) - 1);
-#endif
 	} else if (IS_I865G(dev)) {
 		u32 tseg_size = 0;
 		u16 toud = 0;
@@ -202,6 +201,7 @@ static unsigned long i915_stolen_to_phys
 
 		base = tom - tseg_size - dev_priv->gtt.stolen_size;
 	}
+#endif
 
 	if (base == 0)
 		return 0;



  1   2   3   >