Author: bapt
Date: Wed Aug 26 13:23:56 2015
New Revision: 287165
URL: https://svnweb.freebsd.org/changeset/base/287165

Log:
  Reduce diff on i915_dma.c against linux 3.8.13
  
  No functional changes
  
  Discussed with:       dumbbell
  Reviewed by:  dumbbell

Modified:
  head/sys/dev/drm2/i915/i915_dma.c

Modified: head/sys/dev/drm2/i915/i915_dma.c
==============================================================================
--- head/sys/dev/drm2/i915/i915_dma.c   Wed Aug 26 12:32:46 2015        
(r287164)
+++ head/sys/dev/drm2/i915/i915_dma.c   Wed Aug 26 13:23:56 2015        
(r287165)
@@ -1,6 +1,6 @@
 /* i915_dma.c -- DMA support for the I915 -*- linux-c -*-
  */
-/*-
+/*
  * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
  * All Rights Reserved.
  *
@@ -47,6 +47,12 @@ __FBSDID("$FreeBSD$");
 #define ADVANCE_LP_RING() \
        intel_ring_advance(LP_RING(dev_priv))
 
+/**
+ * Lock test for when it's just for synchronization of ring access.
+ *
+ * In that case, we don't need to do it when GEM is initialized as nobody else
+ * has access to the ring.
+ */
 #define RING_LOCK_TEST_WITH_RETURN(dev, file) do {                     \
        if (LP_RING(dev->dev_private)->obj == NULL)                     \
                LOCK_TEST_WITH_RETURN(dev, file);                       \
@@ -179,7 +185,6 @@ static int i915_dma_cleanup(struct drm_d
        drm_i915_private_t *dev_priv = dev->dev_private;
        int i;
 
-
        /* Make sure interrupts are disabled here because the uninstall ioctl
         * may not have been called from userspace and after dev_private
         * is freed, it's too late.
@@ -208,7 +213,7 @@ static int i915_initialize(struct drm_de
        master_priv->sarea = drm_getsarea(dev);
        if (master_priv->sarea) {
                master_priv->sarea_priv = (drm_i915_sarea_t *)
-                   ((u8 *)master_priv->sarea->handle + 
init->sarea_priv_offset);
+                       ((u8 *)master_priv->sarea->handle + 
init->sarea_priv_offset);
        } else {
                DRM_DEBUG_DRIVER("sarea not found assuming DRI2 userspace\n");
        }
@@ -309,7 +314,7 @@ static int i915_dma_init(struct drm_devi
  * instruction detected will be given a size of zero, which is a
  * signal to abort the rest of the buffer.
  */
-static int do_validate_cmd(int cmd)
+static int validate_cmd(int cmd)
 {
        switch (((cmd >> 29) & 0x7)) {
        case 0x0:
@@ -367,17 +372,7 @@ static int do_validate_cmd(int cmd)
        return 0;
 }
 
-static int validate_cmd(int cmd)
-{
-       int ret = do_validate_cmd(cmd);
-
-/*     printk("validate_cmd( %x ): %d\n", cmd, ret); */
-
-       return ret;
-}
-
-static int i915_emit_cmds(struct drm_device *dev, int __user *buffer,
-                         int dwords)
+static int i915_emit_cmds(struct drm_device * dev, int *buffer, int dwords)
 {
        drm_i915_private_t *dev_priv = dev->dev_private;
        int i;
@@ -429,14 +424,15 @@ int i915_emit_box(struct drm_device * de
 }
 
 int
-i915_emit_box_p(struct drm_device *dev, struct drm_clip_rect *box,
-    int DR1, int DR4)
+i915_emit_box_p(struct drm_device *dev,
+             struct drm_clip_rect *box,
+             int DR1, int DR4)
 {
-       drm_i915_private_t *dev_priv = dev->dev_private;
+       struct drm_i915_private *dev_priv = dev->dev_private;
        int ret;
 
-       if (box->y2 <= box->y1 || box->x2 <= box->x1 || box->y2 <= 0 ||
-           box->x2 <= 0) {
+       if (box->y2 <= box->y1 || box->x2 <= box->x1 ||
+           box->y2 <= 0 || box->x2 <= 0) {
                DRM_ERROR("Bad box %d,%d..%d,%d\n",
                          box->x1, box->y1, box->x2, box->y2);
                return -EINVAL;
@@ -444,8 +440,8 @@ i915_emit_box_p(struct drm_device *dev, 
 
        if (INTEL_INFO(dev)->gen >= 4) {
                ret = BEGIN_LP_RING(4);
-               if (ret != 0)
-                       return (ret);
+               if (ret)
+                       return ret;
 
                OUT_RING(GFX_OP_DRAWRECT_INFO_I965);
                OUT_RING((box->x1 & 0xffff) | (box->y1 << 16));
@@ -453,8 +449,8 @@ i915_emit_box_p(struct drm_device *dev, 
                OUT_RING(DR4);
        } else {
                ret = BEGIN_LP_RING(6);
-               if (ret != 0)
-                       return (ret);
+               if (ret)
+                       return ret;
 
                OUT_RING(GFX_OP_DRAWRECT_INFO);
                OUT_RING(DR1);
@@ -492,7 +488,9 @@ static void i915_emit_breadcrumb(struct 
 }
 
 static int i915_dispatch_cmdbuffer(struct drm_device * dev,
-    drm_i915_cmdbuffer_t * cmd, struct drm_clip_rect *cliprects, void *cmdbuf)
+                                  drm_i915_cmdbuffer_t *cmd,
+                                  struct drm_clip_rect *cliprects,
+                                  void *cmdbuf)
 {
        int nbox = cmd->num_cliprects;
        int i = 0, count, ret;
@@ -523,11 +521,11 @@ static int i915_dispatch_cmdbuffer(struc
        return 0;
 }
 
-static int
-i915_dispatch_batchbuffer(struct drm_device * dev,
-    drm_i915_batchbuffer_t * batch, struct drm_clip_rect *cliprects)
+static int i915_dispatch_batchbuffer(struct drm_device * dev,
+                                    drm_i915_batchbuffer_t * batch,
+                                    struct drm_clip_rect *cliprects)
 {
-       drm_i915_private_t *dev_priv = dev->dev_private;
+       struct drm_i915_private *dev_priv = dev->dev_private;
        int nbox = batch->num_cliprects;
        int i, count, ret;
 
@@ -542,7 +540,6 @@ i915_dispatch_batchbuffer(struct drm_dev
        i915_kernel_lost_context(dev);
 
        count = nbox ? nbox : 1;
-
        for (i = 0; i < count; i++) {
                if (i < nbox) {
                        int ret = i915_emit_box_p(dev, &cliprects[i],
@@ -553,8 +550,8 @@ i915_dispatch_batchbuffer(struct drm_dev
 
                if (!IS_I830(dev) && !IS_845G(dev)) {
                        ret = BEGIN_LP_RING(2);
-                       if (ret != 0)
-                               return (ret);
+                       if (ret)
+                               return ret;
 
                        if (INTEL_INFO(dev)->gen >= 4) {
                                OUT_RING(MI_BATCH_BUFFER_START | (2 << 6) |
@@ -566,8 +563,8 @@ i915_dispatch_batchbuffer(struct drm_dev
                        }
                } else {
                        ret = BEGIN_LP_RING(4);
-                       if (ret != 0)
-                               return (ret);
+                       if (ret)
+                               return ret;
 
                        OUT_RING(MI_BATCH_BUFFER);
                        OUT_RING(batch->start | MI_BATCH_NON_SECURE);
@@ -602,6 +599,7 @@ static int i915_dispatch_flip(struct drm
        ret = BEGIN_LP_RING(10);
        if (ret)
                return ret;
+
        OUT_RING(MI_FLUSH | MI_READ_FLUSH);
        OUT_RING(0);
 
@@ -635,8 +633,7 @@ static int i915_dispatch_flip(struct drm
        return 0;
 }
 
-static int
-i915_quiescent(struct drm_device *dev)
+static int i915_quiescent(struct drm_device *dev)
 {
        struct intel_ring_buffer *ring = LP_RING(dev->dev_private);
 
@@ -644,8 +641,8 @@ i915_quiescent(struct drm_device *dev)
        return (intel_wait_ring_idle(ring));
 }
 
-static int
-i915_flush_ioctl(struct drm_device *dev, void *data, struct drm_file 
*file_priv)
+static int i915_flush_ioctl(struct drm_device *dev, void *data,
+                           struct drm_file *file_priv)
 {
        int ret;
 
@@ -1132,7 +1129,7 @@ i915_load_modeset_init(struct drm_device
        intel_modeset_init(dev);
 
        ret = i915_gem_init(dev);
-       if (ret != 0)
+       if (ret)
                goto cleanup_gem_stolen;
 
        intel_modeset_gem_init(dev);
@@ -1152,7 +1149,7 @@ i915_load_modeset_init(struct drm_device
        /* We're off and running w/KMS */
        dev_priv->mm.suspended = 0;
 
-       return (0);
+       return 0;
 
 cleanup_gem:
        DRM_LOCK(dev);
@@ -1339,8 +1336,18 @@ intel_teardown_mchbar(struct drm_device 
        }
 }
 
-int
-i915_driver_load(struct drm_device *dev, unsigned long flags)
+/**
+ * i915_driver_load - setup chip and create an initial config
+ * @dev: DRM device
+ * @flags: startup flags
+ *
+ * The driver load routine has to do several things:
+ *   - drive output discovery via intel_modeset_init()
+ *   - initialize the memory manager
+ *   - allocate initial config memory
+ *   - setup the DRM framebuffer with the allocated memory
+ */
+int i915_driver_load(struct drm_device *dev, unsigned long flags)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
        const struct intel_device_info *info;
@@ -1475,8 +1482,7 @@ out_gem_unload:
        return (ret);
 }
 
-int
-i915_driver_unload(struct drm_device *dev)
+int i915_driver_unload(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
        int ret;
@@ -1546,11 +1552,10 @@ i915_driver_unload(struct drm_device *de
        mtx_destroy(&dev_priv->rps_lock);
        free(dev->dev_private, DRM_MEM_DRIVER);
 
-       return (0);
+       return 0;
 }
 
-int
-i915_driver_open(struct drm_device *dev, struct drm_file *file_priv)
+int i915_driver_open(struct drm_device *dev, struct drm_file *file)
 {
        struct drm_i915_file_private *i915_file_priv;
 
@@ -1559,19 +1564,35 @@ i915_driver_open(struct drm_device *dev,
 
        mtx_init(&i915_file_priv->mm.lck, "915fp", NULL, MTX_DEF);
        INIT_LIST_HEAD(&i915_file_priv->mm.request_list);
-       file_priv->driver_priv = i915_file_priv;
+       file->driver_priv = i915_file_priv;
 
        drm_gem_names_init(&i915_file_priv->context_idr);
 
-       return (0);
+       return 0;
 }
 
-void
-i915_driver_lastclose(struct drm_device * dev)
+/**
+ * i915_driver_lastclose - clean up after all DRM clients have exited
+ * @dev: DRM device
+ *
+ * Take care of cleaning up after all DRM clients have exited.  In the
+ * mode setting case, we want to restore the kernel's initial mode (just
+ * in case the last client left us in a bad state).
+ *
+ * Additionally, in the non-mode setting case, we'll tear down the GTT
+ * and DMA structures, since the kernel won't be using them, and clea
+ * up any GEM state.
+ */
+void i915_driver_lastclose(struct drm_device * dev)
 {
        drm_i915_private_t *dev_priv = dev->dev_private;
 
-       if (!dev_priv || drm_core_check_feature(dev, DRIVER_MODESET)) {
+       /* On gen6+ we refuse to init without kms enabled, but then the drm core
+        * goes right around and calls lastclose. Check for this and don't clean
+        * up anything. */
+       if (!dev_priv)
+               return;
+       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
 #if 1
                KIB_NOTYET();
 #else
@@ -1580,13 +1601,14 @@ i915_driver_lastclose(struct drm_device 
 #endif
                return;
        }
+
        i915_gem_lastclose(dev);
+
        i915_dma_cleanup(dev);
 }
 
 void i915_driver_preclose(struct drm_device * dev, struct drm_file *file_priv)
 {
-
        i915_gem_context_close(dev, file_priv);
        i915_gem_release(dev, file_priv);
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to