Module Name:    src
Committed By:   martin
Date:           Mon Nov 10 19:45:54 UTC 2014

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

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


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.3.4.1 \
    src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c
cvs rdiff -u -r1.1.1.2 -r1.1.1.2.2.1 \
    src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c
cvs rdiff -u -r1.10 -r1.10.2.1 \
    src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c
cvs rdiff -u -r1.7.2.1 -r1.7.2.2 \
    src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
cvs rdiff -u -r1.14.2.2 -r1.14.2.3 \
    src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
cvs rdiff -u -r1.6.2.3 -r1.6.2.4 \
    src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c
cvs rdiff -u -r1.1.1.1 -r1.1.1.1.4.1 \
    src/sys/external/bsd/drm2/dist/drm/i915/i915_ums.c \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi_cmd.c \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c
cvs rdiff -u -r1.4 -r1.4.2.1 \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c
cvs rdiff -u -r1.7 -r1.7.2.1 \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c
cvs rdiff -u -r1.6 -r1.6.2.1 \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_drv.h
cvs rdiff -u -r1.2 -r1.2.4.1 \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c
cvs rdiff -u -r1.5 -r1.5.2.1 \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c
cvs rdiff -u -r1.4.2.1 -r1.4.2.2 \
    src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c
cvs rdiff -u -r1.4 -r1.4.2.1 src/sys/external/bsd/drm2/dist/uapi/drm/drm.h
cvs rdiff -u -r1.7 -r1.7.2.1 src/sys/external/bsd/drm2/drm/drm_module.c
cvs rdiff -u -r1.9 -r1.9.4.1 src/sys/external/bsd/drm2/i915drm/intelfb.c
cvs rdiff -u -r1.2 -r1.2.8.1 \
    src/sys/external/bsd/drm2/include/asm/processor.h
cvs rdiff -u -r1.2.8.1 -r1.2.8.2 \
    src/sys/external/bsd/drm2/include/linux/io-mapping.h
cvs rdiff -u -r1.4.4.1 -r1.4.4.2 \
    src/sys/external/bsd/drm2/include/linux/ww_mutex.h
cvs rdiff -u -r1.2.4.3 -r1.2.4.4 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.3.4.1
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c:1.3	Fri Jul 18 19:34:59 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_cmd_parser.c	Mon Nov 10 19:45:54 2014
@@ -370,7 +370,8 @@ int i915_parse_cmds(struct intel_ring_bu
 {
 	int ret = 0;
 	u32 *cmd, *batch_base, *batch_end;
-	struct drm_i915_cmd_descriptor default_desc = { 0 };
+	static const struct drm_i915_cmd_descriptor zero_default_desc;
+	struct drm_i915_cmd_descriptor default_desc = zero_default_desc;
 	int needs_clflush = 0;
 
 	ret = i915_gem_obj_prepare_shmem_read(batch_obj, &needs_clflush);

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.1.1.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c:1.1.1.2.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c:1.1.1.2	Wed Jul 16 19:35:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_debugfs.c	Mon Nov 10 19:45:54 2014
@@ -2360,7 +2360,7 @@ static int i915_display_info(struct seq_
 struct pipe_crc_info {
 	const char *name;
 	struct drm_device *dev;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 };
 
 static int i915_pipe_crc_open(struct inode *inode, struct file *filep)
@@ -2511,7 +2511,7 @@ static struct pipe_crc_info i915_pipe_cr
 };
 
 static int i915_pipe_crc_create(struct dentry *root, struct drm_minor *minor,
-				enum pipe pipe)
+				enum i915_pipe pipe)
 {
 	struct drm_device *dev = minor->dev;
 	struct dentry *ent;
@@ -2585,7 +2585,7 @@ static int i8xx_pipe_crc_ctl_reg(enum in
 	return 0;
 }
 
-static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum pipe pipe,
+static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum i915_pipe pipe,
 				     enum intel_pipe_crc_source *source)
 {
 	struct intel_encoder *encoder;
@@ -2637,7 +2637,7 @@ static int i9xx_pipe_crc_auto_source(str
 }
 
 static int vlv_pipe_crc_ctl_reg(struct drm_device *dev,
-				enum pipe pipe,
+				enum i915_pipe pipe,
 				enum intel_pipe_crc_source *source,
 				uint32_t *val)
 {
@@ -2694,7 +2694,7 @@ static int vlv_pipe_crc_ctl_reg(struct d
 }
 
 static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev,
-				 enum pipe pipe,
+				 enum i915_pipe pipe,
 				 enum intel_pipe_crc_source *source,
 				 uint32_t *val)
 {
@@ -2770,7 +2770,7 @@ static int i9xx_pipe_crc_ctl_reg(struct 
 }
 
 static void vlv_undo_pipe_scramble_reset(struct drm_device *dev,
-					 enum pipe pipe)
+					 enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	uint32_t tmp = I915_READ(PORT_DFT2_G4X);
@@ -2786,7 +2786,7 @@ static void vlv_undo_pipe_scramble_reset
 }
 
 static void g4x_undo_pipe_scramble_reset(struct drm_device *dev,
-					 enum pipe pipe)
+					 enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	uint32_t tmp = I915_READ(PORT_DFT2_G4X);
@@ -2855,7 +2855,7 @@ static int ivb_pipe_crc_ctl_reg(enum int
 	return 0;
 }
 
-static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe,
+static int pipe_crc_set_source(struct drm_device *dev, enum i915_pipe pipe,
 			       enum intel_pipe_crc_source source)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -2996,7 +2996,7 @@ display_crc_ctl_parse_object(const char 
 	return -EINVAL;
 }
 
-static int display_crc_ctl_parse_pipe(const char *buf, enum pipe *pipe)
+static int display_crc_ctl_parse_pipe(const char *buf, enum i915_pipe *pipe)
 {
 	const char name = buf[0];
 
@@ -3027,7 +3027,7 @@ static int display_crc_ctl_parse(struct 
 #define N_WORDS 3
 	int n_words;
 	char *words[N_WORDS];
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	enum intel_pipe_crc_object object;
 	enum intel_pipe_crc_source source;
 
@@ -3824,7 +3824,7 @@ static const struct i915_debugfs_files {
 void intel_display_crc_init(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	for_each_pipe(pipe) {
 		struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[pipe];
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.1.1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c:1.1.1.2.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c:1.1.1.2	Wed Jul 16 19:35:26 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dvo.c	Mon Nov 10 19:45:54 2014
@@ -118,7 +118,7 @@ static bool intel_dvo_connector_get_hw_s
 }
 
 static bool intel_dvo_get_hw_state(struct intel_encoder *encoder,
-				   enum pipe *pipe)
+				   enum i915_pipe *pipe)
 {
 	struct drm_device *dev = encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
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.1.1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.1.1.2.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c:1.1.1.2	Wed Jul 16 19:35:26 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sprite.c	Mon Nov 10 19:45:54 2014
@@ -1071,7 +1071,7 @@ static uint32_t vlv_plane_formats[] = {
 };
 
 int
-intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane)
+intel_plane_init(struct drm_device *dev, enum i915_pipe pipe, int plane)
 {
 	struct intel_plane *intel_plane;
 	unsigned long possible_crtcs;

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.10 src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.10.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c:1.10	Wed Jul 16 23:25:18 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_dma.c	Mon Nov 10 19:45:54 2014
@@ -1552,7 +1552,7 @@ static void intel_device_info_runtime_in
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_device_info *info;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	info = (struct intel_device_info *)&dev_priv->info;
 
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.10 src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.10.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c:1.10	Thu Jul 24 21:18:40 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_display.c	Mon Nov 10 19:45:54 2014
@@ -754,7 +754,7 @@ bool intel_crtc_active(struct drm_crtc *
 }
 
 enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv,
-					     enum pipe pipe)
+					     enum i915_pipe pipe)
 {
 	struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
@@ -814,7 +814,7 @@ void intel_wait_for_vblank(struct drm_de
 		DRM_DEBUG_KMS("vblank wait timed out\n");
 }
 
-static bool pipe_dsl_stopped(struct drm_device *dev, enum pipe pipe)
+static bool pipe_dsl_stopped(struct drm_device *dev, enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	u32 reg = PIPEDSL(pipe);
@@ -922,7 +922,7 @@ static const char *state_string(bool ena
 
 /* Only for pre-ILK configs */
 void assert_pll(struct drm_i915_private *dev_priv,
-		enum pipe pipe, bool state)
+		enum i915_pipe pipe, bool state)
 {
 	int reg;
 	u32 val;
@@ -989,7 +989,7 @@ void assert_shared_dpll(struct drm_i915_
 }
 
 static void assert_fdi_tx(struct drm_i915_private *dev_priv,
-			  enum pipe pipe, bool state)
+			  enum i915_pipe pipe, bool state)
 {
 	int reg;
 	u32 val;
@@ -1015,7 +1015,7 @@ static void assert_fdi_tx(struct drm_i91
 #define assert_fdi_tx_disabled(d, p) assert_fdi_tx(d, p, false)
 
 static void assert_fdi_rx(struct drm_i915_private *dev_priv,
-			  enum pipe pipe, bool state)
+			  enum i915_pipe pipe, bool state)
 {
 	int reg;
 	u32 val;
@@ -1032,7 +1032,7 @@ static void assert_fdi_rx(struct drm_i91
 #define assert_fdi_rx_disabled(d, p) assert_fdi_rx(d, p, false)
 
 static void assert_fdi_tx_pll_enabled(struct drm_i915_private *dev_priv,
-				      enum pipe pipe)
+				      enum i915_pipe pipe)
 {
 	int reg;
 	u32 val;
@@ -1051,7 +1051,7 @@ static void assert_fdi_tx_pll_enabled(st
 }
 
 void assert_fdi_rx_pll(struct drm_i915_private *dev_priv,
-		       enum pipe pipe, bool state)
+		       enum i915_pipe pipe, bool state)
 {
 	int reg;
 	u32 val;
@@ -1066,11 +1066,11 @@ void assert_fdi_rx_pll(struct drm_i915_p
 }
 
 static void assert_panel_unlocked(struct drm_i915_private *dev_priv,
-				  enum pipe pipe)
+				  enum i915_pipe pipe)
 {
 	int pp_reg, lvds_reg;
 	u32 val;
-	enum pipe panel_pipe = PIPE_A;
+	enum i915_pipe panel_pipe = PIPE_A;
 	bool locked = true;
 
 	if (HAS_PCH_SPLIT(dev_priv->dev)) {
@@ -1095,7 +1095,7 @@ static void assert_panel_unlocked(struct
 }
 
 static void assert_cursor(struct drm_i915_private *dev_priv,
-			  enum pipe pipe, bool state)
+			  enum i915_pipe pipe, bool state)
 {
 	struct drm_device *dev = dev_priv->dev;
 	bool cur_state;
@@ -1115,7 +1115,7 @@ static void assert_cursor(struct drm_i91
 #define assert_cursor_disabled(d, p) assert_cursor(d, p, false)
 
 void assert_pipe(struct drm_i915_private *dev_priv,
-		 enum pipe pipe, bool state)
+		 enum i915_pipe pipe, bool state)
 {
 	int reg;
 	u32 val;
@@ -1160,7 +1160,7 @@ static void assert_plane(struct drm_i915
 #define assert_plane_disabled(d, p) assert_plane(d, p, false)
 
 static void assert_planes_disabled(struct drm_i915_private *dev_priv,
-				   enum pipe pipe)
+				   enum i915_pipe pipe)
 {
 	struct drm_device *dev = dev_priv->dev;
 	int reg, i;
@@ -1190,7 +1190,7 @@ static void assert_planes_disabled(struc
 }
 
 static void assert_sprites_disabled(struct drm_i915_private *dev_priv,
-				    enum pipe pipe)
+				    enum i915_pipe pipe)
 {
 	struct drm_device *dev = dev_priv->dev;
 	int reg, sprite;
@@ -1233,7 +1233,7 @@ static void ibx_assert_pch_refclk_enable
 }
 
 static void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv,
-					   enum pipe pipe)
+					   enum i915_pipe pipe)
 {
 	int reg;
 	u32 val;
@@ -1248,7 +1248,7 @@ static void assert_pch_transcoder_disabl
 }
 
 static bool dp_pipe_enabled(struct drm_i915_private *dev_priv,
-			    enum pipe pipe, u32 port_sel, u32 val)
+			    enum i915_pipe pipe, u32 port_sel, u32 val)
 {
 	if ((val & DP_PORT_EN) == 0)
 		return false;
@@ -1266,7 +1266,7 @@ static bool dp_pipe_enabled(struct drm_i
 }
 
 static bool hdmi_pipe_enabled(struct drm_i915_private *dev_priv,
-			      enum pipe pipe, u32 val)
+			      enum i915_pipe pipe, u32 val)
 {
 	if ((val & SDVO_ENABLE) == 0)
 		return false;
@@ -1282,7 +1282,7 @@ static bool hdmi_pipe_enabled(struct drm
 }
 
 static bool lvds_pipe_enabled(struct drm_i915_private *dev_priv,
-			      enum pipe pipe, u32 val)
+			      enum i915_pipe pipe, u32 val)
 {
 	if ((val & LVDS_PORT_EN) == 0)
 		return false;
@@ -1298,7 +1298,7 @@ static bool lvds_pipe_enabled(struct drm
 }
 
 static bool adpa_pipe_enabled(struct drm_i915_private *dev_priv,
-			      enum pipe pipe, u32 val)
+			      enum i915_pipe pipe, u32 val)
 {
 	if ((val & ADPA_DAC_ENABLE) == 0)
 		return false;
@@ -1313,7 +1313,7 @@ static bool adpa_pipe_enabled(struct drm
 }
 
 static void assert_pch_dp_disabled(struct drm_i915_private *dev_priv,
-				   enum pipe pipe, int reg, u32 port_sel)
+				   enum i915_pipe pipe, int reg, u32 port_sel)
 {
 	u32 val = I915_READ(reg);
 	WARN(dp_pipe_enabled(dev_priv, pipe, port_sel, val),
@@ -1326,7 +1326,7 @@ static void assert_pch_dp_disabled(struc
 }
 
 static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv,
-				     enum pipe pipe, int reg)
+				     enum i915_pipe pipe, int reg)
 {
 	u32 val = I915_READ(reg);
 	WARN(hdmi_pipe_enabled(dev_priv, pipe, val),
@@ -1339,7 +1339,7 @@ static void assert_pch_hdmi_disabled(str
 }
 
 static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv,
-				      enum pipe pipe)
+				      enum i915_pipe pipe)
 {
 	int reg;
 	u32 val;
@@ -1496,7 +1496,7 @@ static void i9xx_enable_pll(struct intel
  *
  * Note!  This is for pre-ILK only.
  */
-static void i9xx_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)
+static void i9xx_disable_pll(struct drm_i915_private *dev_priv, enum i915_pipe pipe)
 {
 	/* Don't disable pipe A or pipe A PLLs if needed */
 	if (pipe == PIPE_A && (dev_priv->quirks & QUIRK_PIPEA_FORCE))
@@ -1509,7 +1509,7 @@ static void i9xx_disable_pll(struct drm_
 	POSTING_READ(DPLL(pipe));
 }
 
-static void vlv_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe)
+static void vlv_disable_pll(struct drm_i915_private *dev_priv, enum i915_pipe pipe)
 {
 	u32 val = 0;
 
@@ -1619,7 +1619,7 @@ static void intel_disable_shared_dpll(st
 }
 
 static void ironlake_enable_pch_transcoder(struct drm_i915_private *dev_priv,
-					   enum pipe pipe)
+					   enum i915_pipe pipe)
 {
 	struct drm_device *dev = dev_priv->dev;
 	struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
@@ -1683,7 +1683,7 @@ static void lpt_enable_pch_transcoder(st
 	BUG_ON(INTEL_INFO(dev_priv->dev)->gen < 5);
 
 	/* FDI must be feeding us bits for PCH ports */
-	assert_fdi_tx_enabled(dev_priv, (enum pipe) cpu_transcoder);
+	assert_fdi_tx_enabled(dev_priv, (enum i915_pipe) cpu_transcoder);
 	assert_fdi_rx_enabled(dev_priv, TRANSCODER_A);
 
 	/* Workaround: set timing override bit. */
@@ -1706,7 +1706,7 @@ static void lpt_enable_pch_transcoder(st
 }
 
 static void ironlake_disable_pch_transcoder(struct drm_i915_private *dev_priv,
-					    enum pipe pipe)
+					    enum i915_pipe pipe)
 {
 	struct drm_device *dev = dev_priv->dev;
 	uint32_t reg, val;
@@ -1763,10 +1763,10 @@ static void intel_enable_pipe(struct int
 {
 	struct drm_device *dev = crtc->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe = crtc->pipe;
+	enum i915_pipe pipe = crtc->pipe;
 	enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv,
 								      pipe);
-	enum pipe pch_transcoder;
+	enum i915_pipe pch_transcoder;
 	int reg;
 	u32 val;
 
@@ -1794,7 +1794,7 @@ static void intel_enable_pipe(struct int
 			/* if driving the PCH, we need FDI enabled */
 			assert_fdi_rx_pll_enabled(dev_priv, pch_transcoder);
 			assert_fdi_tx_pll_enabled(dev_priv,
-						  (enum pipe) cpu_transcoder);
+						  (enum i915_pipe) cpu_transcoder);
 		}
 		/* FIXME: assert CPU port conditions for SNB+ */
 	}
@@ -1834,7 +1834,7 @@ static void intel_enable_pipe(struct int
  * Will wait until the pipe has shut down before returning.
  */
 static void intel_disable_pipe(struct drm_i915_private *dev_priv,
-			       enum pipe pipe)
+			       enum i915_pipe pipe)
 {
 	enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv,
 								      pipe);
@@ -1885,7 +1885,7 @@ void intel_flush_primary_plane(struct dr
  * Enable @plane on @pipe, making sure that @pipe is running first.
  */
 static void intel_enable_primary_hw_plane(struct drm_i915_private *dev_priv,
-					  enum plane plane, enum pipe pipe)
+					  enum plane plane, enum i915_pipe pipe)
 {
 	struct intel_crtc *intel_crtc =
 		to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
@@ -1918,7 +1918,7 @@ static void intel_enable_primary_hw_plan
  * Disable @plane; should be an independent operation.
  */
 static void intel_disable_primary_hw_plane(struct drm_i915_private *dev_priv,
-					   enum plane plane, enum pipe pipe)
+					   enum plane plane, enum i915_pipe pipe)
 {
 	struct intel_crtc *intel_crtc =
 		to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
@@ -2082,7 +2082,7 @@ static bool intel_alloc_plane_obj(struct
 {
 	struct drm_device *dev = crtc->base.dev;
 	struct drm_i915_gem_object *obj = NULL;
-	struct drm_mode_fb_cmd2 mode_cmd = { 0 };
+	struct drm_mode_fb_cmd2 mode_cmd = { .fb_id = 0 };
 	u32 base = plane_config->base;
 
 	if (plane_config->size == 0)
@@ -3260,7 +3260,7 @@ static void lpt_program_iclkip(struct dr
 }
 
 static void ironlake_pch_transcoder_set_timings(struct intel_crtc *crtc,
-						enum pipe pch_transcoder)
+						enum i915_pipe pch_transcoder)
 {
 	struct drm_device *dev = crtc->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -3570,7 +3570,7 @@ static void ironlake_pfit_enable(struct 
 static void intel_enable_planes(struct drm_crtc *crtc)
 {
 	struct drm_device *dev = crtc->dev;
-	enum pipe pipe = to_intel_crtc(crtc)->pipe;
+	enum i915_pipe pipe = to_intel_crtc(crtc)->pipe;
 	struct drm_plane *plane;
 	struct intel_plane *intel_plane;
 
@@ -3584,7 +3584,7 @@ static void intel_enable_planes(struct d
 static void intel_disable_planes(struct drm_crtc *crtc)
 {
 	struct drm_device *dev = crtc->dev;
-	enum pipe pipe = to_intel_crtc(crtc)->pipe;
+	enum i915_pipe pipe = to_intel_crtc(crtc)->pipe;
 	struct drm_plane *plane;
 	struct intel_plane *intel_plane;
 
@@ -3656,7 +3656,7 @@ static void intel_crtc_load_lut(struct d
 	struct drm_device *dev = crtc->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	int palreg = PALETTE(pipe);
 	int i;
 	bool reenable_ips = false;
@@ -4072,7 +4072,7 @@ static void intel_crtc_dpms_overlay(stru
  * enabled.
  */
 static void
-g4x_fixup_plane(struct drm_i915_private *dev_priv, enum pipe pipe)
+g4x_fixup_plane(struct drm_i915_private *dev_priv, enum i915_pipe pipe)
 {
 	u32 cntl = I915_READ(CURCNTR(pipe));
 
@@ -4157,7 +4157,7 @@ static unsigned long get_crtc_power_doma
 	struct drm_device *dev = crtc->dev;
 	struct intel_encoder *intel_encoder;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	bool pfit_enabled = intel_crtc->config.pch_pfit.enabled;
 	unsigned long mask;
 	enum transcoder transcoder;
@@ -4662,7 +4662,7 @@ static void intel_connector_check_state(
 		struct intel_encoder *encoder = connector->encoder;
 		struct drm_crtc *crtc;
 		bool encoder_enabled;
-		enum pipe pipe;
+		enum i915_pipe pipe;
 
 		DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
 			      connector->base.base.id,
@@ -4714,13 +4714,13 @@ void intel_connector_dpms(struct drm_con
  * of the connector. */
 bool intel_connector_get_hw_state(struct intel_connector *connector)
 {
-	enum pipe pipe = 0;
+	enum i915_pipe pipe = 0;
 	struct intel_encoder *encoder = connector->encoder;
 
 	return encoder->get_hw_state(encoder, &pipe);
 }
 
-static bool ironlake_check_fdi_lanes(struct drm_device *dev, enum pipe pipe,
+static bool ironlake_check_fdi_lanes(struct drm_device *dev, enum i915_pipe pipe,
 				     struct intel_crtc_config *pipe_config)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -5099,7 +5099,7 @@ static void i9xx_update_pll_dividers(str
 	}
 }
 
-static void vlv_pllb_recal_opamp(struct drm_i915_private *dev_priv, enum pipe
+static void vlv_pllb_recal_opamp(struct drm_i915_private *dev_priv, enum i915_pipe
 		pipe)
 {
 	u32 reg_val;
@@ -5402,7 +5402,7 @@ static void intel_set_pipe_timings(struc
 {
 	struct drm_device *dev = intel_crtc->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder;
 	struct drm_display_mode *adjusted_mode =
 		&intel_crtc->config.adjusted_mode;
@@ -6394,7 +6394,7 @@ static void haswell_set_pipeconf(struct 
 	struct drm_device *dev = crtc->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder;
 	uint32_t val;
 
@@ -6697,7 +6697,7 @@ static void intel_pch_transcoder_get_m_n
 {
 	struct drm_device *dev = crtc->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe = crtc->pipe;
+	enum i915_pipe pipe = crtc->pipe;
 
 	m_n->link_m = I915_READ(PCH_TRANS_LINK_M1(pipe));
 	m_n->link_n = I915_READ(PCH_TRANS_LINK_N1(pipe));
@@ -6714,7 +6714,7 @@ static void intel_cpu_transcoder_get_m_n
 {
 	struct drm_device *dev = crtc->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe = crtc->pipe;
+	enum i915_pipe pipe = crtc->pipe;
 
 	if (INTEL_INFO(dev)->gen >= 5) {
 		m_n->link_m = I915_READ(PIPE_LINK_M1(transcoder));
@@ -7209,7 +7209,7 @@ static bool haswell_get_pipe_config(stru
 
 	tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP));
 	if (tmp & TRANS_DDI_FUNC_ENABLE) {
-		enum pipe trans_edp_pipe;
+		enum i915_pipe trans_edp_pipe;
 		switch (tmp & TRANS_DDI_EDP_INPUT_MASK) {
 		default:
 			WARN(1, "unknown pipe linked to edp transcoder\n");
@@ -8372,7 +8372,7 @@ struct drm_display_mode *intel_crtc_mode
 	int hsync = I915_READ(HSYNC(cpu_transcoder));
 	int vtot = I915_READ(VTOTAL(cpu_transcoder));
 	int vsync = I915_READ(VSYNC(cpu_transcoder));
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 
 	mode = kzalloc(sizeof(*mode), GFP_KERNEL);
 	if (!mode)
@@ -9781,7 +9781,7 @@ check_encoder_state(struct drm_device *d
 			    base.head) {
 		bool enabled = false;
 		bool active = false;
-		enum pipe pipe, tracked_pipe;
+		enum i915_pipe pipe, tracked_pipe;
 
 		DRM_DEBUG_KMS("[ENCODER:%d:%s]\n",
 			      encoder->base.base.id,
@@ -9875,7 +9875,7 @@ check_crtc_state(struct drm_device *dev)
 
 		list_for_each_entry(encoder, &dev->mode_config.encoder_list,
 				    base.head) {
-			enum pipe pipe;
+			enum i915_pipe pipe;
 			if (encoder->base.crtc != &crtc->base)
 				continue;
 			if (encoder->get_hw_state(encoder, &pipe))
@@ -10666,7 +10666,7 @@ static void intel_crtc_init(struct drm_d
 	drm_crtc_helper_add(&intel_crtc->base, &intel_helper_funcs);
 }
 
-enum pipe intel_get_pipe_from_connector(struct intel_connector *connector)
+enum i915_pipe intel_get_pipe_from_connector(struct intel_connector *connector)
 {
 	struct drm_encoder *encoder = connector->base.encoder;
 
@@ -11381,7 +11381,7 @@ void intel_modeset_init(struct drm_devic
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	int sprite, ret;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	struct intel_crtc *crtc;
 
 	drm_mode_config_init(dev);
@@ -11696,7 +11696,7 @@ void i915_redisable_vga(struct drm_devic
 static void intel_modeset_readout_hw_state(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	struct intel_crtc *crtc;
 	struct intel_encoder *encoder;
 	struct intel_connector *connector;
@@ -11782,7 +11782,7 @@ void intel_modeset_setup_hw_state(struct
 				  bool force_restore)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	struct intel_crtc *crtc;
 	struct intel_encoder *encoder;
 	int i;

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.7.2.1 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.7.2.2
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h:1.7.2.1	Fri Aug 22 10:32:18 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h	Mon Nov 10 19:45:54 2014
@@ -56,7 +56,7 @@
 #define DRIVER_DESC		"Intel Graphics"
 #define DRIVER_DATE		"20080730"
 
-enum pipe {
+enum i915_pipe {
 	INVALID_PIPE = -1,
 	PIPE_A = 0,
 	PIPE_B,
@@ -2237,11 +2237,11 @@ extern void intel_uncore_fini(struct drm
 extern void intel_uncore_destroy(struct drm_device *dev);
 
 void
-i915_enable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
+i915_enable_pipestat(struct drm_i915_private *dev_priv, enum i915_pipe pipe,
 		     u32 status_mask);
 
 void
-i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
+i915_disable_pipestat(struct drm_i915_private *dev_priv, enum i915_pipe pipe,
 		      u32 status_mask);
 
 void valleyview_enable_display_irqs(struct drm_i915_private *dev_priv);
@@ -2820,8 +2820,8 @@ u32 vlv_bunit_read(struct drm_i915_priva
 void vlv_bunit_write(struct drm_i915_private *dev_priv, u32 reg, u32 val);
 u32 vlv_gps_core_read(struct drm_i915_private *dev_priv, u32 reg);
 void vlv_gps_core_write(struct drm_i915_private *dev_priv, u32 reg, u32 val);
-u32 vlv_dpio_read(struct drm_i915_private *dev_priv, enum pipe pipe, int reg);
-void vlv_dpio_write(struct drm_i915_private *dev_priv, enum pipe pipe, int reg, u32 val);
+u32 vlv_dpio_read(struct drm_i915_private *dev_priv, enum i915_pipe pipe, int reg);
+void vlv_dpio_write(struct drm_i915_private *dev_priv, enum i915_pipe pipe, int reg, u32 val);
 u32 intel_sbi_read(struct drm_i915_private *dev_priv, u16 reg,
 		   enum intel_sbi_destination destination);
 void intel_sbi_write(struct drm_i915_private *dev_priv, u16 reg, u32 value,

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.2 src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.3
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c:1.14.2.2	Wed Nov  5 17:57:13 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_gem.c	Mon Nov 10 19:45:54 2014
@@ -810,6 +810,7 @@ i915_gem_pread_ioctl(struct drm_device *
 		     struct drm_file *file)
 {
 	struct drm_i915_gem_pread *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	int ret = 0;
 
@@ -825,11 +826,12 @@ i915_gem_pread_ioctl(struct drm_device *
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, args->handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	/* Bounds check source.  */
 	if (args->offset > obj->base.size ||
@@ -1202,6 +1204,7 @@ i915_gem_pwrite_ioctl(struct drm_device 
 		      struct drm_file *file)
 {
 	struct drm_i915_gem_pwrite *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	int ret;
 
@@ -1226,11 +1229,12 @@ i915_gem_pwrite_ioctl(struct drm_device 
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, args->handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	/* Bounds check destination. */
 	if (args->offset > obj->base.size ||
@@ -1388,6 +1392,8 @@ __wait_seqno(struct intel_ring_buffer *r
 
 	if (timeout)
 		ticks = mstohz(timespec_to_ns(timeout) / 1000000);
+	else
+		ticks = 1;
 
 	if (INTEL_INFO(dev)->gen >= 6 && can_wait_boost(file_priv)) {
 		gen6_rps_boost(dev_priv);
@@ -1662,6 +1668,7 @@ i915_gem_set_domain_ioctl(struct drm_dev
 			  struct drm_file *file)
 {
 	struct drm_i915_gem_set_domain *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	uint32_t read_domains = args->read_domains;
 	uint32_t write_domain = args->write_domain;
@@ -1684,11 +1691,12 @@ i915_gem_set_domain_ioctl(struct drm_dev
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, args->handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	/* Try to flush the object off the GPU without holding the lock.
 	 * We will repeat the flush holding the lock in the normal manner
@@ -1728,6 +1736,7 @@ i915_gem_sw_finish_ioctl(struct drm_devi
 			 struct drm_file *file)
 {
 	struct drm_i915_gem_sw_finish *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	int ret = 0;
 
@@ -1735,11 +1744,12 @@ i915_gem_sw_finish_ioctl(struct drm_devi
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, args->handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	/* Pinned buffers may be scanout, so flush the cache */
 	if (obj->pin_display)
@@ -2267,6 +2277,7 @@ i915_gem_mmap_gtt(struct drm_file *file,
 		  uint64_t *offset)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	int ret;
 
@@ -2274,11 +2285,12 @@ i915_gem_mmap_gtt(struct drm_file *file,
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	if (obj->base.size > dev_priv->gtt.mappable_end) {
 		ret = -E2BIG;
@@ -3365,6 +3377,7 @@ i915_gem_wait_ioctl(struct drm_device *d
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct drm_i915_gem_wait *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	struct intel_ring_buffer *ring = NULL;
 	struct timespec timeout_stack, *timeout = NULL;
@@ -3381,11 +3394,12 @@ i915_gem_wait_ioctl(struct drm_device *d
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->bo_handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, args->bo_handle);
+	if (gobj == NULL) {
 		mutex_unlock(&dev->struct_mutex);
 		return -ENOENT;
 	}
+	obj = to_intel_bo(gobj);
 
 	/* Need to make sure the object gets inactive eventually. */
 	ret = i915_gem_object_flush_active(obj);
@@ -4328,6 +4342,7 @@ int i915_gem_get_caching_ioctl(struct dr
 			       struct drm_file *file)
 {
 	struct drm_i915_gem_caching *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	int ret;
 
@@ -4335,11 +4350,12 @@ int i915_gem_get_caching_ioctl(struct dr
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, args->handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	switch (obj->cache_level) {
 	case I915_CACHE_LLC:
@@ -4366,6 +4382,7 @@ int i915_gem_set_caching_ioctl(struct dr
 			       struct drm_file *file)
 {
 	struct drm_i915_gem_caching *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	enum i915_cache_level level;
 	int ret;
@@ -4388,11 +4405,12 @@ int i915_gem_set_caching_ioctl(struct dr
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, args->handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	ret = i915_gem_object_set_cache_level(obj, level);
 
@@ -4698,6 +4716,7 @@ i915_gem_pin_ioctl(struct drm_device *de
 		   struct drm_file *file)
 {
 	struct drm_i915_gem_pin *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	int ret;
 
@@ -4708,11 +4727,12 @@ i915_gem_pin_ioctl(struct drm_device *de
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, args->handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	if (obj->madv != I915_MADV_WILLNEED) {
 		DRM_DEBUG("Attempting to pin a purgeable buffer\n");
@@ -4754,6 +4774,7 @@ i915_gem_unpin_ioctl(struct drm_device *
 		     struct drm_file *file)
 {
 	struct drm_i915_gem_pin *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	int ret;
 
@@ -4761,11 +4782,12 @@ i915_gem_unpin_ioctl(struct drm_device *
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, args->handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	if (obj->pin_filp != file) {
 		DRM_DEBUG("Not pinned by caller in i915_gem_pin_ioctl(): %d\n",
@@ -4791,6 +4813,7 @@ i915_gem_busy_ioctl(struct drm_device *d
 		    struct drm_file *file)
 {
 	struct drm_i915_gem_busy *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	int ret;
 
@@ -4798,11 +4821,12 @@ i915_gem_busy_ioctl(struct drm_device *d
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file, args->handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	/* Count all active objects as busy, even if they are currently not used
 	 * by the gpu. Users of this interface expect objects to eventually
@@ -4835,6 +4859,7 @@ i915_gem_madvise_ioctl(struct drm_device
 		       struct drm_file *file_priv)
 {
 	struct drm_i915_gem_madvise *args = data;
+	struct drm_gem_object *gobj;
 	struct drm_i915_gem_object *obj;
 	int ret;
 
@@ -4850,11 +4875,12 @@ i915_gem_madvise_ioctl(struct drm_device
 	if (ret)
 		return ret;
 
-	obj = to_intel_bo(drm_gem_object_lookup(dev, file_priv, args->handle));
-	if (&obj->base == NULL) {
+	gobj = drm_gem_object_lookup(dev, file_priv, args->handle);
+	if (gobj == NULL) {
 		ret = -ENOENT;
 		goto unlock;
 	}
+	obj = to_intel_bo(gobj);
 
 	if (i915_gem_obj_is_pinned(obj)) {
 		ret = -EINVAL;

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6.2.3 src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6.2.4
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c:1.6.2.3	Sun Sep 21 18:12:18 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_irq.c	Mon Nov 10 19:45:54 2014
@@ -207,7 +207,7 @@ static bool ivb_can_enable_err_int(struc
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *crtc;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	assert_spin_locked(&dev_priv->irq_lock);
 
@@ -224,7 +224,7 @@ static bool ivb_can_enable_err_int(struc
 static bool cpt_can_enable_serr_int(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	struct intel_crtc *crtc;
 
 	assert_spin_locked(&dev_priv->irq_lock);
@@ -239,7 +239,7 @@ static bool cpt_can_enable_serr_int(stru
 	return true;
 }
 
-static void i9xx_clear_fifo_underrun(struct drm_device *dev, enum pipe pipe)
+static void i9xx_clear_fifo_underrun(struct drm_device *dev, enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	u32 reg = PIPESTAT(pipe);
@@ -252,7 +252,7 @@ static void i9xx_clear_fifo_underrun(str
 }
 
 static void ironlake_set_fifo_underrun_reporting(struct drm_device *dev,
-						 enum pipe pipe, bool enable)
+						 enum i915_pipe pipe, bool enable)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	uint32_t bit = (pipe == PIPE_A) ? DE_PIPEA_FIFO_UNDERRUN :
@@ -265,7 +265,7 @@ static void ironlake_set_fifo_underrun_r
 }
 
 static void ivybridge_set_fifo_underrun_reporting(struct drm_device *dev,
-						  enum pipe pipe, bool enable)
+						  enum i915_pipe pipe, bool enable)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	if (enable) {
@@ -290,7 +290,7 @@ static void ivybridge_set_fifo_underrun_
 }
 
 static void broadwell_set_fifo_underrun_reporting(struct drm_device *dev,
-						  enum pipe pipe, bool enable)
+						  enum i915_pipe pipe, bool enable)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
@@ -395,7 +395,7 @@ static void cpt_set_fifo_underrun_report
  * Returns the previous state of underrun reporting.
  */
 bool __intel_set_cpu_fifo_underrun_reporting(struct drm_device *dev,
-					     enum pipe pipe, bool enable)
+					     enum i915_pipe pipe, bool enable)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
@@ -425,7 +425,7 @@ done:
 }
 
 bool intel_set_cpu_fifo_underrun_reporting(struct drm_device *dev,
-					   enum pipe pipe, bool enable)
+					   enum i915_pipe pipe, bool enable)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	unsigned long flags;
@@ -439,7 +439,7 @@ bool intel_set_cpu_fifo_underrun_reporti
 }
 
 static bool __cpu_fifo_underrun_reporting_enabled(struct drm_device *dev,
-						  enum pipe pipe)
+						  enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
@@ -502,7 +502,7 @@ done:
 
 
 static void
-__i915_enable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
+__i915_enable_pipestat(struct drm_i915_private *dev_priv, enum i915_pipe pipe,
 		       u32 enable_mask, u32 status_mask)
 {
 	u32 reg = PIPESTAT(pipe);
@@ -526,7 +526,7 @@ __i915_enable_pipestat(struct drm_i915_p
 }
 
 static void
-__i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
+__i915_disable_pipestat(struct drm_i915_private *dev_priv, enum i915_pipe pipe,
 		        u32 enable_mask, u32 status_mask)
 {
 	u32 reg = PIPESTAT(pipe);
@@ -571,7 +571,7 @@ static u32 vlv_get_pipestat_enable_mask(
 }
 
 void
-i915_enable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
+i915_enable_pipestat(struct drm_i915_private *dev_priv, enum i915_pipe pipe,
 		     u32 status_mask)
 {
 	u32 enable_mask;
@@ -585,7 +585,7 @@ i915_enable_pipestat(struct drm_i915_pri
 }
 
 void
-i915_disable_pipestat(struct drm_i915_private *dev_priv, enum pipe pipe,
+i915_disable_pipestat(struct drm_i915_private *dev_priv, enum i915_pipe pipe,
 		      u32 status_mask)
 {
 	u32 enable_mask;
@@ -730,7 +730,7 @@ static u32 gm45_get_vblank_counter(struc
 #define __raw_i915_read32(dev_priv__, reg__) readl((dev_priv__)->regs + (reg__))
 #endif
 
-static bool ilk_pipe_in_vblank_locked(struct drm_device *dev, enum pipe pipe)
+static bool ilk_pipe_in_vblank_locked(struct drm_device *dev, enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	uint32_t status;
@@ -1479,7 +1479,7 @@ static void dp_aux_irq_handler(struct dr
 }
 
 #if defined(CONFIG_DEBUG_FS)
-static void display_pipe_crc_irq_handler(struct drm_device *dev, enum pipe pipe,
+static void display_pipe_crc_irq_handler(struct drm_device *dev, enum i915_pipe pipe,
 					 uint32_t crc0, uint32_t crc1,
 					 uint32_t crc2, uint32_t crc3,
 					 uint32_t crc4)
@@ -1524,14 +1524,14 @@ static void display_pipe_crc_irq_handler
 }
 #else
 static inline void
-display_pipe_crc_irq_handler(struct drm_device *dev, enum pipe pipe,
+display_pipe_crc_irq_handler(struct drm_device *dev, enum i915_pipe pipe,
 			     uint32_t crc0, uint32_t crc1,
 			     uint32_t crc2, uint32_t crc3,
 			     uint32_t crc4) {}
 #endif
 
 
-static void hsw_pipe_crc_irq_handler(struct drm_device *dev, enum pipe pipe)
+static void hsw_pipe_crc_irq_handler(struct drm_device *dev, enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
@@ -1540,7 +1540,7 @@ static void hsw_pipe_crc_irq_handler(str
 				     0, 0, 0, 0);
 }
 
-static void ivb_pipe_crc_irq_handler(struct drm_device *dev, enum pipe pipe)
+static void ivb_pipe_crc_irq_handler(struct drm_device *dev, enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
@@ -1552,7 +1552,7 @@ static void ivb_pipe_crc_irq_handler(str
 				     I915_READ(PIPE_CRC_RES_5_IVB(pipe)));
 }
 
-static void i9xx_pipe_crc_irq_handler(struct drm_device *dev, enum pipe pipe)
+static void i9xx_pipe_crc_irq_handler(struct drm_device *dev, enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	uint32_t res1, res2;
@@ -1777,7 +1777,7 @@ static void ivb_err_int_handler(struct d
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	u32 err_int = I915_READ(GEN7_ERR_INT);
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	if (err_int & ERR_INT_POISON)
 		DRM_ERROR("Poison interrupt\n");
@@ -1867,7 +1867,7 @@ static void cpt_irq_handler(struct drm_d
 static void ilk_display_irq_handler(struct drm_device *dev, u32 de_iir)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	if (de_iir & DE_AUX_CHANNEL_A)
 		dp_aux_irq_handler(dev);
@@ -1917,7 +1917,7 @@ static void ilk_display_irq_handler(stru
 static void ivb_display_irq_handler(struct drm_device *dev, u32 de_iir)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	if (de_iir & DE_ERR_INT_IVB)
 		ivb_err_int_handler(dev);
@@ -2023,7 +2023,7 @@ static irqreturn_t gen8_irq_handler(DRM_
 	u32 master_ctl;
 	irqreturn_t ret = IRQ_NONE;
 	uint32_t tmp = 0;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	master_ctl = I915_READ(GEN8_MASTER_IRQ);
 	master_ctl &= ~GEN8_MASTER_IRQ_CONTROL;

Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_ums.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_ums.c:1.1.1.1 src/sys/external/bsd/drm2/dist/drm/i915/i915_ums.c:1.1.1.1.4.1
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_ums.c:1.1.1.1	Wed Jul 16 19:35:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_ums.c	Mon Nov 10 19:45:54 2014
@@ -31,7 +31,7 @@
 #include "intel_drv.h"
 #include "i915_reg.h"
 
-static bool i915_pipe_enabled(struct drm_device *dev, enum pipe pipe)
+static bool i915_pipe_enabled(struct drm_device *dev, enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	u32	dpll_reg;
@@ -48,7 +48,7 @@ static bool i915_pipe_enabled(struct drm
 	return (I915_READ(dpll_reg) & DPLL_VCO_ENABLE);
 }
 
-static void i915_save_palette(struct drm_device *dev, enum pipe pipe)
+static void i915_save_palette(struct drm_device *dev, enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	unsigned long reg = (pipe == PIPE_A ? _PALETTE_A : _PALETTE_B);
@@ -70,7 +70,7 @@ static void i915_save_palette(struct drm
 		array[i] = I915_READ(reg + (i << 2));
 }
 
-static void i915_restore_palette(struct drm_device *dev, enum pipe pipe)
+static void i915_restore_palette(struct drm_device *dev, enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	unsigned long reg = (pipe == PIPE_A ? _PALETTE_A : _PALETTE_B);
Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi_cmd.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi_cmd.c:1.1.1.1 src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi_cmd.c:1.1.1.1.4.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi_cmd.c:1.1.1.1	Wed Jul 16 19:35:26 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi_cmd.c	Mon Nov 10 19:45:54 2014
@@ -54,7 +54,7 @@ static void print_stat(struct intel_dsi 
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	u32 val;
 
 	val = I915_READ(MIPI_INTR_STAT(pipe));
@@ -110,7 +110,7 @@ void dsi_hs_mode_enable(struct intel_dsi
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	u32 temp;
 	u32 mask = DBI_FIFO_EMPTY;
 
@@ -131,7 +131,7 @@ static int dsi_vc_send_short(struct inte
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	u32 ctrl_reg;
 	u32 ctrl;
 	u32 mask;
@@ -173,7 +173,7 @@ static int dsi_vc_send_long(struct intel
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	u32 data_reg;
 	int i, j, n;
 	u32 mask;
@@ -292,7 +292,7 @@ static int dsi_read_data_return(struct i
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	int i, len = 0;
 	u32 data_reg, val;
 
@@ -318,7 +318,7 @@ int dsi_vc_dcs_read(struct intel_dsi *in
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	u32 mask;
 	int ret;
 
@@ -354,7 +354,7 @@ int dsi_vc_generic_read(struct intel_dsi
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	u32 mask;
 	int ret;
 
@@ -395,7 +395,7 @@ int dpi_send_cmd(struct intel_dsi *intel
 	struct drm_device *dev = encoder->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	u32 mask;
 
 	/* XXX: pipe, hs */
Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c:1.1.1.1 src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c:1.1.1.1.4.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c:1.1.1.1	Wed Jul 16 19:35:26 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sideband.c	Mon Nov 10 19:45:54 2014
@@ -176,7 +176,7 @@ void vlv_gps_core_write(struct drm_i915_
 			PUNIT_OPCODE_REG_WRITE, reg, &val);
 }
 
-u32 vlv_dpio_read(struct drm_i915_private *dev_priv, enum pipe pipe, int reg)
+u32 vlv_dpio_read(struct drm_i915_private *dev_priv, enum i915_pipe pipe, int reg)
 {
 	u32 val = 0;
 
@@ -185,7 +185,7 @@ u32 vlv_dpio_read(struct drm_i915_privat
 	return val;
 }
 
-void vlv_dpio_write(struct drm_i915_private *dev_priv, enum pipe pipe, int reg, u32 val)
+void vlv_dpio_write(struct drm_i915_private *dev_priv, enum i915_pipe pipe, int reg, u32 val)
 {
 	vlv_sideband_rw(dev_priv, DPIO_DEVFN, DPIO_PHY_IOSF_PORT(DPIO_PHY(pipe)),
 			DPIO_OPCODE_REG_WRITE, reg, &val);

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c:1.4.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c:1.4	Wed Jul 16 20:03:56 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_crt.c	Mon Nov 10 19:45:54 2014
@@ -63,7 +63,7 @@ static struct intel_crt *intel_attached_
 }
 
 static bool intel_crt_get_hw_state(struct intel_encoder *encoder,
-				   enum pipe *pipe)
+				   enum i915_pipe *pipe)
 {
 	struct drm_device *dev = encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
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.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.4.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c:1.4	Wed Jul 16 20:03:56 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_ddi.c	Mon Nov 10 19:45:54 2014
@@ -803,7 +803,7 @@ bool intel_ddi_pll_select(struct intel_c
 	struct drm_i915_private *dev_priv = crtc->dev->dev_private;
 	struct intel_ddi_plls *plls = &dev_priv->ddi_plls;
 	int type = intel_encoder->type;
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	int clock = intel_crtc->config.port_clock;
 
 	intel_ddi_put_crtc_pll(crtc);
@@ -1005,7 +1005,7 @@ void intel_ddi_enable_transcoder_func(st
 	struct drm_encoder *encoder = &intel_encoder->base;
 	struct drm_device *dev = crtc->dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder;
 	enum port port = intel_ddi_get_encoder_port(intel_encoder);
 	int type = intel_encoder->type;
@@ -1106,7 +1106,7 @@ bool intel_ddi_connector_get_hw_state(st
 	struct intel_encoder *intel_encoder = intel_connector->encoder;
 	int type = intel_connector->base.connector_type;
 	enum port port = intel_ddi_get_encoder_port(intel_encoder);
-	enum pipe pipe = 0;
+	enum i915_pipe pipe = 0;
 	enum transcoder cpu_transcoder;
 	enum intel_display_power_domain power_domain;
 	uint32_t tmp;
@@ -1145,7 +1145,7 @@ bool intel_ddi_connector_get_hw_state(st
 }
 
 bool intel_ddi_get_hw_state(struct intel_encoder *encoder,
-			    enum pipe *pipe)
+			    enum i915_pipe *pipe)
 {
 	struct drm_device *dev = encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -1198,7 +1198,7 @@ bool intel_ddi_get_hw_state(struct intel
 }
 
 static uint32_t intel_ddi_get_crtc_pll(struct drm_i915_private *dev_priv,
-				       enum pipe pipe)
+				       enum i915_pipe pipe)
 {
 	uint32_t temp, ret;
 	enum port port = I915_MAX_PORTS;
@@ -1234,7 +1234,7 @@ static uint32_t intel_ddi_get_crtc_pll(s
 void intel_ddi_setup_hw_pll_state(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	struct intel_crtc *intel_crtc;
 
 	dev_priv->ddi_plls.spll_refcount = 0;
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.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c:1.4.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c:1.4	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_hdmi.c	Mon Nov 10 19:45:54 2014
@@ -663,7 +663,7 @@ static void intel_hdmi_mode_set(struct i
 }
 
 static bool intel_hdmi_get_hw_state(struct intel_encoder *encoder,
-				    enum pipe *pipe)
+				    enum i915_pipe *pipe)
 {
 	struct drm_device *dev = encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c:1.4	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_pm.c	Mon Nov 10 19:45:54 2014
@@ -2169,7 +2169,7 @@ static void ilk_compute_wm_parameters(st
 {
 	struct drm_device *dev = crtc->dev;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	struct drm_plane *plane;
 
 	p->active = intel_crtc_active(crtc);
@@ -2373,7 +2373,7 @@ static void ilk_compute_wm_results(struc
 
 	/* LP0 register values */
 	list_for_each_entry(intel_crtc, &dev->mode_config.crtc_list, base.head) {
-		enum pipe pipe = intel_crtc->pipe;
+		enum i915_pipe pipe = intel_crtc->pipe;
 		const struct intel_wm_level *r =
 			&intel_crtc->wm.active.wm[0];
 
@@ -2430,7 +2430,7 @@ static unsigned int ilk_compute_wm_dirty
 					 const struct ilk_wm_values *new)
 {
 	unsigned int dirty = 0;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	int wm_lp;
 
 	for_each_pipe(pipe) {
@@ -2676,7 +2676,7 @@ static void ilk_pipe_wm_get_hw_state(str
 	struct ilk_wm_values *hw = &dev_priv->wm.hw;
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_pipe_wm *active = &intel_crtc->wm.active;
-	enum pipe pipe = intel_crtc->pipe;
+	enum i915_pipe pipe = intel_crtc->pipe;
 	static const unsigned int wm0_pipe_reg[] = {
 		[PIPE_A] = WM0_PIPEA_ILK,
 		[PIPE_B] = WM0_PIPEB_ILK,
@@ -4917,7 +4917,7 @@ static void lpt_suspend_hw(struct drm_de
 static void gen8_init_clock_gating(struct drm_device *dev)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	I915_WRITE(WM3_LP_ILK, 0);
 	I915_WRITE(WM2_LP_ILK, 0);
@@ -5439,7 +5439,7 @@ static void hsw_power_well_post_enable(s
 	}
 }
 
-static void reset_vblank_counter(struct drm_device *dev, enum pipe pipe)
+static void reset_vblank_counter(struct drm_device *dev, enum i915_pipe pipe)
 {
 	assert_spin_locked(&dev->vbl_lock);
 
@@ -5449,7 +5449,7 @@ static void reset_vblank_counter(struct 
 static void hsw_power_well_post_disable(struct drm_i915_private *dev_priv)
 {
 	struct drm_device *dev = dev_priv->dev;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	unsigned long irqflags;
 
 	/*
@@ -5651,7 +5651,7 @@ static void vlv_display_power_well_disab
 					   struct i915_power_well *power_well)
 {
 	struct drm_device *dev = dev_priv->dev;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	WARN_ON_ONCE(power_well->data != PUNIT_POWER_WELL_DISP2D);
 
Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c:1.4 src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c:1.4.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c:1.4	Wed Jul 16 20:03:56 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_tv.c	Mon Nov 10 19:45:54 2014
@@ -835,7 +835,7 @@ static struct intel_tv *intel_attached_t
 }
 
 static bool
-intel_tv_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe)
+intel_tv_get_hw_state(struct intel_encoder *encoder, enum i915_pipe *pipe)
 {
 	struct drm_device *dev = encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;

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.7 src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.7.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c:1.7	Thu Jul 17 17:52:39 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dp.c	Mon Nov 10 19:45:54 2014
@@ -274,7 +274,7 @@ intel_dp_init_panel_power_sequencer_regi
 					      struct intel_dp *intel_dp,
 					      struct edp_power_seq *out);
 
-static enum pipe
+static enum i915_pipe
 vlv_power_sequencer_pipe(struct intel_dp *intel_dp)
 {
 	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
@@ -282,7 +282,7 @@ vlv_power_sequencer_pipe(struct intel_dp
 	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;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 
 	/* modeset should have pipe */
 	if (crtc)
@@ -1441,7 +1441,7 @@ void intel_dp_sink_dpms(struct intel_dp 
 }
 
 static bool intel_dp_get_hw_state(struct intel_encoder *encoder,
-				  enum pipe *pipe)
+				  enum i915_pipe *pipe)
 {
 	struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
 	enum port port = dp_to_dig_port(intel_dp)->port;
@@ -3530,7 +3530,7 @@ intel_dp_init_panel_power_sequencer(stru
 		pp_off_reg = PCH_PP_OFF_DELAYS;
 		pp_div_reg = PCH_PP_DIVISOR;
 	} else {
-		enum pipe pipe = vlv_power_sequencer_pipe(intel_dp);
+		enum i915_pipe pipe = vlv_power_sequencer_pipe(intel_dp);
 
 		pp_ctrl_reg = VLV_PIPE_PP_CONTROL(pipe);
 		pp_on_reg = VLV_PIPE_PP_ON_DELAYS(pipe);
@@ -3629,7 +3629,7 @@ intel_dp_init_panel_power_sequencer_regi
 		pp_off_reg = PCH_PP_OFF_DELAYS;
 		pp_div_reg = PCH_PP_DIVISOR;
 	} else {
-		enum pipe pipe = vlv_power_sequencer_pipe(intel_dp);
+		enum i915_pipe pipe = vlv_power_sequencer_pipe(intel_dp);
 
 		pp_on_reg = VLV_PIPE_PP_ON_DELAYS(pipe);
 		pp_off_reg = VLV_PIPE_PP_OFF_DELAYS(pipe);

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_drv.h
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_drv.h:1.6 src/sys/external/bsd/drm2/dist/drm/i915/intel_drv.h:1.6.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_drv.h:1.6	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_drv.h	Mon Nov 10 19:45:54 2014
@@ -176,7 +176,7 @@ struct intel_encoder {
 	/* Read out the current hw state of this connector, returning true if
 	 * the encoder is active. If the encoder is enabled it also set the pipe
 	 * it is connected to in the pipe parameter. */
-	bool (*get_hw_state)(struct intel_encoder *, enum pipe *pipe);
+	bool (*get_hw_state)(struct intel_encoder *, enum i915_pipe *pipe);
 	/* Reconstructs the equivalent mode flags for the current hardware
 	 * state. This must be called _after_ display->get_pipe_config has
 	 * pre-filled the pipe config. Note that intel_encoder->base.crtc must
@@ -378,7 +378,7 @@ struct intel_pipe_wm {
 
 struct intel_crtc {
 	struct drm_crtc base;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	enum plane plane;
 	u8 lut_r[256], lut_g[256], lut_b[256];
 	/*
@@ -439,7 +439,7 @@ struct intel_plane_wm_parameters {
 struct intel_plane {
 	struct drm_plane base;
 	int plane;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	struct drm_i915_gem_object *obj;
 	bool can_scale;
 	int max_downscale;
@@ -650,9 +650,9 @@ hdmi_to_dig_port(struct intel_hdmi *inte
 
 /* i915_irq.c */
 bool intel_set_cpu_fifo_underrun_reporting(struct drm_device *dev,
-					   enum pipe pipe, bool enable);
+					   enum i915_pipe pipe, bool enable);
 bool __intel_set_cpu_fifo_underrun_reporting(struct drm_device *dev,
-					     enum pipe pipe, bool enable);
+					     enum i915_pipe pipe, bool enable);
 bool intel_set_pch_fifo_underrun_reporting(struct drm_device *dev,
 					   enum transcoder pch_transcoder,
 					   bool enable);
@@ -673,7 +673,7 @@ void intel_prepare_ddi(struct drm_device
 void hsw_fdi_link_train(struct drm_crtc *crtc);
 void intel_ddi_init(struct drm_device *dev, enum port port);
 enum port intel_ddi_get_encoder_port(struct intel_encoder *intel_encoder);
-bool intel_ddi_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe);
+bool intel_ddi_get_hw_state(struct intel_encoder *encoder, enum i915_pipe *pipe);
 int intel_ddi_get_cdclk_freq(struct drm_i915_private *dev_priv);
 void intel_ddi_pll_init(struct drm_device *dev);
 void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc);
@@ -714,11 +714,11 @@ void intel_connector_attach_encoder(stru
 struct drm_encoder *intel_best_encoder(struct drm_connector *connector);
 struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev,
 					     struct drm_crtc *crtc);
-enum pipe intel_get_pipe_from_connector(struct intel_connector *connector);
+enum i915_pipe intel_get_pipe_from_connector(struct intel_connector *connector);
 int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data,
 				struct drm_file *file_priv);
 enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv,
-					     enum pipe pipe);
+					     enum i915_pipe pipe);
 void intel_wait_for_vblank(struct drm_device *dev, int pipe);
 void intel_wait_for_pipe_off(struct drm_device *dev, int pipe);
 int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp);
@@ -747,14 +747,14 @@ void assert_shared_dpll(struct drm_i915_
 #define assert_shared_dpll_enabled(d, p) assert_shared_dpll(d, p, true)
 #define assert_shared_dpll_disabled(d, p) assert_shared_dpll(d, p, false)
 void assert_pll(struct drm_i915_private *dev_priv,
-		enum pipe pipe, bool state);
+		enum i915_pipe pipe, bool state);
 #define assert_pll_enabled(d, p) assert_pll(d, p, true)
 #define assert_pll_disabled(d, p) assert_pll(d, p, false)
 void assert_fdi_rx_pll(struct drm_i915_private *dev_priv,
-		       enum pipe pipe, bool state);
+		       enum i915_pipe pipe, bool state);
 #define assert_fdi_rx_pll_enabled(d, p) assert_fdi_rx_pll(d, p, true)
 #define assert_fdi_rx_pll_disabled(d, p) assert_fdi_rx_pll(d, p, false)
-void assert_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, bool state);
+void assert_pipe(struct drm_i915_private *dev_priv, enum i915_pipe pipe, bool state);
 #define assert_pipe_enabled(d, p) assert_pipe(d, p, true)
 #define assert_pipe_disabled(d, p) assert_pipe(d, p, false)
 void intel_write_eld(struct drm_encoder *encoder,
@@ -955,7 +955,7 @@ bool intel_sdvo_init(struct drm_device *
 
 
 /* intel_sprite.c */
-int intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane);
+int intel_plane_init(struct drm_device *dev, enum i915_pipe pipe, int plane);
 void intel_flush_primary_plane(struct drm_i915_private *dev_priv,
 			       enum plane plane);
 void intel_plane_restore(struct drm_plane *plane);

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c:1.2 src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c:1.2.4.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c:1.2	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_dsi.c	Mon Nov 10 19:45:54 2014
@@ -260,12 +260,12 @@ static void intel_dsi_post_disable(struc
 }
 
 static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,
-				   enum pipe *pipe)
+				   enum i915_pipe *pipe)
 {
 	struct drm_i915_private *dev_priv = encoder->base.dev->dev_private;
 	enum intel_display_power_domain power_domain;
 	u32 port, func;
-	enum pipe p;
+	enum i915_pipe p;
 
 	DRM_DEBUG_KMS("\n");
 

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c:1.5.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c:1.5	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_lvds.c	Mon Nov 10 19:45:54 2014
@@ -68,7 +68,7 @@ static struct intel_lvds_connector *to_l
 }
 
 static bool intel_lvds_get_hw_state(struct intel_encoder *encoder,
-				    enum pipe *pipe)
+				    enum i915_pipe *pipe)
 {
 	struct drm_device *dev = encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.5.2.1
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c:1.5	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_sdvo.c	Mon Nov 10 19:45:54 2014
@@ -1322,7 +1322,7 @@ static bool intel_sdvo_connector_get_hw_
 }
 
 static bool intel_sdvo_get_hw_state(struct intel_encoder *encoder,
-				    enum pipe *pipe)
+				    enum i915_pipe *pipe)
 {
 	struct drm_device *dev = encoder->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;

Index: src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.4.2.1 src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.4.2.2
--- src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c:1.4.2.1	Wed Nov  5 17:52:10 2014
+++ src/sys/external/bsd/drm2/dist/drm/i915/intel_panel.c	Mon Nov 10 19:45:54 2014
@@ -383,7 +383,7 @@ static u32 i9xx_get_backlight(struct int
 	return val;
 }
 
-static u32 _vlv_get_backlight(struct drm_device *dev, enum pipe pipe)
+static u32 _vlv_get_backlight(struct drm_device *dev, enum i915_pipe pipe)
 {
 	struct drm_i915_private *dev_priv = dev->dev_private;
 
@@ -393,7 +393,7 @@ static u32 _vlv_get_backlight(struct drm
 static u32 vlv_get_backlight(struct intel_connector *connector)
 {
 	struct drm_device *dev = connector->base.dev;
-	enum pipe pipe = intel_get_pipe_from_connector(connector);
+	enum i915_pipe pipe = intel_get_pipe_from_connector(connector);
 
 	return _vlv_get_backlight(dev, pipe);
 }
@@ -468,7 +468,7 @@ static void vlv_set_backlight(struct int
 {
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe = intel_get_pipe_from_connector(connector);
+	enum i915_pipe pipe = intel_get_pipe_from_connector(connector);
 	u32 tmp;
 
 	tmp = I915_READ(VLV_BLC_PWM_CTL(pipe)) & ~BACKLIGHT_DUTY_CYCLE_MASK;
@@ -494,7 +494,7 @@ void intel_panel_set_backlight(struct in
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_panel *panel = &connector->panel;
-	enum pipe pipe = intel_get_pipe_from_connector(connector);
+	enum i915_pipe pipe = intel_get_pipe_from_connector(connector);
 	u32 freq;
 	unsigned long flags;
 	u64 n;
@@ -560,7 +560,7 @@ static void vlv_disable_backlight(struct
 {
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
-	enum pipe pipe = intel_get_pipe_from_connector(connector);
+	enum i915_pipe pipe = intel_get_pipe_from_connector(connector);
 	u32 tmp;
 
 	intel_panel_actually_set_backlight(connector, 0);
@@ -574,7 +574,7 @@ void intel_panel_disable_backlight(struc
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_panel *panel = &connector->panel;
-	enum pipe pipe = intel_get_pipe_from_connector(connector);
+	enum i915_pipe pipe = intel_get_pipe_from_connector(connector);
 	unsigned long flags;
 
 	if (!panel->backlight.present || pipe == INVALID_PIPE)
@@ -636,7 +636,7 @@ static void pch_enable_backlight(struct 
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_panel *panel = &connector->panel;
-	enum pipe pipe = intel_get_pipe_from_connector(connector);
+	enum i915_pipe pipe = intel_get_pipe_from_connector(connector);
 	enum transcoder cpu_transcoder =
 		intel_pipe_to_cpu_transcoder(dev_priv, pipe);
 	u32 cpu_ctl2, pch_ctl1, pch_ctl2;
@@ -713,7 +713,7 @@ static void i965_enable_backlight(struct
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_panel *panel = &connector->panel;
-	enum pipe pipe = intel_get_pipe_from_connector(connector);
+	enum i915_pipe pipe = intel_get_pipe_from_connector(connector);
 	u32 ctl, ctl2, freq;
 
 	ctl2 = I915_READ(BLC_PWM_CTL2);
@@ -747,7 +747,7 @@ static void vlv_enable_backlight(struct 
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_panel *panel = &connector->panel;
-	enum pipe pipe = intel_get_pipe_from_connector(connector);
+	enum i915_pipe pipe = intel_get_pipe_from_connector(connector);
 	u32 ctl, ctl2;
 
 	ctl2 = I915_READ(VLV_BLC_PWM_CTL2(pipe));
@@ -776,7 +776,7 @@ void intel_panel_enable_backlight(struct
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_panel *panel = &connector->panel;
-	enum pipe pipe = intel_get_pipe_from_connector(connector);
+	enum i915_pipe pipe = intel_get_pipe_from_connector(connector);
 	unsigned long flags;
 
 	if (!panel->backlight.present || pipe == INVALID_PIPE)
@@ -1043,7 +1043,7 @@ static int vlv_setup_backlight(struct in
 	struct drm_device *dev = connector->base.dev;
 	struct drm_i915_private *dev_priv = dev->dev_private;
 	struct intel_panel *panel = &connector->panel;
-	enum pipe pipe;
+	enum i915_pipe pipe;
 	u32 ctl, ctl2, val;
 
 	for_each_pipe(pipe) {

Index: src/sys/external/bsd/drm2/dist/uapi/drm/drm.h
diff -u src/sys/external/bsd/drm2/dist/uapi/drm/drm.h:1.4 src/sys/external/bsd/drm2/dist/uapi/drm/drm.h:1.4.2.1
--- src/sys/external/bsd/drm2/dist/uapi/drm/drm.h:1.4	Wed Jul 16 20:56:25 2014
+++ src/sys/external/bsd/drm2/dist/uapi/drm/drm.h	Mon Nov 10 19:45:54 2014
@@ -53,6 +53,7 @@ typedef unsigned int drm_handle_t;
 #ifdef __NetBSD__
 #include <sys/ioccom.h>
 #include <sys/types.h>
+#ifndef _KERNEL
 typedef int8_t   __s8;
 typedef uint8_t  __u8;
 typedef int16_t  __s16;
@@ -61,6 +62,7 @@ typedef int32_t  __s32;
 typedef uint32_t __u32;
 typedef int64_t  __s64;
 typedef uint64_t __u64;
+#endif
 #  ifndef __user
 #    define	__user
 #  endif

Index: src/sys/external/bsd/drm2/drm/drm_module.c
diff -u src/sys/external/bsd/drm2/drm/drm_module.c:1.7 src/sys/external/bsd/drm2/drm/drm_module.c:1.7.2.1
--- src/sys/external/bsd/drm2/drm/drm_module.c:1.7	Thu Jul 17 13:47:19 2014
+++ src/sys/external/bsd/drm2/drm/drm_module.c	Mon Nov 10 19:45:54 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: drm_module.c,v 1.7 2014/07/17 13:47:19 riastradh Exp $	*/
+/*	$NetBSD: drm_module.c,v 1.7.2.1 2014/11/10 19:45:54 martin Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,9 +30,10 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.7 2014/07/17 13:47:19 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: drm_module.c,v 1.7.2.1 2014/11/10 19:45:54 martin Exp $");
 
 #include <sys/types.h>
+#include <sys/conf.h>
 #include <sys/device.h>
 #include <sys/module.h>
 #ifndef _MODULE
@@ -50,10 +51,6 @@ __KERNEL_RCSID(0, "$NetBSD: drm_module.c
  */
 MODULE(MODULE_CLASS_DRIVER, drmkms, "iic,drmkms_linux");
 
-#ifdef _MODULE
-#include "ioconf.c"
-#endif
-
 struct mutex	drm_global_mutex;
 
 static int

Index: src/sys/external/bsd/drm2/i915drm/intelfb.c
diff -u src/sys/external/bsd/drm2/i915drm/intelfb.c:1.9 src/sys/external/bsd/drm2/i915drm/intelfb.c:1.9.4.1
--- src/sys/external/bsd/drm2/i915drm/intelfb.c:1.9	Sat Aug  9 12:46:07 2014
+++ src/sys/external/bsd/drm2/i915drm/intelfb.c	Mon Nov 10 19:45:54 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: intelfb.c,v 1.9 2014/08/09 12:46:07 jmcneill Exp $	*/
+/*	$NetBSD: intelfb.c,v 1.9.4.1 2014/11/10 19:45:54 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intelfb.c,v 1.9 2014/08/09 12:46:07 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intelfb.c,v 1.9.4.1 2014/11/10 19:45:54 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "vga.h"
@@ -218,8 +218,8 @@ intelfb_setconfig_task(struct i915drmkms
 	if (vga_is_console(dev->pdev->pd_pa.pa_iot, -1)) {
 		what_was_cons = CONS_VGA;
 		prop_dictionary_set_bool(dict, "is_console", true);
-		i915_disable_vga(dev);
 		vga_cndetach();
+		i915_disable_vga(dev);
 	} else
 #endif
 	if (genfb_is_console() && genfb_is_enabled()) {

Index: src/sys/external/bsd/drm2/include/asm/processor.h
diff -u src/sys/external/bsd/drm2/include/asm/processor.h:1.2 src/sys/external/bsd/drm2/include/asm/processor.h:1.2.8.1
--- src/sys/external/bsd/drm2/include/asm/processor.h:1.2	Tue Mar 18 18:20:42 2014
+++ src/sys/external/bsd/drm2/include/asm/processor.h	Mon Nov 10 19:45:54 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: processor.h,v 1.2 2014/03/18 18:20:42 riastradh Exp $	*/
+/*	$NetBSD: processor.h,v 1.2.8.1 2014/11/10 19:45:54 martin Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #ifndef _ASM_PROCESSOR_H_
-#define _ASM_CURRENT_H_
+#define _ASM_PROCESSOR_H_
 
 #include <machine/param.h>
 

Index: src/sys/external/bsd/drm2/include/linux/io-mapping.h
diff -u src/sys/external/bsd/drm2/include/linux/io-mapping.h:1.2.8.1 src/sys/external/bsd/drm2/include/linux/io-mapping.h:1.2.8.2
--- src/sys/external/bsd/drm2/include/linux/io-mapping.h:1.2.8.1	Sun Sep 21 18:01:28 2014
+++ src/sys/external/bsd/drm2/include/linux/io-mapping.h	Mon Nov 10 19:45:53 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: io-mapping.h,v 1.2.8.1 2014/09/21 18:01:28 snj Exp $	*/
+/*	$NetBSD: io-mapping.h,v 1.2.8.2 2014/11/10 19:45:53 martin Exp $	*/
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -146,7 +146,7 @@ static inline void
 io_mapping_unmap_atomic(struct io_mapping *mapping, void *ptr)
 {
 
-	return io_mapping_unmap(mapping, ptr);
+	io_mapping_unmap(mapping, ptr);
 }
 
 #endif  /* _LINUX_IO_MAPPING_H_ */

Index: src/sys/external/bsd/drm2/include/linux/ww_mutex.h
diff -u src/sys/external/bsd/drm2/include/linux/ww_mutex.h:1.4.4.1 src/sys/external/bsd/drm2/include/linux/ww_mutex.h:1.4.4.2
--- src/sys/external/bsd/drm2/include/linux/ww_mutex.h:1.4.4.1	Sun Sep 21 18:31:06 2014
+++ src/sys/external/bsd/drm2/include/linux/ww_mutex.h	Mon Nov 10 19:45:53 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ww_mutex.h,v 1.4.4.1 2014/09/21 18:31:06 snj Exp $	*/
+/*	$NetBSD: ww_mutex.h,v 1.4.4.2 2014/11/10 19:45:53 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -47,6 +47,7 @@ struct ww_class {
 
 struct ww_acquire_ctx {
 	struct ww_class	*wwx_class __diagused;
+	struct lwp	*wwx_owner __diagused;
 	uint64_t	wwx_ticket;
 	unsigned	wwx_acquired;
 	bool		wwx_acquire_done;
@@ -92,6 +93,7 @@ ww_acquire_init(struct ww_acquire_ctx *c
 {
 
 	ctx->wwx_class = class;
+	ctx->wwx_owner = curlwp;
 	ctx->wwx_ticket = atomic_inc_64_nv(&class->wwc_ticket);
 	ctx->wwx_acquired = 0;
 	ctx->wwx_acquire_done = false;
@@ -101,6 +103,9 @@ static inline void
 ww_acquire_done(struct ww_acquire_ctx *ctx)
 {
 
+	KASSERTMSG((ctx->wwx_owner == curlwp),
+	    "ctx %p owned by %p, not self (%p)", ctx, ctx->wwx_owner, curlwp);
+
 	ctx->wwx_acquire_done = true;
 }
 
@@ -108,18 +113,22 @@ static inline void
 ww_acquire_fini(struct ww_acquire_ctx *ctx)
 {
 
+	KASSERTMSG((ctx->wwx_owner == curlwp),
+	    "ctx %p owned by %p, not self (%p)", ctx, ctx->wwx_owner, curlwp);
 	KASSERTMSG((ctx->wwx_acquired == 0), "ctx %p still holds %u locks",
 	    ctx, ctx->wwx_acquired);
+
 	ctx->wwx_acquired = ~0U;	/* Fail if called again. */
+	ctx->wwx_owner = NULL;
 }
 
 struct ww_mutex {
 	kmutex_t		wwm_lock;
 	enum ww_mutex_state {
-		WW_UNLOCKED,
-		WW_OWNED,
-		WW_CTX,
-		WW_WANTOWN,
+		WW_UNLOCKED,	/* nobody owns it */
+		WW_OWNED,	/* owned by a lwp without a context */
+		WW_CTX,		/* owned by a context */
+		WW_WANTOWN,	/* owned by ctx, waiters w/o ctx waiting */
 	}			wwm_state;
 	union {
 		struct lwp		*owner;
@@ -218,7 +227,9 @@ ww_mutex_lock_wait(struct ww_mutex *mute
 
 	KASSERT(mutex_owned(&mutex->wwm_lock));
 
-	KASSERT(mutex->wwm_state == WW_CTX);
+	KASSERT((mutex->wwm_state == WW_CTX) ||
+	    (mutex->wwm_state == WW_WANTOWN));
+	KASSERT(mutex->wwm_u.ctx != ctx);
 	KASSERTMSG((ctx->wwx_class == mutex->wwm_u.ctx->wwx_class),
 	    "ww mutex class mismatch: %p != %p",
 	    ctx->wwx_class, mutex->wwm_u.ctx->wwx_class);
@@ -233,7 +244,9 @@ ww_mutex_lock_wait(struct ww_mutex *mute
 	    ctx->wwx_ticket, ctx, collision->wwx_ticket, collision);
 
 	do cv_wait(&mutex->wwm_cv, &mutex->wwm_lock);
-	while (!((mutex->wwm_state == WW_CTX) && (mutex->wwm_u.ctx == ctx)));
+	while (!(((mutex->wwm_state == WW_CTX) ||
+		    (mutex->wwm_state == WW_WANTOWN)) &&
+		 (mutex->wwm_u.ctx == ctx)));
 
 	rb_tree_remove_node(&mutex->wwm_waiters, ctx);
 }
@@ -246,7 +259,9 @@ ww_mutex_lock_wait_sig(struct ww_mutex *
 
 	KASSERT(mutex_owned(&mutex->wwm_lock));
 
-	KASSERT(mutex->wwm_state == WW_CTX);
+	KASSERT((mutex->wwm_state == WW_CTX) ||
+	    (mutex->wwm_state == WW_WANTOWN));
+	KASSERT(mutex->wwm_u.ctx != ctx);
 	KASSERTMSG((ctx->wwx_class == mutex->wwm_u.ctx->wwx_class),
 	    "ww mutex class mismatch: %p != %p",
 	    ctx->wwx_class, mutex->wwm_u.ctx->wwx_class);
@@ -265,7 +280,9 @@ ww_mutex_lock_wait_sig(struct ww_mutex *
 		ret = -cv_wait_sig(&mutex->wwm_cv, &mutex->wwm_lock);
 		if (ret)
 			goto out;
-	} while (!((mutex->wwm_state == WW_CTX) && (mutex->wwm_u.ctx == ctx)));
+	} while (!(((mutex->wwm_state == WW_CTX) ||
+		    (mutex->wwm_state == WW_WANTOWN)) &&
+		(mutex->wwm_u.ctx == ctx)));
 
 out:	rb_tree_remove_node(&mutex->wwm_waiters, ctx);
 	return ret;
@@ -283,13 +300,16 @@ retry:	switch (mutex->wwm_state) {
 		break;
 	case WW_OWNED:
 		KASSERTMSG((mutex->wwm_u.owner != curlwp),
-		    "locking against myself: %p", curlwp);
+		    "locking %p against myself: %p", mutex, curlwp);
 		ww_mutex_state_wait(mutex, WW_OWNED);
 		goto retry;
 	case WW_CTX:
 		KASSERT(mutex->wwm_u.ctx != NULL);
 		mutex->wwm_state = WW_WANTOWN;
+		/* FALLTHROUGH */
 	case WW_WANTOWN:
+		KASSERTMSG((mutex->wwm_u.ctx->wwx_owner != curlwp),
+		    "locking %p against myself: %p", mutex, curlwp);
 		ww_mutex_state_wait(mutex, WW_WANTOWN);
 		goto retry;
 	default:
@@ -314,7 +334,7 @@ retry:	switch (mutex->wwm_state) {
 		break;
 	case WW_OWNED:
 		KASSERTMSG((mutex->wwm_u.owner != curlwp),
-		    "locking against myself: %p", curlwp);
+		    "locking %p against myself: %p", mutex, curlwp);
 		ret = ww_mutex_state_wait_sig(mutex, WW_OWNED);
 		if (ret)
 			goto out;
@@ -322,7 +342,10 @@ retry:	switch (mutex->wwm_state) {
 	case WW_CTX:
 		KASSERT(mutex->wwm_u.ctx != NULL);
 		mutex->wwm_state = WW_WANTOWN;
+		/* FALLTHROUGH */
 	case WW_WANTOWN:
+		KASSERTMSG((mutex->wwm_u.ctx->wwx_owner != curlwp),
+		    "locking %p against myself: %p", mutex, curlwp);
 		ret = ww_mutex_state_wait_sig(mutex, WW_WANTOWN);
 		if (ret)
 			goto out;
@@ -349,7 +372,15 @@ ww_mutex_lock(struct ww_mutex *mutex, st
 		return 0;
 	}
 
-	KASSERT(!ctx->wwx_acquire_done);
+	KASSERTMSG((ctx->wwx_owner == curlwp),
+	    "ctx %p owned by %p, not self (%p)", ctx, ctx->wwx_owner, curlwp);
+	KASSERTMSG(!ctx->wwx_acquire_done,
+	    "ctx %p done acquiring locks, can't acquire more", ctx);
+	KASSERTMSG((ctx->wwx_acquired != ~0U),
+	    "ctx %p finished, can't be used any more", ctx);
+	KASSERTMSG((ctx->wwx_class == mutex->wwm_class),
+	    "ctx %p in class %p, mutex %p in class %p",
+	    ctx, ctx->wwx_class, mutex, mutex->wwm_class);
 
 	mutex_enter(&mutex->wwm_lock);
 retry:	switch (mutex->wwm_state) {
@@ -359,7 +390,7 @@ retry:	switch (mutex->wwm_state) {
 		goto locked;
 	case WW_OWNED:
 		KASSERTMSG((mutex->wwm_u.owner != curlwp),
-		    "locking against myself: %p", curlwp);
+		    "locking %p against myself: %p", mutex, curlwp);
 		ww_mutex_state_wait(mutex, WW_OWNED);
 		goto retry;
 	case WW_CTX:
@@ -373,6 +404,8 @@ retry:	switch (mutex->wwm_state) {
 	}
 	KASSERT(mutex->wwm_state == WW_CTX);
 	KASSERT(mutex->wwm_u.ctx != NULL);
+	KASSERT((mutex->wwm_u.ctx == ctx) ||
+	    (mutex->wwm_u.ctx->wwx_owner != curlwp));
 	if (mutex->wwm_u.ctx == ctx) {
 		/*
 		 * We already own it.  Yes, this can happen correctly
@@ -400,7 +433,8 @@ retry:	switch (mutex->wwm_state) {
 		ww_mutex_lock_wait(mutex, ctx);
 	}
 locked:	ctx->wwx_acquired++;
-	KASSERT(mutex->wwm_state == WW_CTX);
+	KASSERT((mutex->wwm_state == WW_CTX) ||
+	    (mutex->wwm_state == WW_WANTOWN));
 	KASSERT(mutex->wwm_u.ctx == ctx);
 	mutex_exit(&mutex->wwm_lock);
 	return 0;
@@ -416,7 +450,15 @@ ww_mutex_lock_interruptible(struct ww_mu
 	if (ctx == NULL)
 		return ww_mutex_lock_noctx_sig(mutex);
 
-	KASSERT(!ctx->wwx_acquire_done);
+	KASSERTMSG((ctx->wwx_owner == curlwp),
+	    "ctx %p owned by %p, not self (%p)", ctx, ctx->wwx_owner, curlwp);
+	KASSERTMSG(!ctx->wwx_acquire_done,
+	    "ctx %p done acquiring locks, can't acquire more", ctx);
+	KASSERTMSG((ctx->wwx_acquired != ~0U),
+	    "ctx %p finished, can't be used any more", ctx);
+	KASSERTMSG((ctx->wwx_class == mutex->wwm_class),
+	    "ctx %p in class %p, mutex %p in class %p",
+	    ctx, ctx->wwx_class, mutex, mutex->wwm_class);
 
 	mutex_enter(&mutex->wwm_lock);
 retry:	switch (mutex->wwm_state) {
@@ -426,7 +468,7 @@ retry:	switch (mutex->wwm_state) {
 		goto locked;
 	case WW_OWNED:
 		KASSERTMSG((mutex->wwm_u.owner != curlwp),
-		    "locking against myself: %p", curlwp);
+		    "locking %p against myself: %p", mutex, curlwp);
 		ret = ww_mutex_state_wait_sig(mutex, WW_OWNED);
 		if (ret)
 			goto out;
@@ -444,6 +486,8 @@ retry:	switch (mutex->wwm_state) {
 	}
 	KASSERT(mutex->wwm_state == WW_CTX);
 	KASSERT(mutex->wwm_u.ctx != NULL);
+	KASSERT((mutex->wwm_u.ctx == ctx) ||
+	    (mutex->wwm_u.ctx->wwx_owner != curlwp));
 	if (mutex->wwm_u.ctx == ctx) {
 		/*
 		 * We already own it.  Yes, this can happen correctly
@@ -472,7 +516,8 @@ retry:	switch (mutex->wwm_state) {
 		if (ret)
 			goto out;
 	}
-locked:	KASSERT(mutex->wwm_state == WW_CTX);
+locked:	KASSERT((mutex->wwm_state == WW_CTX) ||
+	    (mutex->wwm_state == WW_WANTOWN));
 	KASSERT(mutex->wwm_u.ctx == ctx);
 	ctx->wwx_acquired++;
 	ret = 0;
@@ -491,7 +536,18 @@ ww_mutex_lock_slow(struct ww_mutex *mute
 		return;
 	}
 
-	KASSERT(!ctx->wwx_acquire_done);
+	KASSERTMSG((ctx->wwx_owner == curlwp),
+	    "ctx %p owned by %p, not self (%p)", ctx, ctx->wwx_owner, curlwp);
+	KASSERTMSG(!ctx->wwx_acquire_done,
+	    "ctx %p done acquiring locks, can't acquire more", ctx);
+	KASSERTMSG((ctx->wwx_acquired != ~0U),
+	    "ctx %p finished, can't be used any more", ctx);
+	KASSERTMSG((ctx->wwx_acquired == 0),
+	    "ctx %p still holds %u locks, not allowed in slow path",
+	    ctx, ctx->wwx_acquired);
+	KASSERTMSG((ctx->wwx_class == mutex->wwm_class),
+	    "ctx %p in class %p, mutex %p in class %p",
+	    ctx, ctx->wwx_class, mutex, mutex->wwm_class);
 
 	mutex_enter(&mutex->wwm_lock);
 retry:	switch (mutex->wwm_state) {
@@ -501,7 +557,7 @@ retry:	switch (mutex->wwm_state) {
 		goto locked;
 	case WW_OWNED:
 		KASSERTMSG((mutex->wwm_u.owner != curlwp),
-		    "locking against myself: %p", curlwp);
+		    "locking %p against myself: %p", mutex, curlwp);
 		ww_mutex_state_wait(mutex, WW_OWNED);
 		goto retry;
 	case WW_CTX:
@@ -515,12 +571,15 @@ retry:	switch (mutex->wwm_state) {
 	}
 	KASSERT(mutex->wwm_state == WW_CTX);
 	KASSERT(mutex->wwm_u.ctx != NULL);
+	KASSERTMSG((mutex->wwm_u.ctx->wwx_owner != curlwp),
+	    "locking %p against myself: %p", mutex, curlwp);
 	/*
 	 * Owned by another party, of any priority.  Ask that party to
 	 * wake us when it's done.
 	 */
 	ww_mutex_lock_wait(mutex, ctx);
-locked:	KASSERT(mutex->wwm_state == WW_CTX);
+locked:	KASSERT((mutex->wwm_state == WW_CTX) ||
+	    (mutex->wwm_state == WW_WANTOWN));
 	KASSERT(mutex->wwm_u.ctx == ctx);
 	ctx->wwx_acquired++;
 	mutex_exit(&mutex->wwm_lock);
@@ -537,7 +596,18 @@ ww_mutex_lock_slow_interruptible(struct 
 	if (ctx == NULL)
 		return ww_mutex_lock_noctx_sig(mutex);
 
-	KASSERT(!ctx->wwx_acquire_done);
+	KASSERTMSG((ctx->wwx_owner == curlwp),
+	    "ctx %p owned by %p, not self (%p)", ctx, ctx->wwx_owner, curlwp);
+	KASSERTMSG(!ctx->wwx_acquire_done,
+	    "ctx %p done acquiring locks, can't acquire more", ctx);
+	KASSERTMSG((ctx->wwx_acquired != ~0U),
+	    "ctx %p finished, can't be used any more", ctx);
+	KASSERTMSG((ctx->wwx_acquired == 0),
+	    "ctx %p still holds %u locks, not allowed in slow path",
+	    ctx, ctx->wwx_acquired);
+	KASSERTMSG((ctx->wwx_class == mutex->wwm_class),
+	    "ctx %p in class %p, mutex %p in class %p",
+	    ctx, ctx->wwx_class, mutex, mutex->wwm_class);
 
 	mutex_enter(&mutex->wwm_lock);
 retry:	switch (mutex->wwm_state) {
@@ -547,7 +617,7 @@ retry:	switch (mutex->wwm_state) {
 		goto locked;
 	case WW_OWNED:
 		KASSERTMSG((mutex->wwm_u.owner != curlwp),
-		    "locking against myself: %p", curlwp);
+		    "locking %p against myself: %p", mutex, curlwp);
 		ret = ww_mutex_state_wait_sig(mutex, WW_OWNED);
 		if (ret)
 			goto out;
@@ -565,6 +635,8 @@ retry:	switch (mutex->wwm_state) {
 	}
 	KASSERT(mutex->wwm_state == WW_CTX);
 	KASSERT(mutex->wwm_u.ctx != NULL);
+	KASSERTMSG((mutex->wwm_u.ctx->wwx_owner != curlwp),
+	    "locking %p against myself: %p", mutex, curlwp);
 	/*
 	 * Owned by another party, of any priority.  Ask that party to
 	 * wake us when it's done.
@@ -572,7 +644,8 @@ retry:	switch (mutex->wwm_state) {
 	ret = ww_mutex_lock_wait_sig(mutex, ctx);
 	if (ret)
 		goto out;
-locked:	KASSERT(mutex->wwm_state == WW_CTX);
+locked:	KASSERT((mutex->wwm_state == WW_CTX) ||
+	    (mutex->wwm_state == WW_WANTOWN));
 	KASSERT(mutex->wwm_u.ctx == ctx);
 	ctx->wwx_acquired++;
 	ret = 0;
@@ -591,6 +664,15 @@ ww_mutex_trylock(struct ww_mutex *mutex)
 		mutex->wwm_u.owner = curlwp;
 		ret = 1;
 	} else {
+		KASSERTMSG(((mutex->wwm_state != WW_OWNED) ||
+		    (mutex->wwm_u.owner != curlwp)),
+		    "locking %p against myself: %p", mutex, curlwp);
+		KASSERTMSG(((mutex->wwm_state != WW_CTX) ||
+		    (mutex->wwm_u.ctx->wwx_owner != curlwp)),
+		    "locking %p against myself: %p", mutex, curlwp);
+		KASSERTMSG(((mutex->wwm_state != WW_WANTOWN) ||
+		    (mutex->wwm_u.ctx->wwx_owner != curlwp)),
+		    "locking %p against myself: %p", mutex, curlwp);
 		ret = 0;
 	}
 	mutex_exit(&mutex->wwm_lock);
@@ -599,6 +681,23 @@ ww_mutex_trylock(struct ww_mutex *mutex)
 }
 
 static inline void
+ww_mutex_unlock_release(struct ww_mutex *mutex)
+{
+
+	KASSERT(mutex_owned(&mutex->wwm_lock));
+	KASSERT((mutex->wwm_state == WW_CTX) ||
+	    (mutex->wwm_state == WW_WANTOWN));
+	KASSERT(mutex->wwm_u.ctx != NULL);
+	KASSERTMSG((mutex->wwm_u.ctx->wwx_owner == curlwp),
+	    "ww_mutex %p ctx %p held by %p, not by self (%p)",
+	    mutex, mutex->wwm_u.ctx, mutex->wwm_u.ctx->wwx_owner,
+	    curlwp);
+	KASSERT(mutex->wwm_u.ctx->wwx_acquired != ~0U);
+	mutex->wwm_u.ctx->wwx_acquired--;
+	mutex->wwm_u.ctx = NULL;
+}
+
+static inline void
 ww_mutex_unlock(struct ww_mutex *mutex)
 {
 	struct ww_acquire_ctx *ctx;
@@ -614,9 +713,7 @@ ww_mutex_unlock(struct ww_mutex *mutex)
 		mutex->wwm_state = WW_UNLOCKED;
 		break;
 	case WW_CTX:
-		KASSERT(mutex->wwm_u.ctx != NULL);
-		mutex->wwm_u.ctx->wwx_acquired--;
-		mutex->wwm_u.ctx = NULL;
+		ww_mutex_unlock_release(mutex);
 		/*
 		 * If there are any waiters with contexts, grant the
 		 * lock to the highest-priority one.  Otherwise, just
@@ -630,6 +727,7 @@ ww_mutex_unlock(struct ww_mutex *mutex)
 		}
 		break;
 	case WW_WANTOWN:
+		ww_mutex_unlock_release(mutex);
 		/* Let the non-context lockers fight over it.  */
 		mutex->wwm_state = WW_UNLOCKED;
 		break;

Index: src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c
diff -u src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.3 src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.4
--- src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c:1.2.4.3	Sun Sep 21 18:04:38 2014
+++ src/sys/external/bsd/drm2/ttm/ttm_bo_vm.c	Mon Nov 10 19:45:54 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ttm_bo_vm.c,v 1.2.4.3 2014/09/21 18:04:38 snj Exp $	*/
+/*	$NetBSD: ttm_bo_vm.c,v 1.2.4.4 2014/11/10 19:45:54 martin Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.2.4.3 2014/09/21 18:04:38 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,v 1.2.4.4 2014/11/10 19:45:54 martin Exp $");
 
 #include <sys/types.h>
 
@@ -45,7 +45,7 @@ __KERNEL_RCSID(0, "$NetBSD: ttm_bo_vm.c,
 #include <ttm/ttm_bo_driver.h>
 
 static int	ttm_bo_uvm_fault_idle(struct ttm_buffer_object *,
-		    struct uvm_faultinfo *, struct uvm_object *);
+		    struct uvm_faultinfo *);
 static int	ttm_bo_uvm_lookup(struct ttm_bo_device *, unsigned long,
 		    unsigned long, struct ttm_buffer_object **);
 
@@ -111,8 +111,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u
 		 * relocking uobj's vmobjlock first), wait for it, and
 		 * start over.
 		 */
-		mutex_enter(uobj->vmobjlock);
-		uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
+		uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, NULL);
 		(void)ttm_bo_wait_unreserved(bo);
 		return -ERESTART;
 	}
@@ -133,7 +132,7 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u
 		}
 	}
 
-	ret = ttm_bo_uvm_fault_idle(bo, ufi, uobj);
+	ret = ttm_bo_uvm_fault_idle(bo, ufi);
 	if (ret) {
 		/* Unlocks if it restarts.  */
 		KASSERT(ret == -ERESTART);
@@ -204,15 +203,13 @@ ttm_bo_uvm_fault(struct uvm_faultinfo *u
 out3:	pmap_update(ufi->orig_map->pmap);
 out2:	ttm_mem_io_unlock(man);
 out1:	ttm_bo_unreserve(bo);
-out0:	mutex_enter(uobj->vmobjlock);
-	uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
+out0:	uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, NULL);
 	/* XXX errno Linux->NetBSD */
 	return -ret;
 }
 
 static int
-ttm_bo_uvm_fault_idle(struct ttm_buffer_object *bo, struct uvm_faultinfo *ufi,
-    struct uvm_object *uobj)
+ttm_bo_uvm_fault_idle(struct ttm_buffer_object *bo, struct uvm_faultinfo *ufi)
 {
 	struct ttm_bo_device *const bdev = bo->bdev;
 	int ret = 0;
@@ -224,7 +221,7 @@ ttm_bo_uvm_fault_idle(struct ttm_buffer_
 	if (ttm_bo_wait(bo, false, false, true) == 0)
 		goto out;
 
-	uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, uobj);
+	uvmfault_unlockall(ufi, ufi->entry->aref.ar_amap, NULL);
 	(void)ttm_bo_wait(bo, false, true, false);
 	ret = -ERESTART;
 

Reply via email to