summaryrefslogtreecommitdiff
path: root/linux-core
AgeCommit message (Expand)Author
2008-05-28[intel-gem] Clean up active/inactive/flushing list debugging.Keith Packard
2008-05-29modesetting: reorganise code into core and helper functions.Dave Airlie
2008-05-29modeset: disable radeon ms by defaultDave Airlie
2008-05-28Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into mode...Alan Hourihane
2008-05-28i915: unmap BIOS when we're done with itJesse Barnes
2008-05-28radeon: split microcode out into a separate header file.Dave Airlie
2008-05-27[intel-gem] Replace idlelock usage with real lock acquisition.Eric Anholt
2008-05-26[intel-gem] Must hold DRM lock while setting object domainKeith Packard
2008-05-26[i915] leave interrupts masked off when not in use.Keith Packard
2008-05-25[intel-gem] Add DRM_I915_GEM_BUSY ioctl to check for idle buffers.Keith Packard
2008-05-25[intel-gem] Compute npages instead of nbytes in flush_pwriteKeith Packard
2008-05-25[intel-gem] replace call to jiffies_to-msec with simple inlineKeith Packard
2008-05-23i915: do a better job of parsing VBIOS dataJesse Barnes
2008-05-23drm_mode_debug_printmodeline doesn't need struct drm_device *Jesse Barnes
2008-05-22[intel-gem] Encourage multiple caches to hold read dataKeith Packard
2008-05-22[gem] Use CPU domain for new or pageable objectsKeith Packard
2008-05-22[intel-gem] Force ring retire by emiting flush before user-interrupt.Keith Packard
2008-05-22[intel-gem] invalidate ring locals for pin/unpin/set_domain/free functionsKeith Packard
2008-05-22[gem] Release GEM buffers from work task scheduled from IRQ.Eric Anholt
2008-05-22i915: check dummy page before freeingHong Liu
2008-05-21[gem] Replace ring throttling hack with actual time measurement.Eric Anholt
2008-05-21[gem] Fix bad test for list_for_each completion.Eric Anholt
2008-05-21[gem] Hold a reference on the object in i915_gem_wait_space.Eric Anholt
2008-05-21[intel-gem] invalidate ring locals for pin/unpin/set_domain/free functionsKeith Packard
2008-05-20[gem] Use a separate sequence number field from classic/ttmEric Anholt
2008-05-20[gem] Rename sequence numbers from "cookie" to "seqno"Eric Anholt
2008-05-20[gem] Clean up active/inactive list handling using helper functions.Eric Anholt
2008-05-15[gem] Hold dev->struct_mutex to protect structure data.Eric Anholt
2008-05-15[gem] Rename the GTT LRU lists to active (executing) and inactive (idle).Eric Anholt
2008-05-15[gem] typo fix in comment.Eric Anholt
2008-05-14ati_pcigart: oops wrong way around not that it actually matteredDave Airlie
2008-05-14ati_pcigart: stop working in the evenings you mess up too oftenDave Airlie
2008-05-14Revert "ati_pcigart: fixup properly this version might even work"Dave Airlie
2008-05-14ati_pcigart: fixup properly this version might even workDave Airlie
2008-05-14ati_pcigart: fill out 40-bit gart table support properlyDave Airlie
2008-05-13i915: register definition & header file cleanupJesse Barnes
2008-05-12i915: TV hotplug fixesJesse Barnes
2008-05-12[GEM] Typo (and thinking) fixes in drm-gem.txt and doxygen.Eric Anholt
2008-05-12[intel] Minor kludge -- wait for the ring to be nearly empty before queuingKeith Packard
2008-05-12[gem] Set write domain to CPU when doing pwrite.Keith Packard
2008-05-12[gem] Clarify use of explicit domain control. Remove Gen3 from I-cache usage.Keith Packard
2008-05-12fix kernel oops when removing fbHong Liu
2008-05-12free dummy read page if fail to init mmHong Liu
2008-05-12drm: remove root only from a lot of drm ioctls to get stuff running as non-rootDave Airlie
2008-05-12drm: masters are always authenticatedDave Airlie
2008-05-12drm: fix oops on reading proc file with no masterDave Airlie
2008-05-11[GEM] Make pread/pwrite manage memory domains. No luck with movnti though.Keith Packard
2008-05-10[intel-GEM] exec list can contain pinned, lru cannot.Keith Packard
2008-05-10Merge commit 'anholt/drm-gem' into drm-gemKeith Packard
2008-05-10[GEM] Add drm-gem.txtKeith Packard
span class="hl opt">("%s\n", __FUNCTION__); if (atomic_read(&dev_priv->irq_received) >= irq_nr) return 0; dev_priv->sarea_priv->perf_boxes |= I830_BOX_WAIT; add_wait_queue(&dev_priv->irq_queue, &entry); for (;;) { current->state = TASK_INTERRUPTIBLE; if (atomic_read(&dev_priv->irq_received) >= irq_nr) break; if((signed)(end - jiffies) <= 0) { DRM_ERROR("timeout iir %x imr %x ier %x hwstam %x\n", I830_READ16( I830REG_INT_IDENTITY_R ), I830_READ16( I830REG_INT_MASK_R ), I830_READ16( I830REG_INT_ENABLE_R ), I830_READ16( I830REG_HWSTAM )); ret = -EBUSY; /* Lockup? Missed irq? */ break; } schedule_timeout(HZ*3); if (signal_pending(current)) { ret = -EINTR; break; } } current->state = TASK_RUNNING; remove_wait_queue(&dev_priv->irq_queue, &entry); return ret; } /* Needs the lock as it touches the ring. */ int i830_irq_emit( struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg ) { drm_file_t *priv = filp->private_data; drm_device_t *dev = priv->dev; drm_i830_private_t *dev_priv = dev->dev_private; drm_i830_irq_emit_t emit; int result; if(!_DRM_LOCK_IS_HELD(dev->lock.hw_lock->lock)) { DRM_ERROR("i830_irq_emit called without lock held\n"); return -EINVAL; } if ( !dev_priv ) { DRM_ERROR( "%s called with no initialization\n", __FUNCTION__ ); return -EINVAL; } if (copy_from_user( &emit, (drm_i830_irq_emit_t __user *)arg, sizeof(emit) )) return -EFAULT; result = i830_emit_irq( dev ); if ( copy_to_user( emit.irq_seq, &result, sizeof(int) ) ) { DRM_ERROR( "copy_to_user\n" ); return -EFAULT; } return 0; } /* Doesn't need the hardware lock. */ int i830_irq_wait( struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg ) { drm_file_t *priv = filp->private_data; drm_device_t *dev = priv->dev; drm_i830_private_t *dev_priv = dev->dev_private; drm_i830_irq_wait_t irqwait; if ( !dev_priv ) { DRM_ERROR( "%s called with no initialization\n", __FUNCTION__ ); return -EINVAL; } if (copy_from_user( &irqwait, (drm_i830_irq_wait_t __user *)arg, sizeof(irqwait) )) return -EFAULT; return i830_wait_irq( dev, irqwait.irq_seq ); } /* drm_dma.h hooks */ void i830_driver_irq_preinstall( drm_device_t *dev ) { drm_i830_private_t *dev_priv = (drm_i830_private_t *)dev->dev_private; I830_WRITE16( I830REG_HWSTAM, 0xffff ); I830_WRITE16( I830REG_INT_MASK_R, 0x0 ); I830_WRITE16( I830REG_INT_ENABLE_R, 0x0 ); atomic_set(&dev_priv->irq_received, 0); atomic_set(&dev_priv->irq_emitted, 0); init_waitqueue_head(&dev_priv->irq_queue); } void i830_driver_irq_postinstall( drm_device_t *dev ) { drm_i830_private_t *dev_priv = (drm_i830_private_t *)dev->dev_private; I830_WRITE16( I830REG_INT_ENABLE_R, 0x2 ); } void i830_driver_irq_uninstall( drm_device_t *dev ) { drm_i830_private_t *dev_priv = (drm_i830_private_t *)dev->dev_private; if (!dev_priv) return; I830_WRITE16( I830REG_INT_MASK_R, 0xffff ); I830_WRITE16( I830REG_INT_ENABLE_R, 0x0 ); }