[Bug 27729] [r300g - RV530] main/mipmap.c:144: do_row: Assertion `comps >= 1' failed

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=27729

Fabio Pedretti  changed:

   What|Removed |Added

  Attachment #35316|0   |1
is obsolete||

--- Comment #14 from Fabio Pedretti  2010-04-29 01:03:47 
PDT ---
Created an attachment (id=35327)
 --> (https://bugs.freedesktop.org/attachment.cgi?id=35327)
swrastg debug output with "ST_DEBUG=mesa,tgsi"

Anyway you may also want to try the game yourself from
http://trac.wildfiregames.com/wiki/LatestRelease since it appears it will be a
common open source game when finished.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 27729] [r300g, mesa] gallium compressed texture problems

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=27729

Fabio Pedretti  changed:

   What|Removed |Added

Summary|[r300g - RV530] |[r300g, mesa] gallium
   |main/mipmap.c:144: do_row:  |compressed texture problems
   |Assertion `comps >= 1'  |
   |failed  |

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 27729] [r300g, mesa] gallium compressed texture problems

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=27729

Fabio Pedretti  changed:

   What|Removed |Added

 CC||mar...@gmail.com

--- Comment #15 from Fabio Pedretti  2010-04-29 01:11:49 
PDT ---
In the meantime 95bfc8f32571751c5c9ec6d8e84f5e3c28d1b20e has been committed
from Marek Olšák which is a subset of attached "patch for r300g
is_format_supported()", but which appears to also fix the r300g problem.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH] drm/radeon/kms: R3XX-R4XX fix GPU reset code

2010-04-29 Thread Michel Dänzer
On Mon, 2010-04-26 at 22:23 +0200, Jerome Glisse wrote: 
> Previous reset code leaded to computer hard lockup (need to unplug
> the power too reboot the computer) on various configuration. This
> patch change the reset code to avoid hard lockup. The GPU reset
> is failing most of the time but at least user can log in remotely
> or properly shutdown the computer.
> 
> Two issues were leading to hard lockup :
> - Writting to the scratch register lead to hard lockup most likely
> because the write back mecanism is in fuzy state after GPU lockup.
> - Resetting the GPU memory controller and not reinitializing it
> after leaded to hard lockup. We did only reinitialize in case of
> successfull reset thus unsuccessfull reset quickly leaded to hard
> lockup.
> 
> Signed-off-by: Jerome Glisse 

Unfortunately, this doesn't seem to help for the RV350 in my PowerBook.
GPU lockups still turn into machine hardlocks, which is a regression
from before the GPU reset rework.


-- 
Earthling Michel Dänzer   |http://www.vmware.com
Libre software enthusiast |  Debian, X and DRI developer
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 00/11] various cleanups and dead coode removals in drm core

2010-04-29 Thread Daniel Vetter
Hi all,

[Dave, this is the patch series I've talked about on irc a few days ago.]

This patch series kills various things I've stumbled over while reading
through the drm core code. It mostly removes unnecessary stuff on the drm
core <-> driver interface.

Tested on my i845, i945 and agp rv570. All drm drivers compile-tested.

Please review and merge what you like for -next. Save patch 9 which
depends upon patch 8 (mucks around in the same place), they should be all
independent. So you can mix&match what you like.

Thanks, Daniel

Daniel Vetter (11):
  drm: don't export drm_sg_alloc
  drm: kill kernel_context_switch callbacks
  drm: kill dma_ready callbacks
  drm: kill procfs callbacks
  drm: kill drm_map_ofs callbacks
  drm: kill get_reg_ofs callback
  drm: kill context_ctor callback
  drm: don't export drm_get_drawable_info
  drm: replace drawable ioctl by noops
  drm: kill dev->timer
  drm: kill gem_free_object_unlocked driver callback

 drivers/gpu/drm/Makefile  |2 +-
 drivers/gpu/drm/drm_context.c |8 --
 drivers/gpu/drm/drm_drawable.c|  198 -
 drivers/gpu/drm/drm_drv.c |   10 +-
 drivers/gpu/drm/drm_gem.c |4 +-
 drivers/gpu/drm/drm_lock.c|   21 
 drivers/gpu/drm/drm_proc.c|   13 --
 drivers/gpu/drm/drm_scatter.c |2 -
 drivers/gpu/drm/drm_stub.c|4 -
 drivers/gpu/drm/drm_vm.c  |   13 +--
 drivers/gpu/drm/i810/i810_drv.c   |2 -
 drivers/gpu/drm/i830/i830_drv.c   |2 -
 drivers/gpu/drm/i915/i915_drv.c   |2 -
 drivers/gpu/drm/mga/mga_drv.c |2 -
 drivers/gpu/drm/nouveau/nouveau_drv.c |2 -
 drivers/gpu/drm/r128/r128_drv.c   |2 -
 drivers/gpu/drm/radeon/radeon_drv.c   |4 -
 drivers/gpu/drm/savage/savage_drv.c   |2 -
 drivers/gpu/drm/sis/sis_drv.c |3 -
 drivers/gpu/drm/tdfx/tdfx_drv.c   |2 -
 drivers/gpu/drm/via/via_drv.c |2 -
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c   |2 -
 include/drm/drmP.h|   30 -
 23 files changed, 7 insertions(+), 325 deletions(-)
 delete mode 100644 drivers/gpu/drm/drm_drawable.c

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 01/11] drm: don't export drm_sg_alloc

2010-04-29 Thread Daniel Vetter
It's not used internally by any driver, only by some generic ioctls.
So don't export it.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_scatter.c |2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/drm_scatter.c b/drivers/gpu/drm/drm_scatter.c
index 9034c4c..d15e09b 100644
--- a/drivers/gpu/drm/drm_scatter.c
+++ b/drivers/gpu/drm/drm_scatter.c
@@ -184,8 +184,6 @@ int drm_sg_alloc(struct drm_device *dev, struct 
drm_scatter_gather * request)
drm_sg_cleanup(entry);
return -ENOMEM;
 }
-EXPORT_SYMBOL(drm_sg_alloc);
-
 
 int drm_sg_alloc_ioctl(struct drm_device *dev, void *data,
   struct drm_file *file_priv)
-- 
1.7.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 05/11] drm: kill drm_map_ofs callbacks

2010-04-29 Thread Daniel Vetter
All drivers happily copy&pasted the default implementation without
checking whether this callback is used at all. It's not. Sigh.

Kill it.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_vm.c  |7 ---
 drivers/gpu/drm/i810/i810_drv.c   |1 -
 drivers/gpu/drm/i830/i830_drv.c   |1 -
 drivers/gpu/drm/i915/i915_drv.c   |1 -
 drivers/gpu/drm/mga/mga_drv.c |1 -
 drivers/gpu/drm/nouveau/nouveau_drv.c |1 -
 drivers/gpu/drm/r128/r128_drv.c   |1 -
 drivers/gpu/drm/radeon/radeon_drv.c   |2 --
 drivers/gpu/drm/savage/savage_drv.c   |1 -
 drivers/gpu/drm/sis/sis_drv.c |1 -
 drivers/gpu/drm/tdfx/tdfx_drv.c   |1 -
 drivers/gpu/drm/via/via_drv.c |1 -
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c   |1 -
 include/drm/drmP.h|2 --
 14 files changed, 0 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c
index c3b13fb..407bdc2 100644
--- a/drivers/gpu/drm/drm_vm.c
+++ b/drivers/gpu/drm/drm_vm.c
@@ -515,13 +515,6 @@ static int drm_mmap_dma(struct file *filp, struct 
vm_area_struct *vma)
return 0;
 }
 
-resource_size_t drm_core_get_map_ofs(struct drm_local_map * map)
-{
-   return map->offset;
-}
-
-EXPORT_SYMBOL(drm_core_get_map_ofs);
-
 resource_size_t drm_core_get_reg_ofs(struct drm_device *dev)
 {
 #ifdef __alpha__
diff --git a/drivers/gpu/drm/i810/i810_drv.c b/drivers/gpu/drm/i810/i810_drv.c
index c1e0275..9d32620 100644
--- a/drivers/gpu/drm/i810/i810_drv.c
+++ b/drivers/gpu/drm/i810/i810_drv.c
@@ -52,7 +52,6 @@ static struct drm_driver driver = {
.device_is_agp = i810_driver_device_is_agp,
.reclaim_buffers_locked = i810_driver_reclaim_buffers_locked,
.dma_quiescent = i810_driver_dma_quiescent,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = i810_ioctls,
.fops = {
diff --git a/drivers/gpu/drm/i830/i830_drv.c b/drivers/gpu/drm/i830/i830_drv.c
index 44f990b..8156347 100644
--- a/drivers/gpu/drm/i830/i830_drv.c
+++ b/drivers/gpu/drm/i830/i830_drv.c
@@ -57,7 +57,6 @@ static struct drm_driver driver = {
.device_is_agp = i830_driver_device_is_agp,
.reclaim_buffers_locked = i830_driver_reclaim_buffers_locked,
.dma_quiescent = i830_driver_dma_quiescent,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
 #if USE_IRQS
.irq_preinstall = i830_driver_irq_preinstall,
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 01e91ea..9c62478 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -544,7 +544,6 @@ static struct drm_driver driver = {
.irq_uninstall = i915_driver_irq_uninstall,
.irq_handler = i915_driver_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.master_create = i915_master_create,
.master_destroy = i915_master_destroy,
diff --git a/drivers/gpu/drm/mga/mga_drv.c b/drivers/gpu/drm/mga/mga_drv.c
index ddfe161..bf8f998 100644
--- a/drivers/gpu/drm/mga/mga_drv.c
+++ b/drivers/gpu/drm/mga/mga_drv.c
@@ -60,7 +60,6 @@ static struct drm_driver driver = {
.irq_uninstall = mga_driver_irq_uninstall,
.irq_handler = mga_driver_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = mga_ioctls,
.dma_ioctl = mga_dma_buffers,
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c 
b/drivers/gpu/drm/nouveau/nouveau_drv.c
index c6079e3..2dafa60 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
@@ -357,7 +357,6 @@ static struct drm_driver driver = {
.irq_uninstall = nouveau_irq_uninstall,
.irq_handler = nouveau_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = nouveau_ioctls,
.fops = {
diff --git a/drivers/gpu/drm/r128/r128_drv.c b/drivers/gpu/drm/r128/r128_drv.c
index b806fdc..5a0d865 100644
--- a/drivers/gpu/drm/r128/r128_drv.c
+++ b/drivers/gpu/drm/r128/r128_drv.c
@@ -56,7 +56,6 @@ static struct drm_driver driver = {
.irq_uninstall = r128_driver_irq_uninstall,
.irq_handler = r128_driver_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = r128_ioctls,
.dma_ioctl = r128_cce_buffers,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c 
b/drivers/gpu/drm/radeon/radeon_drv.c
index 4b05563..d9cc7eb 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -204,7 +204,6 @@ static struct drm_driver dr

[PATCH 02/11] drm: kill kernel_context_switch callbacks

2010-04-29 Thread Daniel Vetter
Not used by any in-kernel driver. So drop it.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_lock.c |   18 --
 include/drm/drmP.h |3 ---
 2 files changed, 0 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/drm_lock.c b/drivers/gpu/drm/drm_lock.c
index e2f70a5..566d203 100644
--- a/drivers/gpu/drm/drm_lock.c
+++ b/drivers/gpu/drm/drm_lock.c
@@ -134,12 +134,6 @@ int drm_lock(struct drm_device *dev, void *data, struct 
drm_file *file_priv)
}
}
 
-   if (dev->driver->kernel_context_switch &&
-   dev->last_context != lock->context) {
-   dev->driver->kernel_context_switch(dev, dev->last_context,
-  lock->context);
-   }
-
return 0;
 }
 
@@ -157,7 +151,6 @@ int drm_lock(struct drm_device *dev, void *data, struct 
drm_file *file_priv)
 int drm_unlock(struct drm_device *dev, void *data, struct drm_file *file_priv)
 {
struct drm_lock *lock = data;
-   struct drm_master *master = file_priv->master;
 
if (lock->context == DRM_KERNEL_CONTEXT) {
DRM_ERROR("Process %d using kernel context %d\n",
@@ -167,17 +160,6 @@ int drm_unlock(struct drm_device *dev, void *data, struct 
drm_file *file_priv)
 
atomic_inc(&dev->counts[_DRM_STAT_UNLOCKS]);
 
-   /* kernel_context_switch isn't used by any of the x86 drm
-* modules but is required by the Sparc driver.
-*/
-   if (dev->driver->kernel_context_switch_unlock)
-   dev->driver->kernel_context_switch_unlock(dev);
-   else {
-   if (drm_lock_free(&master->lock, lock->context)) {
-   /* FIXME: Should really bail out here. */
-   }
-   }
-
unblock_all_signals();
return 0;
 }
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index c1b9871..2f95420 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -697,9 +697,6 @@ struct drm_driver {
int (*dma_quiescent) (struct drm_device *);
int (*context_ctor) (struct drm_device *dev, int context);
int (*context_dtor) (struct drm_device *dev, int context);
-   int (*kernel_context_switch) (struct drm_device *dev, int old,
- int new);
-   void (*kernel_context_switch_unlock) (struct drm_device *dev);
 
/**
 * get_vblank_counter - get raw hardware vblank counter
-- 
1.7.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 04/11] drm: kill procfs callbacks

2010-04-29 Thread Daniel Vetter
Not used by any driver (rightly so!). Kill them.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_proc.c |   13 -
 include/drm/drmP.h |2 --
 2 files changed, 0 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/drm_proc.c b/drivers/gpu/drm/drm_proc.c
index a9ba6b6..e571de5 100644
--- a/drivers/gpu/drm/drm_proc.c
+++ b/drivers/gpu/drm/drm_proc.c
@@ -151,7 +151,6 @@ fail:
 int drm_proc_init(struct drm_minor *minor, int minor_id,
  struct proc_dir_entry *root)
 {
-   struct drm_device *dev = minor->dev;
char name[64];
int ret;
 
@@ -172,14 +171,6 @@ int drm_proc_init(struct drm_minor *minor, int minor_id,
return ret;
}
 
-   if (dev->driver->proc_init) {
-   ret = dev->driver->proc_init(minor);
-   if (ret) {
-   DRM_ERROR("DRM: Driver failed to initialize "
- "/proc/dri.\n");
-   return ret;
-   }
-   }
return 0;
 }
 
@@ -216,15 +207,11 @@ int drm_proc_remove_files(struct drm_info_list *files, 
int count,
  */
 int drm_proc_cleanup(struct drm_minor *minor, struct proc_dir_entry *root)
 {
-   struct drm_device *dev = minor->dev;
char name[64];
 
if (!root || !minor->proc_root)
return 0;
 
-   if (dev->driver->proc_cleanup)
-   dev->driver->proc_cleanup(minor);
-
drm_proc_remove_files(drm_proc_list, DRM_PROC_ENTRIES, minor);
 
sprintf(name, "%d", minor->index);
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index f1d0c2e..7b5123a 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -785,8 +785,6 @@ struct drm_driver {
void (*master_drop)(struct drm_device *dev, struct drm_file *file_priv,
bool from_release);
 
-   int (*proc_init)(struct drm_minor *minor);
-   void (*proc_cleanup)(struct drm_minor *minor);
int (*debugfs_init)(struct drm_minor *minor);
void (*debugfs_cleanup)(struct drm_minor *minor);
 
-- 
1.7.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 06/11] drm: kill get_reg_ofs callback

2010-04-29 Thread Daniel Vetter
Every driver used the default implementation. Fold that one into
the only callsite and drop the callback.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_vm.c  |6 ++
 drivers/gpu/drm/i810/i810_drv.c   |1 -
 drivers/gpu/drm/i830/i830_drv.c   |1 -
 drivers/gpu/drm/i915/i915_drv.c   |1 -
 drivers/gpu/drm/mga/mga_drv.c |1 -
 drivers/gpu/drm/nouveau/nouveau_drv.c |1 -
 drivers/gpu/drm/r128/r128_drv.c   |1 -
 drivers/gpu/drm/radeon/radeon_drv.c   |2 --
 drivers/gpu/drm/savage/savage_drv.c   |1 -
 drivers/gpu/drm/sis/sis_drv.c |1 -
 drivers/gpu/drm/tdfx/tdfx_drv.c   |1 -
 drivers/gpu/drm/via/via_drv.c |1 -
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c   |1 -
 include/drm/drmP.h|2 --
 14 files changed, 2 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c
index 407bdc2..630bf4e 100644
--- a/drivers/gpu/drm/drm_vm.c
+++ b/drivers/gpu/drm/drm_vm.c
@@ -515,7 +515,7 @@ static int drm_mmap_dma(struct file *filp, struct 
vm_area_struct *vma)
return 0;
 }
 
-resource_size_t drm_core_get_reg_ofs(struct drm_device *dev)
+static resource_size_t drm_core_get_reg_ofs(struct drm_device *dev)
 {
 #ifdef __alpha__
return dev->hose->dense_mem_base - dev->hose->mem_space->start;
@@ -524,8 +524,6 @@ resource_size_t drm_core_get_reg_ofs(struct drm_device *dev)
 #endif
 }
 
-EXPORT_SYMBOL(drm_core_get_reg_ofs);
-
 /**
  * mmap DMA memory.
  *
@@ -610,7 +608,7 @@ int drm_mmap_locked(struct file *filp, struct 
vm_area_struct *vma)
/* fall through to _DRM_FRAME_BUFFER... */
case _DRM_FRAME_BUFFER:
case _DRM_REGISTERS:
-   offset = dev->driver->get_reg_ofs(dev);
+   offset = drm_core_get_reg_ofs(dev);
vma->vm_flags |= VM_IO; /* not in core dump */
vma->vm_page_prot = drm_io_prot(map->type, vma);
if (io_remap_pfn_range(vma, vma->vm_start,
diff --git a/drivers/gpu/drm/i810/i810_drv.c b/drivers/gpu/drm/i810/i810_drv.c
index 9d32620..0c2c673 100644
--- a/drivers/gpu/drm/i810/i810_drv.c
+++ b/drivers/gpu/drm/i810/i810_drv.c
@@ -52,7 +52,6 @@ static struct drm_driver driver = {
.device_is_agp = i810_driver_device_is_agp,
.reclaim_buffers_locked = i810_driver_reclaim_buffers_locked,
.dma_quiescent = i810_driver_dma_quiescent,
-   .get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = i810_ioctls,
.fops = {
 .owner = THIS_MODULE,
diff --git a/drivers/gpu/drm/i830/i830_drv.c b/drivers/gpu/drm/i830/i830_drv.c
index 8156347..4d7099a 100644
--- a/drivers/gpu/drm/i830/i830_drv.c
+++ b/drivers/gpu/drm/i830/i830_drv.c
@@ -57,7 +57,6 @@ static struct drm_driver driver = {
.device_is_agp = i830_driver_device_is_agp,
.reclaim_buffers_locked = i830_driver_reclaim_buffers_locked,
.dma_quiescent = i830_driver_dma_quiescent,
-   .get_reg_ofs = drm_core_get_reg_ofs,
 #if USE_IRQS
.irq_preinstall = i830_driver_irq_preinstall,
.irq_postinstall = i830_driver_irq_postinstall,
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 9c62478..a59f231 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -544,7 +544,6 @@ static struct drm_driver driver = {
.irq_uninstall = i915_driver_irq_uninstall,
.irq_handler = i915_driver_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_reg_ofs = drm_core_get_reg_ofs,
.master_create = i915_master_create,
.master_destroy = i915_master_destroy,
 #if defined(CONFIG_DEBUG_FS)
diff --git a/drivers/gpu/drm/mga/mga_drv.c b/drivers/gpu/drm/mga/mga_drv.c
index bf8f998..bc13f40 100644
--- a/drivers/gpu/drm/mga/mga_drv.c
+++ b/drivers/gpu/drm/mga/mga_drv.c
@@ -60,7 +60,6 @@ static struct drm_driver driver = {
.irq_uninstall = mga_driver_irq_uninstall,
.irq_handler = mga_driver_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = mga_ioctls,
.dma_ioctl = mga_dma_buffers,
.fops = {
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c 
b/drivers/gpu/drm/nouveau/nouveau_drv.c
index 2dafa60..35485f3 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
@@ -357,7 +357,6 @@ static struct drm_driver driver = {
.irq_uninstall = nouveau_irq_uninstall,
.irq_handler = nouveau_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = nouveau_ioctls,
.fops = {
.owner = THIS_MODULE,
diff --git a/drivers/gpu/drm/r128/r128_drv.c b/drivers/gpu/drm/r128/r128_drv.c
index 5a0d865..91f21c9 100644
--- a/drivers/gpu/drm/r128/r128_drv.c
+++ b/drivers/gpu/drm/r128/r128_drv.c
@@ -56,7 +56,6 @@ static struc

[PATCH 07/11] drm: kill context_ctor callback

2010-04-29 Thread Daniel Vetter
It's not used by any driver. The destructor callback is unfortunately
used by the via driver in a rather convoluted piece of code used
to reimplement something resembling broken futexes. I didn't dare
to touch this code. But at least kill the needless NULL assignemt
in the sis driver.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_context.c |8 
 drivers/gpu/drm/sis/sis_drv.c |1 -
 include/drm/drmP.h|1 -
 3 files changed, 0 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/drm_context.c b/drivers/gpu/drm/drm_context.c
index 2607753..6d440fb 100644
--- a/drivers/gpu/drm/drm_context.c
+++ b/drivers/gpu/drm/drm_context.c
@@ -333,14 +333,6 @@ int drm_addctx(struct drm_device *dev, void *data,
return -ENOMEM;
}
 
-   if (ctx->handle != DRM_KERNEL_CONTEXT) {
-   if (dev->driver->context_ctor)
-   if (!dev->driver->context_ctor(dev, ctx->handle)) {
-   DRM_DEBUG("Running out of ctxs or memory.\n");
-   return -ENOMEM;
-   }
-   }
-
ctx_entry = kmalloc(sizeof(*ctx_entry), GFP_KERNEL);
if (!ctx_entry) {
DRM_DEBUG("out of memory\n");
diff --git a/drivers/gpu/drm/sis/sis_drv.c b/drivers/gpu/drm/sis/sis_drv.c
index 350e512..c9aa0c4 100644
--- a/drivers/gpu/drm/sis/sis_drv.c
+++ b/drivers/gpu/drm/sis/sis_drv.c
@@ -68,7 +68,6 @@ static struct drm_driver driver = {
.driver_features = DRIVER_USE_AGP | DRIVER_USE_MTRR,
.load = sis_driver_load,
.unload = sis_driver_unload,
-   .context_dtor = NULL,
.dma_quiescent = sis_idle,
.reclaim_buffers = NULL,
.reclaim_buffers_idlelocked = sis_reclaim_buffers_locked,
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index f5dd3df..8f91459 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -694,7 +694,6 @@ struct drm_driver {
int (*resume) (struct drm_device *);
int (*dma_ioctl) (struct drm_device *dev, void *data, struct drm_file 
*file_priv);
int (*dma_quiescent) (struct drm_device *);
-   int (*context_ctor) (struct drm_device *dev, int context);
int (*context_dtor) (struct drm_device *dev, int context);
 
/**
-- 
1.7.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 03/11] drm: kill dma_ready callbacks

2010-04-29 Thread Daniel Vetter
Not used by any driver. So drop it.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_lock.c |3 ---
 include/drm/drmP.h |1 -
 2 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_lock.c b/drivers/gpu/drm/drm_lock.c
index 566d203..1973d75 100644
--- a/drivers/gpu/drm/drm_lock.c
+++ b/drivers/gpu/drm/drm_lock.c
@@ -122,9 +122,6 @@ int drm_lock(struct drm_device *dev, void *data, struct 
drm_file *file_priv)
block_all_signals(drm_notifier, &dev->sigdata, &dev->sigmask);
}
 
-   if (dev->driver->dma_ready && (lock->flags & _DRM_LOCK_READY))
-   dev->driver->dma_ready(dev);
-
if (dev->driver->dma_quiescent && (lock->flags & _DRM_LOCK_QUIESCENT))
{
if (dev->driver->dma_quiescent(dev)) {
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 2f95420..f1d0c2e 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -693,7 +693,6 @@ struct drm_driver {
int (*suspend) (struct drm_device *, pm_message_t state);
int (*resume) (struct drm_device *);
int (*dma_ioctl) (struct drm_device *dev, void *data, struct drm_file 
*file_priv);
-   void (*dma_ready) (struct drm_device *);
int (*dma_quiescent) (struct drm_device *);
int (*context_ctor) (struct drm_device *dev, int context);
int (*context_dtor) (struct drm_device *dev, int context);
-- 
1.7.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 10/11] drm: kill dev->timer

2010-04-29 Thread Daniel Vetter
Totally unused.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_drv.c  |2 --
 drivers/gpu/drm/drm_stub.c |1 -
 include/drm/drmP.h |1 -
 3 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index ea4b6c2..3d42b4e 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -177,8 +177,6 @@ int drm_lastclose(struct drm_device * dev)
 
mutex_lock(&dev->struct_mutex);
 
-   del_timer(&dev->timer);
-
/* Clear AGP information */
if (drm_core_has_AGP(dev) && dev->agp &&
!drm_core_check_feature(dev, DRIVER_MODESET)) {
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index e3b5cfc..b5a6536 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -238,7 +238,6 @@ static int drm_fill_in_dev(struct drm_device * dev, struct 
pci_dev *pdev,
 
spin_lock_init(&dev->count_lock);
spin_lock_init(&dev->event_lock);
-   init_timer(&dev->timer);
mutex_init(&dev->struct_mutex);
mutex_init(&dev->ctxlist_mutex);
 
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 540cab6..6866224 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -957,7 +957,6 @@ struct drm_device {
__volatile__ long context_flag; /**< Context swapping flag */
__volatile__ long interrupt_flag; /**< Interruption handler flag */
__volatile__ long dma_flag; /**< DMA dispatch flag */
-   struct timer_list timer;/**< Timer for delaying ctx switch */
wait_queue_head_t context_wait; /**< Processes waiting on ctx switch */
int last_checked;   /**< Last context checked for DMA */
int last_context;   /**< Last current context */
-- 
1.7.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 08/11] drm: don't export drm_get_drawable_info

2010-04-29 Thread Daniel Vetter
Not used by any in-tree user. So drop it.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_drawable.c |3 +--
 include/drm/drmP.h |2 --
 2 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_drawable.c b/drivers/gpu/drm/drm_drawable.c
index c53c976..170e531 100644
--- a/drivers/gpu/drm/drm_drawable.c
+++ b/drivers/gpu/drm/drm_drawable.c
@@ -173,11 +173,10 @@ error:
 /**
  * Caller must hold the drawable spinlock!
  */
-struct drm_drawable_info *drm_get_drawable_info(struct drm_device *dev, 
drm_drawable_t id)
+static struct drm_drawable_info *drm_get_drawable_info(struct drm_device *dev, 
drm_drawable_t id)
 {
return idr_find(&dev->drw_idr, id);
 }
-EXPORT_SYMBOL(drm_get_drawable_info);
 
 static int drm_drawable_free(int idr, void *p, void *data)
 {
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 8f91459..af62612 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1209,8 +1209,6 @@ extern int drm_rmdraw(struct drm_device *dev, void *data,
  struct drm_file *file_priv);
 extern int drm_update_drawable_info(struct drm_device *dev, void *data,
struct drm_file *file_priv);
-extern struct drm_drawable_info *drm_get_drawable_info(struct drm_device *dev,
- drm_drawable_t id);
 extern void drm_drawable_free_all(struct drm_device *dev);
 
/* Authentication IOCTL support (drm_auth.h) */
-- 
1.7.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 11/11] drm: kill gem_free_object_unlocked driver callback

2010-04-29 Thread Daniel Vetter
Not used by any current driver.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_gem.c |4 +---
 include/drm/drmP.h|1 -
 2 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index 33dad3f..0c004e8 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -463,9 +463,7 @@ drm_gem_object_free_unlocked(struct kref *kref)
struct drm_gem_object *obj = (struct drm_gem_object *) kref;
struct drm_device *dev = obj->dev;
 
-   if (dev->driver->gem_free_object_unlocked != NULL)
-   dev->driver->gem_free_object_unlocked(obj);
-   else if (dev->driver->gem_free_object != NULL) {
+   if (dev->driver->gem_free_object != NULL) {
mutex_lock(&dev->struct_mutex);
dev->driver->gem_free_object(obj);
mutex_unlock(&dev->struct_mutex);
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 6866224..f7ade6b 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -793,7 +793,6 @@ struct drm_driver {
 */
int (*gem_init_object) (struct drm_gem_object *obj);
void (*gem_free_object) (struct drm_gem_object *obj);
-   void (*gem_free_object_unlocked) (struct drm_gem_object *obj);
 
/* vga arb irq handler */
void (*vgaarb_irq)(struct drm_device *dev, bool state);
-- 
1.7.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


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

2010-04-29 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.
Information might also leak via the RM_DRAW ioctl (in the form of
a negative return code in case the drawable doesn't exist). But the
only user of these ioctls, mesas' miniglx, does not use the RM_DRAW
ioctl.

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

Signed-off-by: Daniel Vetter 
---
 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 abe3f44..10585ce 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 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);
-   DRM_DEBUG("%d\n", draw->handle);
-   return 0;
-}
-
-int drm_update_drawable_info(struct drm_device *dev, void *data, struct 
drm_file *file_priv)
-{
-   struct drm_update_draw *update = data;
-   unsigned long irqflags;
- 

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

2010-04-29 Thread Michel Dänzer
On Don, 2010-04-29 at 11:14 +0200, Daniel Vetter wrote: 
> The information supplied by userspace through these ioctls is only
> accessible by dev->drw_idr. But there's no in-tree user of that.
> Information might also leak via the RM_DRAW ioctl (in the form of
> a negative return code in case the drawable doesn't exist). But the
> only user of these ioctls, mesas' miniglx, does not use the RM_DRAW
> ioctl.

FYI, the X server DRI1 code also uses these ioctls, via the libdrm
functions drmCreate/DestroyDrawable and drmUpdateDrawableInfo().

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

That should still true though, as none of the DRM drivers use the
drawable cliprect information anymore. Might still be worth
double-checking that this doesn't break DRI without KMS on your RV570.


-- 
Earthling Michel Dänzer   |http://www.vmware.com
Libre software enthusiast |  Debian, X and DRI developer
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


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

2010-04-29 Thread Daniel Vetter
On Thu, Apr 29, 2010 at 11:32:36AM +0200, Michel Dänzer wrote:
> On Don, 2010-04-29 at 11:14 +0200, Daniel Vetter wrote: 
> > The information supplied by userspace through these ioctls is only
> > accessible by dev->drw_idr. But there's no in-tree user of that.
> > Information might also leak via the RM_DRAW ioctl (in the form of
> > a negative return code in case the drawable doesn't exist). But the
> > only user of these ioctls, mesas' miniglx, does not use the RM_DRAW
> > ioctl.
> 
> FYI, the X server DRI1 code also uses these ioctls, via the libdrm
> functions drmCreate/DestroyDrawable and drmUpdateDrawableInfo().

Thanks, I've overlooked the DRI stuff in the xserver. There,
drmDestroyDrawable is used (but the return code is ignored), so should be
fine. The only place the return value is checked when creating a drawable
for the first time (to free any allocations already made). Should be safe,
too.

> > Therefore it's safe to replace these three ioctls with noops and rip
> > out the implementation.
> 
> That should still true though, as none of the DRM drivers use the
> drawable cliprect information anymore. Might still be worth
> double-checking that this doesn't break DRI without KMS on your RV570.

I've tried to test DRI1, but that seems to be in a hilariously broken
state on my box: Windows are smeared all over the screen (tiling
parameters mismatch?) under certain circumstances. But glxinfo shows the
correct render string, AIGLX seems to load correctly (according to
Xorg.log) and kde's opengl cover switch looks all right. Also, after some
time it hangs with the dmesg complaining that someone is monopolizing the
heavyweight lock (in drm_lock_take). Results without these patches are
similar.

I haven't used ums radeon since months, so I don't think you can count
this as useful testing ;)

Yours, Daniel
-- 
Daniel Vetter
Mail: dan...@ffwll.ch
Mobile: +41 (0)79 365 57 48
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 27729] [r300g, mesa] gallium compressed texture problems

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=27729

--- Comment #16 from Marek Olšák  2010-04-29 05:11:00 PDT ---
(In reply to comment #15)
> In the meantime 95bfc8f32571751c5c9ec6d8e84f5e3c28d1b20e has been committed
> from Marek Olšák which is a subset of attached "patch for r300g
> is_format_supported()", but which appears to also fix the r300g problem.

Yes but the S3TC code appears to be bloody slow, e.g. the TA3D game seems to
load a new texture everytime a new GUI element shows up and during that the
game basically locks up for 5 seconds with 100% CPU load. This is unbearable.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 27887] New: r300g: depth textures + fbo = broken glClear()

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=27887

   Summary: r300g: depth textures + fbo = broken glClear()
   Product: Mesa
   Version: git
  Platform: x86-64 (AMD64)
OS/Version: Linux (All)
Status: NEW
  Severity: normal
  Priority: medium
 Component: Drivers/DRI/r300
AssignedTo: dri-devel@lists.freedesktop.org
ReportedBy: wixorp...@gmail.com


Created an attachment (id=35333)
 --> (https://bugs.freedesktop.org/attachment.cgi?id=35333)
test case

Attached code does not clear the screen as expected. The classic r300 driver
fails too. Sometimes geometry rendering gets messed up (however it is not as
easily reproducible).

Hardware: Radeon X1300 (RV515), kernel 2.6.33, xorg 1.7.7 rc1, driver from git
(up to commit 7327a84b...).

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


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

2010-04-29 Thread Michel Dänzer
On Don, 2010-04-29 at 14:02 +0200, Daniel Vetter wrote: 
> On Thu, Apr 29, 2010 at 11:32:36AM +0200, Michel Dänzer wrote:
> > On Don, 2010-04-29 at 11:14 +0200, Daniel Vetter wrote: 
> > > The information supplied by userspace through these ioctls is only
> > > accessible by dev->drw_idr. But there's no in-tree user of that.
> > > Information might also leak via the RM_DRAW ioctl (in the form of
> > > a negative return code in case the drawable doesn't exist). But the
> > > only user of these ioctls, mesas' miniglx, does not use the RM_DRAW
> > > ioctl.
> > 
> > FYI, the X server DRI1 code also uses these ioctls, via the libdrm
> > functions drmCreate/DestroyDrawable and drmUpdateDrawableInfo().
> 
> Thanks, I've overlooked the DRI stuff in the xserver. There,
> drmDestroyDrawable is used (but the return code is ignored), so should be
> fine. The only place the return value is checked when creating a drawable
> for the first time (to free any allocations already made). Should be safe,
> too.
> 
> > > Therefore it's safe to replace these three ioctls with noops and rip
> > > out the implementation.
> > 
> > That should still true though, as none of the DRM drivers use the
> > drawable cliprect information anymore. Might still be worth
> > double-checking that this doesn't break DRI without KMS on your RV570.
> 
> I've tried to test DRI1, but that seems to be in a hilariously broken
> state on my box: Windows are smeared all over the screen (tiling
> parameters mismatch?) under certain circumstances. But glxinfo shows the
> correct render string, AIGLX seems to load correctly (according to
> Xorg.log) and kde's opengl cover switch looks all right. Also, after some
> time it hangs with the dmesg complaining that someone is monopolizing the
> heavyweight lock (in drm_lock_take). Results without these patches are
> similar.
> 
> I haven't used ums radeon since months, so I don't think you can count
> this as useful testing ;)

I think it's good enough for the purpose of this change, as I'd expect
any problem caused by it to manifest when starting or quitting any 3D
app (such as the one doing the OpenGL cover switch).

So, here's my

Reviewed-by: Michel Dänzer 

for it.


-- 
Earthling Michel Dänzer   |http://www.vmware.com
Libre software enthusiast |  Debian, X and DRI developer
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


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

2010-04-29 Thread Kristian Høgsberg
On Thu, Apr 29, 2010 at 5:14 AM, Daniel Vetter  wrote:
> The information supplied by userspace through these ioctls is only
> accessible by dev->drw_idr. But there's no in-tree user of that.
> Information might also leak via the RM_DRAW ioctl (in the form of
> a negative return code in case the drawable doesn't exist). But the
> only user of these ioctls, mesas' miniglx, does not use the RM_DRAW
> ioctl.
>
> Therefore it's safe to replace these three ioctls with noops and rip
> out the implementation.

Looks almost exactly like this one:

http://www.mail-archive.com/dri-de...@lists.sourceforge.net/msg39176.html

Except I made adddraw a stub that always returns 1, but reading
through the code (hw/xfree86/dri, glx/glxdri.c and the radeon dri
driver) I don't see anything that fails if we just return zero (or a
random number for that matter).  The only difference is that if we
return zero, hw/xfree86/dri/dri.c will keep trying to create a drm
drawable (look for drmCreateDrawable) every time somebody creates a
dri drawable, but since that's a noop, who cares.

Reviewed-by: Kristian Høgsberg 

> Signed-off-by: Daniel Vetter 
> ---
>  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 abe3f44..10585ce 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 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 infor

[Bug 27901] New: GLSL cos/sin functions broken on Mesa R600 driver

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=27901

   Summary: GLSL cos/sin functions broken on Mesa R600 driver
   Product: Mesa
   Version: git
  Platform: All
OS/Version: All
Status: NEW
  Severity: normal
  Priority: medium
 Component: Drivers/DRI/R600
AssignedTo: dri-devel@lists.freedesktop.org
ReportedBy: alain.per...@gmail.com


As I was playing with OpenGL examples from Joe Groff's blog at
http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html,
I noticed that the cos and sin GLSL functions are broken on the Mesa R600
driver. Other trigonometric functions may be broken as well.

The blog entries provide two versions of a sample program that blend two images
together using GLSL. The blend factor is computed from a timestamp using the
sin function.

There's no problem with the example from chapter 2 where the blend factor is
computed on the CPU (source code at http://github.com/jckarter/hello-gl).

Mesa R600 driver fails to properly run the example from chapter 3 where the
blend factor is computed on the GPU using the GLSL sin function. Mesa software
renderer has no problem running this example (source code at
http://github.com/jckarter/hello-gl-ch3).


Looking at GLSL 1.10 spec, R600 ISA doc and R600 driver code (function
assemble_TRIG in r700_assembler.c), I guess there is two problems :

1. both the GLSL cos/sin functions and R600 hardware expects the angle to be
specified in radians, but the assemble_TRIG function divides the specified
angle by 2 * PI (the result is no more radians).

2. R600 hardware expects the angle to be in the range [-PI, PI] while GLSL does
not specify a range, and the assemble_TRIG function does not clip the angle in
the required range.


A quick and dirty hack to make the example from chapter 3 work with R600 driver
is to clip the timestamp to the [-PI, PI] range and then to multiply it by 2 *
PI :

--- hello-gl.c.old  2010-04-29 20:55:55.0 +0200
+++ hello-gl.c  2010-04-29 20:56:12.0 +0200
@@ -202,7 +202,10 @@
 static void update_timer(void)
 {
 int milliseconds = glutGet(GLUT_ELAPSED_TIME);
-g_resources.timer = (float)milliseconds * 0.001f;
+g_resources.timer = fmodf((float)milliseconds * 0.001f, 2.0f *
3.1415926535897f);
+if(g_resources.timer > 3.1415926535897f)
+g_resources.timer -= 2.0f * 3.1415926535897f;
+g_resources.timer *= 2.0f * 3.1415926535897f;
 glutPostRedisplay();
 }


My config:
RV670 (Radeon HD 3870)
Kubuntu 10.04 "Lucid Lynx" 64-bit
Linux kernel 2.6.34-rc5 from Ubuntu Mainline Kernel PPA
libdrm, radeon, Mesa, Xorg from Xorg-edgers PPA

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 27822] [REGR] Soft lockup with "[TTM] Buffer eviction failed" on resume

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=27822

--- Comment #5 from Rafał Miłecki  2010-04-29 14:20:21 PDT ---
Result of first git bisect:

There are only 'skip'ped commits left to test.
The first bad commit could be any of:
82c5da6bf8b55a931b042fb531083863d26c8020
0a2d50e3a8faaf36cde36920431586090411ea15
We cannot bisect more!

Unfortunately I'd to:
# skip: [82c5da6bf8b55a931b042fb531083863d26c8020] drm/ttm: ttm_fault callback
to allow driver to handle bo placement V6
because this commit caused 3 locks up in a row for me. First at KDE logging
screen, next two as suspending (just before machines was expected to power
off).


So it seems suspected commits are:

commit 0a2d50e3a8faaf36cde36920431586090411ea15
Author: Jerome Glisse 
Date:   Fri Apr 9 14:39:24 2010 +0200

drm/radeon/kms: add support for new fault callback V7

and

commit 82c5da6bf8b55a931b042fb531083863d26c8020
Author: Jerome Glisse 
Date:   Fri Apr 9 14:39:23 2010 +0200

drm/ttm: ttm_fault callback to allow driver to handle bo placement V6

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 27904] New: r300g segfaults on M56GL

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=27904

   Summary: r300g segfaults on M56GL
   Product: Mesa
   Version: git
  Platform: Other
OS/Version: All
Status: NEW
  Severity: normal
  Priority: medium
 Component: Drivers/DRI/r300
AssignedTo: dri-devel@lists.freedesktop.org
ReportedBy: pa...@rojtberg.net


current git, linux 2.6.32-21-generic (ubuntu lucid)

Starting program: /usr/bin/glxgears 
[Thread debugging using libthread_db enabled]

Program received signal SIGSEGV, Segmentation fault.
0x004e68e9 in rc_pair_regalloc (c=0xbfffee8c, maxtemps=1)
at radeon_pair_regalloc.c:347
Line number 347 out of range; radeon_pair_regalloc.c has 280 lines.
(gdb) bt
#0  0x004e68e9 in rc_pair_regalloc (c=0xbfffee8c, maxtemps=1)
at radeon_pair_regalloc.c:347
#1  0x004e03dd in r3xx_compile_fragment_program (c=0xbfffee8c)
at r3xx_fragprog.c:159
#2  0x004db6f3 in r300_translate_fragment_shader (r300=, 
shader=0x80d0ad8, tokens=0x80ef010) at r300_fs.c:276
#3  0x004dbea7 in r300_pick_fragment_shader (r300=0x8066f08) at r300_fs.c:346
#4  0x004d217f in r300_bind_fs_state (pipe=0x8066f08, shader=0x4e6780)
at r300_state.c:718
#5  0x00628946 in cso_set_fragment_shader_handle (ctx=0x80e84d8, 
handle=0x4e6780) at cso_cache/cso_context.c:742
#6  0x005f29e0 in update_fp (st=0x80c3e88)
at state_tracker/st_atom_shader.c:174
#7  0x005ef9b3 in st_validate_state (st=0x80c3e88)
at state_tracker/st_atom.c:167
#8  0x005f6859 in st_Clear (ctx=0x8087258, mask=18)
at state_tracker/st_cb_clear.c:460
#9  0x005a3936 in _mesa_Clear (mask=0) at main/clear.c:178
#10 0x080493d7 in ?? ()
#11 0x0804a762 in ?? ()
#12 0x00305bd6 in __libc_start_main (main=0x804a230, argc=1, 
ubp_av=0xb484, init=0x804ad80, fini=0x804ad70, 
rtld_fini=0x11e0c0 <_dl_fini>, stack_end=0xb47c) at libc-start.c:226

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 27866] d-r-t crashes at radeon_bo_unref() with dynpm=1

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=27866

--- Comment #5 from Andy Furniss  2010-04-29 
16:16:27 PDT ---
(In reply to comment #4)
I can't (so far) crash with today's d-r-t.

Could just be luck I suppose, but it only took 20 mins of openarena to get two
yesterday and I've just gone 50 mins OK.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 27866] d-r-t crashes at radeon_bo_unref() with dynpm=1

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=27866

--- Comment #6 from Alex Deucher  2010-04-29 16:46:19 PDT ---
should be fixed with this commit:
http://git.kernel.org/?p=linux/kernel/git/airlied/drm-2.6.git;a=commitdiff;h=7a1ffce50373c177d3f6eecce52badc40c90e1dd

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 26570] [r6xx DRI] KMS enabled: GLSL white washing corruption (seen in Second Life)

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=26570

--- Comment #6 from Shawn Starr  2010-04-29 20:05:07 
PDT ---
Still happening, its not compiling the GLSL shader programs. If it is it seems
to take a very, very long time. It shows pretty much all white in game.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 26570] [r6xx DRI] KMS enabled: GLSL white washing corruption (seen in Second Life)

2010-04-29 Thread bugzilla-daemon
https://bugs.freedesktop.org/show_bug.cgi?id=26570

--- Comment #7 from Shawn Starr  2010-04-29 20:05:33 
PDT ---
2.6.34-rc5 + airlied drm branches, libdrm git master, mesa git master, ati DDX
git master

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel


[Bug 27729] [r300g - RV530] main/mipmap.c:144: do_row: Assertion `comps >= 1' failed

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=27729

Fabio Pedretti  changed:

   What|Removed |Added

  Attachment #35316|0   |1
is obsolete||

--- Comment #14 from Fabio Pedretti  2010-04-29 
01:03:47 PDT ---
Created an attachment (id=35327)
 --> (https://bugs.freedesktop.org/attachment.cgi?id=35327)
swrastg debug output with "ST_DEBUG=mesa,tgsi"

Anyway you may also want to try the game yourself from
http://trac.wildfiregames.com/wiki/LatestRelease since it appears it will be a
common open source game when finished.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


[Bug 27729] [r300g, mesa] gallium compressed texture problems

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=27729

Fabio Pedretti  changed:

   What|Removed |Added

Summary|[r300g - RV530] |[r300g, mesa] gallium
   |main/mipmap.c:144: do_row:  |compressed texture problems
   |Assertion `comps >= 1'  |
   |failed  |

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


[Bug 27729] [r300g, mesa] gallium compressed texture problems

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=27729

Fabio Pedretti  changed:

   What|Removed |Added

 CC||maraeo at gmail.com

--- Comment #15 from Fabio Pedretti  2010-04-29 
01:11:49 PDT ---
In the meantime 95bfc8f32571751c5c9ec6d8e84f5e3c28d1b20e has been committed
from Marek Ol??k which is a subset of attached "patch for r300g
is_format_supported()", but which appears to also fix the r300g problem.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


[PATCH] drm/radeon/kms: R3XX-R4XX fix GPU reset code

2010-04-29 Thread Michel Dänzer
On Mon, 2010-04-26 at 22:23 +0200, Jerome Glisse wrote: 
> Previous reset code leaded to computer hard lockup (need to unplug
> the power too reboot the computer) on various configuration. This
> patch change the reset code to avoid hard lockup. The GPU reset
> is failing most of the time but at least user can log in remotely
> or properly shutdown the computer.
> 
> Two issues were leading to hard lockup :
> - Writting to the scratch register lead to hard lockup most likely
> because the write back mecanism is in fuzy state after GPU lockup.
> - Resetting the GPU memory controller and not reinitializing it
> after leaded to hard lockup. We did only reinitialize in case of
> successfull reset thus unsuccessfull reset quickly leaded to hard
> lockup.
> 
> Signed-off-by: Jerome Glisse 

Unfortunately, this doesn't seem to help for the RV350 in my PowerBook.
GPU lockups still turn into machine hardlocks, which is a regression
from before the GPU reset rework.


-- 
Earthling Michel D?nzer   |http://www.vmware.com
Libre software enthusiast |  Debian, X and DRI developer


[PATCH 00/11] various cleanups and dead coode removals in drm core

2010-04-29 Thread Daniel Vetter
Hi all,

[Dave, this is the patch series I've talked about on irc a few days ago.]

This patch series kills various things I've stumbled over while reading
through the drm core code. It mostly removes unnecessary stuff on the drm
core <-> driver interface.

Tested on my i845, i945 and agp rv570. All drm drivers compile-tested.

Please review and merge what you like for -next. Save patch 9 which
depends upon patch 8 (mucks around in the same place), they should be all
independent. So you can mix&match what you like.

Thanks, Daniel

Daniel Vetter (11):
  drm: don't export drm_sg_alloc
  drm: kill kernel_context_switch callbacks
  drm: kill dma_ready callbacks
  drm: kill procfs callbacks
  drm: kill drm_map_ofs callbacks
  drm: kill get_reg_ofs callback
  drm: kill context_ctor callback
  drm: don't export drm_get_drawable_info
  drm: replace drawable ioctl by noops
  drm: kill dev->timer
  drm: kill gem_free_object_unlocked driver callback

 drivers/gpu/drm/Makefile  |2 +-
 drivers/gpu/drm/drm_context.c |8 --
 drivers/gpu/drm/drm_drawable.c|  198 -
 drivers/gpu/drm/drm_drv.c |   10 +-
 drivers/gpu/drm/drm_gem.c |4 +-
 drivers/gpu/drm/drm_lock.c|   21 
 drivers/gpu/drm/drm_proc.c|   13 --
 drivers/gpu/drm/drm_scatter.c |2 -
 drivers/gpu/drm/drm_stub.c|4 -
 drivers/gpu/drm/drm_vm.c  |   13 +--
 drivers/gpu/drm/i810/i810_drv.c   |2 -
 drivers/gpu/drm/i830/i830_drv.c   |2 -
 drivers/gpu/drm/i915/i915_drv.c   |2 -
 drivers/gpu/drm/mga/mga_drv.c |2 -
 drivers/gpu/drm/nouveau/nouveau_drv.c |2 -
 drivers/gpu/drm/r128/r128_drv.c   |2 -
 drivers/gpu/drm/radeon/radeon_drv.c   |4 -
 drivers/gpu/drm/savage/savage_drv.c   |2 -
 drivers/gpu/drm/sis/sis_drv.c |3 -
 drivers/gpu/drm/tdfx/tdfx_drv.c   |2 -
 drivers/gpu/drm/via/via_drv.c |2 -
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c   |2 -
 include/drm/drmP.h|   30 -
 23 files changed, 7 insertions(+), 325 deletions(-)
 delete mode 100644 drivers/gpu/drm/drm_drawable.c



[PATCH 01/11] drm: don't export drm_sg_alloc

2010-04-29 Thread Daniel Vetter
It's not used internally by any driver, only by some generic ioctls.
So don't export it.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_scatter.c |2 --
 1 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/drm_scatter.c b/drivers/gpu/drm/drm_scatter.c
index 9034c4c..d15e09b 100644
--- a/drivers/gpu/drm/drm_scatter.c
+++ b/drivers/gpu/drm/drm_scatter.c
@@ -184,8 +184,6 @@ int drm_sg_alloc(struct drm_device *dev, struct 
drm_scatter_gather * request)
drm_sg_cleanup(entry);
return -ENOMEM;
 }
-EXPORT_SYMBOL(drm_sg_alloc);
-

 int drm_sg_alloc_ioctl(struct drm_device *dev, void *data,
   struct drm_file *file_priv)
-- 
1.7.1



[PATCH 05/11] drm: kill drm_map_ofs callbacks

2010-04-29 Thread Daniel Vetter
All drivers happily copy&pasted the default implementation without
checking whether this callback is used at all. It's not. Sigh.

Kill it.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_vm.c  |7 ---
 drivers/gpu/drm/i810/i810_drv.c   |1 -
 drivers/gpu/drm/i830/i830_drv.c   |1 -
 drivers/gpu/drm/i915/i915_drv.c   |1 -
 drivers/gpu/drm/mga/mga_drv.c |1 -
 drivers/gpu/drm/nouveau/nouveau_drv.c |1 -
 drivers/gpu/drm/r128/r128_drv.c   |1 -
 drivers/gpu/drm/radeon/radeon_drv.c   |2 --
 drivers/gpu/drm/savage/savage_drv.c   |1 -
 drivers/gpu/drm/sis/sis_drv.c |1 -
 drivers/gpu/drm/tdfx/tdfx_drv.c   |1 -
 drivers/gpu/drm/via/via_drv.c |1 -
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c   |1 -
 include/drm/drmP.h|2 --
 14 files changed, 0 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c
index c3b13fb..407bdc2 100644
--- a/drivers/gpu/drm/drm_vm.c
+++ b/drivers/gpu/drm/drm_vm.c
@@ -515,13 +515,6 @@ static int drm_mmap_dma(struct file *filp, struct 
vm_area_struct *vma)
return 0;
 }

-resource_size_t drm_core_get_map_ofs(struct drm_local_map * map)
-{
-   return map->offset;
-}
-
-EXPORT_SYMBOL(drm_core_get_map_ofs);
-
 resource_size_t drm_core_get_reg_ofs(struct drm_device *dev)
 {
 #ifdef __alpha__
diff --git a/drivers/gpu/drm/i810/i810_drv.c b/drivers/gpu/drm/i810/i810_drv.c
index c1e0275..9d32620 100644
--- a/drivers/gpu/drm/i810/i810_drv.c
+++ b/drivers/gpu/drm/i810/i810_drv.c
@@ -52,7 +52,6 @@ static struct drm_driver driver = {
.device_is_agp = i810_driver_device_is_agp,
.reclaim_buffers_locked = i810_driver_reclaim_buffers_locked,
.dma_quiescent = i810_driver_dma_quiescent,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = i810_ioctls,
.fops = {
diff --git a/drivers/gpu/drm/i830/i830_drv.c b/drivers/gpu/drm/i830/i830_drv.c
index 44f990b..8156347 100644
--- a/drivers/gpu/drm/i830/i830_drv.c
+++ b/drivers/gpu/drm/i830/i830_drv.c
@@ -57,7 +57,6 @@ static struct drm_driver driver = {
.device_is_agp = i830_driver_device_is_agp,
.reclaim_buffers_locked = i830_driver_reclaim_buffers_locked,
.dma_quiescent = i830_driver_dma_quiescent,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
 #if USE_IRQS
.irq_preinstall = i830_driver_irq_preinstall,
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 01e91ea..9c62478 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -544,7 +544,6 @@ static struct drm_driver driver = {
.irq_uninstall = i915_driver_irq_uninstall,
.irq_handler = i915_driver_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.master_create = i915_master_create,
.master_destroy = i915_master_destroy,
diff --git a/drivers/gpu/drm/mga/mga_drv.c b/drivers/gpu/drm/mga/mga_drv.c
index ddfe161..bf8f998 100644
--- a/drivers/gpu/drm/mga/mga_drv.c
+++ b/drivers/gpu/drm/mga/mga_drv.c
@@ -60,7 +60,6 @@ static struct drm_driver driver = {
.irq_uninstall = mga_driver_irq_uninstall,
.irq_handler = mga_driver_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = mga_ioctls,
.dma_ioctl = mga_dma_buffers,
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c 
b/drivers/gpu/drm/nouveau/nouveau_drv.c
index c6079e3..2dafa60 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
@@ -357,7 +357,6 @@ static struct drm_driver driver = {
.irq_uninstall = nouveau_irq_uninstall,
.irq_handler = nouveau_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = nouveau_ioctls,
.fops = {
diff --git a/drivers/gpu/drm/r128/r128_drv.c b/drivers/gpu/drm/r128/r128_drv.c
index b806fdc..5a0d865 100644
--- a/drivers/gpu/drm/r128/r128_drv.c
+++ b/drivers/gpu/drm/r128/r128_drv.c
@@ -56,7 +56,6 @@ static struct drm_driver driver = {
.irq_uninstall = r128_driver_irq_uninstall,
.irq_handler = r128_driver_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = r128_ioctls,
.dma_ioctl = r128_cce_buffers,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c 
b/drivers/gpu/drm/radeon/radeon_drv.c
index 4b05563..d9cc7eb 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -204,7 +204,6 @@ static struct drm_driver dri

[PATCH 02/11] drm: kill kernel_context_switch callbacks

2010-04-29 Thread Daniel Vetter
Not used by any in-kernel driver. So drop it.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_lock.c |   18 --
 include/drm/drmP.h |3 ---
 2 files changed, 0 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/drm_lock.c b/drivers/gpu/drm/drm_lock.c
index e2f70a5..566d203 100644
--- a/drivers/gpu/drm/drm_lock.c
+++ b/drivers/gpu/drm/drm_lock.c
@@ -134,12 +134,6 @@ int drm_lock(struct drm_device *dev, void *data, struct 
drm_file *file_priv)
}
}

-   if (dev->driver->kernel_context_switch &&
-   dev->last_context != lock->context) {
-   dev->driver->kernel_context_switch(dev, dev->last_context,
-  lock->context);
-   }
-
return 0;
 }

@@ -157,7 +151,6 @@ int drm_lock(struct drm_device *dev, void *data, struct 
drm_file *file_priv)
 int drm_unlock(struct drm_device *dev, void *data, struct drm_file *file_priv)
 {
struct drm_lock *lock = data;
-   struct drm_master *master = file_priv->master;

if (lock->context == DRM_KERNEL_CONTEXT) {
DRM_ERROR("Process %d using kernel context %d\n",
@@ -167,17 +160,6 @@ int drm_unlock(struct drm_device *dev, void *data, struct 
drm_file *file_priv)

atomic_inc(&dev->counts[_DRM_STAT_UNLOCKS]);

-   /* kernel_context_switch isn't used by any of the x86 drm
-* modules but is required by the Sparc driver.
-*/
-   if (dev->driver->kernel_context_switch_unlock)
-   dev->driver->kernel_context_switch_unlock(dev);
-   else {
-   if (drm_lock_free(&master->lock, lock->context)) {
-   /* FIXME: Should really bail out here. */
-   }
-   }
-
unblock_all_signals();
return 0;
 }
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index c1b9871..2f95420 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -697,9 +697,6 @@ struct drm_driver {
int (*dma_quiescent) (struct drm_device *);
int (*context_ctor) (struct drm_device *dev, int context);
int (*context_dtor) (struct drm_device *dev, int context);
-   int (*kernel_context_switch) (struct drm_device *dev, int old,
- int new);
-   void (*kernel_context_switch_unlock) (struct drm_device *dev);

/**
 * get_vblank_counter - get raw hardware vblank counter
-- 
1.7.1



[PATCH 04/11] drm: kill procfs callbacks

2010-04-29 Thread Daniel Vetter
Not used by any driver (rightly so!). Kill them.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_proc.c |   13 -
 include/drm/drmP.h |2 --
 2 files changed, 0 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/drm_proc.c b/drivers/gpu/drm/drm_proc.c
index a9ba6b6..e571de5 100644
--- a/drivers/gpu/drm/drm_proc.c
+++ b/drivers/gpu/drm/drm_proc.c
@@ -151,7 +151,6 @@ fail:
 int drm_proc_init(struct drm_minor *minor, int minor_id,
  struct proc_dir_entry *root)
 {
-   struct drm_device *dev = minor->dev;
char name[64];
int ret;

@@ -172,14 +171,6 @@ int drm_proc_init(struct drm_minor *minor, int minor_id,
return ret;
}

-   if (dev->driver->proc_init) {
-   ret = dev->driver->proc_init(minor);
-   if (ret) {
-   DRM_ERROR("DRM: Driver failed to initialize "
- "/proc/dri.\n");
-   return ret;
-   }
-   }
return 0;
 }

@@ -216,15 +207,11 @@ int drm_proc_remove_files(struct drm_info_list *files, 
int count,
  */
 int drm_proc_cleanup(struct drm_minor *minor, struct proc_dir_entry *root)
 {
-   struct drm_device *dev = minor->dev;
char name[64];

if (!root || !minor->proc_root)
return 0;

-   if (dev->driver->proc_cleanup)
-   dev->driver->proc_cleanup(minor);
-
drm_proc_remove_files(drm_proc_list, DRM_PROC_ENTRIES, minor);

sprintf(name, "%d", minor->index);
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index f1d0c2e..7b5123a 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -785,8 +785,6 @@ struct drm_driver {
void (*master_drop)(struct drm_device *dev, struct drm_file *file_priv,
bool from_release);

-   int (*proc_init)(struct drm_minor *minor);
-   void (*proc_cleanup)(struct drm_minor *minor);
int (*debugfs_init)(struct drm_minor *minor);
void (*debugfs_cleanup)(struct drm_minor *minor);

-- 
1.7.1



[PATCH 06/11] drm: kill get_reg_ofs callback

2010-04-29 Thread Daniel Vetter
Every driver used the default implementation. Fold that one into
the only callsite and drop the callback.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_vm.c  |6 ++
 drivers/gpu/drm/i810/i810_drv.c   |1 -
 drivers/gpu/drm/i830/i830_drv.c   |1 -
 drivers/gpu/drm/i915/i915_drv.c   |1 -
 drivers/gpu/drm/mga/mga_drv.c |1 -
 drivers/gpu/drm/nouveau/nouveau_drv.c |1 -
 drivers/gpu/drm/r128/r128_drv.c   |1 -
 drivers/gpu/drm/radeon/radeon_drv.c   |2 --
 drivers/gpu/drm/savage/savage_drv.c   |1 -
 drivers/gpu/drm/sis/sis_drv.c |1 -
 drivers/gpu/drm/tdfx/tdfx_drv.c   |1 -
 drivers/gpu/drm/via/via_drv.c |1 -
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c   |1 -
 include/drm/drmP.h|2 --
 14 files changed, 2 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c
index 407bdc2..630bf4e 100644
--- a/drivers/gpu/drm/drm_vm.c
+++ b/drivers/gpu/drm/drm_vm.c
@@ -515,7 +515,7 @@ static int drm_mmap_dma(struct file *filp, struct 
vm_area_struct *vma)
return 0;
 }

-resource_size_t drm_core_get_reg_ofs(struct drm_device *dev)
+static resource_size_t drm_core_get_reg_ofs(struct drm_device *dev)
 {
 #ifdef __alpha__
return dev->hose->dense_mem_base - dev->hose->mem_space->start;
@@ -524,8 +524,6 @@ resource_size_t drm_core_get_reg_ofs(struct drm_device *dev)
 #endif
 }

-EXPORT_SYMBOL(drm_core_get_reg_ofs);
-
 /**
  * mmap DMA memory.
  *
@@ -610,7 +608,7 @@ int drm_mmap_locked(struct file *filp, struct 
vm_area_struct *vma)
/* fall through to _DRM_FRAME_BUFFER... */
case _DRM_FRAME_BUFFER:
case _DRM_REGISTERS:
-   offset = dev->driver->get_reg_ofs(dev);
+   offset = drm_core_get_reg_ofs(dev);
vma->vm_flags |= VM_IO; /* not in core dump */
vma->vm_page_prot = drm_io_prot(map->type, vma);
if (io_remap_pfn_range(vma, vma->vm_start,
diff --git a/drivers/gpu/drm/i810/i810_drv.c b/drivers/gpu/drm/i810/i810_drv.c
index 9d32620..0c2c673 100644
--- a/drivers/gpu/drm/i810/i810_drv.c
+++ b/drivers/gpu/drm/i810/i810_drv.c
@@ -52,7 +52,6 @@ static struct drm_driver driver = {
.device_is_agp = i810_driver_device_is_agp,
.reclaim_buffers_locked = i810_driver_reclaim_buffers_locked,
.dma_quiescent = i810_driver_dma_quiescent,
-   .get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = i810_ioctls,
.fops = {
 .owner = THIS_MODULE,
diff --git a/drivers/gpu/drm/i830/i830_drv.c b/drivers/gpu/drm/i830/i830_drv.c
index 8156347..4d7099a 100644
--- a/drivers/gpu/drm/i830/i830_drv.c
+++ b/drivers/gpu/drm/i830/i830_drv.c
@@ -57,7 +57,6 @@ static struct drm_driver driver = {
.device_is_agp = i830_driver_device_is_agp,
.reclaim_buffers_locked = i830_driver_reclaim_buffers_locked,
.dma_quiescent = i830_driver_dma_quiescent,
-   .get_reg_ofs = drm_core_get_reg_ofs,
 #if USE_IRQS
.irq_preinstall = i830_driver_irq_preinstall,
.irq_postinstall = i830_driver_irq_postinstall,
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 9c62478..a59f231 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -544,7 +544,6 @@ static struct drm_driver driver = {
.irq_uninstall = i915_driver_irq_uninstall,
.irq_handler = i915_driver_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_reg_ofs = drm_core_get_reg_ofs,
.master_create = i915_master_create,
.master_destroy = i915_master_destroy,
 #if defined(CONFIG_DEBUG_FS)
diff --git a/drivers/gpu/drm/mga/mga_drv.c b/drivers/gpu/drm/mga/mga_drv.c
index bf8f998..bc13f40 100644
--- a/drivers/gpu/drm/mga/mga_drv.c
+++ b/drivers/gpu/drm/mga/mga_drv.c
@@ -60,7 +60,6 @@ static struct drm_driver driver = {
.irq_uninstall = mga_driver_irq_uninstall,
.irq_handler = mga_driver_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = mga_ioctls,
.dma_ioctl = mga_dma_buffers,
.fops = {
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.c 
b/drivers/gpu/drm/nouveau/nouveau_drv.c
index 2dafa60..35485f3 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.c
@@ -357,7 +357,6 @@ static struct drm_driver driver = {
.irq_uninstall = nouveau_irq_uninstall,
.irq_handler = nouveau_irq_handler,
.reclaim_buffers = drm_core_reclaim_buffers,
-   .get_reg_ofs = drm_core_get_reg_ofs,
.ioctls = nouveau_ioctls,
.fops = {
.owner = THIS_MODULE,
diff --git a/drivers/gpu/drm/r128/r128_drv.c b/drivers/gpu/drm/r128/r128_drv.c
index 5a0d865..91f21c9 100644
--- a/drivers/gpu/drm/r128/r128_drv.c
+++ b/drivers/gpu/drm/r128/r128_drv.c
@@ -56,7 +56,6 @@ static struct 

[PATCH 07/11] drm: kill context_ctor callback

2010-04-29 Thread Daniel Vetter
It's not used by any driver. The destructor callback is unfortunately
used by the via driver in a rather convoluted piece of code used
to reimplement something resembling broken futexes. I didn't dare
to touch this code. But at least kill the needless NULL assignemt
in the sis driver.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_context.c |8 
 drivers/gpu/drm/sis/sis_drv.c |1 -
 include/drm/drmP.h|1 -
 3 files changed, 0 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/drm_context.c b/drivers/gpu/drm/drm_context.c
index 2607753..6d440fb 100644
--- a/drivers/gpu/drm/drm_context.c
+++ b/drivers/gpu/drm/drm_context.c
@@ -333,14 +333,6 @@ int drm_addctx(struct drm_device *dev, void *data,
return -ENOMEM;
}

-   if (ctx->handle != DRM_KERNEL_CONTEXT) {
-   if (dev->driver->context_ctor)
-   if (!dev->driver->context_ctor(dev, ctx->handle)) {
-   DRM_DEBUG("Running out of ctxs or memory.\n");
-   return -ENOMEM;
-   }
-   }
-
ctx_entry = kmalloc(sizeof(*ctx_entry), GFP_KERNEL);
if (!ctx_entry) {
DRM_DEBUG("out of memory\n");
diff --git a/drivers/gpu/drm/sis/sis_drv.c b/drivers/gpu/drm/sis/sis_drv.c
index 350e512..c9aa0c4 100644
--- a/drivers/gpu/drm/sis/sis_drv.c
+++ b/drivers/gpu/drm/sis/sis_drv.c
@@ -68,7 +68,6 @@ static struct drm_driver driver = {
.driver_features = DRIVER_USE_AGP | DRIVER_USE_MTRR,
.load = sis_driver_load,
.unload = sis_driver_unload,
-   .context_dtor = NULL,
.dma_quiescent = sis_idle,
.reclaim_buffers = NULL,
.reclaim_buffers_idlelocked = sis_reclaim_buffers_locked,
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index f5dd3df..8f91459 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -694,7 +694,6 @@ struct drm_driver {
int (*resume) (struct drm_device *);
int (*dma_ioctl) (struct drm_device *dev, void *data, struct drm_file 
*file_priv);
int (*dma_quiescent) (struct drm_device *);
-   int (*context_ctor) (struct drm_device *dev, int context);
int (*context_dtor) (struct drm_device *dev, int context);

/**
-- 
1.7.1



[PATCH 03/11] drm: kill dma_ready callbacks

2010-04-29 Thread Daniel Vetter
Not used by any driver. So drop it.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_lock.c |3 ---
 include/drm/drmP.h |1 -
 2 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_lock.c b/drivers/gpu/drm/drm_lock.c
index 566d203..1973d75 100644
--- a/drivers/gpu/drm/drm_lock.c
+++ b/drivers/gpu/drm/drm_lock.c
@@ -122,9 +122,6 @@ int drm_lock(struct drm_device *dev, void *data, struct 
drm_file *file_priv)
block_all_signals(drm_notifier, &dev->sigdata, &dev->sigmask);
}

-   if (dev->driver->dma_ready && (lock->flags & _DRM_LOCK_READY))
-   dev->driver->dma_ready(dev);
-
if (dev->driver->dma_quiescent && (lock->flags & _DRM_LOCK_QUIESCENT))
{
if (dev->driver->dma_quiescent(dev)) {
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 2f95420..f1d0c2e 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -693,7 +693,6 @@ struct drm_driver {
int (*suspend) (struct drm_device *, pm_message_t state);
int (*resume) (struct drm_device *);
int (*dma_ioctl) (struct drm_device *dev, void *data, struct drm_file 
*file_priv);
-   void (*dma_ready) (struct drm_device *);
int (*dma_quiescent) (struct drm_device *);
int (*context_ctor) (struct drm_device *dev, int context);
int (*context_dtor) (struct drm_device *dev, int context);
-- 
1.7.1



[PATCH 10/11] drm: kill dev->timer

2010-04-29 Thread Daniel Vetter
Totally unused.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_drv.c  |2 --
 drivers/gpu/drm/drm_stub.c |1 -
 include/drm/drmP.h |1 -
 3 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index ea4b6c2..3d42b4e 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -177,8 +177,6 @@ int drm_lastclose(struct drm_device * dev)

mutex_lock(&dev->struct_mutex);

-   del_timer(&dev->timer);
-
/* Clear AGP information */
if (drm_core_has_AGP(dev) && dev->agp &&
!drm_core_check_feature(dev, DRIVER_MODESET)) {
diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
index e3b5cfc..b5a6536 100644
--- a/drivers/gpu/drm/drm_stub.c
+++ b/drivers/gpu/drm/drm_stub.c
@@ -238,7 +238,6 @@ static int drm_fill_in_dev(struct drm_device * dev, struct 
pci_dev *pdev,

spin_lock_init(&dev->count_lock);
spin_lock_init(&dev->event_lock);
-   init_timer(&dev->timer);
mutex_init(&dev->struct_mutex);
mutex_init(&dev->ctxlist_mutex);

diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 540cab6..6866224 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -957,7 +957,6 @@ struct drm_device {
__volatile__ long context_flag; /**< Context swapping flag */
__volatile__ long interrupt_flag; /**< Interruption handler flag */
__volatile__ long dma_flag; /**< DMA dispatch flag */
-   struct timer_list timer;/**< Timer for delaying ctx switch */
wait_queue_head_t context_wait; /**< Processes waiting on ctx switch */
int last_checked;   /**< Last context checked for DMA */
int last_context;   /**< Last current context */
-- 
1.7.1



[PATCH 08/11] drm: don't export drm_get_drawable_info

2010-04-29 Thread Daniel Vetter
Not used by any in-tree user. So drop it.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_drawable.c |3 +--
 include/drm/drmP.h |2 --
 2 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_drawable.c b/drivers/gpu/drm/drm_drawable.c
index c53c976..170e531 100644
--- a/drivers/gpu/drm/drm_drawable.c
+++ b/drivers/gpu/drm/drm_drawable.c
@@ -173,11 +173,10 @@ error:
 /**
  * Caller must hold the drawable spinlock!
  */
-struct drm_drawable_info *drm_get_drawable_info(struct drm_device *dev, 
drm_drawable_t id)
+static struct drm_drawable_info *drm_get_drawable_info(struct drm_device *dev, 
drm_drawable_t id)
 {
return idr_find(&dev->drw_idr, id);
 }
-EXPORT_SYMBOL(drm_get_drawable_info);

 static int drm_drawable_free(int idr, void *p, void *data)
 {
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 8f91459..af62612 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -1209,8 +1209,6 @@ extern int drm_rmdraw(struct drm_device *dev, void *data,
  struct drm_file *file_priv);
 extern int drm_update_drawable_info(struct drm_device *dev, void *data,
struct drm_file *file_priv);
-extern struct drm_drawable_info *drm_get_drawable_info(struct drm_device *dev,
- drm_drawable_t id);
 extern void drm_drawable_free_all(struct drm_device *dev);

/* Authentication IOCTL support (drm_auth.h) */
-- 
1.7.1



[PATCH 11/11] drm: kill gem_free_object_unlocked driver callback

2010-04-29 Thread Daniel Vetter
Not used by any current driver.

Signed-off-by: Daniel Vetter 
---
 drivers/gpu/drm/drm_gem.c |4 +---
 include/drm/drmP.h|1 -
 2 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index 33dad3f..0c004e8 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -463,9 +463,7 @@ drm_gem_object_free_unlocked(struct kref *kref)
struct drm_gem_object *obj = (struct drm_gem_object *) kref;
struct drm_device *dev = obj->dev;

-   if (dev->driver->gem_free_object_unlocked != NULL)
-   dev->driver->gem_free_object_unlocked(obj);
-   else if (dev->driver->gem_free_object != NULL) {
+   if (dev->driver->gem_free_object != NULL) {
mutex_lock(&dev->struct_mutex);
dev->driver->gem_free_object(obj);
mutex_unlock(&dev->struct_mutex);
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 6866224..f7ade6b 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -793,7 +793,6 @@ struct drm_driver {
 */
int (*gem_init_object) (struct drm_gem_object *obj);
void (*gem_free_object) (struct drm_gem_object *obj);
-   void (*gem_free_object_unlocked) (struct drm_gem_object *obj);

/* vga arb irq handler */
void (*vgaarb_irq)(struct drm_device *dev, bool state);
-- 
1.7.1



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

2010-04-29 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.
Information might also leak via the RM_DRAW ioctl (in the form of
a negative return code in case the drawable doesn't exist). But the
only user of these ioctls, mesas' miniglx, does not use the RM_DRAW
ioctl.

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

Signed-off-by: Daniel Vetter 
---
 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 abe3f44..10585ce 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(&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);
-   DRM_DEBUG("%d\n", draw->handle);
-   return 0;
-}
-
-int drm_update_drawable_info(struct drm_device *dev, void *data, struct 
drm_file *file_priv)
-{
-   struct drm_update_draw *update = data;
-   unsigned long irqflags;
-   

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

2010-04-29 Thread Michel Dänzer
On Don, 2010-04-29 at 11:14 +0200, Daniel Vetter wrote: 
> The information supplied by userspace through these ioctls is only
> accessible by dev->drw_idr. But there's no in-tree user of that.
> Information might also leak via the RM_DRAW ioctl (in the form of
> a negative return code in case the drawable doesn't exist). But the
> only user of these ioctls, mesas' miniglx, does not use the RM_DRAW
> ioctl.

FYI, the X server DRI1 code also uses these ioctls, via the libdrm
functions drmCreate/DestroyDrawable and drmUpdateDrawableInfo().

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

That should still true though, as none of the DRM drivers use the
drawable cliprect information anymore. Might still be worth
double-checking that this doesn't break DRI without KMS on your RV570.


-- 
Earthling Michel D?nzer   |http://www.vmware.com
Libre software enthusiast |  Debian, X and DRI developer


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

2010-04-29 Thread Daniel Vetter
On Thu, Apr 29, 2010 at 11:32:36AM +0200, Michel D?nzer wrote:
> On Don, 2010-04-29 at 11:14 +0200, Daniel Vetter wrote: 
> > The information supplied by userspace through these ioctls is only
> > accessible by dev->drw_idr. But there's no in-tree user of that.
> > Information might also leak via the RM_DRAW ioctl (in the form of
> > a negative return code in case the drawable doesn't exist). But the
> > only user of these ioctls, mesas' miniglx, does not use the RM_DRAW
> > ioctl.
> 
> FYI, the X server DRI1 code also uses these ioctls, via the libdrm
> functions drmCreate/DestroyDrawable and drmUpdateDrawableInfo().

Thanks, I've overlooked the DRI stuff in the xserver. There,
drmDestroyDrawable is used (but the return code is ignored), so should be
fine. The only place the return value is checked when creating a drawable
for the first time (to free any allocations already made). Should be safe,
too.

> > Therefore it's safe to replace these three ioctls with noops and rip
> > out the implementation.
> 
> That should still true though, as none of the DRM drivers use the
> drawable cliprect information anymore. Might still be worth
> double-checking that this doesn't break DRI without KMS on your RV570.

I've tried to test DRI1, but that seems to be in a hilariously broken
state on my box: Windows are smeared all over the screen (tiling
parameters mismatch?) under certain circumstances. But glxinfo shows the
correct render string, AIGLX seems to load correctly (according to
Xorg.log) and kde's opengl cover switch looks all right. Also, after some
time it hangs with the dmesg complaining that someone is monopolizing the
heavyweight lock (in drm_lock_take). Results without these patches are
similar.

I haven't used ums radeon since months, so I don't think you can count
this as useful testing ;)

Yours, Daniel
-- 
Daniel Vetter
Mail: daniel at ffwll.ch
Mobile: +41 (0)79 365 57 48


[Bug 27729] [r300g, mesa] gallium compressed texture problems

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=27729

--- Comment #16 from Marek Ol??k  2010-04-29 05:11:00 PDT 
---
(In reply to comment #15)
> In the meantime 95bfc8f32571751c5c9ec6d8e84f5e3c28d1b20e has been committed
> from Marek Ol??k which is a subset of attached "patch for r300g
> is_format_supported()", but which appears to also fix the r300g problem.

Yes but the S3TC code appears to be bloody slow, e.g. the TA3D game seems to
load a new texture everytime a new GUI element shows up and during that the
game basically locks up for 5 seconds with 100% CPU load. This is unbearable.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


[Bug 27887] New: r300g: depth textures + fbo = broken glClear()

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=27887

   Summary: r300g: depth textures + fbo = broken glClear()
   Product: Mesa
   Version: git
  Platform: x86-64 (AMD64)
OS/Version: Linux (All)
Status: NEW
  Severity: normal
  Priority: medium
 Component: Drivers/DRI/r300
AssignedTo: dri-devel at lists.freedesktop.org
ReportedBy: wixorpeek at gmail.com


Created an attachment (id=35333)
 --> (https://bugs.freedesktop.org/attachment.cgi?id=35333)
test case

Attached code does not clear the screen as expected. The classic r300 driver
fails too. Sometimes geometry rendering gets messed up (however it is not as
easily reproducible).

Hardware: Radeon X1300 (RV515), kernel 2.6.33, xorg 1.7.7 rc1, driver from git
(up to commit 7327a84b...).

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


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

2010-04-29 Thread Michel Dänzer
On Don, 2010-04-29 at 14:02 +0200, Daniel Vetter wrote: 
> On Thu, Apr 29, 2010 at 11:32:36AM +0200, Michel D?nzer wrote:
> > On Don, 2010-04-29 at 11:14 +0200, Daniel Vetter wrote: 
> > > The information supplied by userspace through these ioctls is only
> > > accessible by dev->drw_idr. But there's no in-tree user of that.
> > > Information might also leak via the RM_DRAW ioctl (in the form of
> > > a negative return code in case the drawable doesn't exist). But the
> > > only user of these ioctls, mesas' miniglx, does not use the RM_DRAW
> > > ioctl.
> > 
> > FYI, the X server DRI1 code also uses these ioctls, via the libdrm
> > functions drmCreate/DestroyDrawable and drmUpdateDrawableInfo().
> 
> Thanks, I've overlooked the DRI stuff in the xserver. There,
> drmDestroyDrawable is used (but the return code is ignored), so should be
> fine. The only place the return value is checked when creating a drawable
> for the first time (to free any allocations already made). Should be safe,
> too.
> 
> > > Therefore it's safe to replace these three ioctls with noops and rip
> > > out the implementation.
> > 
> > That should still true though, as none of the DRM drivers use the
> > drawable cliprect information anymore. Might still be worth
> > double-checking that this doesn't break DRI without KMS on your RV570.
> 
> I've tried to test DRI1, but that seems to be in a hilariously broken
> state on my box: Windows are smeared all over the screen (tiling
> parameters mismatch?) under certain circumstances. But glxinfo shows the
> correct render string, AIGLX seems to load correctly (according to
> Xorg.log) and kde's opengl cover switch looks all right. Also, after some
> time it hangs with the dmesg complaining that someone is monopolizing the
> heavyweight lock (in drm_lock_take). Results without these patches are
> similar.
> 
> I haven't used ums radeon since months, so I don't think you can count
> this as useful testing ;)

I think it's good enough for the purpose of this change, as I'd expect
any problem caused by it to manifest when starting or quitting any 3D
app (such as the one doing the OpenGL cover switch).

So, here's my

Reviewed-by: Michel D?nzer 

for it.


-- 
Earthling Michel D?nzer   |http://www.vmware.com
Libre software enthusiast |  Debian, X and DRI developer


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

2010-04-29 Thread Kristian Høgsberg
On Thu, Apr 29, 2010 at 5:14 AM, Daniel Vetter  
wrote:
> The information supplied by userspace through these ioctls is only
> accessible by dev->drw_idr. But there's no in-tree user of that.
> Information might also leak via the RM_DRAW ioctl (in the form of
> a negative return code in case the drawable doesn't exist). But the
> only user of these ioctls, mesas' miniglx, does not use the RM_DRAW
> ioctl.
>
> Therefore it's safe to replace these three ioctls with noops and rip
> out the implementation.

Looks almost exactly like this one:

http://www.mail-archive.com/dri-devel at lists.sourceforge.net/msg39176.html

Except I made adddraw a stub that always returns 1, but reading
through the code (hw/xfree86/dri, glx/glxdri.c and the radeon dri
driver) I don't see anything that fails if we just return zero (or a
random number for that matter).  The only difference is that if we
return zero, hw/xfree86/dri/dri.c will keep trying to create a drm
drawable (look for drmCreateDrawable) every time somebody creates a
dri drawable, but since that's a noop, who cares.

Reviewed-by: Kristian H?gsberg 

> Signed-off-by: Daniel Vetter 
> ---
> ?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 abe3f44..10585ce 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(&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 stor

[Bug 27901] New: GLSL cos/sin functions broken on Mesa R600 driver

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=27901

   Summary: GLSL cos/sin functions broken on Mesa R600 driver
   Product: Mesa
   Version: git
  Platform: All
OS/Version: All
Status: NEW
  Severity: normal
  Priority: medium
 Component: Drivers/DRI/R600
AssignedTo: dri-devel at lists.freedesktop.org
ReportedBy: alain.perrot at gmail.com


As I was playing with OpenGL examples from Joe Groff's blog at
http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html,
I noticed that the cos and sin GLSL functions are broken on the Mesa R600
driver. Other trigonometric functions may be broken as well.

The blog entries provide two versions of a sample program that blend two images
together using GLSL. The blend factor is computed from a timestamp using the
sin function.

There's no problem with the example from chapter 2 where the blend factor is
computed on the CPU (source code at http://github.com/jckarter/hello-gl).

Mesa R600 driver fails to properly run the example from chapter 3 where the
blend factor is computed on the GPU using the GLSL sin function. Mesa software
renderer has no problem running this example (source code at
http://github.com/jckarter/hello-gl-ch3).


Looking at GLSL 1.10 spec, R600 ISA doc and R600 driver code (function
assemble_TRIG in r700_assembler.c), I guess there is two problems :

1. both the GLSL cos/sin functions and R600 hardware expects the angle to be
specified in radians, but the assemble_TRIG function divides the specified
angle by 2 * PI (the result is no more radians).

2. R600 hardware expects the angle to be in the range [-PI, PI] while GLSL does
not specify a range, and the assemble_TRIG function does not clip the angle in
the required range.


A quick and dirty hack to make the example from chapter 3 work with R600 driver
is to clip the timestamp to the [-PI, PI] range and then to multiply it by 2 *
PI :

--- hello-gl.c.old  2010-04-29 20:55:55.0 +0200
+++ hello-gl.c  2010-04-29 20:56:12.0 +0200
@@ -202,7 +202,10 @@
 static void update_timer(void)
 {
 int milliseconds = glutGet(GLUT_ELAPSED_TIME);
-g_resources.timer = (float)milliseconds * 0.001f;
+g_resources.timer = fmodf((float)milliseconds * 0.001f, 2.0f *
3.1415926535897f);
+if(g_resources.timer > 3.1415926535897f)
+g_resources.timer -= 2.0f * 3.1415926535897f;
+g_resources.timer *= 2.0f * 3.1415926535897f;
 glutPostRedisplay();
 }


My config:
RV670 (Radeon HD 3870)
Kubuntu 10.04 "Lucid Lynx" 64-bit
Linux kernel 2.6.34-rc5 from Ubuntu Mainline Kernel PPA
libdrm, radeon, Mesa, Xorg from Xorg-edgers PPA

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


[Bug 27822] [REGR] Soft lockup with "[TTM] Buffer eviction failed" on resume

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=27822

--- Comment #5 from Rafa? Mi?ecki  2010-04-29 14:20:21 PDT 
---
Result of first git bisect:

There are only 'skip'ped commits left to test.
The first bad commit could be any of:
82c5da6bf8b55a931b042fb531083863d26c8020
0a2d50e3a8faaf36cde36920431586090411ea15
We cannot bisect more!

Unfortunately I'd to:
# skip: [82c5da6bf8b55a931b042fb531083863d26c8020] drm/ttm: ttm_fault callback
to allow driver to handle bo placement V6
because this commit caused 3 locks up in a row for me. First at KDE logging
screen, next two as suspending (just before machines was expected to power
off).


So it seems suspected commits are:

commit 0a2d50e3a8faaf36cde36920431586090411ea15
Author: Jerome Glisse 
Date:   Fri Apr 9 14:39:24 2010 +0200

drm/radeon/kms: add support for new fault callback V7

and

commit 82c5da6bf8b55a931b042fb531083863d26c8020
Author: Jerome Glisse 
Date:   Fri Apr 9 14:39:23 2010 +0200

drm/ttm: ttm_fault callback to allow driver to handle bo placement V6

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


[Bug 27904] New: r300g segfaults on M56GL

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=27904

   Summary: r300g segfaults on M56GL
   Product: Mesa
   Version: git
  Platform: Other
OS/Version: All
Status: NEW
  Severity: normal
  Priority: medium
 Component: Drivers/DRI/r300
AssignedTo: dri-devel at lists.freedesktop.org
ReportedBy: pavel at rojtberg.net


current git, linux 2.6.32-21-generic (ubuntu lucid)

Starting program: /usr/bin/glxgears 
[Thread debugging using libthread_db enabled]

Program received signal SIGSEGV, Segmentation fault.
0x004e68e9 in rc_pair_regalloc (c=0xbfffee8c, maxtemps=1)
at radeon_pair_regalloc.c:347
Line number 347 out of range; radeon_pair_regalloc.c has 280 lines.
(gdb) bt
#0  0x004e68e9 in rc_pair_regalloc (c=0xbfffee8c, maxtemps=1)
at radeon_pair_regalloc.c:347
#1  0x004e03dd in r3xx_compile_fragment_program (c=0xbfffee8c)
at r3xx_fragprog.c:159
#2  0x004db6f3 in r300_translate_fragment_shader (r300=, 
shader=0x80d0ad8, tokens=0x80ef010) at r300_fs.c:276
#3  0x004dbea7 in r300_pick_fragment_shader (r300=0x8066f08) at r300_fs.c:346
#4  0x004d217f in r300_bind_fs_state (pipe=0x8066f08, shader=0x4e6780)
at r300_state.c:718
#5  0x00628946 in cso_set_fragment_shader_handle (ctx=0x80e84d8, 
handle=0x4e6780) at cso_cache/cso_context.c:742
#6  0x005f29e0 in update_fp (st=0x80c3e88)
at state_tracker/st_atom_shader.c:174
#7  0x005ef9b3 in st_validate_state (st=0x80c3e88)
at state_tracker/st_atom.c:167
#8  0x005f6859 in st_Clear (ctx=0x8087258, mask=18)
at state_tracker/st_cb_clear.c:460
#9  0x005a3936 in _mesa_Clear (mask=0) at main/clear.c:178
#10 0x080493d7 in ?? ()
#11 0x0804a762 in ?? ()
#12 0x00305bd6 in __libc_start_main (main=0x804a230, argc=1, 
ubp_av=0xb484, init=0x804ad80, fini=0x804ad70, 
rtld_fini=0x11e0c0 <_dl_fini>, stack_end=0xb47c) at libc-start.c:226

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


[Bug 27866] d-r-t crashes at radeon_bo_unref() with dynpm=1

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=27866

--- Comment #5 from Andy Furniss  2010-04-29 
16:16:27 PDT ---
(In reply to comment #4)
I can't (so far) crash with today's d-r-t.

Could just be luck I suppose, but it only took 20 mins of openarena to get two
yesterday and I've just gone 50 mins OK.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


[Bug 27866] d-r-t crashes at radeon_bo_unref() with dynpm=1

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=27866

--- Comment #6 from Alex Deucher  2010-04-29 16:46:19 PDT 
---
should be fixed with this commit:
http://git.kernel.org/?p=linux/kernel/git/airlied/drm-2.6.git;a=commitdiff;h=7a1ffce50373c177d3f6eecce52badc40c90e1dd

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


[Bug 26570] [r6xx DRI] KMS enabled: GLSL white washing corruption (seen in Second Life)

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=26570

--- Comment #6 from Shawn Starr  2010-04-29 20:05:07 
PDT ---
Still happening, its not compiling the GLSL shader programs. If it is it seems
to take a very, very long time. It shows pretty much all white in game.

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


[Bug 26570] [r6xx DRI] KMS enabled: GLSL white washing corruption (seen in Second Life)

2010-04-29 Thread bugzilla-dae...@freedesktop.org
https://bugs.freedesktop.org/show_bug.cgi?id=26570

--- Comment #7 from Shawn Starr  2010-04-29 20:05:33 
PDT ---
2.6.34-rc5 + airlied drm branches, libdrm git master, mesa git master, ati DDX
git master

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.