On Tue, Jun 11, 2013 at 02:40:19PM +0100, Chris Wilson wrote: > On Tue, Jun 11, 2013 at 11:45:00AM +0200, Daniel Vetter wrote: > > On Mon, Jun 10, 2013 at 11:20:20AM +0100, Chris Wilson wrote: > > > + if (ring->hangcheck.seqno == seqno) { > > > + if (ring_idle(ring, seqno)) { > > > + if (waitqueue_active(&ring->irq_queue)) { > > > + /* Issue a wake-up to catch stuck h/w. */ > > > + DRM_ERROR("Hangcheck timer elapsed... %s idle\n", > > > + ring->name); > > > + wake_up_all(&ring->irq_queue); > > > + ring->hangcheck.score += HUNG; > > > > Not sure whether we want to hit missed interrupts this badly, it was > > rather common a while back ;-) But we can fine-tune this easily now, so > > now reservations for merging from my side. > > Not sure what you mean here. The check is fairly easy and has gotten us > out of many a hole before, and makes for a good defense. So how would > you want to fine tune it? Something like the MI_WAIT hangcheck score, but like I've said as long as we don't have a real-world bug report (some poor guy disabled semaphores maybe due to the snb issue?) not worth bothering at all. I've just thought that if we're unlucky and miss the interrupt a few times in a row we don't want to accidentally declare the gpu dead. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch