drm: remove FASYNC support
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 8 Aug 2013 13:41:23 +0000 (15:41 +0200)
committerDave Airlie <airlied@redhat.com>
Mon, 19 Aug 2013 00:05:17 +0000 (10:05 +1000)
So I've stumbled over drm_fasync and wondered what it does. Digging
that up is quite a story.

First I've had to read up on what this does and ended up being rather
bewildered why peopled loved signals so much back in the days that
they've created SIGIO just for that ...

Then I wondered how this ever works, and what that strange "No-op."
comment right above it should mean. After all calling the core fasync
helper is pretty obviously not a noop. After reading through the
kernels FASYNC implementation I've noticed that signals are only sent
out to the processes attached with FASYNC by calling kill_fasync.

No merged drm driver has ever done that.

After more digging I've found out that the only driver that ever used
this is the so called GAMMA driver. I've frankly never heard of such a
gpu brand ever before. Now FASYNC seems to not have been the only bad
thing with that driver, since Dave Airlie removed it from the drm
driver with prejudice:

commit 1430163b4bbf7b00367ea1066c1c5fe85dbeefed
Author: Dave Airlie <airlied@linux.ie>
Date:   Sun Aug 29 12:04:35 2004 +0000

    Drop GAMMA DRM from a great height ...

Long story short, the drm fasync support seems to be doing absolutely
nothing. And the only user of it was never merged into the upstream
kernel. And we don't need any fops->fasync callback since the fcntl
implementation in the kernel already implements the noop case
correctly.

So stop this particular cargo-cult and rip it all out.

