dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: DRI Development <dri-devel@lists.freedesktop.org>
Cc: Daniel Vetter <daniel.vetter@intel.com>,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	Sam Ravnborg <sam@ravnborg.org>,
	Emil Velikov <emil.velikov@collabora.com>
Subject: Re: [PATCH 3/3] drm/irq: Ditch DRIVER_IRQ_SHARED
Date: Tue, 29 Jan 2019 15:45:44 +0100	[thread overview]
Message-ID: <20190129144544.GR3271@phenom.ffwll.local> (raw)
In-Reply-To: <20190129104248.26607-3-daniel.vetter@ffwll.ch>

On Tue, Jan 29, 2019 at 11:42:48AM +0100, Daniel Vetter wrote:
> This is only used by drm_irq_install(), which is an optional helper.
> For legacy pci devices this is required (due to interrupt sharing without
> msi/msi-x), and just making this the default exactly matches the behaviour
> of all existing drivers using the drm_irq_install() helpers. In case that
> ever becomes wrong drivers can roll their own irq handling, as many
> drivers already do (for other reasons like needing a threaded interrupt
> handler, or having an entire pile of different interrupt sources).
> 
> v2: Rebase
> 
> v3: Improve commit message (Emil)
> 
> Cc: Sam Ravnborg <sam@ravnborg.org>
> Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>

Intel CI is approving now to, so all three patches merged to
drm-misc-next.
-Daniel

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c |  2 +-
>  drivers/gpu/drm/drm_irq.c               |  4 ++--
>  drivers/gpu/drm/gma500/psb_drv.c        |  3 +--
>  drivers/gpu/drm/i915/i915_drv.c         |  2 +-
>  drivers/gpu/drm/mga/mga_drv.c           |  2 +-
>  drivers/gpu/drm/qxl/qxl_drv.c           |  1 -
>  drivers/gpu/drm/r128/r128_drv.c         |  2 +-
>  drivers/gpu/drm/radeon/radeon_drv.c     |  4 +---
>  drivers/gpu/drm/via/via_drv.c           |  3 +--
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c     |  2 +-
>  drivers/staging/vboxvideo/vbox_drv.c    |  3 +--
>  include/drm/drm_drv.h                   | 22 ++++++----------------
>  12 files changed, 17 insertions(+), 33 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> index 22502417c18c..a1bb3773087b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -1189,7 +1189,7 @@ amdgpu_get_crtc_scanout_position(struct drm_device *dev, unsigned int pipe,
>  static struct drm_driver kms_driver = {
>  	.driver_features =
>  	    DRIVER_USE_AGP | DRIVER_ATOMIC |
> -	    DRIVER_IRQ_SHARED | DRIVER_GEM |
> +	    DRIVER_GEM |
>  	    DRIVER_PRIME | DRIVER_RENDER | DRIVER_MODESET | DRIVER_SYNCOBJ,
>  	.load = amdgpu_driver_load_kms,
>  	.open = amdgpu_driver_open_kms,
> diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
> index c5babb3e4752..9bd8908d5fd8 100644
> --- a/drivers/gpu/drm/drm_irq.c
> +++ b/drivers/gpu/drm/drm_irq.c
> @@ -120,8 +120,8 @@ int drm_irq_install(struct drm_device *dev, int irq)
>  	if (dev->driver->irq_preinstall)
>  		dev->driver->irq_preinstall(dev);
>  
> -	/* Install handler */
> -	if (drm_core_check_feature(dev, DRIVER_IRQ_SHARED))
> +	/* PCI devices require shared interrupts. */
> +	if (dev->pdev)
>  		sh_flags = IRQF_SHARED;
>  
>  	ret = request_irq(irq, dev->driver->irq_handler,
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
> index 7cf14aeb1c28..eefaf4daff2b 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -468,8 +468,7 @@ static const struct file_operations psb_gem_fops = {
>  };
>  
>  static struct drm_driver driver = {
> -	.driver_features = DRIVER_IRQ_SHARED | \
> -			   DRIVER_MODESET | DRIVER_GEM,
> +	.driver_features = DRIVER_MODESET | DRIVER_GEM,
>  	.load = psb_driver_load,
>  	.unload = psb_driver_unload,
>  	.lastclose = drm_fb_helper_lastclose,
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 550cfb945942..a7aaa1ac4c99 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -3010,7 +3010,7 @@ static struct drm_driver driver = {
>  	 * deal with them for Intel hardware.
>  	 */
>  	.driver_features =
> -	    DRIVER_IRQ_SHARED | DRIVER_GEM | DRIVER_PRIME |
> +	    DRIVER_GEM | DRIVER_PRIME |
>  	    DRIVER_RENDER | DRIVER_MODESET | DRIVER_ATOMIC | DRIVER_SYNCOBJ,
>  	.release = i915_driver_release,
>  	.open = i915_driver_open,
> diff --git a/drivers/gpu/drm/mga/mga_drv.c b/drivers/gpu/drm/mga/mga_drv.c
> index 1aad27813c23..6e1d1054ad06 100644
> --- a/drivers/gpu/drm/mga/mga_drv.c
> +++ b/drivers/gpu/drm/mga/mga_drv.c
> @@ -57,7 +57,7 @@ static const struct file_operations mga_driver_fops = {
>  static struct drm_driver driver = {
>  	.driver_features =
>  	    DRIVER_USE_AGP | DRIVER_PCI_DMA | DRIVER_LEGACY |
> -	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED,
> +	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ,
>  	.dev_priv_size = sizeof(drm_mga_buf_priv_t),
>  	.load = mga_driver_load,
>  	.unload = mga_driver_unload,
> diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c
> index 1669d4b79253..bb81e310eb6d 100644
> --- a/drivers/gpu/drm/qxl/qxl_drv.c
> +++ b/drivers/gpu/drm/qxl/qxl_drv.c
> @@ -245,7 +245,6 @@ static struct pci_driver qxl_pci_driver = {
>  
>  static struct drm_driver qxl_driver = {
>  	.driver_features = DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME |
> -			   DRIVER_IRQ_SHARED |
>  			   DRIVER_ATOMIC,
>  
>  	.dumb_create = qxl_mode_dumb_create,
> diff --git a/drivers/gpu/drm/r128/r128_drv.c b/drivers/gpu/drm/r128/r128_drv.c
> index 0d2b7e42b3a7..4b1a505ab353 100644
> --- a/drivers/gpu/drm/r128/r128_drv.c
> +++ b/drivers/gpu/drm/r128/r128_drv.c
> @@ -57,7 +57,7 @@ static const struct file_operations r128_driver_fops = {
>  static struct drm_driver driver = {
>  	.driver_features =
>  	    DRIVER_USE_AGP | DRIVER_PCI_DMA | DRIVER_SG | DRIVER_LEGACY |
> -	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED,
> +	    DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ,
>  	.dev_priv_size = sizeof(drm_r128_buf_priv_t),
>  	.load = r128_driver_load,
>  	.preclose = r128_driver_preclose,
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
> index 450a9d473c30..2e96c886392b 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -534,9 +534,7 @@ radeon_get_crtc_scanout_position(struct drm_device *dev, unsigned int pipe,
>  
>  static struct drm_driver kms_driver = {
>  	.driver_features =
> -	    DRIVER_USE_AGP |
> -	    DRIVER_IRQ_SHARED | DRIVER_GEM |
> -	    DRIVER_PRIME | DRIVER_RENDER,
> +	    DRIVER_USE_AGP | DRIVER_GEM | DRIVER_PRIME | DRIVER_RENDER,
>  	.load = radeon_driver_load_kms,
>  	.open = radeon_driver_open_kms,
>  	.postclose = radeon_driver_postclose_kms,
> diff --git a/drivers/gpu/drm/via/via_drv.c b/drivers/gpu/drm/via/via_drv.c
> index aaf766f7cca2..af6a12d3c058 100644
> --- a/drivers/gpu/drm/via/via_drv.c
> +++ b/drivers/gpu/drm/via/via_drv.c
> @@ -70,8 +70,7 @@ static const struct file_operations via_driver_fops = {
>  
>  static struct drm_driver driver = {
>  	.driver_features =
> -	    DRIVER_USE_AGP | DRIVER_HAVE_IRQ | DRIVER_LEGACY |
> -	    DRIVER_IRQ_SHARED,
> +	    DRIVER_USE_AGP | DRIVER_HAVE_IRQ | DRIVER_LEGACY,
>  	.load = via_driver_load,
>  	.unload = via_driver_unload,
>  	.open = via_driver_open,
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index d159d0400013..4638f6791cda 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1582,7 +1582,7 @@ static const struct file_operations vmwgfx_driver_fops = {
>  };
>  
>  static struct drm_driver driver = {
> -	.driver_features = DRIVER_IRQ_SHARED |
> +	.driver_features =
>  	DRIVER_MODESET | DRIVER_PRIME | DRIVER_RENDER | DRIVER_ATOMIC,
>  	.load = vmw_driver_load,
>  	.unload = vmw_driver_unload,
> diff --git a/drivers/staging/vboxvideo/vbox_drv.c b/drivers/staging/vboxvideo/vbox_drv.c
> index 78cbcd68d4f3..b0d73d5fba5d 100644
> --- a/drivers/staging/vboxvideo/vbox_drv.c
> +++ b/drivers/staging/vboxvideo/vbox_drv.c
> @@ -221,8 +221,7 @@ static void vbox_master_drop(struct drm_device *dev, struct drm_file *file_priv)
>  
>  static struct drm_driver driver = {
>  	.driver_features =
> -	    DRIVER_MODESET | DRIVER_GEM | DRIVER_IRQ_SHARED |
> -	    DRIVER_PRIME | DRIVER_ATOMIC,
> +	    DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME | DRIVER_ATOMIC,
>  	.dev_priv_size = 0,
>  
>  	.lastclose = drm_fb_helper_lastclose,
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index 0760a1d7b6c2..ca46a45a9cce 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -100,20 +100,20 @@ enum drm_driver_feature {
>  	 * Set up DRM AGP support, see drm_agp_init(), the DRM core will manage
>  	 * AGP resources. New drivers don't need this.
>  	 */
> -	DRIVER_USE_AGP			= BIT(24),
> +	DRIVER_USE_AGP			= BIT(25),
>  	/**
>  	 * @DRIVER_LEGACY:
>  	 *
>  	 * Denote a legacy driver using shadow attach. Do not use.
>  	 */
> -	DRIVER_LEGACY			= BIT(25),
> +	DRIVER_LEGACY			= BIT(26),
>  	/**
>  	 * @DRIVER_PCI_DMA:
>  	 *
>  	 * Driver is capable of PCI DMA, mapping of PCI DMA buffers to userspace
>  	 * will be enabled. Only for legacy drivers. Do not use.
>  	 */
> -	DRIVER_PCI_DMA			= BIT(26),
> +	DRIVER_PCI_DMA			= BIT(27),
>  	/**
>  	 * @DRIVER_SG:
>  	 *
> @@ -121,7 +121,7 @@ enum drm_driver_feature {
>  	 * scatter/gather buffers will be enabled. Only for legacy drivers. Do
>  	 * not use.
>  	 */
> -	DRIVER_SG			= BIT(27),
> +	DRIVER_SG			= BIT(28),
>  
>  	/**
>  	 * @DRIVER_HAVE_DMA:
> @@ -129,7 +129,7 @@ enum drm_driver_feature {
>  	 * Driver supports DMA, the userspace DMA API will be supported. Only
>  	 * for legacy drivers. Do not use.
>  	 */
> -	DRIVER_HAVE_DMA			= BIT(28),
> +	DRIVER_HAVE_DMA			= BIT(29),
>  	/**
>  	 * @DRIVER_HAVE_IRQ:
>  	 *
> @@ -139,17 +139,7 @@ enum drm_driver_feature {
>  	 * drm_irq_uninstall() helper functions, or roll their own irq support
>  	 * code by calling request_irq() directly.
>  	 */
> -	DRIVER_HAVE_IRQ			= BIT(29),
> -	/**
> -	 * @DRIVER_IRQ_SHARED:
> -	 *
> -	 * Indicates to drm_irq_install() that a shared irq should be requested.
> -	 *
> -	 * FIXME: This should be an explicit argument for non-legacy drivers, or
> -	 * at least the default for PCI devices (which would cover all current
> -	 * users).
> -	 */
> -	DRIVER_IRQ_SHARED		= BIT(30),
> +	DRIVER_HAVE_IRQ			= BIT(30),
>  	/**
>  	 * @DRIVER_KMS_LEGACY_CONTEXT:
>  	 *
> -- 
> 2.20.1
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

      reply	other threads:[~2019-01-29 14:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-29 10:42 [PATCH 1/3] drm/irq: Don't check for DRIVER_HAVE_IRQ in drm_irq_(un)install Daniel Vetter
2019-01-29 10:42 ` [PATCH 2/3] drm: Switch DRIVER_ flags to an enum Daniel Vetter
2019-01-29 10:42 ` [PATCH 3/3] drm/irq: Ditch DRIVER_IRQ_SHARED Daniel Vetter
2019-01-29 14:45   ` Daniel Vetter [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190129144544.GR3271@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emil.velikov@collabora.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=sam@ravnborg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox