On Saturday, August 30, 2008 1:02 am Maksym Veremeyenko wrote:
> Michel Dänzer написав(ла):
> >> Is it normal that no interrupts happens from board?
> >> or i need more initializing ioctl call to /dev/dri/0 to allow interrupts
> >> from hardware?
> > This is probably due to the DRM_I830_SET_VBLANK_PIPE ioctl - the X
> > driver uses it to disable the vblank interrupts while there are no GLX
> > clients. This is a crude power saving scheme which will be superseded by
> > the infamous DRM vblank-rework, which should work with your code.
> Thanks for some explanation, anyway i added more printk's to i915_irq.c
> and drm_irq.c
> During xorg startup there are:
> -> drm_vblank_init
> -> i915_enable_interrupt
> it successfully install irq and call *i915_enable_interrupt*.
> During *drmWaitVBlank* i got next call trace:
> -> drm_vblank_get
> ->i915_enable_vblank: plane=0, pipe=1, pipestat |=
> i915_get_vblank_counter: plane=0, pipe=1, high_frame=00071040,
> i also get "enabling vblank interrupts on crtc 0, missed 246"....
> It seems to me that IRQ enable, but i have some suspicious about:
> * Older chips didn't have the start vblank interrupt,
> * but
> if (IS_I965G (dev))
> pipestat |= PIPE_START_VBLANK_INTERRUPT_ENABLE;
> pipestat |= PIPE_VBLANK_INTERRUPT_ENABLE;
> but even if i enable both, /proc/interrupts still shows zeros interrupts
With all the changes in DRM master I think things broke recently. In the
drm-next relative patch I posted I fixed a few issues like this so hopefully
that will work for you, let me know if they don't.