[Nouveau] Interrupt setting

Shinpei KATO shinpei at il.is.s.u-tokyo.ac.jp
Thu Mar 11 14:21:11 PST 2010


Hi all,

I am a Nouveau user on FC12 with GeForce 9500GT.
I have read the Nouveau wiki documents, and they imply that there are ways
to set GPU to send interrupts to CPU, when we want to be notified for
something, e.g., when DMA transfer or GPU operation is completed.
By default, when I run an OpenGL demo application from Gallium3D, the driver
gets no interrupts from GPU in nouveau_irq_handler(), except that it gets
one NV_PFIFO_INTR_CACHE_ERROR interrupt right after the FIFO is allocated.
According to the wiki docs, I need to set
NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY_STYLE_WRITE_LE_AWAKEN into the 'notify'
field of an object in a channel.
Hence, I tried seting a flag to a DMA notifier in nouveau_dma_init():

// seems entry[1] is related to a DMA notifier?
nv_wo32(dev, m2mf, 1,
NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY_STYLE_WRITE_LE_AWAKEN);

I also tried sending some command:

// guess this is a very wrong way ;-)
BEGIN_RING(chan, NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY, 1);
OUT_RING(chan, NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY_STYLE_WRITE_LE_AWAKEN);

But they both did not work...
How can we set GPU to send interrupts to CPU?
I would appreciate your comments.

Thanks,
- Shinpei



More information about the Nouveau mailing list