aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-09-10drm: move remaining includes in drmP.h to the topDavid Herrmann3-23/+22
Including headers somewhere else but at the top is ugly, deprecated and was used in early days only to speed up compile-times. Those days are over. Make headers independent and then move the inclusions to the top. Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: inline "struct drm_sigdata"David Herrmann2-14/+13
The sigdata structure is only used to group two fields in drm_device. Inline it and make it an unnamed object. Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: drop DRM_DEBUG_CODEDavid Herrmann5-44/+12
DRM_DEBUG_CODE is currently always set, so distributions enable it. The only reason to keep support in code is if developers wanted to disable debug support. Sounds unlikely. All the DRM_DEBUG() printks are still guarded by a drm_debug read. So if its cacheline is read once, they're discarded pretty fast.. There should hardly be any performance penalty, it's even guarded by unlikely(). Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: order includes alphabetically in drmP.hDavid Herrmann1-23/+23
It is hardly possible to review the drmP.h includes, anymore. Order them alphabetically, linux/ first, then asm/ and then local drm/ includes. Since a long time ago, kernel headers have been converted to include required headers themselves. No-one cares whether that means the compiler has to include a header multiple times. In fact, GCC already does some optimization regarding multiple inclusions if a sorrounding #ifndef is present. Signed-off-by: David Herrmann <[email protected]> Acked-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: move __OS_HAS_AGP into drm_agpsupport.hDavid Herrmann2-2/+3
With drm_memory.h gone, there is no header left that uses __OS_HAS_AGP. Move it into drm_agpsupport.h (which is itself included from drmP.h) to hide it harder from public eyes. Signed-off-by: David Herrmann <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: merge drm_memory.h into drm_memory.cDavid Herrmann3-63/+13
The drm_memory.h header is only used to define PAGE_AGP, which is only used in drm_memory.c. Fold the header into drm_memory.c and drop it. Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Daniel Vetter <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: drop __KERNEL__ protection in drmP.hDavid Herrmann1-2/+0
drmP.h is internal to the kernel. No need to keep the __KERNEL__ protection. Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: replace weird conditional includesDavid Herrmann2-9/+2
pte_wrprotect() is only used by drm_vm.c, so move the include there. Also include it unconditionally, all architectures provide this header! Furthermore, replace asm/current.h with sched.h, which includes asm/current.h unconditionally. This way we get the same effect and avoid direct asm/ includes. Furthermore, drop the weird __alpha__ protection. It's safe to include sched.h everywhere (and the wait.h comment doesn't apply, anyway). Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: move AGP definitions harderDavid Herrmann6-29/+32
Move drm_agp_head to drm_agpsupport.h and drm_agp_mem into drm_legacy.h. Unfortunately, drivers still heavily access drm_agp_head so we cannot move it to drm_legacy.h. However, at least it's no longer visible in drmP.h now (it's directly included from it, though). Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: drop unused "struct drm_waitlist"David Herrmann1-11/+0
This structure is unused, drop it. Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: move "struct drm_magic_entry" to drm_auth.cDavid Herrmann3-13/+6
In drm_release(), we currently call drm_remove_magic() if the drm_file has a drm-magic attached. Therefore, once drm_master_release() is called, the magic-list _must_ be empty. By dropping the no-op cleanup, we can move "struct drm_magic_entry" to drm_auth.c and avoid exposing it to all of DRM. Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: move "struct drm_vma_entry" to drm_vm.cDavid Herrmann4-74/+79
Make all the drm_vma_entry handling local to drm_vm.c and hide it from global headers. This requires to extract the inlined legacy drm_vma_entry cleanup into a small helper and also move a weirdly placed drm_vma_info helper into drm_vm.c. Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm: mark drm_buf and drm_map as legacyDavid Herrmann12-133/+136
Move internal declarations to drm_legacy.h and add drm_legacy_*() prefix to all legacy functions. [airlied: add a bit of an explaination to drm_legacy.h] Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-10drm/radeon: move drm_buffer to drm/radeon/David Herrmann6-9/+5
Radeon UMS is the last user of drm_buffer. Move it out of sight so radeon can drop it together with UMS. Signed-off-by: David Herrmann <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-03drm/qxl: Fix crash in eviction from qxl_release_fence_buffer_objectsMaarten Lankhorst1-1/+1
This crash was already here before the conversion, but qxl never leaked hard enough to hit this. Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-03drm/qxl: fix gaping memory holeMaarten Lankhorst1-4/+6
This is how you implement a memory sieve in a driver. ;-) Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-03drm/qxl: Remove release_lock stupidityMaarten Lankhorst2-8/+3
The locking of release_lock was stupid; t should have been be called with fence_lock_irq if it was legitimately used. Unfortunately it never protected anything except the fence implementation correctly. Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-03drm/qxl: enables gem prime helpers for qxl using dummy driver callbacksAndreas Pokorny4-2/+97
As there should not be any other virtual device that might share buffers, the callbacks remain empty stubs. Still prime can be used to transfer buffers between processes that use qxl. Signed-off-by: Andreas Pokorny <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-03drm/qxl: simple crtc page flipping emulated using buffer copyAndreas Pokorny3-4/+79
Signed-off-by: Andreas Pokorny <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2014-09-03Merge branch 'for-airlied-next' of ↵Dave Airlie47-1224/+1347
git://people.freedesktop.org/~mlankhorst/linux into drm-next Merge the move to generic fences for TTM using drivers. * 'for-airlied-next' of git://people.freedesktop.org/~mlankhorst/linux: drm/nouveau: use shared fences for readable objects drm/nouveau: Keep only a single list for validation. drm/ttm: use rcu in core ttm drm/vmwgfx: use rcu in vmw_user_dmabuf_synccpu_grab drm/radeon: use rcu waits in some ioctls drm/nouveau: use rcu in nouveau_gem_ioctl_cpu_prep drm/ttm: flip the switch, and convert to dma_fence drm/qxl: rework to new fence interface drm/nouveau: rework to new fence interface drm/vmwgfx: rework to new fence interface, v2 drm/vmwgfx: get rid of different types of fence_flags entirely drm/radeon: use common fence implementation for fences, v4 drm/ttm: kill off some members to ttm_validate_buffer drm/ttm: add interruptible parameter to ttm_eu_reserve_buffers drm/ttm: kill fence_lock drm/ttm: call ttm_bo_wait while inside a reservation drm/nouveau: require reservations for nouveau_fence_sync and nouveau_bo_fence drm/nouveau: add reservation to nouveau_gem_ioctl_cpu_prep
2014-09-03Merge tag 'drm-intel-next-2014-09-01' of ↵Dave Airlie30-843/+3104
git://anongit.freedesktop.org/drm-intel into drm-next drm-intel-next-2014-08-22: - basic code for execlist, which is the fancy new cmd submission on gen8. Still disabled by default (Ben, Oscar Mateo, Thomas Daniel et al) - remove the useless usage of console_lock for I915_FBDEV=n (Chris) - clean up relations between ctx and ppgtt - clean up ppgtt lifetime handling (Michel Thierry) - various cursor code improvements from Ville - execbuffer code cleanups and secure batch fixes (Chris) - prep work for dev -> dev_priv transition (Chris) - some of the prep patches for the seqno -> request object transition (Chris) - various small improvements all over * tag 'drm-intel-next-2014-09-01' of git://anongit.freedesktop.org/drm-intel: (86 commits) drm/i915: fix suspend/resume for GENs w/o runtime PM support drm/i915: Update DRIVER_DATE to 20140822 drm: fix plane rotation when restoring fbdev configuration drm/i915/bdw: Disable execlists by default drm/i915/bdw: Enable Logical Ring Contexts (hence, Execlists) drm/i915/bdw: Document Logical Rings, LR contexts and Execlists drm/i915/bdw: Print context state in debugfs drm/i915/bdw: Display context backing obj & ringbuffer info in debugfs drm/i915/bdw: Display execlists info in debugfs drm/i915/bdw: Disable semaphores for Execlists drm/i915/bdw: Make sure gpu reset still works with Execlists drm/i915/bdw: Don't write PDP in the legacy way when using LRCs drm/i915: Track cursor changes as frontbuffer tracking flushes drm/i915/bdw: Help out the ctx switch interrupt handler drm/i915/bdw: Avoid non-lite-restore preemptions drm/i915/bdw: Handle context switch events drm/i915/bdw: Two-stage execlist submit process drm/i915/bdw: Write the tail pointer, LRC style drm/i915/bdw: Implement context switching (somewhat) drm/i915/bdw: Emission of requests with logical rings ... Conflicts: drivers/gpu/drm/i915/i915_drv.c
2014-09-02drm/nouveau: use shared fences for readable objectsMaarten Lankhorst6-47/+68
nouveau keeps track in userspace whether a buffer is being written to or being read, but it doesn't use that information. Change this to allow multiple readers on the same bo. Signed-off-by: Maarten Lankhorst <[email protected]> Acked-by: Ben Skeggs <[email protected]>
2014-09-02drm/nouveau: Keep only a single list for validation.Maarten Lankhorst1-62/+34
Maintain the original order to handle VRAM/GART/mixed correctly for <nv50, it's likely not as important on newer cards. Signed-off-by: Maarten Lankhorst <[email protected]> Acked-by: Ben Skeggs <[email protected]>
2014-09-02drm/ttm: use rcu in core ttmMaarten Lankhorst1-63/+13
Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-02drm/vmwgfx: use rcu in vmw_user_dmabuf_synccpu_grabMaarten Lankhorst1-6/+10
Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-02drm/radeon: use rcu waits in some ioctlsMaarten Lankhorst1-6/+16
Signed-off-by: Maarten Lankhorst <[email protected]> Reviewed-by: Christian König <[email protected]>
2014-09-02drm/nouveau: use rcu in nouveau_gem_ioctl_cpu_prepMaarten Lankhorst1-16/+12
With the conversion to the reservation api this should be safe. Signed-off-by: Maarten Lankhorst <[email protected]> Acked-by: Ben Skeggs <[email protected]>
2014-09-02drm/ttm: flip the switch, and convert to dma_fenceMaarten Lankhorst25-386/+197
Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-02drm/qxl: rework to new fence interfaceMaarten Lankhorst9-175/+220
Final driver! \o/ This is not a proper dma_fence because the hardware may never signal anything, so don't use dma-buf with qxl, ever. Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-02drm/nouveau: rework to new fence interfaceMaarten Lankhorst10-205/+383
Signed-off-by: Maarten Lankhorst <[email protected]> Acked-by: Ben Skeggs <[email protected]>
2014-09-02drm/vmwgfx: rework to new fence interface, v2Maarten Lankhorst6-143/+225
Use the new fence interface on vmwgfx too. Signed-off-by: Maarten Lankhorst <[email protected]> --- Changes since v1: Fix a sleeping function called from invalid context in enable_signaling.
2014-09-02drm/vmwgfx: get rid of different types of fence_flags entirelyMaarten Lankhorst5-52/+26
Only one type was ever used. This is needed to simplify the fence support in the next commit. Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-01drm/radeon: use common fence implementation for fences, v4Maarten Lankhorst4-29/+235
Changes since v1: - Kill the sw interrupt dance, add and use radeon_irq_kms_sw_irq_get_delayed instead. - Change custom wait function, lockdep complained about it. Holding exclusive_lock in the wait function might cause deadlocks. Instead do all the processing in .enable_signaling, and wait on the global fence_queue to pick up gpu resets. - Process all fences in radeon_gpu_reset after reset to close a race with the trylock in enable_signaling. Changes since v2: - Small changes to work with the rewritten lockup recovery patches. Changes since v3: - Call radeon_fence_schedule_check when exclusive_lock cannot be acquired to always cause a wake up. - Reset irqs from hangup check. - Drop reading seqno in the callback, use cached value. - Fix indentation in radeon_fence_default_wait - Add a radeon_test_signaled function, drop a few test_bit calls. - Make to_radeon_fence global. Signed-off-by: Maarten Lankhorst <[email protected]> Reviewed-by: Christian König <[email protected]>
2014-09-01drm/ttm: kill off some members to ttm_validate_bufferMaarten Lankhorst4-97/+50
This reorders the list to keep track of what buffers are reserved, so previous members are always unreserved. This gets rid of some bookkeeping that's no longer needed, while simplifying the code some. Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-01drm/ttm: add interruptible parameter to ttm_eu_reserve_buffersMaarten Lankhorst7-22/+24
It seems some drivers really want this as a parameter, like vmwgfx. Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-01drm/ttm: kill fence_lockMaarten Lankhorst17-142/+37
No users are left, kill it off! :D Conversion to the reservation api is next on the list, after that the functionality can be restored with rcu. Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-01drm/ttm: call ttm_bo_wait while inside a reservationMaarten Lankhorst1-13/+12
This is the last remaining function that doesn't use the reservation lock completely to fence off access to a buffer. Signed-off-by: Maarten Lankhorst <[email protected]>
2014-09-01drm/nouveau: require reservations for nouveau_fence_sync and nouveau_bo_fenceMaarten Lankhorst2-4/+15
This will ensure we always hold the required lock when calling those functions. Signed-off-by: Maarten Lankhorst <[email protected]> Acked-by: Ben Skeggs <[email protected]>
2014-09-01drm/nouveau: add reservation to nouveau_gem_ioctl_cpu_prepMaarten Lankhorst1-4/+18
Apart from some code inside ttm itself and nouveau_bo_vma_del, this is the only place where ttm_bo_wait is used without a reservation. Fix this so we can remove the fence_lock later on. After the switch to rcu the reservation lock will be removed again. Signed-off-by: Maarten Lankhorst <[email protected]> Acked-by: Ben Skeggs <[email protected]>
2014-08-28Merge branch 'drm-next-3.18' of git://people.freedesktop.org/~agd5f/linux ↵Dave Airlie3-79/+48
into drm-next Just clearing out my -next queue before I go on vacation. Two UVD improvements that depend on the ttm change you just merged. * 'drm-next-3.18' of git://people.freedesktop.org/~agd5f/linux: drm/radeon: preallocate mem for UVD create/destroy msg drm/radeon: allow UVD to use a second 256MB segment
2014-08-27drm/radeon: preallocate mem for UVD create/destroy msgChristian König1-75/+26
llocating memory for UVD create and destroy messages can fail, which is rather annoying when this happens in the middle of a GPU reset. Try to avoid this condition by preallocating a page for those dummy messages. Signed-off-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
2014-08-27drm/radeon: allow UVD to use a second 256MB segmentChristian König3-5/+23
This improves concurrent stream decoding. Signed-off-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
2014-08-28Merge branch 'drm-next-3.18' of git://people.freedesktop.org/~agd5f/linux ↵Dave Airlie15-184/+531
into drm-next More radeon changes for drm-next. Highlights: - UVD support for older asics - Reset rework in preparation for Maarten's fence patches I have a few more patches which depend on Christian's ttm changes, I'll send them out separately once you've merged the ttm changes. * 'drm-next-3.18' of git://people.freedesktop.org/~agd5f/linux: drm/radeon: drop doing resets in a work item drm/radeon: drop RADEON_FENCE_SIGNALED_SEQ v2 drm/radeon: add timeout argument to radeon_fence_wait_seq v2 drm/radeon: handle lockup in delayed work, v5 drm/radeon: take exclusive_lock in read mode during ring tests, v5 drm/radeon: force fence completion only on problematic rings (v2) drm/radeon: wake up all fences on manual reset drm/radeon: add UVD fw names for older asic drm/radeon: enable RB_ARB before resetting the VCPU drm/radeon: 760G/780V/880V don't have UVD drm/radeon: implement UVD hw workarounds for R6xx v3 drm/radeon: add UVD support for older asics v4 drm/radeon: add set_uvd_clocks callback for r6xx v4 drm/radeon: properly init UVD MC bits on R600 drm/radeon: force UVD buffers into VRAM on RS[78]80 v2 drm/radeon: move the IB test after the AGP fallback
2014-08-28Merge branch 'ttm_pfn' of git://people.freedesktop.org/~deathsimple/linux ↵Dave Airlie26-253/+346
into drm-next pull in placement changes radeon requires. * 'ttm_pfn' of git://people.freedesktop.org/~deathsimple/linux: drm/ttm: move fpfn and lpfn into each placement v2
2014-08-27drm/radeon: drop doing resets in a work itemChristian König4-24/+8
Blocking completely innocent processes with a GPU reset is a pretty bad idea. Just set needs_reset and let the next command submission or fence wait do the job. Signed-off-by: Christian König <[email protected]> Reviewed-by: Maarten Lankhorst <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
2014-08-27drm/radeon: drop RADEON_FENCE_SIGNALED_SEQ v2Christian König2-19/+2
It's causing issues with VMID handling and comparing the fence value two times actually doesn't make handling faster. v2: rebased on reset changes Signed-off-by: Christian König <[email protected]> Reviewed-by: Maarten Lankhorst <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
2014-08-27drm/radeon: add timeout argument to radeon_fence_wait_seq v2Maarten Lankhorst1-20/+28
This makes it possible to wait for a specific amount of time, rather than wait until infinity. v2 (chk): rebased on other changes Signed-off-by: Maarten Lankhorst <[email protected]> Signed-off-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
2014-08-27drm/radeon: handle lockup in delayed work, v5Christian König2-78/+124
v5 (chk): complete rework, start when the first fence is emitted, stop when the last fence is signalled, make it work correctly with GPU resets, cleanup radeon_fence_wait_seq Signed-off-by: Maarten Lankhorst <[email protected]> Signed-off-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
2014-08-27drm/radeon: take exclusive_lock in read mode during ring tests, v5Maarten Lankhorst4-23/+27
This is needed for the next commit, because the lockup detection will need the read lock to run. v4 (chk): split out forced fence completion, remove unrelated changes, add and handle in_reset flag v5 (agd5f): rebase fix Signed-off-by: Maarten Lankhorst <[email protected]> Signed-off-by: Christian König <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
2014-08-27drm/radeon: force fence completion only on problematic rings (v2)Christian König4-15/+8
Instead of resetting all fence numbers, only reset the number of the problematic ring. Split out from a patch from Maarten Lankhorst <[email protected]> v2 (agd5f): rebase build fix Signed-off-by: Christian König <[email protected]> Reviewed-by: Maarten Lankhorst <[email protected]> Signed-off-by: Alex Deucher <[email protected]>