v2: Kill drm_fasync assignments in rcar (newly added) and imx drivers
(somehow I've missed that one in staging). Also drop the reference in
the drm DocBook. ARM compile-fail reported by Rob Clark.

v3: Move the removal of dev->buf_asnyc assignment in drm_setup to this
patch here.

v4: Actually git add ... tsk.

Cc: Dave Airlie <airlied@linux.ie>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Rob Clark <robdclark@gmail.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
27 files changed:
Documentation/DocBook/drm.tmpl
drivers/gpu/drm/ast/ast_drv.c
drivers/gpu/drm/cirrus/cirrus_drv.c
drivers/gpu/drm/drm_fops.c
drivers/gpu/drm/gma500/psb_drv.c
drivers/gpu/drm/i810/i810_dma.c
drivers/gpu/drm/i810/i810_drv.c
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/mga/mga_drv.c
drivers/gpu/drm/mgag200/mgag200_drv.c
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/omapdrm/omap_drv.c
drivers/gpu/drm/qxl/qxl_drv.c
drivers/gpu/drm/r128/r128_drv.c
drivers/gpu/drm/radeon/radeon_drv.c
drivers/gpu/drm/rcar-du/rcar_du_drv.c
drivers/gpu/drm/savage/savage_drv.c
drivers/gpu/drm/shmobile/shmob_drm_drv.c
drivers/gpu/drm/sis/sis_drv.c
drivers/gpu/drm/tdfx/tdfx_drv.c
drivers/gpu/drm/tilcdc/tilcdc_drv.c
drivers/gpu/drm/udl/udl_drv.c
drivers/gpu/drm/via/via_drv.c
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
drivers/gpu/host1x/drm/drm.c
drivers/staging/imx-drm/imx-drm-core.c
include/drm/drmP.h

index 87e22ecd92815186aa424bd7515adb57d9dfa0d9..9494ab8af9e77ece93b9c9ef3712fb83f22bebb7 100644 (file)
@@ -2504,7 +2504,6 @@ void (*postclose) (struct drm_device *, struct drm_file *);</synopsis>
        <programlisting>
        .poll = drm_poll,
        .read = drm_read,
-       .fasync = drm_fasync,
        .llseek = no_llseek,
        </programlisting>
       </para>
index a144fb0448528d9af3a01868aa80583dcf844d54..60f1ce3998c3da01ff680defe5fb9f8644faf60b 100644 (file)
@@ -190,7 +190,6 @@ static const struct file_operations ast_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = ast_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
 #endif
index d35d99c15f84c3cf30a04526f1767a2d528d3f5d..dd9c908ab3fc241b7e068b78168d69b8361461ea 100644 (file)
@@ -85,7 +85,6 @@ static const struct file_operations cirrus_driver_fops = {
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
 #endif
-       .fasync = drm_fasync,
 };
 static struct drm_driver driver = {
        .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_USE_MTRR,
index 10334999f2290362ac1e77ddd5db02cbd5def487..1817f03efe802273998f3f64051a757630f96d4d 100644 (file)
@@ -73,8 +73,6 @@ static int drm_setup(struct drm_device * dev)
        dev->last_context = 0;
        dev->if_version = 0;
 
-       dev->buf_async = NULL;
-
        DRM_DEBUG("\n");
 
        /*
@@ -372,18 +370,6 @@ out_put_pid:
        return ret;
 }
 
-/** No-op. */
-int drm_fasync(int fd, struct file *filp, int on)
-{
-       struct drm_file *priv = filp->private_data;
-       struct drm_device *dev = priv->minor->dev;
-
-       DRM_DEBUG("fd = %d, device = 0x%lx\n", fd,
-                 (long)old_encode_dev(priv->minor->device));
-       return fasync_helper(fd, filp, on, &dev->buf_async);
-}
-EXPORT_SYMBOL(drm_fasync);
-
 static void drm_master_release(struct drm_device *dev, struct file *filp)
 {
        struct drm_file *file_priv = filp->private_data;
index d13c2fc848bc2672cd46787895e193cd5194d2d9..99b5293972c6014eccf5e6bc70057e46a0d79bb6 100644 (file)
@@ -622,7 +622,6 @@ static const struct file_operations psb_gem_fops = {
        .unlocked_ioctl = psb_unlocked_ioctl,
        .mmap = drm_gem_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
        .read = drm_read,
 };
 
index eac755bb8f9bd907e9f792084aadce8cafbb61cc..ab1892eb10740fa2b3cc46fe7cba976940b6d186 100644 (file)
@@ -113,7 +113,6 @@ static const struct file_operations i810_buffer_fops = {
        .release = drm_release,
        .unlocked_ioctl = drm_ioctl,
        .mmap = i810_mmap_buffers,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
 #endif
index 2e91fc3580b4a12c53aa6779366dae4f8dec685c..d85c05b4877d17847e12d9ede6695f90a45501d6 100644 (file)
@@ -49,7 +49,6 @@ static const struct file_operations i810_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = drm_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
 #endif
index 13457e3e9cad5aa9b620c2922b9fd25f09e2f0a6..9411a745adafec8da220288dbfdd60cf7e700e35 100644 (file)
@@ -994,7 +994,6 @@ static const struct file_operations i915_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = drm_gem_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
        .read = drm_read,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = i915_compat_ioctl,
index 17d0a637e4fbffdd1f546c89b2a82d6235e21b61..fe71e1e44e4830d6c24c0fb3f1f11eb8d4c5baf5 100644 (file)
@@ -50,7 +50,6 @@ static const struct file_operations mga_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = drm_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = mga_compat_ioctl,
 #endif
index bd919647873541be09d7569d7a996e00b8bdcd13..b570127ae3b208beeb2147f1a0558b89e94d8d0c 100644 (file)
@@ -81,7 +81,6 @@ static const struct file_operations mgag200_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = mgag200_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
 #endif
index 1faa75f42393743259e62e3eddc11e33c6166091..b29d04b822ae8b587009113bc3888810a3a51064 100644 (file)
@@ -673,7 +673,6 @@ nouveau_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = nouveau_ttm_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
        .read = drm_read,
 #if defined(CONFIG_COMPAT)
        .compat_ioctl = nouveau_compat_ioctl,
index 47e64f916254dcf3d8eba29c0906b9047d7b4c4f..2603d909f49ce032f1933a5d8d17131de132c0d9 100644 (file)
@@ -592,7 +592,6 @@ static const struct file_operations omapdriver_fops = {
                .release = drm_release,
                .mmap = omap_gem_mmap,
                .poll = drm_poll,
-               .fasync = drm_fasync,
                .read = drm_read,
                .llseek = noop_llseek,
 };
index 48f2dfdeabcb2ed56a5d37ac5937cf4a1c84e308..514118ae72d4671474b165c5c0b7385f77b04ae7 100644 (file)
@@ -84,7 +84,6 @@ static const struct file_operations qxl_fops = {
        .release = drm_release,
        .unlocked_ioctl = drm_ioctl,
        .poll = drm_poll,
-       .fasync = drm_fasync,
        .mmap = qxl_mmap,
 };
 
index 472c38fe123fae8e11c95c47c916129f2b490ff1..c2338cbc56ad9699fc27b1f382d105ebd4a4bcc1 100644 (file)
@@ -48,7 +48,6 @@ static const struct file_operations r128_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = drm_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = r128_compat_ioctl,
 #endif
index 3585f22c5c155b3109387c0fd10b6e0b875fa82a..3e52331124de3f4db84a7e78a7458ce9b0975c00 100644 (file)
@@ -266,7 +266,6 @@ static const struct file_operations radeon_driver_old_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = drm_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
        .read = drm_read,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = radeon_compat_ioctl,
@@ -375,7 +374,6 @@ static const struct file_operations radeon_driver_kms_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = radeon_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
        .read = drm_read,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = radeon_kms_compat_ioctl,
index 0a9f1bb88337f614a24468970a09b6024415d359..0023f9719cf18fda9e2f3232bae5bf178e15de7d 100644 (file)
@@ -148,7 +148,6 @@ static const struct file_operations rcar_du_fops = {
 #endif
        .poll           = drm_poll,
        .read           = drm_read,
-       .fasync         = drm_fasync,
        .llseek         = no_llseek,
        .mmap           = drm_gem_cma_mmap,
 };
index 71b2081e7835fbfda44bad11f2fcb7e4b604a283..9135c8bd6fbc9d22635a4c8794ce9d7029865ebf 100644 (file)
@@ -42,7 +42,6 @@ static const struct file_operations savage_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = drm_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
 #endif
index 7f2ea1a5a45f4e2142dc6c374c59b96595245773..015551866b4a0d3c6f9912c361993f99c3b548b1 100644 (file)
@@ -257,7 +257,6 @@ static const struct file_operations shmob_drm_fops = {
 #endif
        .poll           = drm_poll,
        .read           = drm_read,
-       .fasync         = drm_fasync,
        .llseek         = no_llseek,
        .mmap           = drm_gem_cma_mmap,
 };
index 5a5325e6b75999863e236a3a85102cd35423ad09..b88b2d3021053527bf2a756493159ef4af9abaff 100644 (file)
@@ -72,7 +72,6 @@ static const struct file_operations sis_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = drm_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
 #endif
index ddfa743459d04997f935bba0b203059ce35d8ad7..951ec13e4e5c85a6b89af3094bb8d9d184924aba 100644 (file)
@@ -48,7 +48,6 @@ static const struct file_operations tdfx_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = drm_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
 #endif
index 14801c2235ae86228441f8b343a893521af5e053..116da199b9429a56ba8a7b58efc953369b721344 100644 (file)
@@ -497,7 +497,6 @@ static const struct file_operations fops = {
 #endif
        .poll               = drm_poll,
        .read               = drm_read,
-       .fasync             = drm_fasync,
        .llseek             = no_llseek,
        .mmap               = drm_gem_cma_mmap,
 };
index bb0af58c769a09923c2e6a73b450d2702bd7e919..7650dc0d78cec2391755a04235cfe3bfc6c7a8d1 100644 (file)
@@ -65,7 +65,6 @@ static const struct file_operations udl_driver_fops = {
        .read = drm_read,
        .unlocked_ioctl = drm_ioctl,
        .release = drm_release,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
 #endif
index f4ae203279418225337dfcbbe52b1bd176eb5123..448799968a06a3942b003c127e8aab18177be9df 100644 (file)
@@ -64,7 +64,6 @@ static const struct file_operations via_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = drm_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
 #endif
index 81ef6bac8737e3e61aceb3dfad24242859ad94ea..2dd1919485e415adcade707ecb88ae4fdb7e5e75 100644 (file)
@@ -1120,7 +1120,6 @@ static const struct file_operations vmwgfx_driver_fops = {
        .mmap = vmw_mmap,
        .poll = vmw_fops_poll,
        .read = vmw_fops_read,
-       .fasync = drm_fasync,
 #if defined(CONFIG_COMPAT)
        .compat_ioctl = drm_compat_ioctl,
 #endif
index b128b90a94f61c55b1564a3615192387b4cbe633..15684bf073fba3f6e6b31483665efb6bdea8de3b 100644 (file)
@@ -508,7 +508,6 @@ static const struct file_operations tegra_drm_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = tegra_drm_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
        .read = drm_read,
 #ifdef CONFIG_COMPAT
        .compat_ioctl = drm_compat_ioctl,
index a8900496b9801592586bb8108f02827a26f4f122..29607c25b26100adbd571c190b3311df82927a5c 100644 (file)
@@ -207,7 +207,6 @@ static const struct file_operations imx_drm_driver_fops = {
        .unlocked_ioctl = drm_ioctl,
        .mmap = drm_gem_cma_mmap,
        .poll = drm_poll,
-       .fasync = drm_fasync,
        .read = drm_read,
        .llseek = noop_llseek,
 };
index 277f307e053deccaa025901cc9cf2d98cec2c6ac..cef9a507246ea393196174a03658e31794b9b334 100644 (file)
@@ -1166,8 +1166,6 @@ struct drm_device {
 
        /*@} */
 
-       struct fasync_struct *buf_async;/**< Processes waiting for SIGIO */
-
        struct drm_agp_head *agp;       /**< AGP data */
 
        struct device *dev;             /**< Device structure */
@@ -1264,7 +1262,6 @@ extern int drm_lastclose(struct drm_device *dev);
 extern struct mutex drm_global_mutex;
 extern int drm_open(struct inode *inode, struct file *filp);
 extern int drm_stub_open(struct inode *inode, struct file *filp);
-extern int drm_fasync(int fd, struct file *filp, int on);
 extern ssize_t drm_read(struct file *filp, char __user *buffer,
                        size_t count, loff_t *offset);
 extern int drm_release(struct inode *inode, struct file *filp);