summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote branch 'korg/drm-fixes' into drm-vmware-nextDave Airlie2010-10-062-5/+5
|\ | | | | | | | | | | | | | | | | 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
| * drm/gem: handlecount isn't really a kref so don't make it one.Dave Airlie2010-10-012-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <chris@chris-wilson.co.uk> Signed-off-by: Dave Airlie <airlied@redhat.com>
* | drm/i915: Avoid circular locking from intel_fbdev_fini()Chris Wilson2010-10-043-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 <chris@chris-wilson.co.uk>
* | drm/i915: mark display port DPMS state as 'ON' when enabling outputKeith Packard2010-10-041-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 <keithp@keithp.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | drm/i915: Skip pread/pwrite if size to copy is 0.Chris Wilson2010-10-041-7/+13
| | | | | | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | Merge branch 'drm-intel-fixes' into drm-intel-nextChris Wilson2010-10-041-20/+24
|\ \
| * | drm/i915: Rephrase pwrite bounds checking to avoid any potential overflowChris Wilson2010-10-031-12/+4
| | | | | | | | | | | | | | | | | | | | | ... and do the same for pread. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
| * | drm/i915: Sanity check pread/pwriteChris Wilson2010-10-031-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 <kees@ubuntu.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
* | | drm/i915: avoid struct mutex output_poll mutex lock loop on unloadKeith Packard2010-10-041-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 <keithp@keithp.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | Merge branch 'drm-intel-fixes' into drm-intel-nextChris Wilson2010-10-037-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
| * | drm/i915: Use pipe state to tell when pipe is offKeith Packard2010-10-032-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 <keithp@keithp.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
| * | drm/i915: vblank status not valid while training display portKeith Packard2010-10-031-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 <keithp@keithp.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
| * | drivers/gpu/drm/i915/i915_gem.c: Add missing error handling codeJulia Lawall2010-10-021-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 <julia@diku.dk> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
| * | drm/i915: Fix refleak during eviction.Chris Wilson2010-10-011-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 <chris@chris-wilson.co.uk>
* | | drm/i915: Don't mask the return code whilst relocating.Chris Wilson2010-10-021-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 <chris@chris-wilson.co.uk>
* | | drm/i915: If the GPU hangs twice within 5 seconds, declare it wedged.Chris Wilson2010-10-012-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 <chris@chris-wilson.co.uk>
* | | drm/i915: Only print 'generating error event' if we actually areChris Wilson2010-10-011-2/+3
| | | | | | | | | | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm/i915: Try to reset gen2 devices.Chris Wilson2010-10-012-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 <chris@chris-wilson.co.uk>
* | | drm/i915: Clear fence registers on GPU resetChris Wilson2010-10-013-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 <chris@chris-wilson.co.uk>
* | | drm/i915: Force the domain to CPU on unbinding whilst wedged.Chris Wilson2010-10-011-0/+4
| | | | | | | | | | | | | | | | | | Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30083 Reported-by: Sitsofe Wheeler <sitsofe@yahoo.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm: Move the GTT accounting to i915Chris Wilson2010-10-013-34/+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 <chris@chris-wilson.co.uk> Cc: Dave Airlie <airlied@redhat.com>
* | | i915: Added function to initialize VBT settingsSimon Que2010-09-301-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 <sque@chromium.org> Acked-by: Olof Johansson <olof@lixom.net> [ickle: fixup for -next] Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm/i915: Remove redundant deletion of obj->gpu_write_listChris Wilson2010-09-301-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 <chris@chris-wilson.co.uk>
* | | drm/i915: Make get/put pages staticChris Wilson2010-09-303-20/+21
| | | | | | | | | | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm/i915/debugfs: Include list totalsChris Wilson2010-09-301-2/+9
| | | | | | | | | | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm/i915: Report the deferred free list in debugfsChris Wilson2010-09-301-1/+7
| | | | | | | | | | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm/i915/debug: Convert i915_verify_active() to scan all listsChris Wilson2010-09-304-39/+113
| | | | | | | | | | | | | | | | | | ... and check more regularly. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm/i915: Avoid blocking the kworker thread on a stuck mutexChris Wilson2010-09-291-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 <chris@chris-wilson.co.uk>
* | | drm/i915/debug: Remove default WATCH_BUFChris Wilson2010-09-293-53/+3
| | | | | | | | | | | | | | | | | | Replaced by tracepoints. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm/i915/debug: Remove defunct WATCH_LRUChris Wilson2010-09-294-56/+0
| | | | | | | | | | | | | | | | | | This has bitrotted through inuse and superseded by tracing and debugfs. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm/i915/dvo: Fix panel and DDC i2c pinsChris Wilson2010-09-281-9/+3
| | | | | | | | | | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm/i915: Tidy dvo_ch7017 and print out which chip we detectChris Wilson2010-09-281-36/+27
| | | | | | | | | | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | | drm/i915: Disable LVDS i2c probing when using GPIO bit bangingChris Wilson2010-09-282-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 <chris@chris-wilson.co.uk>
* | | Merge branch 'drm-intel-fixes' into drm-intel-nextChris Wilson2010-09-283-13/+10
|\ \ \ | |/ /
| * | drm/i915: fix GMCH power reportingJesse Barnes2010-09-271-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 <jbarnes@virtuousgeek.org> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
| * | drm/i915/sdvo: Handle unsupported GET_SUPPORTED_ENHANCEMENTS gracefullyChris Wilson2010-09-231-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the event that the external chipset doesn't implement the GET_SUPPORTED_ENHANCEMENTS commands, gracefully treat it as having no enhancments rather than bailing. Reported-and-tested-by: Woody Suwalski <terraluna977@gmail.com> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=18342 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
| * | drm/i915/sdvo: Cleanup connector on error pathChris Wilson2010-09-231-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | We weren't unlinking the freed connector from the drm lists, and so hit some use-after-free if we failed to initialise the connector. Reported-and-tested-by: Woody Suwalski <terraluna977@gmail.com> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=18342 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
| * | drm/i915: Fix 945GM regression in e259befdChris Wilson2010-09-231-1/+1
| |/ | | | | | | | | | | | | | | | | | | A minor typo caused a single fence register to be incorrectly programmed, resulting in occassional tiling corruption. Reported-and-tested-by: Hans de Bruin <bruinjm@xs4all.nl> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=18962 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
* | drm/i915: Use i2c bit banging instead of GMBUSChris Wilson2010-09-281-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 <chris@chris-wilson.co.uk>
* | drm/i915/sdvo: Fix GMBUSificationChris Wilson2010-09-285-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 <chris@chris-wilson.co.uk>
* | Revert "drm/i915: Drop ring->lazy_request"Chris Wilson2010-09-282-13/+35
| | | | | | | | | | | | | | | | | | With multiple rings generating requests independently, the outstanding requests must also be track independently. Reported-by: Wang Jinjin <jinjin.wang@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30380 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | drm/i915: Ensure that the mode change flushing is currently uninterruptibleChris Wilson2010-09-261-1/+8
| | | | | | | | | | | | | | Introduced by 48b956c5, I had thought I had already fixed this. Oh well. Reported-by: Sitsofe Wheeler <sitsofe@yahoo.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | drm/i915: fix debugging compilation error from previous commitChris Wilson2010-09-261-1/+0
| | | | | | | | | | | | | | There is no equivalent to mutex_destroy() for spinlocks so just delete the code. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | drm/i915: Convert the file mutex into a spinlockChris Wilson2010-09-263-15/+17
| | | | | | | | | | | | | | | | Daniel Vetter pointed out that in this case is would be clearer and cleaner to use a spinlock instead of a mutex to protect the per-file request list manipulation. Make it so. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | drm/i915: kill ring->setup_status_pageDaniel Vetter2010-09-253-25/+6
| | | | | | | | | | | | | | | | It's the same code, essentially, so kill all copies safe one unified version. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | drm/i915: kill ring->get_active_headDaniel Vetter2010-09-252-21/+5
| | | | | | | | | | | | | | | | | | | | | | All functions are extremely similar, so fold them into one generic implementation. This function isn't used anyway, because there's not yet a bsd ring error state dumper. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | drm/i915: kill per-ring macrosDaniel Vetter2010-09-252-39/+21
| | | | | | | | | | | | | | | | | | | | Two macros that use a base address for HWS_PGA were missing, add them. Also switch the remaining users of *_ACTHD to the ring-base one. Kill the other ring-specific macros because they're now unused. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> [ickle: And silence checkpatch whilst in the vicinity] Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | drm/i915: fix ACTHD for gen <= 3Daniel Vetter2010-09-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | This was mixed up in the following patch: commit a6c45cf013a57e32ddae43dd4ac911eb4a3919fd Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Sep 17 00:32:17 2010 +0100 drm/i915: INTEL_INFO->gen supercedes i8xx, i9xx, i965g Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | drm/i915: kill now unnecessary gtt defines from i915_reg.hDaniel Vetter2010-09-251-40/+2
| | | | | | | | | | | | | | | | Everything is now handled in intel-gtt.h so these defines are only confusing. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* | drm/i915: Make the mutex_lock interruptible on ioctl pathsChris Wilson2010-09-251-42/+84
| | | | | | | | | | | | ... and combine it with the wedged completion handler. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
OpenPOWER on IntegriCloud