performance fixes for the i810

This commit is contained in:
Keith Whitwell 2000-02-27 20:48:58 +00:00
parent 2f2480f94e
commit f4f0860b8c
4 changed files with 278 additions and 8 deletions

View file

@ -629,7 +629,7 @@ static inline void i810_dma_emit_flush(drm_device_t *dev)
i810_kernel_lost_context(dev);
BEGIN_LP_RING(2);
OUT_RING( CMD_REPORT_HEAD );
#if 1
#if 0
OUT_RING( GFX_OP_BREAKPOINT_INTERRUPT );
#else
OUT_RING( GFX_OP_USER_INTERRUPT );
@ -655,6 +655,7 @@ static int i810_flush_queue(drm_device_t *dev)
add_wait_queue(&dev_priv->flush_queue, &entry);
for (;;) {
i810_dma_emit_flush(dev);
if (atomic_read(&dev_priv->flush_done) == 1) break;
if (atomic_read(&dev_priv->flush_done) == 1) break;
curTime = __gettimeinmillis();
if (startTime == 0 || curTime < startTime /*wrap case*/) {
@ -663,7 +664,7 @@ static int i810_flush_queue(drm_device_t *dev)
DRM_ERROR("lockup\n");
goto out_wait_flush;
}
schedule_timeout(HZ/60);
schedule_timeout(HZ*3);
if (signal_pending(current)) {
ret = -EINTR; /* Can't restart */
break;
@ -731,6 +732,7 @@ int i810_lock(struct inode *inode, struct file *filp, unsigned int cmd,
*/
if (!ret) {
#if 0
if (_DRM_LOCKING_CONTEXT(dev->lock.hw_lock->lock)
!= lock.context) {
long j = jiffies - dev->lock.lock_time;
@ -742,6 +744,7 @@ int i810_lock(struct inode *inode, struct file *filp, unsigned int cmd,
schedule_timeout(j);
}
}
#endif
add_wait_queue(&dev->lock.lock_queue, &entry);
for (;;) {
if (!dev->lock.hw_lock) {

View file

@ -175,3 +175,267 @@ clean:
rm -f *.o *.a *.po *~ core $(PROGS)
# DO NOT DELETE
agpsupport.o: drmP.h
auth.o: drmP.h
bufs.o: drmP.h /usr/include/linux/un.h
context.o: drmP.h
ctxbitmap.o: drmP.h
dma.o: drmP.h /usr/include/linux/interrupt.h /usr/include/linux/kernel.h
dma.o: /usr/include/asm/bitops.h /usr/include/asm/atomic.h
dma.o: /usr/include/asm/hardirq.h /usr/include/linux/threads.h
dma.o: /usr/include/asm/softirq.h
drawable.o: drmP.h
drm.o: /usr/include/asm/ioctl.h
drmstat.o: /usr/include/stdio.h /usr/include/features.h
drmstat.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
drmstat.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
drmstat.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
drmstat.o: /usr/include/bits/types.h /usr/include/libio.h
drmstat.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
drmstat.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
drmstat.o: /usr/include/endian.h /usr/include/bits/endian.h
drmstat.o: /usr/include/sys/select.h /usr/include/bits/select.h
drmstat.o: /usr/include/bits/sigset.h /usr/include/sys/sysmacros.h
drmstat.o: /usr/include/alloca.h /usr/include/unistd.h
drmstat.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
drmstat.o: /usr/include/getopt.h /usr/include/sys/time.h
drmstat.o: /usr/include/bits/time.h /usr/include/sys/mman.h
drmstat.o: /usr/include/bits/mman.h /usr/include/strings.h
drmstat.o: /usr/include/errno.h /usr/include/bits/errno.h
drmstat.o: /usr/include/linux/errno.h /usr/include/asm/errno.h
drmstat.o: /usr/include/signal.h /usr/include/bits/signum.h
drmstat.o: /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h
drmstat.o: /usr/include/bits/sigcontext.h /usr/include/asm/sigcontext.h
drmstat.o: /usr/include/bits/sigstack.h /usr/include/fcntl.h
drmstat.o: /usr/include/bits/fcntl.h xf86drm.h
fops.o: drmP.h /usr/include/linux/poll.h /usr/include/asm/poll.h
gamma_dma.o: drmP.h gamma_drv.h /usr/include/linux/interrupt.h
gamma_dma.o: /usr/include/linux/kernel.h /usr/include/asm/bitops.h
gamma_dma.o: /usr/include/asm/atomic.h /usr/include/asm/hardirq.h
gamma_dma.o: /usr/include/linux/threads.h /usr/include/asm/softirq.h
gamma_drv.o: drmP.h gamma_drv.h
i810_bufs.o: drmP.h i810_drv.h i810_drm_public.h i810_dma.h
i810_bufs.o: /usr/include/linux/un.h
i810_context.o: /usr/include/linux/sched.h /usr/include/asm/param.h
i810_context.o: /usr/include/linux/binfmts.h /usr/include/linux/ptrace.h
i810_context.o: /usr/include/asm/ptrace.h /usr/include/linux/capability.h
i810_context.o: /usr/include/linux/types.h /usr/include/linux/config.h
i810_context.o: /usr/include/linux/autoconf.h
i810_context.o: /usr/include/linux/posix_types.h /usr/include/linux/stddef.h
i810_context.o: /usr/include/asm/posix_types.h /usr/include/asm/types.h
i810_context.o: /usr/include/linux/fs.h /usr/include/linux/linkage.h
i810_context.o: /usr/include/linux/limits.h /usr/include/linux/wait.h
i810_context.o: /usr/include/linux/vfs.h /usr/include/asm/statfs.h
i810_context.o: /usr/include/linux/net.h /usr/include/linux/socket.h
i810_context.o: /usr/include/asm/socket.h /usr/include/asm/sockios.h
i810_context.o: /usr/include/linux/sockios.h /usr/include/linux/uio.h
i810_context.o: /usr/include/linux/kdev_t.h /usr/include/linux/ioctl.h
i810_context.o: /usr/include/asm/ioctl.h /usr/include/linux/list.h
i810_context.o: /usr/include/linux/dcache.h /usr/include/linux/stat.h
i810_context.o: /usr/include/linux/cache.h /usr/include/asm/cache.h
i810_context.o: /usr/include/asm/atomic.h /usr/include/asm/bitops.h
i810_context.o: /usr/include/linux/personality.h /usr/include/linux/threads.h
i810_context.o: /usr/include/linux/kernel.h /usr/include/linux/times.h
i810_context.o: /usr/include/linux/timex.h /usr/include/asm/timex.h
i810_context.o: /usr/include/asm/msr.h /usr/include/asm/system.h
i810_context.o: /usr/include/asm/segment.h /usr/include/linux/bitops.h
i810_context.o: /usr/include/asm/semaphore.h /usr/include/asm/rwlock.h
i810_context.o: /usr/include/asm/page.h /usr/include/linux/smp.h
i810_context.o: /usr/include/linux/tty.h /usr/include/linux/sem.h
i810_context.o: /usr/include/linux/ipc.h /usr/include/asm/ipcbuf.h
i810_context.o: /usr/include/asm/sembuf.h /usr/include/linux/signal.h
i810_context.o: /usr/include/asm/signal.h /usr/include/asm/siginfo.h
i810_context.o: /usr/include/linux/securebits.h /usr/include/linux/time.h
i810_context.o: /usr/include/linux/param.h /usr/include/linux/resource.h
i810_context.o: /usr/include/asm/resource.h /usr/include/linux/timer.h
i810_context.o: /usr/include/asm/processor.h /usr/include/asm/vm86.h
i810_context.o: /usr/include/asm/math_emu.h /usr/include/asm/sigcontext.h
i810_context.o: drmP.h i810_drv.h i810_drm_public.h
i810_dma.o: drmP.h i810_drm_public.h i810_drv.h i810_dma.h
i810_dma.o: /usr/include/linux/interrupt.h /usr/include/linux/kernel.h
i810_dma.o: /usr/include/asm/bitops.h /usr/include/asm/atomic.h
i810_dma.o: /usr/include/asm/hardirq.h /usr/include/linux/threads.h
i810_dma.o: /usr/include/asm/softirq.h /usr/include/linux/time.h
i810_dma.o: /usr/include/asm/param.h /usr/include/linux/types.h
i810_dma.o: /usr/include/linux/config.h /usr/include/linux/autoconf.h
i810_dma.o: /usr/include/linux/posix_types.h /usr/include/linux/stddef.h
i810_dma.o: /usr/include/asm/posix_types.h /usr/include/asm/types.h
i810_dma.o: i810_drm_public.h
i810_drv.o: drmP.h i810_drv.h i810_drm_public.h i810_dma.h
i810_drv.o: i810_drm_public.h
init.o: drmP.h
ioctl.o: drmP.h
lists.o: drmP.h
lock.o: drmP.h
memory.o: drmP.h
mga_bufs.o: drmP.h mga_drv.h mga_drm_public.h mga_dma.h
mga_bufs.o: /usr/include/linux/un.h
mga_clear.o: drmP.h mga_drv.h mga_drm_public.h mgareg_flags.h mga_dma.h
mga_clear.o: mga_state.h
mga_context.o: /usr/include/linux/sched.h /usr/include/asm/param.h
mga_context.o: /usr/include/linux/binfmts.h /usr/include/linux/ptrace.h
mga_context.o: /usr/include/asm/ptrace.h /usr/include/linux/capability.h
mga_context.o: /usr/include/linux/types.h /usr/include/linux/config.h
mga_context.o: /usr/include/linux/autoconf.h /usr/include/linux/posix_types.h
mga_context.o: /usr/include/linux/stddef.h /usr/include/asm/posix_types.h
mga_context.o: /usr/include/asm/types.h /usr/include/linux/fs.h
mga_context.o: /usr/include/linux/linkage.h /usr/include/linux/limits.h
mga_context.o: /usr/include/linux/wait.h /usr/include/linux/vfs.h
mga_context.o: /usr/include/asm/statfs.h /usr/include/linux/net.h
mga_context.o: /usr/include/linux/socket.h /usr/include/asm/socket.h
mga_context.o: /usr/include/asm/sockios.h /usr/include/linux/sockios.h
mga_context.o: /usr/include/linux/uio.h /usr/include/linux/kdev_t.h
mga_context.o: /usr/include/linux/ioctl.h /usr/include/asm/ioctl.h
mga_context.o: /usr/include/linux/list.h /usr/include/linux/dcache.h
mga_context.o: /usr/include/linux/stat.h /usr/include/linux/cache.h
mga_context.o: /usr/include/asm/cache.h /usr/include/asm/atomic.h
mga_context.o: /usr/include/asm/bitops.h /usr/include/linux/personality.h
mga_context.o: /usr/include/linux/threads.h /usr/include/linux/kernel.h
mga_context.o: /usr/include/linux/times.h /usr/include/linux/timex.h
mga_context.o: /usr/include/asm/timex.h /usr/include/asm/msr.h
mga_context.o: /usr/include/asm/system.h /usr/include/asm/segment.h
mga_context.o: /usr/include/linux/bitops.h /usr/include/asm/semaphore.h
mga_context.o: /usr/include/asm/rwlock.h /usr/include/asm/page.h
mga_context.o: /usr/include/linux/smp.h /usr/include/linux/tty.h
mga_context.o: /usr/include/linux/sem.h /usr/include/linux/ipc.h
mga_context.o: /usr/include/asm/ipcbuf.h /usr/include/asm/sembuf.h
mga_context.o: /usr/include/linux/signal.h /usr/include/asm/signal.h
mga_context.o: /usr/include/asm/siginfo.h /usr/include/linux/securebits.h
mga_context.o: /usr/include/linux/time.h /usr/include/linux/param.h
mga_context.o: /usr/include/linux/resource.h /usr/include/asm/resource.h
mga_context.o: /usr/include/linux/timer.h /usr/include/asm/processor.h
mga_context.o: /usr/include/asm/vm86.h /usr/include/asm/math_emu.h
mga_context.o: /usr/include/asm/sigcontext.h drmP.h mga_drv.h
mga_context.o: mga_drm_public.h
mga_dma.o: drmP.h mga_drv.h mga_drm_public.h mgareg_flags.h mga_dma.h
mga_dma.o: /usr/include/linux/interrupt.h /usr/include/linux/kernel.h
mga_dma.o: /usr/include/asm/bitops.h /usr/include/asm/atomic.h
mga_dma.o: /usr/include/asm/hardirq.h /usr/include/linux/threads.h
mga_dma.o: /usr/include/asm/softirq.h
mga_dma.o: mga_drm_public.h
mga_drv.o: drmP.h mga_drv.h mga_drm_public.h
mga_drv.o: mga_drm_public.h
mga_state.o: drmP.h mga_drv.h mga_drm_public.h mgareg_flags.h mga_dma.h drm.h
mga_state.o: /usr/include/asm/ioctl.h
mga_state.o: mga_drv.h mga_drm_public.h
picker.o: /usr/include/linux/autoconf.h /usr/include/linux/version.h
proc.o: drmP.h
sigio.o: /usr/include/unistd.h /usr/include/features.h
sigio.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
sigio.o: /usr/include/bits/posix_opt.h /usr/include/bits/types.h
sigio.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
sigio.o: /usr/include/bits/confname.h /usr/include/getopt.h
sigio.o: /usr/include/signal.h /usr/include/bits/sigset.h
sigio.o: /usr/include/bits/signum.h /usr/include/time.h
sigio.o: /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h
sigio.o: /usr/include/bits/sigcontext.h /usr/include/asm/sigcontext.h
sigio.o: /usr/include/bits/sigstack.h /usr/include/fcntl.h
sigio.o: /usr/include/bits/fcntl.h /usr/include/sys/types.h
sigio.o: /usr/include/endian.h /usr/include/bits/endian.h
sigio.o: /usr/include/sys/select.h /usr/include/bits/select.h
sigio.o: /usr/include/sys/sysmacros.h /usr/include/sys/time.h
sigio.o: /usr/include/bits/time.h /usr/include/errno.h
sigio.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
sigio.o: /usr/include/asm/errno.h /usr/include/stdio.h
sigio.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
sigio.o: /usr/include/libio.h /usr/include/_G_config.h
sigio.o: /usr/include/bits/stdio_lim.h /usr/include/string.h
tdfx_context.o: /usr/include/linux/sched.h /usr/include/asm/param.h
tdfx_context.o: /usr/include/linux/binfmts.h /usr/include/linux/ptrace.h
tdfx_context.o: /usr/include/asm/ptrace.h /usr/include/linux/capability.h
tdfx_context.o: /usr/include/linux/types.h /usr/include/linux/config.h
tdfx_context.o: /usr/include/linux/autoconf.h
tdfx_context.o: /usr/include/linux/posix_types.h /usr/include/linux/stddef.h
tdfx_context.o: /usr/include/asm/posix_types.h /usr/include/asm/types.h
tdfx_context.o: /usr/include/linux/fs.h /usr/include/linux/linkage.h
tdfx_context.o: /usr/include/linux/limits.h /usr/include/linux/wait.h
tdfx_context.o: /usr/include/linux/vfs.h /usr/include/asm/statfs.h
tdfx_context.o: /usr/include/linux/net.h /usr/include/linux/socket.h
tdfx_context.o: /usr/include/asm/socket.h /usr/include/asm/sockios.h
tdfx_context.o: /usr/include/linux/sockios.h /usr/include/linux/uio.h
tdfx_context.o: /usr/include/linux/kdev_t.h /usr/include/linux/ioctl.h
tdfx_context.o: /usr/include/asm/ioctl.h /usr/include/linux/list.h
tdfx_context.o: /usr/include/linux/dcache.h /usr/include/linux/stat.h
tdfx_context.o: /usr/include/linux/cache.h /usr/include/asm/cache.h
tdfx_context.o: /usr/include/asm/atomic.h /usr/include/asm/bitops.h
tdfx_context.o: /usr/include/linux/personality.h /usr/include/linux/threads.h
tdfx_context.o: /usr/include/linux/kernel.h /usr/include/linux/times.h
tdfx_context.o: /usr/include/linux/timex.h /usr/include/asm/timex.h
tdfx_context.o: /usr/include/asm/msr.h /usr/include/asm/system.h
tdfx_context.o: /usr/include/asm/segment.h /usr/include/linux/bitops.h
tdfx_context.o: /usr/include/asm/semaphore.h /usr/include/asm/rwlock.h
tdfx_context.o: /usr/include/asm/page.h /usr/include/linux/smp.h
tdfx_context.o: /usr/include/linux/tty.h /usr/include/linux/sem.h
tdfx_context.o: /usr/include/linux/ipc.h /usr/include/asm/ipcbuf.h
tdfx_context.o: /usr/include/asm/sembuf.h /usr/include/linux/signal.h
tdfx_context.o: /usr/include/asm/signal.h /usr/include/asm/siginfo.h
tdfx_context.o: /usr/include/linux/securebits.h /usr/include/linux/time.h
tdfx_context.o: /usr/include/linux/param.h /usr/include/linux/resource.h
tdfx_context.o: /usr/include/asm/resource.h /usr/include/linux/timer.h
tdfx_context.o: /usr/include/asm/processor.h /usr/include/asm/vm86.h
tdfx_context.o: /usr/include/asm/math_emu.h /usr/include/asm/sigcontext.h
tdfx_context.o: drmP.h tdfx_drv.h
tdfx_drv.o: drmP.h tdfx_drv.h
vm.o: drmP.h
xf86_OSproc.o: /usr/include/X11/Xfuncproto.h
xf86drm.o: /usr/include/stdio.h /usr/include/features.h
xf86drm.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
xf86drm.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
xf86drm.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
xf86drm.o: /usr/include/bits/types.h /usr/include/libio.h
xf86drm.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
xf86drm.o: /usr/include/stdlib.h /usr/include/sys/types.h /usr/include/time.h
xf86drm.o: /usr/include/endian.h /usr/include/bits/endian.h
xf86drm.o: /usr/include/sys/select.h /usr/include/bits/select.h
xf86drm.o: /usr/include/bits/sigset.h /usr/include/sys/sysmacros.h
xf86drm.o: /usr/include/alloca.h /usr/include/unistd.h
xf86drm.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
xf86drm.o: /usr/include/getopt.h /usr/include/string.h /usr/include/ctype.h
xf86drm.o: /usr/include/fcntl.h /usr/include/bits/fcntl.h
xf86drm.o: /usr/include/errno.h /usr/include/bits/errno.h
xf86drm.o: /usr/include/linux/errno.h /usr/include/asm/errno.h
xf86drm.o: /usr/include/signal.h /usr/include/bits/signum.h
xf86drm.o: /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h
xf86drm.o: /usr/include/bits/sigcontext.h /usr/include/asm/sigcontext.h
xf86drm.o: /usr/include/bits/sigstack.h /usr/include/sys/stat.h
xf86drm.o: /usr/include/bits/stat.h /usr/include/sys/ioctl.h
xf86drm.o: /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h
xf86drm.o: /usr/include/asm/ioctl.h /usr/include/bits/ioctl-types.h
xf86drm.o: /usr/include/sys/ttydefaults.h /usr/include/sys/mman.h
xf86drm.o: /usr/include/bits/mman.h /usr/include/sys/time.h
xf86drm.o: /usr/include/bits/time.h xf86drm.h drm.h
xf86drmHash.o: xf86drm.h /usr/include/stdio.h /usr/include/features.h
xf86drmHash.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
xf86drmHash.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
xf86drmHash.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
xf86drmHash.o: /usr/include/bits/types.h /usr/include/libio.h
xf86drmHash.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
xf86drmHash.o: /usr/include/stdlib.h /usr/include/sys/types.h
xf86drmHash.o: /usr/include/time.h /usr/include/endian.h
xf86drmHash.o: /usr/include/bits/endian.h /usr/include/sys/select.h
xf86drmHash.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
xf86drmHash.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
xf86drmRandom.o: xf86drm.h /usr/include/stdio.h /usr/include/features.h
xf86drmRandom.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
xf86drmRandom.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
xf86drmRandom.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
xf86drmRandom.o: /usr/include/bits/types.h /usr/include/libio.h
xf86drmRandom.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
xf86drmRandom.o: /usr/include/stdlib.h /usr/include/sys/types.h
xf86drmRandom.o: /usr/include/time.h /usr/include/endian.h
xf86drmRandom.o: /usr/include/bits/endian.h /usr/include/sys/select.h
xf86drmRandom.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
xf86drmRandom.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
xf86drmSL.o: xf86drm.h /usr/include/stdio.h /usr/include/features.h
xf86drmSL.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
xf86drmSL.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
xf86drmSL.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
xf86drmSL.o: /usr/include/bits/types.h /usr/include/libio.h
xf86drmSL.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
xf86drmSL.o: /usr/include/stdlib.h /usr/include/sys/types.h
xf86drmSL.o: /usr/include/time.h /usr/include/endian.h
xf86drmSL.o: /usr/include/bits/endian.h /usr/include/sys/select.h
xf86drmSL.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
xf86drmSL.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h

View file

@ -629,7 +629,7 @@ static inline void i810_dma_emit_flush(drm_device_t *dev)
i810_kernel_lost_context(dev);
BEGIN_LP_RING(2);
OUT_RING( CMD_REPORT_HEAD );
#if 1
#if 0
OUT_RING( GFX_OP_BREAKPOINT_INTERRUPT );
#else
OUT_RING( GFX_OP_USER_INTERRUPT );
@ -655,6 +655,7 @@ static int i810_flush_queue(drm_device_t *dev)
add_wait_queue(&dev_priv->flush_queue, &entry);
for (;;) {
i810_dma_emit_flush(dev);
if (atomic_read(&dev_priv->flush_done) == 1) break;
if (atomic_read(&dev_priv->flush_done) == 1) break;
curTime = __gettimeinmillis();
if (startTime == 0 || curTime < startTime /*wrap case*/) {
@ -663,7 +664,7 @@ static int i810_flush_queue(drm_device_t *dev)
DRM_ERROR("lockup\n");
goto out_wait_flush;
}
schedule_timeout(HZ/60);
schedule_timeout(HZ*3);
if (signal_pending(current)) {
ret = -EINTR; /* Can't restart */
break;
@ -731,6 +732,7 @@ int i810_lock(struct inode *inode, struct file *filp, unsigned int cmd,
*/
if (!ret) {
#if 0
if (_DRM_LOCKING_CONTEXT(dev->lock.hw_lock->lock)
!= lock.context) {
long j = jiffies - dev->lock.lock_time;
@ -742,6 +744,7 @@ int i810_lock(struct inode *inode, struct file *filp, unsigned int cmd,
schedule_timeout(j);
}
}
#endif
add_wait_queue(&dev->lock.lock_queue, &entry);
for (;;) {
if (!dev->lock.hw_lock) {

View file

@ -58,15 +58,15 @@ typedef struct _xf86drmClipRectRec {
#define I810_USE_BATCH 1
#define I810_DMA_BUF_ORDER 14
#define I810_DMA_BUF_ORDER 12
#define I810_DMA_BUF_SZ (1<<I810_DMA_BUF_ORDER)
#define I810_DMA_BUF_NR 32
#define I810_DMA_BUF_NR 256
#define I810_NR_SAREA_CLIPRECTS 2
/* Each region is a minimum of 64k, and there are at most 128 of them.
/* Each region is a minimum of 64k, and there are at most 64 of them.
*/
#define I810_NR_TEX_REGIONS 128
#define I810_NR_TEX_REGIONS 64
#define I810_LOG_MIN_TEX_REGION_SIZE 16
typedef struct {