mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-05-07 23:58:04 +02:00
Grab latest trunk code. Sync with 2.4.0-test9-pre4 kernel.
This commit is contained in:
parent
1e8cc8bfb4
commit
ce6bb6dc6e
5 changed files with 9 additions and 7 deletions
|
|
@ -1367,6 +1367,7 @@ int i810_getbuf(struct inode *inode, struct file *filp, unsigned int cmd,
|
|||
dev_priv->sarea_priv;
|
||||
|
||||
DRM_DEBUG("getbuf\n");
|
||||
|
||||
if (copy_from_user(&d, (drm_i810_dma_t *)arg, sizeof(d)))
|
||||
return -EFAULT;
|
||||
|
||||
|
|
|
|||
|
|
@ -1367,6 +1367,7 @@ int i810_getbuf(struct inode *inode, struct file *filp, unsigned int cmd,
|
|||
dev_priv->sarea_priv;
|
||||
|
||||
DRM_DEBUG("getbuf\n");
|
||||
|
||||
if (copy_from_user(&d, (drm_i810_dma_t *)arg, sizeof(d)))
|
||||
return -EFAULT;
|
||||
|
||||
|
|
|
|||
|
|
@ -214,6 +214,7 @@ drm_buf_t *mga_freelist_get(drm_device_t *dev)
|
|||
drm_mga_freelist_t *prev;
|
||||
drm_mga_freelist_t *next;
|
||||
static int failed = 0;
|
||||
int return_null = 0;
|
||||
|
||||
DRM_DEBUG("%s : tail->age : %d last_prim_age : %d\n", __FUNCTION__,
|
||||
dev_priv->tail->age, dev_priv->last_prim_age);
|
||||
|
|
@ -222,7 +223,6 @@ drm_buf_t *mga_freelist_get(drm_device_t *dev)
|
|||
DRM_DEBUG("I'm waiting on the freelist!!! %d\n",
|
||||
dev_priv->last_prim_age);
|
||||
set_bit(MGA_IN_GETBUF, &dev_priv->dispatch_status);
|
||||
current->state = TASK_INTERRUPTIBLE;
|
||||
add_wait_queue(&dev_priv->buf_queue, &entry);
|
||||
for (;;) {
|
||||
mga_dma_schedule(dev, 0);
|
||||
|
|
@ -230,15 +230,17 @@ drm_buf_t *mga_freelist_get(drm_device_t *dev)
|
|||
&dev_priv->dispatch_status))
|
||||
break;
|
||||
atomic_inc(&dev->total_sleeps);
|
||||
current->state = TASK_INTERRUPTIBLE;
|
||||
schedule();
|
||||
if (signal_pending(current)) {
|
||||
++return_null;
|
||||
clear_bit(MGA_IN_GETBUF,
|
||||
&dev_priv->dispatch_status);
|
||||
goto failed_getbuf;
|
||||
break;
|
||||
}
|
||||
}
|
||||
current->state = TASK_RUNNING;
|
||||
remove_wait_queue(&dev_priv->buf_queue, &entry);
|
||||
if (return_null) return NULL;
|
||||
}
|
||||
|
||||
if(dev_priv->tail->age < dev_priv->last_prim_age) {
|
||||
|
|
@ -251,8 +253,6 @@ drm_buf_t *mga_freelist_get(drm_device_t *dev)
|
|||
failed = 0;
|
||||
return next->buf;
|
||||
}
|
||||
|
||||
failed_getbuf:
|
||||
failed++;
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#include <linux/autoconf.h>
|
||||
#include <linux/config.h>
|
||||
#include <linux/version.h>
|
||||
|
||||
#ifndef CONFIG_SMP
|
||||
|
|
|
|||
|
|
@ -292,7 +292,7 @@ extern int r128_context_switch_complete(drm_device_t *dev, int new);
|
|||
#define R128_VB_AGE_REG R128_GUI_SCRATCH_REG0
|
||||
|
||||
|
||||
#define R128_BASE(reg) ((u32)(dev_priv->mmio->handle))
|
||||
#define R128_BASE(reg) ((unsigned long)(dev_priv->mmio->handle))
|
||||
#define R128_ADDR(reg) (R128_BASE(reg) + reg)
|
||||
|
||||
#define R128_DEREF(reg) *(__volatile__ int *)R128_ADDR(reg)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue