Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fcee5906 authored by Daniel Vetter's avatar Daniel Vetter Committed by Dave Airlie
Browse files

drm: Nuke ->vblank_disable_allowed



This was added in

commit 0a3e67a4
Author: Jesse Barnes <jbarnes@virtuousgeek.org>
Date:   Tue Sep 30 12:14:26 2008 -0700

    drm: Rework vblank-wait handling to allow interrupt reduction.

to stay backwards-compatible with old UMS code that didn't even tell
the kernel when it did a modeset, so that the kernel could
save/restore vblank counters. At worst this means vblanks will be
somewhat funky on a setup that very likely no one still runs.

So let's just nuke it.

Plan B would be to set it unconditionally in drm_vblank_init for kms
drivers, instead of in each driver separately. So if this patch breaks
anything please only restore the hunks in drmP.h and drm_irq.c, plus
add a check for DRIVER_MODESET in drm_vblank_init.

Stumbled over this in a discussion on irc with Chris.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Eric Anholt <eric@anholt.net>
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Mark Yao <mark.yao@rock-chips.com>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Acked-by: default avatarLiviu Dudau <Liviu.Dudau@arm.com>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent fc7fedc2
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -219,7 +219,6 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
	if (r) {
	if (r) {
		return r;
		return r;
	}
	}
	adev->ddev->vblank_disable_allowed = true;


	/* enable msi */
	/* enable msi */
	adev->irq.msi_enabled = false;
	adev->irq.msi_enabled = false;
+0 −1
Original line number Original line Diff line number Diff line
@@ -379,7 +379,6 @@ static int hdlcd_drm_bind(struct device *dev)
		DRM_ERROR("failed to initialise vblank\n");
		DRM_ERROR("failed to initialise vblank\n");
		goto err_vblank;
		goto err_vblank;
	}
	}
	drm->vblank_disable_allowed = true;


	drm_mode_config_reset(drm);
	drm_mode_config_reset(drm);
	drm_kms_helper_poll_init(drm);
	drm_kms_helper_poll_init(drm);
+0 −1
Original line number Original line Diff line number Diff line
@@ -113,7 +113,6 @@ static int armada_drm_load(struct drm_device *dev, unsigned long flags)
		goto err_comp;
		goto err_comp;


	dev->irq_enabled = true;
	dev->irq_enabled = true;
	dev->vblank_disable_allowed = 1;


	ret = armada_fbdev_init(dev);
	ret = armada_fbdev_init(dev);
	if (ret)
	if (ret)
+0 −6
Original line number Original line Diff line number Diff line
@@ -348,9 +348,6 @@ static void vblank_disable_fn(unsigned long arg)
	unsigned int pipe = vblank->pipe;
	unsigned int pipe = vblank->pipe;
	unsigned long irqflags;
	unsigned long irqflags;


	if (!dev->vblank_disable_allowed)
		return;

	spin_lock_irqsave(&dev->vbl_lock, irqflags);
	spin_lock_irqsave(&dev->vbl_lock, irqflags);
	if (atomic_read(&vblank->refcount) == 0 && vblank->enabled) {
	if (atomic_read(&vblank->refcount) == 0 && vblank->enabled) {
		DRM_DEBUG("disabling vblank on crtc %u\n", pipe);
		DRM_DEBUG("disabling vblank on crtc %u\n", pipe);
@@ -437,8 +434,6 @@ int drm_vblank_init(struct drm_device *dev, unsigned int num_crtcs)
			 "get_vblank_timestamp == NULL\n");
			 "get_vblank_timestamp == NULL\n");
	}
	}


	dev->vblank_disable_allowed = false;

	return 0;
	return 0;


err:
err:
@@ -1585,7 +1580,6 @@ void drm_vblank_post_modeset(struct drm_device *dev, unsigned int pipe)


	if (vblank->inmodeset) {
	if (vblank->inmodeset) {
		spin_lock_irqsave(&dev->vbl_lock, irqflags);
		spin_lock_irqsave(&dev->vbl_lock, irqflags);
		dev->vblank_disable_allowed = true;
		drm_reset_vblank_timestamp(dev, pipe);
		drm_reset_vblank_timestamp(dev, pipe);
		spin_unlock_irqrestore(&dev->vbl_lock, irqflags);
		spin_unlock_irqrestore(&dev->vbl_lock, irqflags);


+0 −7
Original line number Original line Diff line number Diff line
@@ -212,13 +212,6 @@ static int exynos_drm_load(struct drm_device *dev, unsigned long flags)
	 */
	 */
	dev->irq_enabled = true;
	dev->irq_enabled = true;


	/*
	 * with vblank_disable_allowed = true, vblank interrupt will be disabled
	 * by drm timer once a current process gives up ownership of
	 * vblank event.(after drm_vblank_put function is called)
	 */
	dev->vblank_disable_allowed = true;

	/* init kms poll for handling hpd */
	/* init kms poll for handling hpd */
	drm_kms_helper_poll_init(dev);
	drm_kms_helper_poll_init(dev);


Loading