From patchwork Fri Feb 21 07:55:20 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 3694911 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 8E2469F1EE for ; Fri, 21 Feb 2014 07:56:03 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id CEC8520149 for ; Fri, 21 Feb 2014 07:56:01 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id E928020142 for ; Fri, 21 Feb 2014 07:55:59 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A9DDAFB3E9; Thu, 20 Feb 2014 23:55:49 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-bk0-f52.google.com (mail-bk0-f52.google.com [209.85.214.52]) by gabe.freedesktop.org (Postfix) with ESMTP id F40A0FB424 for ; Thu, 20 Feb 2014 23:55:37 -0800 (PST) Received: by mail-bk0-f52.google.com with SMTP id e11so932485bkh.39 for ; Thu, 20 Feb 2014 23:55:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=kqOODH0k+/NZoOv83gJwWRoBCTp8jt893SNpVtrsIrI=; b=svKAm/ADaq0tT1OCcTPC2tGF5x0bWi9ul4Lfznh0J3q7mYxoyIvKIFvuTEvOcZH3LS VM1KyKKMhVEeYrP6xnGlZvVjyVnc3mF3Vi/zDUrMC8FIixMLzUqf6+gnw6TIknu1Kuq1 vTSFeyvxd8ct6ICnS0LzRrqyPe6r3uLlF3Tm++yHWZGmx0NwssUhPicF/KghyFGatWcS TyrLXV2YaDluBhTJs1iJTNcib8PuVvCDKYbUJrEhjJuiHizB7641NVjI6quZkcBjVeik Ire1PWk7WWarBifVxhjWcKKsjEAFiP8cor7ZWHphCsEcHifJjrXxNc/9tgDdfiW2akZm qtjw== X-Received: by 10.205.104.194 with SMTP id dn2mr1506942bkc.96.1392969336886; Thu, 20 Feb 2014 23:55:36 -0800 (PST) Received: from localhost (port-15573.pppoe.wtnet.de. [84.46.61.18]) by mx.google.com with ESMTPSA id p5sm6046122bkh.1.2014.02.20.23.55.35 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Feb 2014 23:55:36 -0800 (PST) From: Thierry Reding To: dri-devel@lists.freedesktop.org Subject: [RFC 04/12] drm: Separate DRIVER_MODESET and DRIVER_LEGACY Date: Fri, 21 Feb 2014 08:55:20 +0100 Message-Id: <1392969328-23133-5-git-send-email-thierry.reding@gmail.com> X-Mailer: git-send-email 1.8.4.2 In-Reply-To: <1392969328-23133-1-git-send-email-thierry.reding@gmail.com> References: <1392969328-23133-1-git-send-email-thierry.reding@gmail.com> X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Thierry Reding 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 --- 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);