[PATCH 09/14] drm: replace drawable ioctl by noops

2010-08-23 Thread Daniel Vetter
The information supplied by userspace through these ioctls is only
accessible by dev->drw_idr. But there's no in-tree user of that.
Also userspace does not really care about return values of these ioctls,
either. Only hw/xfree86/dri/dri.c from the xserver actually checks the
return from adddraw and keeps on trying to create a kernel drawable
every time somebody creates a dri drawable. But since that's now a noop,
who cares.

Therefore it's safe to replace these three ioctls with noops and rip
out the implementation.

Signed-off-by: Daniel Vetter 
Reviewed-by: Kristian H?gsberg 
Reviewed-by: Michel D?nzer 
---
 drivers/gpu/drm/Makefile   |2 +-
 drivers/gpu/drm/drm_drawable.c |  197 
 drivers/gpu/drm/drm_drv.c  |8 +-
 drivers/gpu/drm/drm_stub.c |3 -
 include/drm/drmP.h |   15 ---
 5 files changed, 4 insertions(+), 221 deletions(-)
 delete mode 100644 drivers/gpu/drm/drm_drawable.c

diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index f3a23a3..997c43d 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -5,7 +5,7 @@
 ccflags-y := -Iinclude/drm

 drm-y   := drm_auth.o drm_buffer.o drm_bufs.o drm_cache.o \
-   drm_context.o drm_dma.o drm_drawable.o \
+   drm_context.o drm_dma.o \
drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \
drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
diff --git a/drivers/gpu/drm/drm_drawable.c b/drivers/gpu/drm/drm_drawable.c
deleted file mode 100644
index 170e531..000
--- a/drivers/gpu/drm/drm_drawable.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/**
- * \file drm_drawable.c
- * IOCTLs for drawables
- *
- * \author Rickard E. (Rik) Faith 
- * \author Gareth Hughes 
- * \author Michel D?nzer 
- */
-
-/*
- * Created: Tue Feb  2 08:37:54 1999 by faith at valinux.com
- *
- * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
- * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
- * Copyright 2006 Tungsten Graphics, Inc., Bismarck, North Dakota.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "drmP.h"
-
-/**
- * Allocate drawable ID and memory to store information about it.
- */
-int drm_adddraw(struct drm_device *dev, void *data, struct drm_file *file_priv)
-{
-   unsigned long irqflags;
-   struct drm_draw *draw = data;
-   int new_id = 0;
-   int ret;
-
-again:
-   if (idr_pre_get(>drw_idr, GFP_KERNEL) == 0) {
-   DRM_ERROR("Out of memory expanding drawable idr\n");
-   return -ENOMEM;
-   }
-
-   spin_lock_irqsave(>drw_lock, irqflags);
-   ret = idr_get_new_above(>drw_idr, NULL, 1, _id);
-   if (ret == -EAGAIN) {
-   spin_unlock_irqrestore(>drw_lock, irqflags);
-   goto again;
-   }
-
-   spin_unlock_irqrestore(>drw_lock, irqflags);
-
-   draw->handle = new_id;
-
-   DRM_DEBUG("%d\n", draw->handle);
-
-   return 0;
-}
-
-/**
- * Free drawable ID and memory to store information about it.
- */
-int drm_rmdraw(struct drm_device *dev, void *data, struct drm_file *file_priv)
-{
-   struct drm_draw *draw = data;
-   unsigned long irqflags;
-   struct drm_drawable_info *info;
-
-   spin_lock_irqsave(>drw_lock, irqflags);
-
-   info = drm_get_drawable_info(dev, draw->handle);
-   if (info == NULL) {
-   spin_unlock_irqrestore(>drw_lock, irqflags);
-   return -EINVAL;
-   }
-   kfree(info->rects);
-   kfree(info);
-
-   idr_remove(>drw_idr, draw->handle);
-
-   spin_unlock_irqrestore(>drw_lock, irqflags);
-   DRM_DEBUG("%d\n", draw->handle);
-   return 0;
-}
-
-int drm_update_drawable_info(struct drm_device *dev, void *data, struct 
drm_file 

[PATCH 09/14] drm: replace drawable ioctl by noops

2010-08-23 Thread Daniel Vetter
The information supplied by userspace through these ioctls is only
accessible by dev-drw_idr. But there's no in-tree user of that.
Also userspace does not really care about return values of these ioctls,
either. Only hw/xfree86/dri/dri.c from the xserver actually checks the
return from adddraw and keeps on trying to create a kernel drawable
every time somebody creates a dri drawable. But since that's now a noop,
who cares.

Therefore it's safe to replace these three ioctls with noops and rip
out the implementation.

Signed-off-by: Daniel Vetter daniel.vet...@ffwll.ch
Reviewed-by: Kristian Høgsberg k...@bitplanet.net
Reviewed-by: Michel Dänzer mic...@daenzer.net
---
 drivers/gpu/drm/Makefile   |2 +-
 drivers/gpu/drm/drm_drawable.c |  197 
 drivers/gpu/drm/drm_drv.c  |8 +-
 drivers/gpu/drm/drm_stub.c |3 -
 include/drm/drmP.h |   15 ---
 5 files changed, 4 insertions(+), 221 deletions(-)
 delete mode 100644 drivers/gpu/drm/drm_drawable.c

diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index f3a23a3..997c43d 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -5,7 +5,7 @@
 ccflags-y := -Iinclude/drm
 
 drm-y   := drm_auth.o drm_buffer.o drm_bufs.o drm_cache.o \
-   drm_context.o drm_dma.o drm_drawable.o \
+   drm_context.o drm_dma.o \
drm_drv.o drm_fops.o drm_gem.o drm_ioctl.o drm_irq.o \
drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \
drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \
diff --git a/drivers/gpu/drm/drm_drawable.c b/drivers/gpu/drm/drm_drawable.c
deleted file mode 100644
index 170e531..000
--- a/drivers/gpu/drm/drm_drawable.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/**
- * \file drm_drawable.c
- * IOCTLs for drawables
- *
- * \author Rickard E. (Rik) Faith fa...@valinux.com
- * \author Gareth Hughes gar...@valinux.com
- * \author Michel Dänzer mic...@tungstengraphics.com
- */
-
-/*
- * Created: Tue Feb  2 08:37:54 1999 by fa...@valinux.com
- *
- * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
- * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
- * Copyright 2006 Tungsten Graphics, Inc., Bismarck, North Dakota.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the Software),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include drmP.h
-
-/**
- * Allocate drawable ID and memory to store information about it.
- */
-int drm_adddraw(struct drm_device *dev, void *data, struct drm_file *file_priv)
-{
-   unsigned long irqflags;
-   struct drm_draw *draw = data;
-   int new_id = 0;
-   int ret;
-
-again:
-   if (idr_pre_get(dev-drw_idr, GFP_KERNEL) == 0) {
-   DRM_ERROR(Out of memory expanding drawable idr\n);
-   return -ENOMEM;
-   }
-
-   spin_lock_irqsave(dev-drw_lock, irqflags);
-   ret = idr_get_new_above(dev-drw_idr, NULL, 1, new_id);
-   if (ret == -EAGAIN) {
-   spin_unlock_irqrestore(dev-drw_lock, irqflags);
-   goto again;
-   }
-
-   spin_unlock_irqrestore(dev-drw_lock, irqflags);
-
-   draw-handle = new_id;
-
-   DRM_DEBUG(%d\n, draw-handle);
-
-   return 0;
-}
-
-/**
- * Free drawable ID and memory to store information about it.
- */
-int drm_rmdraw(struct drm_device *dev, void *data, struct drm_file *file_priv)
-{
-   struct drm_draw *draw = data;
-   unsigned long irqflags;
-   struct drm_drawable_info *info;
-
-   spin_lock_irqsave(dev-drw_lock, irqflags);
-
-   info = drm_get_drawable_info(dev, draw-handle);
-   if (info == NULL) {
-   spin_unlock_irqrestore(dev-drw_lock, irqflags);
-   return -EINVAL;
-   }
-   kfree(info-rects);
-   kfree(info);
-
-   idr_remove(dev-drw_idr, draw-handle);
-
-   spin_unlock_irqrestore(dev-drw_lock, irqflags);
-