aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
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-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-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-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-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]
2010-09-26drm/i915: Ensure that the mode change flushing is currently uninterruptibleChris Wilson1-1/+8
Introduced by 48b956c5, I had thought I had already fixed this. Oh well. Reported-by: Sitsofe Wheeler <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-09-26drm/i915: fix debugging compilation error from previous commitChris Wilson1-1/+0
There is no equivalent to mutex_destroy() for spinlocks so just delete the code. Signed-off-by: Chris Wilson <[email protected]>
2010-09-26drm/i915: Convert the file mutex into a spinlockChris Wilson3-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 <[email protected]>
2010-09-25drm/i915: kill ring->setup_status_pageDaniel Vetter3-25/+6
It's the same code, essentially, so kill all copies safe one unified version. Signed-off-by: Daniel Vetter <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-09-25drm/i915: kill ring->get_active_headDaniel Vetter2-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 <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-09-25drm/i915: kill per-ring macrosDaniel Vetter2-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 <[email protected]> [ickle: And silence checkpatch whilst in the vicinity] Signed-off-by: Chris Wilson <[email protected]>
2010-09-25drm/i915: fix ACTHD for gen <= 3Daniel Vetter1-1/+1
This was mixed up in the following patch: commit a6c45cf013a57e32ddae43dd4ac911eb4a3919fd Author: Chris Wilson <[email protected]> Date: Fri Sep 17 00:32:17 2010 +0100 drm/i915: INTEL_INFO->gen supercedes i8xx, i9xx, i965g Signed-off-by: Daniel Vetter <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-09-25drm/i915: kill now unnecessary gtt defines from i915_reg.hDaniel Vetter1-40/+2
Everything is now handled in intel-gtt.h so these defines are only confusing. Signed-off-by: Daniel Vetter <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-09-25drm/i915: Make the mutex_lock interruptible on ioctl pathsChris Wilson1-42/+84
... and combine it with the wedged completion handler. Signed-off-by: Chris Wilson <[email protected]>
2010-09-25drm/i915: Adjust hangcheck EIO semanticsChris Wilson4-8/+68
Owain Ainsworth reported an issue between the interaction of the hangcheck and userspace immediately (and permanently) falling back to s/w rasterisation. In order to break the mutex and begin resetting the GPU, we must abort the current operation (usually within the wait) and climb sufficiently far back up the call chain to drop the mutex. In his implementation, Owain has a loop within the ioctl handler to detect the hang and then sleep until the error handler has run. I've chosen to return to userspace and report an EAGAIN which should trigger the userspace ioctl handler to repeat the call (simply because it felt less invasive...). Before hitting a wedged GPU, we then wait upon completion of the error handler. Reported-by: Owain G. Ainsworth <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-09-24drm/i915: Only hold a process-local lock whilst throttling.Chris Wilson8-92/+123
Avoid cause latencies in other clients by not taking the global struct mutex and moving the per-client request manipulation a local per-client mutex. For example, this allows a compositor to schedule a page-flip (through X) whilst an OpenGL application is monopolising the GPU. Signed-off-by: Chris Wilson <[email protected]>
2010-09-24drm/i915/dp: Wait for PP_CONTROL to take effect.Hette Visser1-0/+10
This patch fixes the black screen bug on Dell e6510, by adding two delays to give the eDP panel time to turn on before we continue with the next write. 300ms is rather arbitray and a rather long sleep, we need to find a way of refining this value. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29278 Signed-off-by: Chris Wilson <[email protected]> Acked-by: Jesse Barnes <[email protected]>
2010-09-24some clean up to intel-gtt.cJan Beulich1-2/+1
In commit e517a5e97080bbe52857bd0d7df9b66602d53c4d the call to map_page_into_agp() got removed from intel_i830_setup_flush(), but the counterpart call from intel_i830_fini_flush() to unmap_page_from_agp() was left in place. Additionally, the page allocated here never gets its physical address used for sending to hardware, so there's no need to allocate it with GFP_DMA32. Nor is __GFP_ZERO really necessary, as the page is used only to store data to force flushing of some internal processor state. Signed-off-by: Jan Beulich <[email protected]> Cc: Eric Anholt <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-09-24drm/i915: Parse the eDP link configuration from the vBIOSChris Wilson5-20/+42
First step, lets have a look at the values for troublesome panels and see if they may be used to improve our link training. Signed-off-by: Chris Wilson <[email protected]>
2010-09-24drm/i915/lvds: Use the GMBUS pin if specified in VBTChris Wilson1-8/+13
Signed-off-by: Chris Wilson <[email protected]>
2010-09-24drm/i915: Use an uninterruptible wait for page-flips during modesetChris Wilson3-13/+21
We need to drain the pending flips prior to disabling the pipe during modeset, and these need to be done in an uninterruptible fashion. Signed-off-by: Chris Wilson <[email protected]>
2010-09-24drm/i915: Remove unused dev_priv->panel_wants_ditherChris Wilson2-2/+1
This is now private to the DVO connector, remove it from the main device private. Signed-off-by: Chris Wilson <[email protected]>
2010-09-24drm/i915/ringbuffer: Fix sign of ring space.Chris Wilson1-1/+1
As we presume space is signed when computing and looking for wrap along, make it so. Reported-by: Owain G. Ainsworth <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2010-09-24drm/i915: Remove idle timer debugging messagesChris Wilson1-4/+0
These have served their purpose and are now just noise in the debug stream. Signed-off-by: Chris Wilson <[email protected]>
2010-09-24drm/i915/lvds: Probe DDC on creationChris Wilson1-0/+21
Try to validate the panel's connection by writing to address 0xA0. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=18072 Signed-off-by: Chris Wilson <[email protected]>