Merge tag 'topic/drm-misc-2015-03-31' of git://anongit.freedesktop.org/drm-intel...
authorDave Airlie <airlied@redhat.com>
Tue, 31 Mar 2015 22:23:25 +0000 (08:23 +1000)
committerDave Airlie <airlied@redhat.com>
Tue, 31 Mar 2015 22:23:25 +0000 (08:23 +1000)
Final drm-misc pull for 4.0, just various things all over, including a few
more important atomic fixes. btw I didn't pick up the vmwgfx patch from
Ville's series, but one patch has one hunk touching vmwgfx and
Thomas/Jakob didn't get around to ack it. I figured it's simple enough to
be ok though.

* tag 'topic/drm-misc-2015-03-31' of git://anongit.freedesktop.org/drm-intel:
  drm: line wrap DRM_IOCTL_DEF* macros
  drm/atomic: Don't try to free a NULL state
  drm/atomic: Clear crtcs, connectors and planes when clearing state
  drm: Rewrite drm_ioctl_flags() to resemble the new drm_ioctl() code
  drm: Use max() to make the ioctl alloc size code cleaner
  drm: Simplify core vs. drv ioctl handling
  drm: Drop ioctl->cmd_drv
  drm: Fix DRM_IOCTL_DEF_DRV()
  drm/atomic-helpers: Properly avoid full modeset dance
  drm: atomic: Allow setting CRTC active property
  drm: atomic: Expose CRTC active property
  drm: crtc_helper: Update hwmode before mode_set call
  drm: mode: Allow NULL modes for equality check
  drm: fb_helper: Simplify exit condition
  drm: mode: Fix typo in kerneldoc
  drm/dp: Print the number of bytes processed for aux nacks

1  2 
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c

index e13b9cbc304e9d17a0d5ff55179b2d8b7f93ca7b,761b2a767ce02a1fb82275f6b199bb9638802487..620bb5cf617c9689a9113e989d585346f420de3d
   */
  
  #define VMW_IOCTL_DEF(ioctl, func, flags) \
-   [DRM_IOCTL_NR(DRM_IOCTL_##ioctl) - DRM_COMMAND_BASE] = {DRM_##ioctl, flags, func, DRM_IOCTL_##ioctl}
+   [DRM_IOCTL_NR(DRM_IOCTL_##ioctl) - DRM_COMMAND_BASE] = {DRM_IOCTL_##ioctl, flags, func}
  
  /**
   * Ioctl definitions.
@@@ -725,6 -725,32 +725,6 @@@ static int vmw_driver_load(struct drm_d
                goto out_err1;
        }
  
 -      ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_VRAM,
 -                           (dev_priv->vram_size >> PAGE_SHIFT));
 -      if (unlikely(ret != 0)) {
 -              DRM_ERROR("Failed initializing memory manager for VRAM.\n");
 -              goto out_err2;
 -      }
 -
 -      dev_priv->has_gmr = true;
 -      if (((dev_priv->capabilities & (SVGA_CAP_GMR | SVGA_CAP_GMR2)) == 0) ||
 -          refuse_dma || ttm_bo_init_mm(&dev_priv->bdev, VMW_PL_GMR,
 -                                       VMW_PL_GMR) != 0) {
 -              DRM_INFO("No GMR memory available. "
 -                       "Graphics memory resources are very limited.\n");
 -              dev_priv->has_gmr = false;
 -      }
 -
 -      if (dev_priv->capabilities & SVGA_CAP_GBOBJECTS) {
 -              dev_priv->has_mob = true;
 -              if (ttm_bo_init_mm(&dev_priv->bdev, VMW_PL_MOB,
 -                                 VMW_PL_MOB) != 0) {
 -                      DRM_INFO("No MOB memory available. "
 -                               "3D will be disabled.\n");
 -                      dev_priv->has_mob = false;
 -              }
 -      }
 -
        dev_priv->mmio_mtrr = arch_phys_wc_add(dev_priv->mmio_start,
                                               dev_priv->mmio_size);
  
                goto out_no_fman;
        }
  
 +
 +      ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_VRAM,
 +                           (dev_priv->vram_size >> PAGE_SHIFT));
 +      if (unlikely(ret != 0)) {
 +              DRM_ERROR("Failed initializing memory manager for VRAM.\n");
 +              goto out_no_vram;
 +      }
 +
 +      dev_priv->has_gmr = true;
 +      if (((dev_priv->capabilities & (SVGA_CAP_GMR | SVGA_CAP_GMR2)) == 0) ||
 +          refuse_dma || ttm_bo_init_mm(&dev_priv->bdev, VMW_PL_GMR,
 +                                       VMW_PL_GMR) != 0) {
 +              DRM_INFO("No GMR memory available. "
 +                       "Graphics memory resources are very limited.\n");
 +              dev_priv->has_gmr = false;
 +      }
 +
 +      if (dev_priv->capabilities & SVGA_CAP_GBOBJECTS) {
 +              dev_priv->has_mob = true;
 +              if (ttm_bo_init_mm(&dev_priv->bdev, VMW_PL_MOB,
 +                                 VMW_PL_MOB) != 0) {
 +                      DRM_INFO("No MOB memory available. "
 +                               "3D will be disabled.\n");
 +                      dev_priv->has_mob = false;
 +              }
 +      }
 +
        vmw_kms_save_vga(dev_priv);
  
        /* Start kms and overlay systems, needs fifo. */
@@@ -839,12 -838,6 +839,12 @@@ out_no_fifo
        vmw_kms_close(dev_priv);
  out_no_kms:
        vmw_kms_restore_vga(dev_priv);
 +      if (dev_priv->has_mob)
 +              (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB);
 +      if (dev_priv->has_gmr)
 +              (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_GMR);
 +      (void)ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_VRAM);
 +out_no_vram:
        vmw_fence_manager_takedown(dev_priv->fman);
  out_no_fman:
        if (dev_priv->capabilities & SVGA_CAP_IRQMASK)
@@@ -860,6 -853,12 +860,6 @@@ out_err4
        iounmap(dev_priv->mmio_virt);
  out_err3:
        arch_phys_wc_del(dev_priv->mmio_mtrr);
 -      if (dev_priv->has_mob)
 -              (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB);
 -      if (dev_priv->has_gmr)
 -              (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_GMR);
 -      (void)ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_VRAM);
 -out_err2:
        (void)ttm_bo_device_release(&dev_priv->bdev);
  out_err1:
        vmw_ttm_global_release(dev_priv);
@@@ -888,13 -887,6 +888,13 @@@ static int vmw_driver_unload(struct drm
        }
        vmw_kms_close(dev_priv);
        vmw_overlay_close(dev_priv);
 +
 +      if (dev_priv->has_mob)
 +              (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB);
 +      if (dev_priv->has_gmr)
 +              (void)ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_GMR);
 +      (void)ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_VRAM);
 +
        vmw_fence_manager_takedown(dev_priv->fman);
        if (dev_priv->capabilities & SVGA_CAP_IRQMASK)
                drm_irq_uninstall(dev_priv->dev);
        ttm_object_device_release(&dev_priv->tdev);
        iounmap(dev_priv->mmio_virt);
        arch_phys_wc_del(dev_priv->mmio_mtrr);
 -      if (dev_priv->has_mob)
 -              (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB);
 -      if (dev_priv->has_gmr)
 -              (void)ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_GMR);
 -      (void)ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_VRAM);
        (void)ttm_bo_device_release(&dev_priv->bdev);
        vmw_ttm_global_release(dev_priv);
  
@@@ -1044,7 -1041,7 +1044,7 @@@ static long vmw_generic_ioctl(struct fi
                const struct drm_ioctl_desc *ioctl =
                        &vmw_ioctls[nr - DRM_COMMAND_BASE];
  
-               if (unlikely(ioctl->cmd_drv != cmd)) {
+               if (unlikely(ioctl->cmd != cmd)) {
                        DRM_ERROR("Invalid command format, ioctl %d\n",
                                  nr - DRM_COMMAND_BASE);
                        return -EINVAL;
@@@ -1238,7 -1235,6 +1238,7 @@@ static void vmw_remove(struct pci_dev *
  {
        struct drm_device *dev = pci_get_drvdata(pdev);
  
 +      pci_disable_device(pdev);
        drm_put_dev(dev);
  }