* Regression since 53984635a659e360f206a81ada4ae813152d72f1 (drm/i915: use the complete gtt)
@ 2010-11-09 18:22 Peter Clifton
2010-11-09 18:49 ` Peter Clifton
2010-11-09 18:56 ` Chris Wilson
0 siblings, 2 replies; 5+ messages in thread
From: Peter Clifton @ 2010-11-09 18:22 UTC (permalink / raw)
To: intel-gfx@lists.freedesktop.org
commit 53984635a659e360f206a81ada4ae813152d72f1
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Wed Sep 22 23:44:24 2010 +0200
drm/i915: use the complete gtt
At least the part that's currently enabled by the BIOS.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Since the above commit, my GL app will crash after a period of sustained
graphics activity. It appears to use quite a lot of small BOs for
uploading changed VBO data with glBufferSubData, and I don't think these
are being purged until the GTT is full.
For some reason, with gtt size != mappable size, the GPU will hang after
a while. I had thought that we were missing a guard page from
mappable_size, but subtracting a PAGE_SIZE did not help. Only resetting
gtt_size to mappable_size (still subtracting a guard page) helped.
Adding some instrumentation shows:
Prealloc size 33550336, gtt size 2147479552, mappable size 268435456
This is an GM45 on a HP 6730b laptop.
Any hints as to where to look now?
Are things being put into unmappable GTT space when they need to be
mappable? Is purging all my purgable BOs taking too long and causing a
HANG to be declared? (NB: Hang still occurs if I increase hangcheck
timer to over a second).
Best regards,
--
Peter Clifton
Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA
Tel: +44 (0)7729 980173 - (No signal in the lab!)
Tel: +44 (0)1223 748328 - (Shared lab phone, ask for me)
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: Regression since 53984635a659e360f206a81ada4ae813152d72f1 (drm/i915: use the complete gtt)
2010-11-09 18:22 Regression since 53984635a659e360f206a81ada4ae813152d72f1 (drm/i915: use the complete gtt) Peter Clifton
@ 2010-11-09 18:49 ` Peter Clifton
2010-11-09 18:56 ` Chris Wilson
1 sibling, 0 replies; 5+ messages in thread
From: Peter Clifton @ 2010-11-09 18:49 UTC (permalink / raw)
To: intel-gfx@lists.freedesktop.org
On Tue, 2010-11-09 at 18:22 +0000, Peter Clifton wrote:
> commit 53984635a659e360f206a81ada4ae813152d72f1
> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> Date: Wed Sep 22 23:44:24 2010 +0200
>
> drm/i915: use the complete gtt
>
> At least the part that's currently enabled by the BIOS.
>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
>
>
> Since the above commit, my GL app will crash after a period of sustained
> graphics activity. It appears to use quite a lot of small BOs for
> uploading changed VBO data with glBufferSubData, and I don't think these
> are being purged until the GTT is full.
I can also work around the crash by ensuring nothing gets into unmapable
areas:
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 7c91bf2..d014cd6 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3538,6 +3538,7 @@ i915_gem_execbuffer_pin(struct drm_device *dev,
/* g33/pnv can't fence buffers in the unmappable part */
bool need_mappable =
entry->relocation_count ? true : need_fence;
+ need_mappable = true;
/* Check fence reg constraints and rebind if necessary */
if (need_mappable && !obj->map_and_fenceable) {
--
Peter Clifton
Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA
Tel: +44 (0)7729 980173 - (No signal in the lab!)
Tel: +44 (0)1223 748328 - (Shared lab phone, ask for me)
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: Regression since 53984635a659e360f206a81ada4ae813152d72f1 (drm/i915: use the complete gtt)
2010-11-09 18:22 Regression since 53984635a659e360f206a81ada4ae813152d72f1 (drm/i915: use the complete gtt) Peter Clifton
2010-11-09 18:49 ` Peter Clifton
@ 2010-11-09 18:56 ` Chris Wilson
2010-11-09 19:09 ` Peter Clifton
1 sibling, 1 reply; 5+ messages in thread
From: Chris Wilson @ 2010-11-09 18:56 UTC (permalink / raw)
To: Peter Clifton, intel-gfx@lists.freedesktop.org
On Tue, 09 Nov 2010 18:22:48 +0000, Peter Clifton <pcjc2@cam.ac.uk> wrote:
> Since the above commit, my GL app will crash after a period of sustained
> graphics activity. It appears to use quite a lot of small BOs for
> uploading changed VBO data with glBufferSubData, and I don't think these
> are being purged until the GTT is full.
>
> For some reason, with gtt size != mappable size, the GPU will hang after
> a while. I had thought that we were missing a guard page from
> mappable_size, but subtracting a PAGE_SIZE did not help. Only resetting
> gtt_size to mappable_size (still subtracting a guard page) helped.
>
> Adding some instrumentation shows:
>
> Prealloc size 33550336, gtt size 2147479552, mappable size 268435456
/sys/kernel/debug/dri/0/i915_gem_objects
> This is an GM45 on a HP 6730b laptop.
>
> Any hints as to where to look now?
>
> Are things being put into unmappable GTT space when they need to be
> mappable?
This is the likely suspect. Check /sys/kernel/debug/dri/0/i915_error_state.
Do you have a test case that I can run? I've been beating upon this using
i945, pnv, q35 and g45 for quite some time and found it to be stable (for
my uses at least).
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Regression since 53984635a659e360f206a81ada4ae813152d72f1 (drm/i915: use the complete gtt)
2010-11-09 18:56 ` Chris Wilson
@ 2010-11-09 19:09 ` Peter Clifton
2010-11-09 19:43 ` Chris Wilson
0 siblings, 1 reply; 5+ messages in thread
From: Peter Clifton @ 2010-11-09 19:09 UTC (permalink / raw)
To: Chris Wilson; +Cc: intel-gfx@lists.freedesktop.org
On Tue, 2010-11-09 at 18:56 +0000, Chris Wilson wrote:
> Do you have a test case that I can run? I've been beating upon this using
> i945, pnv, q35 and g45 for quite some time and found it to be stable (for
> my uses at least).
Nothing small, but if you're prepared to do build something more
complex:
git://repo.or.cz/geda-pcb/pcjc2.git
Build from the "local_customisation_no_pours" branch.
(With stgit I'm lazy about making "proper" feature branches ;)). Note
that I rebase this branch a lot, as it is from a stgit series.
I'll send you the PCB layout I've been testing it with privately.
Steps to reproduce are:
1. Load the board.
2. Drag the white / black (depends on your theme) circular control on
the left hand bar. This is a track-ball.
3. Drag like crazy, perhaps stop for a little bit. Drag again.
Eventually it hangs when the full GTT is in use.
--
Peter Clifton
Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA
Tel: +44 (0)7729 980173 - (No signal in the lab!)
Tel: +44 (0)1223 748328 - (Shared lab phone, ask for me)
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-11-09 19:43 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-09 18:22 Regression since 53984635a659e360f206a81ada4ae813152d72f1 (drm/i915: use the complete gtt) Peter Clifton
2010-11-09 18:49 ` Peter Clifton
2010-11-09 18:56 ` Chris Wilson
2010-11-09 19:09 ` Peter Clifton
2010-11-09 19:43 ` Chris Wilson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox