From: Thierry Reding <tred...@nvidia.com>

Support non-legacy drivers without mode-setting functionality by using
the new DRIVER_LEGACY feature to separate out legacy code, rather than
relying on DRIVER_MODESET not being advertised.

Signed-off-by: Thierry Reding <treding at nvidia.com>
---
 drivers/gpu/drm/drm_bufs.c              | 12 +++++------
 drivers/gpu/drm/drm_dma.c               |  4 ++--
 drivers/gpu/drm/drm_fops.c              |  6 +++---
 drivers/gpu/drm/drm_irq.c               | 12 +++++------
 drivers/gpu/drm/drm_pci.c               | 12 +++++------
 drivers/gpu/drm/drm_scatter.c           |  6 +++---
 drivers/gpu/drm/drm_sysfs.c             |  4 ++--
 drivers/gpu/drm/i915/i915_dma.c         | 38 ++++++++++++++++-----------------
 drivers/gpu/drm/i915/i915_drv.c         | 10 ++++-----
 drivers/gpu/drm/i915/i915_gem.c         | 17 +++++++--------
 drivers/gpu/drm/i915/i915_irq.c         |  6 +++---
 drivers/gpu/drm/i915/i915_suspend.c     | 15 ++++++-------
 drivers/gpu/drm/i915/intel_ringbuffer.c |  2 +-
 13 files changed, 71 insertions(+), 73 deletions(-)

diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c
index edec31fe3fed..362ad21bd0e4 100644
--- a/drivers/gpu/drm/drm_bufs.c
+++ b/drivers/gpu/drm/drm_bufs.c
@@ -1141,7 +1141,7 @@ int drm_addbufs(struct drm_device *dev, void *data,
        struct drm_buf_desc *request = data;
        int ret;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -EINVAL;

        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
@@ -1187,7 +1187,7 @@ int drm_infobufs(struct drm_device *dev, void *data,
        int i;
        int count;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -EINVAL;

        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
@@ -1269,7 +1269,7 @@ int drm_markbufs(struct drm_device *dev, void *data,
        int order;
        struct drm_buf_entry *entry;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -EINVAL;

        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
@@ -1317,7 +1317,7 @@ int drm_freebufs(struct drm_device *dev, void *data,
        int idx;
        struct drm_buf *buf;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -EINVAL;

        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
@@ -1372,7 +1372,7 @@ int drm_mapbufs(struct drm_device *dev, void *data,
        struct drm_buf_map *request = data;
        int i;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -EINVAL;

        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA))
@@ -1452,7 +1452,7 @@ int drm_mapbufs(struct drm_device *dev, void *data,
 int drm_dma_ioctl(struct drm_device *dev, void *data,
                  struct drm_file *file_priv)
 {
-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -EINVAL;

        if (dev->driver->dma_ioctl)
diff --git a/drivers/gpu/drm/drm_dma.c b/drivers/gpu/drm/drm_dma.c
index 8a140a953754..bce37007c9c3 100644
--- a/drivers/gpu/drm/drm_dma.c
+++ b/drivers/gpu/drm/drm_dma.c
@@ -49,7 +49,7 @@ int drm_legacy_dma_setup(struct drm_device *dev)
        int i;

        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) ||
-           drm_core_check_feature(dev, DRIVER_MODESET)) {
+           !drm_core_check_feature(dev, DRIVER_LEGACY)) {
                return 0;
        }

@@ -80,7 +80,7 @@ void drm_legacy_dma_takedown(struct drm_device *dev)
        int i, j;

        if (!drm_core_check_feature(dev, DRIVER_HAVE_DMA) ||
-           drm_core_check_feature(dev, DRIVER_MODESET)) {
+           !drm_core_check_feature(dev, DRIVER_LEGACY)) {
                return;
        }

diff --git a/drivers/gpu/drm/drm_fops.c b/drivers/gpu/drm/drm_fops.c
index 80e2a6c5ff8a..46eee1da4ad7 100644
--- a/drivers/gpu/drm/drm_fops.c
+++ b/drivers/gpu/drm/drm_fops.c
@@ -50,8 +50,8 @@ static int drm_setup(struct drm_device * dev)
 {
        int ret;

-       if (dev->driver->firstopen &&
-           !drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (drm_core_check_feature(dev, DRIVER_LEGACY) &&
+           dev->driver->firstopen) {
                ret = dev->driver->firstopen(dev);
                if (ret != 0)
                        return ret;
@@ -386,7 +386,7 @@ static void drm_events_release(struct drm_file *file_priv)
  */
 static void drm_legacy_dev_reinit(struct drm_device *dev)
 {
-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return;

        dev->sigdata.lock = NULL;
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
index c2676b5908d9..7040b30973b8 100644
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -321,7 +321,7 @@ int drm_irq_install(struct drm_device *dev)
                return ret;
        }

-       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+       if (drm_core_check_feature(dev, DRIVER_LEGACY))
                vga_client_register(dev->pdev, (void *)dev, 
drm_irq_vgaarb_nokms, NULL);

        /* After installing handler */
@@ -332,7 +332,7 @@ int drm_irq_install(struct drm_device *dev)
                mutex_lock(&dev->struct_mutex);
                dev->irq_enabled = false;
                mutex_unlock(&dev->struct_mutex);
-               if (!drm_core_check_feature(dev, DRIVER_MODESET))
+               if (drm_core_check_feature(dev, DRIVER_LEGACY))
                        vga_client_register(dev->pdev, NULL, NULL, NULL);
                free_irq(drm_dev_to_irq(dev), dev);
        }
@@ -381,7 +381,7 @@ int drm_irq_uninstall(struct drm_device *dev)

        DRM_DEBUG("irq=%d\n", drm_dev_to_irq(dev));

-       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+       if (drm_core_check_feature(dev, DRIVER_LEGACY))
                vga_client_register(dev->pdev, NULL, NULL, NULL);

        if (dev->driver->irq_uninstall)
@@ -418,7 +418,7 @@ int drm_control(struct drm_device *dev, void *data,
        case DRM_INST_HANDLER:
                if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
                        return 0;
-               if (drm_core_check_feature(dev, DRIVER_MODESET))
+               if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                        return 0;
                if (dev->if_version < DRM_IF_VERSION(1, 2) &&
                    ctl->irq != drm_dev_to_irq(dev))
@@ -427,7 +427,7 @@ int drm_control(struct drm_device *dev, void *data,
        case DRM_UNINST_HANDLER:
                if (!drm_core_check_feature(dev, DRIVER_HAVE_IRQ))
                        return 0;
-               if (drm_core_check_feature(dev, DRIVER_MODESET))
+               if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                        return 0;
                return drm_irq_uninstall(dev);
        default:
@@ -1048,7 +1048,7 @@ int drm_modeset_ctl(struct drm_device *dev, void *data,
                return 0;

        /* KMS drivers handle this internally */
-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return 0;

        crtc = modeset->crtc;
diff --git a/drivers/gpu/drm/drm_pci.c b/drivers/gpu/drm/drm_pci.c
index 4e6f5ea5643c..e4223ccedd9c 100644
--- a/drivers/gpu/drm/drm_pci.c
+++ b/drivers/gpu/drm/drm_pci.c
@@ -327,7 +327,7 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct 
pci_device_id *ent,
        dev->hose = pdev->sysdata;
 #endif

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                pci_set_drvdata(pdev, dev);

        drm_pci_agp_init(dev);
@@ -342,7 +342,7 @@ int drm_get_pci_dev(struct pci_dev *pdev, const struct 
pci_device_id *ent,

        /* No locking needed since shadow-attach is single-threaded since it may
         * only be called from the per-driver module init hook. */
-       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+       if (drm_core_check_feature(dev, DRIVER_LEGACY))
                list_add_tail(&dev->legacy_dev_list, &driver->legacy_dev_list);

        return 0;
@@ -378,7 +378,7 @@ int drm_pci_init(struct drm_driver *driver, struct 
pci_driver *pdriver)
        driver->kdriver.pci = pdriver;
        driver->bus = &drm_pci_bus;

-       if (driver->driver_features & DRIVER_MODESET)
+       if ((driver->driver_features & DRIVER_LEGACY) == 0)
                return pci_register_driver(pdriver);

        /* If not using KMS, fall back to stealth mode manual scanning. */
@@ -463,14 +463,14 @@ void drm_pci_exit(struct drm_driver *driver, struct 
pci_driver *pdriver)
        struct drm_device *dev, *tmp;
        DRM_DEBUG("\n");

-       if (driver->driver_features & DRIVER_MODESET) {
-               pci_unregister_driver(pdriver);
-       } else {
+       if (driver->driver_features & DRIVER_LEGACY) {
                list_for_each_entry_safe(dev, tmp, &driver->legacy_dev_list,
                                         legacy_dev_list) {
                        drm_put_dev(dev);
                        list_del(&dev->legacy_dev_list);
                }
+       } else {
+               pci_unregister_driver(pdriver);
        }
        DRM_INFO("Module unloaded\n");
 }
diff --git a/drivers/gpu/drm/drm_scatter.c b/drivers/gpu/drm/drm_scatter.c
index 1c78406f6e71..de745ec3d118 100644
--- a/drivers/gpu/drm/drm_scatter.c
+++ b/drivers/gpu/drm/drm_scatter.c
@@ -67,7 +67,7 @@ static void drm_sg_cleanup(struct drm_sg_mem * entry)
 void drm_legacy_sg_cleanup(struct drm_device *dev)
 {
        if (drm_core_check_feature(dev, DRIVER_SG) && dev->sg &&
-           !drm_core_check_feature(dev, DRIVER_MODESET)) {
+           drm_core_check_feature(dev, DRIVER_LEGACY)) {
                drm_sg_cleanup(dev->sg);
                dev->sg = NULL;
        }
@@ -87,7 +87,7 @@ int drm_sg_alloc(struct drm_device *dev, void *data,

        DRM_DEBUG("\n");

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -EINVAL;

        if (!drm_core_check_feature(dev, DRIVER_SG))
@@ -200,7 +200,7 @@ int drm_sg_free(struct drm_device *dev, void *data,
        struct drm_scatter_gather *request = data;
        struct drm_sg_mem *entry;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -EINVAL;

        if (!drm_core_check_feature(dev, DRIVER_SG))
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index c3f3d0b6a8fe..75157fd8607f 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -44,7 +44,7 @@ static int __drm_class_suspend(struct device *dev, 
pm_message_t state)
                struct drm_device *drm_dev = drm_minor->dev;

                if (drm_minor->type == DRM_MINOR_PRIMARY &&
-                   !drm_core_check_feature(drm_dev, DRIVER_MODESET) &&
+                   drm_core_check_feature(drm_dev, DRIVER_LEGACY) &&
                    drm_dev->driver->suspend)
                        return drm_dev->driver->suspend(drm_dev, state);
        }
@@ -85,7 +85,7 @@ static int drm_class_resume(struct device *dev)
                struct drm_device *drm_dev = drm_minor->dev;

                if (drm_minor->type == DRM_MINOR_PRIMARY &&
-                   !drm_core_check_feature(drm_dev, DRIVER_MODESET) &&
+                   drm_core_check_feature(drm_dev, DRIVER_LEGACY) &&
                    drm_dev->driver->resume)
                        return drm_dev->driver->resume(drm_dev);
        }
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 7688abc83fc0..5cbb1cc80c68 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -90,7 +90,7 @@ void i915_update_dri1_breadcrumb(struct drm_device *dev)
         * Instead of trying to fix this (this is by far not the only ums issue)
         * just don't do the update in kms mode.
         */
-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return;

        if (dev->primary->master) {
@@ -145,7 +145,7 @@ void i915_kernel_lost_context(struct drm_device * dev)
         * We should never lose context on the ring with modesetting
         * as we don't expose it to userspace
         */
-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return;

        ring->head = I915_READ_HEAD(ring) & HEAD_ADDR;
@@ -267,7 +267,7 @@ static int i915_dma_init(struct drm_device *dev, void *data,
        drm_i915_init_t *init = data;
        int retcode = 0;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -ENODEV;

        switch (init->func) {
@@ -610,7 +610,7 @@ static int i915_flush_ioctl(struct drm_device *dev, void 
*data,
 {
        int ret;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -ENODEV;

        RING_LOCK_TEST_WITH_RETURN(dev, file_priv);
@@ -632,7 +632,7 @@ static int i915_batchbuffer(struct drm_device *dev, void 
*data,
        int ret;
        struct drm_clip_rect *cliprects = NULL;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -ENODEV;

        master_priv = dev->primary->master->driver_priv;
@@ -694,7 +694,7 @@ static int i915_cmdbuffer(struct drm_device *dev, void 
*data,
        DRM_DEBUG_DRIVER("i915 cmdbuffer, buf %p sz %d cliprects %d\n",
                        cmdbuf->buf, cmdbuf->sz, cmdbuf->num_cliprects);

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -ENODEV;

        master_priv = dev->primary->master->driver_priv;
@@ -820,7 +820,7 @@ static int i915_irq_emit(struct drm_device *dev, void *data,
        drm_i915_irq_emit_t *emit = data;
        int result;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -ENODEV;

        if (!dev_priv || !LP_RING(dev_priv)->virtual_start) {
@@ -850,7 +850,7 @@ static int i915_irq_wait(struct drm_device *dev, void *data,
        drm_i915_private_t *dev_priv = dev->dev_private;
        drm_i915_irq_wait_t *irqwait = data;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -ENODEV;

        if (!dev_priv) {
@@ -867,7 +867,7 @@ static int i915_vblank_pipe_get(struct drm_device *dev, 
void *data,
        drm_i915_private_t *dev_priv = dev->dev_private;
        drm_i915_vblank_pipe_t *pipe = data;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -ENODEV;

        if (!dev_priv) {
@@ -908,7 +908,7 @@ static int i915_flip_bufs(struct drm_device *dev, void 
*data,
 {
        int ret;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -ENODEV;

        DRM_DEBUG_DRIVER("%s\n", __func__);
@@ -1072,7 +1072,7 @@ static int i915_set_status_page(struct drm_device *dev, 
void *data,
        drm_i915_hws_addr_t *hws = data;
        struct intel_ring_buffer *ring;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -ENODEV;

        if (!I915_NEED_GFX_HWS(dev))
@@ -1083,7 +1083,7 @@ static int i915_set_status_page(struct drm_device *dev, 
void *data,
                return -EINVAL;
        }

-       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY)) {
                WARN(1, "tried to set status page when mode setting active\n");
                return 0;
        }
@@ -1536,14 +1536,14 @@ int i915_driver_load(struct drm_device *dev, unsigned 
long flags)
        info = (struct intel_device_info *) flags;

        /* Refuse to load on gen6+ without kms enabled. */
-       if (info->gen >= 6 && !drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (info->gen >= 6 && drm_core_check_feature(dev, DRIVER_LEGACY)) {
                DRM_INFO("Your hardware requires kernel modesetting (KMS)\n");
                DRM_INFO("See CONFIG_DRM_I915_KMS, nomodeset, and i915.modeset 
parameters\n");
                return -ENODEV;
        }

        /* UMS needs agp support. */
-       if (!drm_core_check_feature(dev, DRIVER_MODESET) && !dev->agp)
+       if (drm_core_check_feature(dev, DRIVER_LEGACY) && !dev->agp)
                return -EINVAL;

        dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
@@ -1615,7 +1615,7 @@ int i915_driver_load(struct drm_device *dev, unsigned 
long flags)
        if (ret)
                goto out_regs;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                i915_kick_out_firmware_fb(dev_priv);

        pci_set_master(dev->pdev);
@@ -1704,7 +1704,7 @@ int i915_driver_load(struct drm_device *dev, unsigned 
long flags)

        intel_power_domains_init(dev);

-       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY)) {
                ret = i915_load_modeset_init(dev);
                if (ret < 0) {
                        DRM_ERROR("failed to init modeset\n");
@@ -1794,7 +1794,7 @@ int i915_driver_unload(struct drm_device *dev)

        acpi_video_unregister();

-       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY)) {
                intel_fbdev_fini(dev);
                intel_modeset_cleanup(dev);
                cancel_work_sync(&dev_priv->console_resume_work);
@@ -1825,7 +1825,7 @@ int i915_driver_unload(struct drm_device *dev)

        intel_opregion_fini(dev);

-       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY)) {
                /* Flush any outstanding unpin_work. */
                flush_workqueue(dev_priv->wq);

@@ -1900,7 +1900,7 @@ void i915_driver_lastclose(struct drm_device * dev)
        if (!dev_priv)
                return;

-       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY)) {
                intel_fbdev_restore_mode(dev);
                vga_switcheroo_process_delayed_switch();
                return;
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index ea916e117f01..6afdd75756da 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -549,7 +549,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool 
restore_gtt_mappings)

        intel_uncore_sanitize(dev);

-       if (drm_core_check_feature(dev, DRIVER_MODESET) &&
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY) &&
            restore_gtt_mappings) {
                mutex_lock(&dev->struct_mutex);
                i915_gem_restore_gtt_mappings(dev);
@@ -620,7 +620,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool 
restore_gtt_mappings)

 static int i915_drm_thaw(struct drm_device *dev)
 {
-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                i915_check_and_clear_faults(dev);

        return __i915_drm_thaw(dev, true);
@@ -715,7 +715,7 @@ int i915_reset(struct drm_device *dev)
         * was running at the time of the reset (i.e. we weren't VT
         * switched away).
         */
-       if (drm_core_check_feature(dev, DRIVER_MODESET) ||
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY) ||
                        !dev_priv->ums.mm_suspended) {
                dev_priv->ums.mm_suspended = 0;

@@ -1000,7 +1000,7 @@ static int __init i915_init(void)
        }
 #endif

-       if (!(driver.driver_features & DRIVER_MODESET)) {
+       if (driver.driver_features & DRIVER_LEGACY) {
                driver.get_vblank_timestamp = NULL;
 #ifndef CONFIG_DRM_I915_UMS
                /* Silently fail loading to not upset userspace. */
@@ -1014,7 +1014,7 @@ static int __init i915_init(void)
 static void __exit i915_exit(void)
 {
 #ifndef CONFIG_DRM_I915_UMS
-       if (!(driver.driver_features & DRIVER_MODESET))
+       if (driver.driver_features & DRIVER_LEGACY)
                return; /* Never loaded a driver. */
 #endif

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 3618bb0cda0a..b066056eadcd 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -166,7 +166,7 @@ i915_gem_init_ioctl(struct drm_device *dev, void *data,
        struct drm_i915_private *dev_priv = dev->dev_private;
        struct drm_i915_gem_init *args = data;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return -ENODEV;

        if (args->gtt_start >= args->gtt_end ||
@@ -4234,7 +4234,7 @@ i915_gem_suspend(struct drm_device *dev)
        i915_gem_retire_requests(dev);

        /* Under UMS, be paranoid and evict. */
-       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+       if (drm_core_check_feature(dev, DRIVER_LEGACY))
                i915_gem_evict_everything(dev);

        i915_kernel_lost_context(dev);
@@ -4244,8 +4244,7 @@ i915_gem_suspend(struct drm_device *dev)
         * We need to replace this with a semaphore, or something.
         * And not confound ums.mm_suspended!
         */
-       dev_priv->ums.mm_suspended = !drm_core_check_feature(dev,
-                                                            DRIVER_MODESET);
+       dev_priv->ums.mm_suspended = drm_core_check_feature(dev, DRIVER_LEGACY);
        mutex_unlock(&dev->struct_mutex);

        del_timer_sync(&dev_priv->gpu_error.hangcheck_timer);
@@ -4466,7 +4465,7 @@ int i915_gem_init(struct drm_device *dev)
        }

        /* Allow hardware batchbuffers unless told otherwise, but not for KMS. 
*/
-       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+       if (drm_core_check_feature(dev, DRIVER_LEGACY))
                dev_priv->dri1.allow_batchbuffer = 1;
        return 0;
 }
@@ -4489,7 +4488,7 @@ i915_gem_entervt_ioctl(struct drm_device *dev, void *data,
        struct drm_i915_private *dev_priv = dev->dev_private;
        int ret;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return 0;

        if (i915_reset_in_progress(&dev_priv->gpu_error)) {
@@ -4528,7 +4527,7 @@ int
 i915_gem_leavevt_ioctl(struct drm_device *dev, void *data,
                       struct drm_file *file_priv)
 {
-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return 0;

        drm_irq_uninstall(dev);
@@ -4541,7 +4540,7 @@ i915_gem_lastclose(struct drm_device *dev)
 {
        int ret;

-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY))
                return;

        ret = i915_gem_suspend(dev);
@@ -4606,7 +4605,7 @@ i915_gem_load(struct drm_device *dev)
        dev_priv->relative_constants_mode = I915_EXEC_CONSTANTS_REL_GENERAL;

        /* Old X drivers will take 0-2 for front, back, depth buffers */
-       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+       if (drm_core_check_feature(dev, DRIVER_LEGACY))
                dev_priv->fence_reg_start = 3;

        if (INTEL_INFO(dev)->gen >= 7 && !IS_VALLEYVIEW(dev))
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index f68aee31e565..6114a0db4a40 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -614,7 +614,7 @@ i915_pipe_enabled(struct drm_device *dev, int pipe)
 {
        drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;

-       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY)) {
                /* Locking is horribly broken here, but whatever. */
                struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
                struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
@@ -647,7 +647,7 @@ static u32 i915_get_vblank_counter(struct drm_device *dev, 
int pipe)
                return 0;
        }

-       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY)) {
                struct intel_crtc *intel_crtc =
                        to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
                const struct drm_display_mode *mode =
@@ -3936,7 +3936,7 @@ void intel_irq_init(struct drm_device *dev)
                dev->max_vblank_count = 0xffffff; /* only 24 bits of frame 
count */
        }

-       if (drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (!drm_core_check_feature(dev, DRIVER_LEGACY)) {
                dev->driver->get_vblank_timestamp = i915_get_vblank_timestamp;
                dev->driver->get_scanout_position = i915_get_crtc_scanoutpos;
        }
diff --git a/drivers/gpu/drm/i915/i915_suspend.c 
b/drivers/gpu/drm/i915/i915_suspend.c
index 56785e8fb2eb..0866cb2018cd 100644
--- a/drivers/gpu/drm/i915/i915_suspend.c
+++ b/drivers/gpu/drm/i915/i915_suspend.c
@@ -199,7 +199,7 @@ static void i915_save_display(struct drm_device *dev)

        /* This is only meaningful in non-KMS mode */
        /* Don't regfile.save them in KMS mode */
-       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+       if (drm_core_check_feature(dev, DRIVER_LEGACY))
                i915_save_display_reg(dev);

        /* LVDS state */
@@ -240,7 +240,7 @@ static void i915_save_display(struct drm_device *dev)
        if (HAS_FBC(dev) && INTEL_INFO(dev)->gen <= 4 && !IS_G4X(dev))
                dev_priv->regfile.saveFBC_CONTROL = I915_READ(FBC_CONTROL);

-       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+       if (drm_core_check_feature(dev, DRIVER_LEGACY))
                i915_save_vga(dev);
 }

@@ -253,10 +253,9 @@ static void i915_restore_display(struct drm_device *dev)
        if (INTEL_INFO(dev)->gen <= 4)
                I915_WRITE(DSPARB, dev_priv->regfile.saveDSPARB);

-       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+       if (drm_core_check_feature(dev, DRIVER_LEGACY))
                i915_restore_display_reg(dev);
-
-       if (drm_core_check_feature(dev, DRIVER_MODESET))
+       else
                mask = ~LVDS_PORT_EN;

        if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev))
@@ -295,7 +294,7 @@ static void i915_restore_display(struct drm_device *dev)
        if (HAS_FBC(dev) && INTEL_INFO(dev)->gen <= 4 && !IS_G4X(dev))
                I915_WRITE(FBC_CONTROL, dev_priv->regfile.saveFBC_CONTROL);

-       if (!drm_core_check_feature(dev, DRIVER_MODESET))
+       if (drm_core_check_feature(dev, DRIVER_LEGACY))
                i915_restore_vga(dev);
        else
                i915_redisable_vga(dev);
@@ -310,7 +309,7 @@ int i915_save_state(struct drm_device *dev)

        i915_save_display(dev);

-       if (!drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (drm_core_check_feature(dev, DRIVER_LEGACY)) {
                /* Interrupt state */
                if (HAS_PCH_SPLIT(dev)) {
                        dev_priv->regfile.saveDEIER = I915_READ(DEIER);
@@ -360,7 +359,7 @@ int i915_restore_state(struct drm_device *dev)
        i915_gem_restore_fences(dev);
        i915_restore_display(dev);

-       if (!drm_core_check_feature(dev, DRIVER_MODESET)) {
+       if (drm_core_check_feature(dev, DRIVER_LEGACY)) {
                /* Interrupt state */
                if (HAS_PCH_SPLIT(dev)) {
                        I915_WRITE(DEIER, dev_priv->regfile.saveDEIER);
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c 
b/drivers/gpu/drm/i915/intel_ringbuffer.c
index b340c7587629..0b2625f6ff9a 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -499,7 +499,7 @@ static int init_ring_common(struct intel_ring_buffer *ring)
                goto out;
        }

-       if (!drm_core_check_feature(ring->dev, DRIVER_MODESET))
+       if (drm_core_check_feature(ring->dev, DRIVER_LEGACY))
                i915_kernel_lost_context(ring->dev);
        else {
                ring->head = I915_READ_HEAD(ring);
-- 
1.8.4.2

Reply via email to