Thomas Hellstrom [Tue, 17 Oct 2006 17:52:34 +0000 (19:52 +0200)]
Add vma list memory usage to memory accounting.
Use byte unit for /proc printout of memory usage for small sizes to be
able to detect memory allocation bugs more easily.
Thomas Hellstrom [Tue, 17 Oct 2006 17:40:57 +0000 (19:40 +0200)]
Add memory usage accounting to avoid DOS problems.
Thomas Hellstrom [Tue, 17 Oct 2006 14:00:25 +0000 (16:00 +0200)]
Implement mm_lock and mm_unlock functions.
The mm_lock function is used when leaving vt. It evicts _all_ buffers.
Buffers with the DRM_BO_NO_MOVE attribute set will be guaranteed to
get the same offset when / if they are rebound.
Thomas Hellstrom [Tue, 17 Oct 2006 09:28:48 +0000 (11:28 +0200)]
Remove the memory manager parameter from the put_block function, as this
makes the client code a lot cleaner. Prepare buffer manager for lock and
unlock calls.
Thomas Hellstrom [Tue, 17 Oct 2006 09:05:37 +0000 (11:05 +0200)]
Extend generality for more memory types.
Fix up init and destruction code.
Thomas Hellstrom [Mon, 16 Oct 2006 12:22:27 +0000 (14:22 +0200)]
Change Intel AGP memory type numbers.
Thomas Hellstrom [Thu, 12 Oct 2006 14:10:47 +0000 (16:10 +0200)]
Bugfixes.
Thomas Hellstrom [Thu, 12 Oct 2006 10:09:16 +0000 (12:09 +0200)]
Simplify the AGP backend interface somewhat.
Fix buffer bound caching policy changing, Allow
on-the-fly changing of caching policy on bound buffers if the hardware
supports it.
Allow drivers to use driver-specific AGP memory types for TTM AGP pages.
Will make AGP drivers much easier to migrate.
Thomas Hellstrom [Wed, 11 Oct 2006 20:21:01 +0000 (22:21 +0200)]
Compatibility code for 2.6.15-2.6.18. It is ugly but a little comfort is that
it will go away in the mainstream kernel.
Some bugfixes, mainly in error paths.
Thomas Hellstrom [Wed, 11 Oct 2006 11:40:35 +0000 (13:40 +0200)]
Big update:
Adapt for new functions in the 2.6.19 kernel.
Remove the ability to have multiple regions in one TTM.
This simplifies a lot of code.
Remove the ability to access TTMs from user space.
We don't need it anymore without ttm regions.
Don't change caching policy for evicted buffers. Instead change it only
when the buffer is accessed by the CPU (on the first page fault).
This tremendously speeds up eviction rates.
Current code is safe for kernels <= 2.6.14.
Should also be OK with 2.6.19 and above.
Thomas Hellstrom [Tue, 10 Oct 2006 08:37:26 +0000 (10:37 +0200)]
Use a nopage-based approach to fault in pfns.
Thomas Hellstrom [Tue, 3 Oct 2006 10:08:07 +0000 (12:08 +0200)]
Get rid of all ugly PTE hacks.
Michel Dänzer [Mon, 2 Oct 2006 13:33:19 +0000 (15:33 +0200)]
Fix type of second argument to spin_lock_irqsave().
(cherry picked from
f6238cf6244b32bd84e3d2819963d7f5473867c8 commit)
Thomas Hellstrom [Mon, 2 Oct 2006 13:06:35 +0000 (15:06 +0200)]
Make the user_token 44-bit for TTMs, and have them occupy a unique file space
starting at 0x00100000000. This will hopefully allow us to use
unmap_mapping_range(). Note that user-space will need
64-bit file offset support.
Thomas Hellstrom [Mon, 2 Oct 2006 12:03:15 +0000 (14:03 +0200)]
Add a buffer object manager for TTM maps.
Thomas Hellstrom [Mon, 2 Oct 2006 11:49:43 +0000 (13:49 +0200)]
Allow for 44 bit user-tokens (or drm_file offsets)
Thomas Hellstrom [Mon, 2 Oct 2006 11:37:54 +0000 (13:37 +0200)]
Add a comment to previos commit.
Thomas Hellstrom [Mon, 2 Oct 2006 11:34:30 +0000 (13:34 +0200)]
Trap and be verbose about a deadlock that occurs with AIGLX and drivers that
use drm_reclaim_buffers_locked().
Felix Kühling [Mon, 2 Oct 2006 08:50:40 +0000 (10:50 +0200)]
drm_rmdraw: Declare id and idx as signed so testing for < 0 works as intended.
(cherry picked from
d58389968124191a546a14b42ef84edc224be23d commit)
Thomas Hellstrom [Fri, 29 Sep 2006 12:21:51 +0000 (14:21 +0200)]
Bump driver date.
Michel Dänzer [Fri, 29 Sep 2006 08:27:29 +0000 (10:27 +0200)]
i915: Only schedule vblank tasklet if there are scheduled swaps pending.
This fixes issues on X server startup with versions of xf86-video-intel that
enable the IRQ before they have a context ID.
(cherry picked from
7af93dd9849442270ec89cb4bbeef5bfd4f9e424 commit)
Michel Dänzer [Thu, 28 Sep 2006 17:13:59 +0000 (19:13 +0200)]
i915: Only initialize IRQ fields in postinstall, not the PIPE_SET ioctl.
Some other minor changes in preparation for actually disabling user interrupts.
Michel Dänzer [Thu, 28 Sep 2006 17:05:58 +0000 (19:05 +0200)]
i915: Bump minor again to differentiate from vsync changes.
Michel Dänzer [Wed, 27 Sep 2006 16:22:10 +0000 (18:22 +0200)]
i915: Avoid mis-counting vblank interrupts when they're only enabled for pipe A.
It looks like 'after a while', I915REG_INT_IDENTITY_R for some reason always has
VSYNC_PIPEB_FLAG set in the interrupt handler, even though pipe B is disabled.
So we only increase dev->vbl_received if the corresponding bit is also set in
dev->vblank_pipe.
(cherry picked from
881ba569929ceafd42e3c86228b0172099083d1d commit)
Michel Dänzer [Mon, 18 Sep 2006 10:15:38 +0000 (12:15 +0200)]
i915: Bump minor for swap scheduling ioctl and secondary vblank support.
(cherry picked from
2627131e5d0c8cd5e3f0db06451c2e7ae7569b1b commit)
Michel Dänzer [Wed, 13 Sep 2006 06:59:35 +0000 (08:59 +0200)]
i915_vblank_swap: Add support for DRM_VBLANK_NEXTONMISS.
(cherry picked from
0356fe260dcf80f6d2d20e3384f2a1f4ee7f5b30 commit)
Michel Dänzer [Fri, 1 Sep 2006 09:48:07 +0000 (11:48 +0200)]
Only return EBUSY after we've established we need to schedule a new swap.
(cherry picked from
50a0284a61d4415c0ebdb02decee76ef3115007a commit)
Michel Dänzer [Fri, 1 Sep 2006 09:35:31 +0000 (11:35 +0200)]
Core vsync: Don't clobber target sequence number when scheduling signal.
It looks like this would have caused signals to always get sent on the next
vertical blank, regardless of the sequence number.
(cherry picked from
cf6b2c5299e9be3542d4deddfd05d5811f11d2ef commit)
Michel Dänzer [Fri, 1 Sep 2006 09:27:14 +0000 (11:27 +0200)]
Core vsync: Add flag DRM_VBLANK_NEXTONMISS.
When this flag is set and the target sequence is missed, wait for the next
vertical blank instead of returning immediately.
(cherry picked from
89e323e4900af84cc33219ad24eb0b435a039d23 commit)
Michel Dänzer [Fri, 1 Sep 2006 09:24:38 +0000 (11:24 +0200)]
Fix 'sequence has passed' condition in i915_vblank_swap().
(cherry picked from
7f09f957d9a61ac107f8fd29128d7899a3e8a228 commit)
Michel Dänzer [Thu, 31 Aug 2006 16:33:04 +0000 (18:33 +0200)]
Add SAREA fileds for determining which pipe to sync window buffer swaps to.
(cherry picked from
c2bdb76814755c9ac6e66a8815f23af0fe4f3a91 commit)
Michel Dänzer [Thu, 31 Aug 2006 16:32:08 +0000 (18:32 +0200)]
Add definition of DRM_VBLANK_SECONDARY.
(cherry picked from
84b38b63f05e04ade8b1ddfb770047fd86de0d64 commit)
Michel Dänzer [Thu, 31 Aug 2006 16:30:55 +0000 (18:30 +0200)]
Make handling of dev_priv->vblank_pipe more robust.
Initialize it to default value if it hasn't been set by the X server yet.
In i915_vblank_pipe_set(), only update dev_priv->vblank_pipe and call
i915_enable_interrupt() if the argument passed from userspace is valid to avoid
corrupting dev_priv->vblank_pipe on invalid arguments.
(cherry picked from
87c57cba1a70221fc570b253bf3b24682ef6b894 commit)
Michel Dänzer [Wed, 30 Aug 2006 17:33:28 +0000 (19:33 +0200)]
DRM_I915_VBLANK_SWAP ioctl: Take drm_vblank_seq_type_t instead of pipe number.
Handle relative as well as absolute target sequence numbers.
Return error if target sequence has already passed, so userspace can deal with
this situation as it sees fit.
On success, return the sequence number of the vertical blank when the buffer
swap is expected to take place.
Also add DRM_IOCTL_I915_VBLANK_SWAP definition for userspace code that may want
to use ioctl() instead of drmCommandWriteRead().
(cherry picked from
d5a0f107511e128658e2d5e15bd7e6215c507f29 commit)
Michel Dänzer [Wed, 30 Aug 2006 17:24:04 +0000 (19:24 +0200)]
Change first valid DRM drawable ID to be 1 instead of 0.
This makes it easier for userspace to know when it needs to allocate an ID.
Also free drawable information memory when it's no longer needed.
(cherry picked from
df7551ef7334d728ec0371423661bb403d3e270a commit)
Michel Dänzer [Mon, 28 Aug 2006 16:19:58 +0000 (18:19 +0200)]
Add copyright notice.
(cherry picked from
d04751facea36cb888c7510b126658fdbc4277d5 commit)
Michel Dänzer [Fri, 25 Aug 2006 17:01:05 +0000 (19:01 +0200)]
i915: Add ioctl for scheduling buffer swaps at vertical blanks.
This uses the core facility to schedule a driver callback that will be called
ASAP after the given vertical blank interrupt with the HW lock held.
(cherry picked from
257771fa290b62d4d2ad896843cf3a207978d0bb commit)
Michel Dänzer [Fri, 25 Aug 2006 16:55:55 +0000 (18:55 +0200)]
Locking and memory management fixes.
(cherry picked from
23d2833aaa37a33b9ddcf06cc796f59befc0d360 commit)
Michel Dänzer [Fri, 25 Aug 2006 16:55:06 +0000 (18:55 +0200)]
Drop tasklet locked driver callback when uninstalling IRQ.
(cherry picked from
b9f3009160d8bd1a26a77d6f1616f1679c7b969d commit)
Michel Dänzer [Wed, 23 Aug 2006 17:00:26 +0000 (19:00 +0200)]
Export drm_get_drawable_info symbol from core.
(cherry picked from
43f8675534c7e95efbc92eaf2c8cc43aef95f125 commit)
Michel Dänzer [Wed, 23 Aug 2006 14:05:47 +0000 (16:05 +0200)]
Hook up DRM_IOCTL_UPDATE_DRAW ioctl.
(cherry picked from
98a89504589427a76c3f5cfa2266962a1a212672 commit)
Michel Dänzer [Wed, 23 Aug 2006 14:04:41 +0000 (16:04 +0200)]
Only reallocate cliprect memory if the number of cliprects changes.
Also improve diagnostic output.
(cherry picked from
af48be1096221d551319c67a9e782b50ef58fefd commit)
Michel Dänzer [Tue, 22 Aug 2006 14:40:07 +0000 (16:40 +0200)]
Add support for tracking drawable information to core
Actually make the existing ioctls for adding and removing drawables do
something useful, and add another ioctl for the X server to update drawable
information. The only kind of drawable information tracked so far is cliprects.
(cherry picked from
29598e5253ff5c085ccf63580fd24b84db848424 commit)
Michel Dänzer [Wed, 16 Aug 2006 13:47:22 +0000 (15:47 +0200)]
Add support for interrupt triggered driver callback with lock held to DRM core.
(cherry picked from
d817cc1f30060fcc4a85a05b2de8a2a1687421b5 commit)
Michel Dänzer [Fri, 11 Aug 2006 16:06:46 +0000 (18:06 +0200)]
Add support for secondary vertical blank interrupt to i915 driver.
When the vertical blank interrupt is enabled for both pipes, pipe A is
considered primary and pipe B secondary. When it's only enabled for one pipe,
it's always considered primary for backwards compatibility.
(cherry picked from
0c7d7f43610f705e8536a949cf2407efaa5ec217 commit)
Michel Dänzer [Fri, 11 Aug 2006 15:57:59 +0000 (17:57 +0200)]
Add support for secondary vertical blank interrupt to DRM core.
(cherry picked from
ab351505f36a6c66405ea7604378268848340a42 commit)
Thomas Hellstrom [Fri, 29 Sep 2006 09:46:45 +0000 (11:46 +0200)]
Add a new buffer flag.
Fix up some comments.
Thomas Hellstrom [Fri, 29 Sep 2006 09:15:59 +0000 (11:15 +0200)]
Fix buffer manager takedown error.
Prepare for the possibility to evict all buffers from vram / agp.
This will be used by the X server when, for example, switching vts.
Thomas Hellstrom [Thu, 28 Sep 2006 10:19:54 +0000 (12:19 +0200)]
Libdrm version bump and naming.
Thomas Hellstrom [Thu, 28 Sep 2006 09:33:03 +0000 (11:33 +0200)]
Don't enable fence / buffer objects on non-linux systems.
Bump driver minor and date.
Thomas Hellstrom [Wed, 27 Sep 2006 17:11:27 +0000 (19:11 +0200)]
Activate error message that was never hit since it was masked
by drm_lock_transfer.
Ifdef out drm_lock_transfer. I see no use for it currently. Should be removed.
Thomas Hellstrom [Wed, 27 Sep 2006 17:07:55 +0000 (19:07 +0200)]
Fix racy buffer object destruction.
Thomas Hellstrom [Wed, 27 Sep 2006 07:31:39 +0000 (09:31 +0200)]
Fix tt fixed size that slipped through in previous commit.
Thomas Hellstrom [Wed, 27 Sep 2006 07:27:31 +0000 (09:27 +0200)]
Adapt to architecture-specific hooks for gatt pages.
Thomas Hellstrom [Tue, 26 Sep 2006 14:00:22 +0000 (16:00 +0200)]
Silence valgrind.
Thomas Hellstrom [Tue, 26 Sep 2006 12:40:11 +0000 (14:40 +0200)]
Remove the call to drm_lock_transfer, since it is not used anymore.
Fix up drm_lock_free to retain the last locking context information.
Thomas Hellstrom [Tue, 26 Sep 2006 12:36:53 +0000 (14:36 +0200)]
Allow for a driver to overload the ttm backend object methods.
Thomas Hellstrom [Mon, 25 Sep 2006 09:51:08 +0000 (11:51 +0200)]
Add /proc filesystem buffer / fence object accounting.
Check for NULL pointer in the i915 flush handler.
Remove i915_sync_flush declaration.
Thomas Hellstrom [Fri, 22 Sep 2006 07:25:36 +0000 (09:25 +0200)]
Fix proc formatting broken by last commit.
GPU lockup error reporting.
Thomas Hellstrom [Wed, 20 Sep 2006 14:31:15 +0000 (16:31 +0200)]
Allow for 64-bit map handles of ttms and buffer objects.
Thomas Hellstrom [Mon, 18 Sep 2006 19:50:00 +0000 (21:50 +0200)]
Fence handler fix
Thomas Hellstrom [Mon, 18 Sep 2006 18:43:31 +0000 (20:43 +0200)]
Alternative implementation of page table zeroing using zap page_range.
(Disabled for now)
Fix bo_wait_idle bug.
Remove stray debug message.
Thomas Hellstrom [Mon, 18 Sep 2006 14:02:33 +0000 (16:02 +0200)]
More verbose error reporting in some cases.
Add a buffer object waitIdle user-space function.
Fix some names and minor glitches.
Thomas Hellstrom [Fri, 15 Sep 2006 14:47:09 +0000 (16:47 +0200)]
Allow a "native type" to be associated with a fence sequence.
In the intel case, we can associate a flush with a sequence.
Thomas Hellstrom [Fri, 15 Sep 2006 09:18:35 +0000 (11:18 +0200)]
Some bugfixes.
Change the fence object interface somewhat to allow some more flexibility.
Make list IOCTLS really restartable.
Try to avoid busy-waits in the kernel using immediate return to user-space with an -EAGAIN.
Thomas Hellstrom [Thu, 14 Sep 2006 14:42:00 +0000 (16:42 +0200)]
Simplify ttm alloc and free.
Thomas Hellstrom [Thu, 14 Sep 2006 10:17:38 +0000 (12:17 +0200)]
Remove the use of reserved pages, and use locked pages instead.
Update compatibility for latest linux versions.
Thomas Hellstrom [Tue, 12 Sep 2006 15:39:44 +0000 (17:39 +0200)]
Fix some debug messages.
Thomas Hellstrom [Tue, 12 Sep 2006 14:28:34 +0000 (16:28 +0200)]
Use lazy fence wait when possible even for RW fences. Saves some CPU.
Lindent.
Thomas Hellstrom [Tue, 12 Sep 2006 10:01:00 +0000 (12:01 +0200)]
More bugfixes.
Disable the i915 IRQ turnoff for now since it seems to be causing problems.
Thomas Hellstrom [Fri, 8 Sep 2006 15:24:38 +0000 (17:24 +0200)]
Various bugfixes.
Thomas Hellstrom [Tue, 5 Sep 2006 17:36:45 +0000 (19:36 +0200)]
Multithreaded application note.
Thomas Hellstrom [Tue, 5 Sep 2006 16:00:25 +0000 (18:00 +0200)]
Fence all unfenced buffers function.
Thomas Hellstrom [Tue, 5 Sep 2006 12:23:18 +0000 (14:23 +0200)]
i915: Only turn on user IRQs when they are needed.
Thomas Hellstrom [Tue, 5 Sep 2006 09:00:52 +0000 (11:00 +0200)]
Fix memory cache initialization.
Thomas Hellstrom [Mon, 4 Sep 2006 20:05:21 +0000 (22:05 +0200)]
Libdrm function headers. Some renaming.
Thomas Hellstrom [Mon, 4 Sep 2006 19:50:12 +0000 (21:50 +0200)]
Buffer object wait IOCTL operation.
Remove option to wait for fence / buffers and block signals.
Thomas Hellstrom [Mon, 4 Sep 2006 14:57:20 +0000 (16:57 +0200)]
Make memory caches global so that they can be used with
multiple heads.
Thomas Hellstrom [Fri, 1 Sep 2006 16:11:34 +0000 (18:11 +0200)]
Lindent drm_bo.c
Thomas Hellstrom [Fri, 1 Sep 2006 16:11:05 +0000 (18:11 +0200)]
Flag bit pattern bugfixes. Remove some error messages.
Thomas Hellstrom [Fri, 1 Sep 2006 14:38:06 +0000 (16:38 +0200)]
Export buffer info on map and validate ioctls.
Add an info ioctl operation.
Thomas Hellstrom [Fri, 1 Sep 2006 13:41:55 +0000 (15:41 +0200)]
Bugfixes,
Memory allocation optimizations.
Buffer manager takedown.
Thomas Hellstrom [Fri, 1 Sep 2006 09:23:21 +0000 (11:23 +0200)]
Various bugfixes.
Thomas Hellstrom [Thu, 31 Aug 2006 19:42:29 +0000 (21:42 +0200)]
Validation and fencing.
Thomas Hellstrom [Thu, 31 Aug 2006 13:36:40 +0000 (15:36 +0200)]
Remove the buffer manager mutex. Use dev->struct_mutex instead.
Add a function to free buffers on hold for destruction if their
fence object has expired.
Add a timer to periodically call that function when there are
buffers pending deletion.
Thomas Hellstrom [Thu, 31 Aug 2006 12:10:13 +0000 (14:10 +0200)]
More mapping synchronization.
libdrm validate and fencing functions.
Thomas Hellstrom [Wed, 30 Aug 2006 19:31:38 +0000 (21:31 +0200)]
Lindenting drm_bo.c and drm_ttm.c
Thomas Hellstrom [Wed, 30 Aug 2006 19:30:47 +0000 (21:30 +0200)]
Buffer object binding.
Some code reordering.
Thomas Hellstrom [Wed, 30 Aug 2006 18:23:40 +0000 (20:23 +0200)]
Buffer eviction.
Reworked map refcounting so that any process waiting on buffer object unmap
will allow in other processes to unmap the buffer object.
Thomas Hellstrom [Wed, 30 Aug 2006 15:40:07 +0000 (17:40 +0200)]
Remove the buffer object hint field and use it only
as an argument.
Validate stub.
Thomas Hellstrom [Wed, 30 Aug 2006 13:11:50 +0000 (15:11 +0200)]
Add missing map flags.
Thomas Hellstrom [Wed, 30 Aug 2006 13:08:40 +0000 (15:08 +0200)]
Buffer object mapping and mapping synchronization for multiple clients.
Thomas Hellstrom [Wed, 30 Aug 2006 11:04:08 +0000 (13:04 +0200)]
Memory manager init and takedown.
Thomas Hellstrom [Wed, 30 Aug 2006 07:57:35 +0000 (09:57 +0200)]
Buffer object reply fill in.
Lindent of drm_bo.c drm_ttm.c
Thomas Hellstrom [Tue, 29 Aug 2006 19:57:37 +0000 (21:57 +0200)]
Part of buffer object libdrm interface.
Thomas Hellstrom [Tue, 29 Aug 2006 16:40:08 +0000 (18:40 +0200)]
Checkpoint commit. Buffer object flags and IOCTL argument list.
Thomas Hellstrom [Tue, 29 Aug 2006 12:52:02 +0000 (14:52 +0200)]
Checkpoint ttm addition to buffer objects.
Thomas Hellstrom [Tue, 29 Aug 2006 08:45:34 +0000 (10:45 +0200)]
64-bit IOCTL integer (Michel Dänzer & Brian Paul)
Thomas Hellstrom [Mon, 28 Aug 2006 15:51:53 +0000 (17:51 +0200)]
Buffer object creation.
Thomas Hellstrom [Mon, 28 Aug 2006 14:36:37 +0000 (16:36 +0200)]
Proper TTM dereferencing
Initial buffer object creation.