diff mbox

[1/3] drm/i915: rip out gen2 reset code

Message ID 1381227943-4409-1-git-send-email-daniel.vetter@ffwll.ch (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter Oct. 8, 2013, 10:25 a.m. UTC
At least on my i830M here it reliably results in hard system hangs
nowadays. This is much worse than falling back to software rendering,
so I think we should simply rip this out.

After all we don't have any gpu reset for gen3 either, and there are a
lot more of those still around.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
---
 drivers/gpu/drm/i915/intel_uncore.c | 31 -------------------------------
 1 file changed, 31 deletions(-)

Comments

Chris Wilson Oct. 8, 2013, 10:29 a.m. UTC | #1
On Tue, Oct 08, 2013 at 12:25:41PM +0200, Daniel Vetter wrote:
> At least on my i830M here it reliably results in hard system hangs
> nowadays. This is much worse than falling back to software rendering,
> so I think we should simply rip this out.
> 
> After all we don't have any gpu reset for gen3 either, and there are a
> lot more of those still around.
> 
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
Daniel Vetter Oct. 8, 2013, 12:23 p.m. UTC | #2
On Tue, Oct 08, 2013 at 11:29:41AM +0100, Chris Wilson wrote:
> On Tue, Oct 08, 2013 at 12:25:41PM +0200, Daniel Vetter wrote:
> > At least on my i830M here it reliably results in hard system hangs
> > nowadays. This is much worse than falling back to software rendering,
> > so I think we should simply rip this out.
> > 
> > After all we don't have any gpu reset for gen3 either, and there are a
> > lot more of those still around.
> > 
> > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Acked-by: Chris Wilson <chris@chris-wilson.co.uk>

Merged, thanks for sanity checking and the quick testrun on your i845g.
-Daniel
Thomas Richter Oct. 8, 2013, 8:56 p.m. UTC | #3
Hi Daniel, dear kernel developers,

just tried the 3.12.rc3+ from the intel-drm git. This version *worked* 
again, pretty much the same way the 3.10.10 "worked".

Side effects are, however, quite the same when you connect an external 
monitor:

If connected while the gdm login screen is on, the external monitor 
works fine with the internal TFT (mirroring is turned on). Resolutions
1024x768 and 800x600 are fine, switching to 640x480 locks up the 
internal DVO, the external monitor keeps working. Note that the DVO
does *not* lock up if the external monitor is not connect (probably a 
frequency issue, need to check).

Booting with the external monitor connected creates a "locked up" 
display on the internal TFT, and a flickering display on the external
screen as if the watermark levels are not set correctly. The external 
screen shows a horizontal offset of approximately half the screen
width (scrolled to the right), but jumps back to its correct position 
irregularly. Note that this type of flickering is different from the flicker
created by panning on the 835GM (already reported this problem), which 
shows a regular 30Hz flicker.

Once the gdm comes up, the internal TFT keeps dead, and the external 
shows only a black screen but with a working mouse pointer.
Logging in blindly restores a working screen on both monitors.

So thanks for the update, seems to have worked, but is still not working 
perfectly. External monitors are not supported correctly,
and panning is still a problem, even with a "linear" framebuffer.

Greetings,
     Thomas
Daniel Vetter Oct. 8, 2013, 10 p.m. UTC | #4
On Tue, Oct 08, 2013 at 10:56:41PM +0200, Thomas Richter wrote:
> Hi Daniel, dear kernel developers,
> 
> just tried the 3.12.rc3+ from the intel-drm git. This version
> *worked* again, pretty much the same way the 3.10.10 "worked".
> 
> Side effects are, however, quite the same when you connect an
> external monitor:
> 
> If connected while the gdm login screen is on, the external monitor
> works fine with the internal TFT (mirroring is turned on).
> Resolutions
> 1024x768 and 800x600 are fine, switching to 640x480 locks up the
> internal DVO, the external monitor keeps working. Note that the DVO
> does *not* lock up if the external monitor is not connect (probably
> a frequency issue, need to check).
> 
> Booting with the external monitor connected creates a "locked up"
> display on the internal TFT, and a flickering display on the
> external
> screen as if the watermark levels are not set correctly. The
> external screen shows a horizontal offset of approximately half the
> screen
> width (scrolled to the right), but jumps back to its correct
> position irregularly. Note that this type of flickering is different
> from the flicker
> created by panning on the 835GM (already reported this problem),
> which shows a regular 30Hz flicker.
> 
> Once the gdm comes up, the internal TFT keeps dead, and the external
> shows only a black screen but with a working mouse pointer.
> Logging in blindly restores a working screen on both monitors.
> 
> So thanks for the update, seems to have worked, but is still not
> working perfectly. External monitors are not supported correctly,
> and panning is still a problem, even with a "linear" framebuffer.

My drm-intel git branch doesn't yet have the two patches that are meant to
replace your ns2501 hack ... So I'm not too sure what exactly you've
tested that made things magically better?

For me the key to get rid of the black screen was the two sna patches, not
the kernel stuff here.
-Daniel
Thomas Richter Oct. 9, 2013, 5:02 a.m. UTC | #5
On 09.10.2013 00:00, Daniel Vetter wrote:
>
> My drm-intel git branch doesn't yet have the two patches that are meant to
> replace your ns2501 hack ... So I'm not too sure what exactly you've
> tested that made things magically better?

Is there a difference between the 3.12rc4 from kernel.org and the 
3.12.rc3+ from your git repository that might explain the difference? 
These are the two kernels I tested, with the results as presented. 
Kernel.org is apparently one release cycle (and one bug) ahead.

Greetings,
	Thomas
Daniel Vetter Oct. 9, 2013, 7:13 a.m. UTC | #6
On Wed, Oct 9, 2013 at 7:02 AM, Thomas Richter <thor@math.tu-berlin.de> wrote:
> On 09.10.2013 00:00, Daniel Vetter wrote:
>>
>>
>> My drm-intel git branch doesn't yet have the two patches that are meant to
>> replace your ns2501 hack ... So I'm not too sure what exactly you've
>> tested that made things magically better?
>
>
> Is there a difference between the 3.12rc4 from kernel.org and the 3.12.rc3+
> from your git repository that might explain the difference? These are the
> two kernels I tested, with the results as presented. Kernel.org is
> apparently one release cycle (and one bug) ahead.

drm-intel-nightly already contains tons of changes for 3.13. But
nothing really comes to mind that might help out on your i830M. At
least here on mine I didn't see any difference ...
-Daniel
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index 288a3a6..bfc1a65 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -490,36 +490,6 @@  int i915_reg_read_ioctl(struct drm_device *dev,
 	return 0;
 }
 
-static int i8xx_do_reset(struct drm_device *dev)
-{
-	struct drm_i915_private *dev_priv = dev->dev_private;
-
-	if (IS_I85X(dev))
-		return -ENODEV;
-
-	I915_WRITE(D_STATE, I915_READ(D_STATE) | DSTATE_GFX_RESET_I830);
-	POSTING_READ(D_STATE);
-
-	if (IS_I830(dev) || IS_845G(dev)) {
-		I915_WRITE(DEBUG_RESET_I830,
-			   DEBUG_RESET_DISPLAY |
-			   DEBUG_RESET_RENDER |
-			   DEBUG_RESET_FULL);
-		POSTING_READ(DEBUG_RESET_I830);
-		msleep(1);
-
-		I915_WRITE(DEBUG_RESET_I830, 0);
-		POSTING_READ(DEBUG_RESET_I830);
-	}
-
-	msleep(1);
-
-	I915_WRITE(D_STATE, I915_READ(D_STATE) & ~DSTATE_GFX_RESET_I830);
-	POSTING_READ(D_STATE);
-
-	return 0;
-}
-
 static int i965_reset_complete(struct drm_device *dev)
 {
 	u8 gdrst;
@@ -621,7 +591,6 @@  int intel_gpu_reset(struct drm_device *dev)
 	case 6: return gen6_do_reset(dev);
 	case 5: return ironlake_do_reset(dev);
 	case 4: return i965_do_reset(dev);
-	case 2: return i8xx_do_reset(dev);
 	default: return -ENODEV;
 	}
 }