- 07 Mar, 2011 1 commit
-
-
Chris Wilson authored
Andi Kleen narrowed his GPU hangs on his Sugar Bay (SNB desktop) rev 09 down to the use of GPU semaphores, and we already know that they appear broken up to Huron River (mobile) rev 08. (I'm optimistic that disabling GPU semaphores is simply hiding another bug by the latency and side-effects of the additional device interaction it introduces...) However, use of semaphores is a massive performance improvement... Only as long as the system remains stable. Enable at your peril. Reported-by:
Andi Kleen <andi-fd@firstfloor.org> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=33921 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 06 Mar, 2011 1 commit
-
-
Chris Wilson authored
Whilst the GT is powered down (rc6), writes to MMADDR are placed in a FIFO by the System Agent. This is a limited resource, only 64 entries, of which 20 are reserved for Display and PCH writes, and so we must take care not to queue up too many writes. To avoid this, there is counter which we can poll to ensure there are sufficient free entries in the fifo. "Issuing a write to a full FIFO is not supported; at worst it could result in corruption or a system hang." Reported-and-Tested-by:
Matt Turner <mattst88@gmail.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=34056 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 09 Feb, 2011 1 commit
-
-
Chris Wilson authored
The automatic powersaving feature is once again causing havoc, with 100% reliable hangs on boot and resume on affected machines. Reported-by:
Francesco Allertsen <fallertsen@gmail.com> Reported-by:
Gui Rui <chaos.proton@gmail.com> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=28582 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 01 Feb, 2011 1 commit
-
-
Chris Wilson authored
Early chipsets (gen2/3) used function 1 as a placeholder for multi-head. We used to ignore these since they were not assigned to PCI_CLASS_DISPLAY_VGA. However with 934f992c we attempt to bind to all Intel PCI_CLASS_DISPLAY devices (and functions) to work in multi-gpu systems. This fails hard on gen2/3. Reported-by:
Ferenc Wágner <wferi@niif.hu> Tested-by:
Ferenc Wágner <wferi@niif.hu> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=28012 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
-
- 25 Jan, 2011 1 commit
-
-
Chris Wilson authored
Call drm_mode_config_reset() after an invalidation event to restore any cached state to unknown. Tested-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 24 Jan, 2011 1 commit
-
-
Chris Wilson authored
We only have sufficient information for accurate (sub-frame) timestamping when the modesetting is under our control. Reported-by:
Chris Clayton <chris2553@googlemail.com> Tested-by:
Chris Clayton <chris2553@googlemail.com> Reviewed-by:
Mario Kleiner <mario.kleiner@tuebingen.mpg.de> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 23 Jan, 2011 1 commit
-
-
Chris Wilson authored
Starting with SandyBridge (though possible with earlier hacked BIOSes), the BIOS may initialise the IGFX as secondary to a discrete GPU. Prior, it would simply disable the integrated GPU. So we adjust our PCI class mask to match any DISPLAY_CLASS device. In such a configuration, the IGFX is not a primary VGA controller and so should not take part in VGA arbitration, and the error return from vga_client_register() is expected. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
-
- 13 Jan, 2011 1 commit
-
-
Chris Wilson authored
In order to workaround the issue with LVDS not working on the Lenovo U160 apparently due to using the wrong SSC frequency, add an option to disable SSC. Suggested-by:
Lukács, Árpád <lukacs.arpad@gmail.com> Bugzillla: https://bugs.freedesktop.org/show_bug.cgi?id=32748 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
-
- 11 Jan, 2011 3 commits
-
-
Jesse Barnes authored
Cleanup several aspects of the rc6 code: - misnamed intel_disable_clock_gating function (was only about rc6) - remove commented call to intel_disable_clock_gating - rc6 enabling code belongs in its own function (allows us to move the actual clock gating enable call back into restore_state) - allocate power & render contexts up front, only free on unload (avoids ugly lazy init at rc6 enable time) Signed-off-by:
Jesse Barnes <jbarnes@virtuousgeek.org> [ickle: checkpatch cleanup] Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Jesse Barnes authored
Enabling RC6 implies setting a graphics context. Make sure we do that only after the ring has been enabled, otherwise our ring commands will hang. Signed-off-by:
Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
When bringing up new hardware, or otherwise experimenting, GPU hangs are a way of life. However, the automatic GPU reset can do more harm than good under these circumstances, as we may wish to capture a full trace for debugging. Based on a patch by Zhenyu Wang. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 05 Jan, 2011 1 commit
-
-
Dave Airlie authored
We need to track the state of the switch in drivers, so that after s/r we don't resume the card we've explicitly switched off before. Also don't allow a userspace open to occur if we've switched the gpu off. Signed-off-by:
Dave Airlie <airlied@redhat.com>
-
- 16 Dec, 2010 1 commit
-
-
Mario Kleiner authored
v2: Change IS_IRONLAKE to IS_GEN5 to adapt to 2.6.37 This patch adds new functions for use by the drm core: .get_vblank_timestamp() provides a precise timestamp for the end of the most recent (or current) vblank interval of a given crtc, as needed for the DRI2 implementation of the OML_sync_control extension. It is a thin wrapper around the drm function drm_calc_vbltimestamp_from_scanoutpos() which does almost all the work. .get_scanout_position() provides the current horizontal and vertical video scanout position and "in vblank" status of a given crtc, as needed by the drm for use by drm_calc_vbltimestamp_from_scanoutpos(). The patch modifies the pageflip completion routine to use these precise vblank timestamps as the timestamps for pageflip completion events. This code has been only tested on a HP-Mini Netbook with Atom processor and Intel 945GME gpu. The codepath for (IS_G4X(dev) || IS_GEN5(dev) || IS_GEN6(dev)) gpu's has not been tested so far due to lack of hardware. Signed-off-by:
Mario Kleiner <mario.kleiner@tuebingen.mpg.de> Acked-by:
Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 15 Dec, 2010 1 commit
-
-
Yuanhan Liu authored
Add frame buffer compression on Sandybridge. The method is similar to Ironlake, except that two new registers of type GTTMMADR must be written with the right fence info. Signed-off-by:
Yuanhan Liu <yuanhan.liu@linux.intel.com> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 09 Dec, 2010 3 commits
-
-
Chris Wilson authored
Once we have read the value out of the GT power well, we need to remove the FORCE WAKE bit to allow the system to auto-power down. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
As suggested by Daniel Vetter, this is a safeguard should any of the registers cause reference to PTE entries. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
So we can remove the repeated initialisation. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 05 Dec, 2010 3 commits
-
-
Chris Wilson authored
Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
The bulk of the change is to convert the growing list of rings into an array so that the relationship between the rings and the semaphore sync registers can be easily computed. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
This will declare the machine wedged, but is better than truly wedging the machine. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 23 Nov, 2010 1 commit
-
-
Daniel Vetter authored
This still uses the agp functions to actually reinstate the mappings (with a gross hack to make agp cooperate), but it wires everything up correctly for the switchover. The call to agp_rebind_memory can be dropped because all non-kms drivers do all their rebinding on EnterVT. v2: Be more paranoid and flush the chipset cache after restoring gtt mappings. Signed-off-by:
Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 22 Nov, 2010 2 commits
-
-
Eric Anholt authored
This has proven sufficient to recover from a hang of the GPU using the gem_bad_blit test while at the KMS console then starting X. When attempting the same during an X session, the timer doesn't appear to trigger. Signed-off-by:
Eric Anholt <eric@anholt.net> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Eric Anholt authored
Signed-off-by:
Eric Anholt <eric@anholt.net> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 19 Nov, 2010 1 commit
-
-
Alex Shi authored
Frame buffer compression is broken on Ironlake due to buggy hardware. Currently it is disabled through chicken bits, but it still consumes over 1W more than if we simply never attempt to enable the FBC code paths. Signed-off-by:
Alex Shi <alex.shi@intel.com> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@kernel.org
-
- 02 Nov, 2010 1 commit
-
-
Chris Wilson authored
2.6.36 appears to respect the 0400 mode we assigned to the parameter preventing it from being adjusted after loading. However, this is safe to adjust at runtime. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=31311 Reported-by:
Fernando Lemos <fernandotcl@gmail.com> Cc: stable@kernel.org Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 28 Oct, 2010 1 commit
-
-
Chris Wilson authored
Eliminate the racy device unload by embedding a shrinker into each device. Smaller, simpler code. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 27 Oct, 2010 1 commit
-
-
Chris Wilson authored
The ringbuffer keeps a pointer to the parent device, so we can use that instead of passing around the pointer on the stack. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 21 Oct, 2010 2 commits
-
-
Chris Wilson authored
So remove the redundant bit in the capabilities block and s/IS_IRONLAKE/IS_GEN5/. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
Based on an original patch by Zhenyu Wang, this initializes the BLT ring for SandyBridge and enables support for user execbuffers. Cc: Zhenyu Wang <zhenyuw@linux.intel.com> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 01 Oct, 2010 3 commits
-
-
Chris Wilson authored
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>
-
Chris Wilson authored
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>
-
Chris Wilson authored
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>
-
- 22 Sep, 2010 1 commit
-
-
Chris Wilson authored
Otherwise we will hit a list handling assertion when moving the object to the inactive list. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 21 Sep, 2010 7 commits
-
-
Chris Wilson authored
Suspending (especially hibernating) may take a finite amount of time, during which a hotplug event may trigger and we will attempt to handle it with inconsistent state. Disable hotplug polling around suspend and resume. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=30070 Reported-by:
Rui Tiago Matos <tiagomatos@gmail.com> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Xiang, Haihao authored
This ring buffer is used for video decoding/encoding on Sandybridge. Signed-off-by:
Xiang, Haihao <haihao.xiang@intel.com> Reviewed-by:
Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Xiang, Haihao authored
Signed-off-by:
Xiang, Haihao <haihao.xiang@intel.com> Reviewed-by:
Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
Previously we only tidied up the active bo lists for chipsets were we would attempt to reset the GPU. However, this action is necessary for the system to continue and reclaim the dead bo for all chipsets. Pointed out, in passing, by Owain Ainsworth. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
Clear the GPU read domain for the inactive objects on a reset so that they are correctly invalidated on reuse. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
Owain Ainsworth noticed that the reset code failed to clear the flushing list leaving the driver in an inconsistent state following a hung GPU. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
On more recent chipsets, restoring the display is not as simple as writing a few registers, so force a full modeset of the current configuration in order to retrain the display link. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-