aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2010-10-06Merge remote branch 'korg/drm-fixes' into drm-vmware-nextDave Airlie81-375/+645
necessary for some of the vmware fixes to be pushed in. Conflicts: drivers/gpu/drm/drm_gem.c drivers/gpu/drm/i915/intel_fb.c include/drm/drmP.h
2010-10-06Merge remote branch 'intel/drm-intel-next' of ../drm-next into drm-core-nextDave Airlie51-5648/+6341
* 'intel/drm-intel-next' of ../drm-next: (266 commits) drm/i915: Avoid circular locking from intel_fbdev_fini() drm/i915: mark display port DPMS state as 'ON' when enabling output drm/i915: Skip pread/pwrite if size to copy is 0. drm/i915: avoid struct mutex output_poll mutex lock loop on unload drm/i915: Rephrase pwrite bounds checking to avoid any potential overflow drm/i915: Sanity check pread/pwrite drm/i915: Use pipe state to tell when pipe is off drm/i915: vblank status not valid while training display port drivers/gpu/drm/i915/i915_gem.c: Add missing error handling code drm/i915: Don't mask the return code whilst relocating. drm/i915: If the GPU hangs twice within 5 seconds, declare it wedged. drm/i915: Only print 'generating error event' if we actually are drm/i915: Try to reset gen2 devices. drm/i915: Clear fence registers on GPU reset drm/i915: Force the domain to CPU on unbinding whilst wedged. drm: Move the GTT accounting to i915 drm/i915: Fix refleak during eviction. i915: Added function to initialize VBT settings drm/i915: Remove redundant deletion of obj->gpu_write_list drm/i915: Make get/put pages static ...
2010-10-04drm/i915: Avoid circular locking from intel_fbdev_fini()Chris Wilson3-7/+4
lockdep spots that the fb_info->lock takes the dev->struct_mutex during init (due to the device probing) and so we can not hold dev->struct_mutex when unregistering the framebuffer. Simply reverse the order of initialisation during cleanup and so do the intel_fbdev_fini() before the intel_modeset_cleanup. Signed-off-by: Chris Wilson <[email protected]>
2010-10-04drm/i915: mark display port DPMS state as 'ON' when enabling outputKeith Packard1-0/+1
The display port DPMS state is tracked internally in the display port driver so that when a hotplug event comes along, the driver can know whether to try retraining the link. This doesn't work well if the driver never sets the DPMS state to ON when the output is enabled. Signed-off-by: Keith Packard <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-10-04drm/i915: Skip pread/pwrite if size to copy is 0.Chris Wilson1-7/+13
Signed-off-by: Chris Wilson <[email protected]>
2010-10-04Merge branch 'drm-intel-fixes' into drm-intel-nextChris Wilson1-20/+24
2010-10-04drm/i915: avoid struct mutex output_poll mutex lock loop on unloadKeith Packard1-1/+1
Cancel the output polling work proc before acquiring the struct mutex to avoid acquiring the work proc mutex with the struct mutex held. This avoids inverting the lock order seen when the work proc runs. Signed-off-by: Keith Packard <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-10-03drm/i915: Rephrase pwrite bounds checking to avoid any potential overflowChris Wilson1-12/+4
... and do the same for pread. Signed-off-by: Chris Wilson <[email protected]> Cc: [email protected]
2010-10-03drm/i915: Sanity check pread/pwriteChris Wilson1-8/+20
Move the access control up from the fast paths, which are no longer universally taken first, up into the caller. This then duplicates some sanity checking along the slow paths, but is much simpler. Tracked as CVE-2010-2962. Reported-by: Kees Cook <[email protected]> Signed-off-by: Chris Wilson <[email protected]> Cc: [email protected]
2010-10-03Merge branch 'drm-intel-fixes' into drm-intel-nextChris Wilson7-59/+74
Conflicts: drivers/gpu/drm/i915/i915_gem_evict.c drivers/gpu/drm/i915/intel_display.c drivers/gpu/drm/i915/intel_dp.c
2010-10-03drm/i915: Use pipe state to tell when pipe is offKeith Packard2-25/+38
Instead of waiting for the display line value to settle, we can simply wait for the pipe configuration register 'state' bit to turn off. Contrarywise, disabling the plane will not cause the display line value to stop changing, so instead we wait for the vblank interrupt bit to get set. And, we only do this when we're not about to wait for the pipe to turn off. Signed-off-by: Keith Packard <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-10-03drm/i915: vblank status not valid while training display portKeith Packard1-10/+9
While the display port is in training mode, vblank interrupts don't occur. Because we have to wait for the display port output to turn on before starting the training sequence, enable the output in 'normal' mode so that we can tell when a vblank has occurred, then start the training sequence. Signed-off-by: Keith Packard <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-10-02drivers/gpu/drm/i915/i915_gem.c: Add missing error handling codeJulia Lawall1-0/+2
Extend the error handling code with operations found in other nearby error handling code A simplified version of the sematic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r exists@ @r@ statement S1,S2,S3; constant C1,C2,C3; @@ *if (...) {... S1 return -C1;} ... *if (...) {... when != S1 return -C2;} ... *if (...) {... S1 return -C3;} // </smpl> Signed-off-by: Julia Lawall <[email protected]> Signed-off-by: Chris Wilson <[email protected]> Cc: [email protected]
2010-10-02drm/i915: Don't mask the return code whilst relocating.Chris Wilson1-1/+1
The return from move_to_gtt_domain() may indicate a pending signal which needs to handled as opposed to an actual error, for instance, so report the original return value rather than forcing an EINVAL. Signed-off-by: Chris Wilson <[email protected]>
2010-10-01drm/i915: If the GPU hangs twice within 5 seconds, declare it wedged.Chris Wilson2-6/+11
The issue is that we may become stuck executing a long running shader and continually attempt to reset the GPU. (Or maybe we tickle some bug and need to break the vicious cycle.) So if we are detect a second hang within 5 seconds, give up trying to programme the GPU and report it wedged. Signed-off-by: Chris Wilson <[email protected]>
2010-10-01drm/i915: Only print 'generating error event' if we actually areChris Wilson1-2/+3
Signed-off-by: Chris Wilson <[email protected]>
2010-10-01drm/i915: Try to reset gen2 devices.Chris Wilson2-0/+44
So far only found registers for i830, i845, i865 and one of those has no effect on i865! At this moment in time, attempting to reset i8xx is a little optimistic... Signed-off-by: Chris Wilson <[email protected]>
2010-10-01drm/i915: Clear fence registers on GPU resetChris Wilson3-3/+15
When the GPU is reset, the fence registers are invalidated, so release the objects and clear them out. Signed-off-by: Chris Wilson <[email protected]>
2010-10-01drm/i915: Force the domain to CPU on unbinding whilst wedged.Chris Wilson1-0/+4
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30083 Reported-by: Sitsofe Wheeler <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-10-01drm: Move the GTT accounting to i915Chris Wilson8-72/+111
Only drm/i915 does the bookkeeping that makes the information useful, and the information maintained is driver specific, so move it out of the core and into its single user. Signed-off-by: Chris Wilson <[email protected]> Cc: Dave Airlie <[email protected]>
2010-10-01vmwgfx: Fix fb VRAM pinning failure due to fragmentationThomas Hellstrom1-0/+5
If the soon-to-be scanout buffer is partly covering the intended VRAM region, move and pin will fail. In that case, just move it out to system before attempting to move it in again. Signed-off-by: Thomas Hellstrom <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-10-01vmwgfx: Remove initialisation of dev::devnameThomas Hellstrom1-6/+0
The removed code causes oopses with newer drms on master drop. Signed-off-by: Thomas Hellstrom <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-10-01vmwgfx: Enable use of the vblank systemThomas Hellstrom4-31/+49
This is to avoid accessing uninitialized data during drm_irq_uninstall and vblank ioctls. At the same time, enable error check from drm_kms_init which previously appeared to ignore all errors. Signed-off-by: Thomas Hellstrom <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-10-01vmwgfx: vt-switch (master drop) fixesThomas Hellstrom5-13/+115
We add an option not to enable fbdev, this option is off (0) by default. Not enabling fbdev at load time makes it possible to co-operate with vga16fb and vga text mode when VT switching. However, if 3D resources are active when VT switching, we're currently not able to switch over to vga, due to device limitations. This fixes a bug where we previously lost 3D state during VT switch. Signed-off-by: Thomas Hellstrom <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-10-01drm/vmwgfx: Fix breakage introduced by commit "drm: block userspace under ↵Thomas Hellstrom1-1/+1
allocating buffer and having drivers overwrite it (v2)" The mentioned commit breaks the vmwgfx ioctl argument sanity check. Signed-off-by: Thomas Hellstrom <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-10-01drm: Hold the mutex when dropping the last GEM reference (v2)Chris Wilson2-26/+6
In order to be fully threadsafe we need to check that the drm_gem_object refcount is still 0 after acquiring the mutex in order to call the free function. Otherwise, we may encounter scenarios like: Thread A: Thread B: drm_gem_close unreference_unlocked kref_put mutex_lock ... i915_gem_evict ... kref_get -> BUG ... i915_gem_unbind ... kref_put ... i915_gem_object_free ... mutex_unlock mutex_lock i915_gem_object_free -> BUG i915_gem_object_unbind kfree mutex_unlock Note that no driver is currently using the free_unlocked vfunc and it is scheduled for removal, hasten that process. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30454 Reported-and-Tested-by: Magnus Kessler <[email protected]> Signed-off-by: Chris Wilson <[email protected]> Cc: [email protected] Signed-off-by: Dave Airlie <[email protected]>
2010-10-01drm/i915: Fix refleak during eviction.Chris Wilson1-25/+20
Now that we hold onto a reference whilst evicting objects, we need to be sure that we drop all the references taken -- even on the error paths. Signed-off-by: Chris Wilson <[email protected]>
2010-10-01drm/gem: handlecount isn't really a kref so don't make it one.Dave Airlie11-34/+33
There were lots of places being inconsistent since handle count looked like a kref but it really wasn't. Fix this my just making handle count an atomic on the object, and have it increase the normal object kref. Now i915/radeon/nouveau drivers can drop the normal reference on userspace object creation, and have the handle hold it. This patch fixes a memory leak or corruption on unload, because the driver had no way of knowing if a handle had been actually added for this object, and the fbcon object needed to know this to clean itself up properly. Reviewed-by: Chris Wilson <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-09-30i915: Added function to initialize VBT settingsSimon Que1-13/+23
Added a function that sets the LVDS values to default settings. This will be called by intel_init_bios before checking for the VBT (video BIOS table). The default values are thus loaded regardless of whether a VBT is found. The default settings in each parse function have been moved to the new function. This consolidates all the default settings into one place. The default dither bit value has been changed from 0 to 1. We can assume that display devices will want dithering enabled. Signed-off-by: Simon Que <[email protected]> Acked-by: Olof Johansson <[email protected]> [ickle: fixup for -next] Signed-off-by: Chris Wilson <[email protected]>
2010-09-30drm/i915: Remove redundant deletion of obj->gpu_write_listChris Wilson1-2/+0
At that point as the object is no longer in any GPU write domain it must not be on the list, so the list_del() is redundant. Signed-off-by: Chris Wilson <[email protected]>
2010-09-30drm/i915: Make get/put pages staticChris Wilson3-20/+21
Signed-off-by: Chris Wilson <[email protected]>
2010-09-30drm/i915/debugfs: Include list totalsChris Wilson1-2/+9
Signed-off-by: Chris Wilson <[email protected]>
2010-09-30drm/i915: Report the deferred free list in debugfsChris Wilson1-1/+7
Signed-off-by: Chris Wilson <[email protected]>
2010-09-30drm/i915/debug: Convert i915_verify_active() to scan all listsChris Wilson4-39/+113
... and check more regularly. Signed-off-by: Chris Wilson <[email protected]>
2010-09-30drm: i810/i830: fix locked ioctl variantArnd Bergmann2-2/+2
The i810 and i830 device drivers may replace their file operations on an open file descriptor. My previous patch to move the BKL out of the common DRM code into these drivers only caught the default file operations, not the ones that actually end up being used. Found while trying to come up with a way to kill the BKL for good in these drivers. Signed-off-by: Arnd Bergmann <[email protected]> Signed-off-by: Dave Airlie <[email protected]>
2010-09-29drm/i915: Avoid blocking the kworker thread on a stuck mutexChris Wilson1-1/+6
Just reschedule the retire requests again if the device is currently busy. The request list will be pruned along other paths so will never grow unbounded and so we can afford to miss the occasional pruning. Signed-off-by: Chris Wilson <[email protected]>
2010-09-29drm/i915/debug: Remove default WATCH_BUFChris Wilson3-53/+3
Replaced by tracepoints. Signed-off-by: Chris Wilson <[email protected]>
2010-09-29drm/i915/debug: Remove defunct WATCH_LRUChris Wilson4-56/+0
This has bitrotted through inuse and superseded by tracing and debugfs. Signed-off-by: Chris Wilson <[email protected]>
2010-09-28drm/i915/dvo: Fix panel and DDC i2c pinsChris Wilson1-9/+3
Signed-off-by: Chris Wilson <[email protected]>
2010-09-28drm/i915: Tidy dvo_ch7017 and print out which chip we detectChris Wilson1-36/+27
Signed-off-by: Chris Wilson <[email protected]>
2010-09-28drm/i915: Disable LVDS i2c probing when using GPIO bit bangingChris Wilson2-0/+7
This check only appears to succeed when using GMBUS, so we need to skip it if we have fallen back to using GPIO bit banging. Signed-off-by: Chris Wilson <[email protected]>
2010-09-28Merge branch 'drm-intel-fixes' into drm-intel-nextChris Wilson3-13/+10
2010-09-28MAINTAINERS: Add contact details for drm/i915Chris Wilson1-0/+9
Signed-off-by: Chris Wilson <[email protected]>
2010-09-28drm/i915: Use i2c bit banging instead of GMBUSChris Wilson1-0/+3
There are several reported instances of GMBUS failing to successfully read the EDID, so revert back to bit banging until the issue is resolved. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30371 Signed-off-by: Chris Wilson <[email protected]>
2010-09-28drm/i915/sdvo: Fix GMBUSificationChris Wilson5-196/+339
Besides a couple of bugs when writing more than a single byte along the GMBUS, SDVO was completely failing whilst trying to use GMBUS, so use bit banging instead. Signed-off-by: Chris Wilson <[email protected]>
2010-09-28Revert "drm/i915: Drop ring->lazy_request"Chris Wilson2-13/+35
With multiple rings generating requests independently, the outstanding requests must also be track independently. Reported-by: Wang Jinjin <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30380 Signed-off-by: Chris Wilson <[email protected]>
2010-09-28drm/radeon/kms: add quirk for MSI K9A2GM motherboardAlex Deucher1-0/+9
Board has no digital connectors Reported-by: Andy Walls <[email protected]> Tested-by: Andy Walls <[email protected]> Signed-off-by: Alex Deucher <[email protected]> Cc: [email protected] Signed-off-by: Dave Airlie <[email protected]>
2010-09-28drm/radeon/kms: fix potential segfault in r600_ioctl_wait_idleAlex Deucher1-1/+2
radeon_gem_wait_idle_ioctl can apparently get called prior to the vram page being set up or even if accel if false, so make sure it's valid before using it. Should fix: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=597636 https://bugs.freedesktop.org/show_bug.cgi?id=29834 Signed-off-by: Alex Deucher <[email protected]> Cc: [email protected] Signed-off-by: Dave Airlie <[email protected]>
2010-09-28drm: Prune GEM vma entriesChris Wilson3-11/+27
Hook the GEM vm open/close ops into the generic drm vm open/close so that the private vma entries are created and destroy appropriately. Fixes the leak of the drm_vma_entries during the lifetime of the filp. Reported-by: Matt Mackall <[email protected]> Cc: Jesse Barnes <[email protected]> Signed-off-by: Chris Wilson <[email protected]> Acked-by: Jesse Barnes <[email protected]> Cc: [email protected] Signed-off-by: Dave Airlie <[email protected]>
2010-09-27drm/i915: fix GMCH power reportingJesse Barnes1-3/+3
The IPS driver needs to know the current power consumption of the GMCH in order to make decisions about when to increase or decrease the CPU and/or GPU power envelope. So fix up the divisions to save the results so the numbers are actually correct (contrary to some earlier comments and code, these functions do not modify the first argument and use it for the result). Signed-off-by: Jesse Barnes <[email protected]> Signed-off-by: Chris Wilson <[email protected]> Cc: [email protected]