On Tue, Mar 10, 2015 at 07:14:28AM -0400, dan mclaughlin wrote: > > that did do something. before the screen would just freeze with its contents. > now it freezes like that for a second, and then goes blank. i reproduced it > twice. the first time took about the same amount of time as before, the second > went a bit longer before hanging. it seems there is also enough time before it > freezes to get error messages now. the first time i got the expected messages: > > Mar 9 17:15:48 node02 /bsd: error: [drm:pid2359:i915_hangcheck_hung] *ERROR* > Ha > ngcheck timer elapsed... GPU hung > Mar 9 17:15:48 node02 /bsd: error: [drm:pid11430:i915_reset] *ERROR* Failed > to > reset chip. > > the second time though i got this though: > > Mar 10 06:37:01 node02 /bsd: error: [drm:pid27180:i915_get_vblank_timestamp] > *ER > ROR* Invalid crtc 1 > Mar 10 06:37:01 node02 /bsd: uvm_fault(0xd5c34634, 0x80038000, 0, 1) -> e > > i do get occational vblank_timestamp errors but they have never seemed to > cause > any significant problem before (although i don't use graphics too intensely).
The 845g hardware has a single display pipe. I had hoped the problems people had encountered with it were gone when the 'pipe a force' quirks were removed for it. I'm not entirely sure where to look for the source of getting the pipe wrong. I would be interested to hear if the following diff makes any difference. From: commit 21a245d2d62ef617978316203af032d499805cd2 Author: Rob Clark <[email protected]> Date: Mon Dec 10 10:49:46 2012 -0600 drm: small fix in drm_send_vblank_event() Initialize e->pipe.. some drivers set this themselves, others do not. Setting it in drm_send_vblank_event() should help ensure more consistent behavior with the different drivers. Index: sys/dev/pci/drm/drm_irq.c =================================================================== RCS file: /cvs/src/sys/dev/pci/drm/drm_irq.c,v retrieving revision 1.59 diff -u -p -r1.59 drm_irq.c --- sys/dev/pci/drm/drm_irq.c 12 Feb 2015 08:48:32 -0000 1.59 +++ sys/dev/pci/drm/drm_irq.c 12 Mar 2015 12:50:29 -0000 @@ -885,6 +885,7 @@ void drm_send_vblank_event(struct drm_de now = get_drm_timestamp(); } + e->pipe = crtc; send_vblank_event(dev, e, seq, &now); } EXPORT_SYMBOL(drm_send_vblank_event);
