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@xxxxxxxxxxxx> > Reviewed-by: Emil Velikov <emil.velikov@xxxxxxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> 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 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel