PDA

View Full Version : Interrupt Problem with NVIDIA drivers


drogers415
03-17-03, 10:20 AM
I am new to Linux so bare with me....

I am trying to write a program to collect data from a PCI card.

I am trying to pick up interrupts.

When I use the default graphics drivers, then everything is fine.

I can pick up @ 10,000 Hz/sec.


The problem is when i installed the NVIDIA kernel drivers. i can only pick up @ 10 Hz/sec and after that it throws errors telling me that it is missing interrupts.

I called the manufacturer of the data collection card, and they said that the NVIDIA driver is either throwing a bunch of interrupts, or is doing some process that takes a large amount of time.

Does anyone know what I am talking about? And if so, how can i get these interrupts or processes to stop?

Thanks

bwkaz
03-17-03, 11:34 AM
Well, I'm not sure I understand what you're doing, but "10,000 Hz/sec" has no meaning. The definition of Hz is "1/sec", so a Hz per second is 1/sec^2, which isn't very useful.

Do you mean you're getting interrupts at 10,000 Hz? That is, 10,000 interrupts per second? (with the stock drivers, 10 interrupts per second with the binaries)

It may be that the binary drivers rely on card interrupts to do their rendering, somehow (we can't see source, so I'm guessing here). The default drivers can't do 3D, so maybe that has something to do with it. Maybe your CPU is getting swamped with nVidia interrupts, is what I mean.

I don't have any way to fix it if that's the problem, either. That's a "feature" of the nVidia cards themselves, you can't do anything on the software side to change it.

drogers415
03-17-03, 11:41 AM
I mean 10,000Hz with the default drivers, and about 10Hz with the nvidia drivers

merlin42
03-17-03, 12:11 PM
What I know for sure:
The nvidia drivers cause to card to raise at least one interupt / vertical retrace and probably more, signalling completion of async/dma operations etc ...

do
cat /proc/interupts; sleep 10 ;cat /proc/interupts

In my setup the vid card is sharing an interupt w/ the nic and the sound card so the numbers might be a bit off. But, I get 718 interupts in 10 seconds, my monitor is running at 69hz.

Please make sure that the PCI-card is not sharing an interupt with the nvidia card, since each driver needs to be woken up to check to see if the interupt belongs to them when sharing (iirc).

You may want to look into one of the real-time linux variants.
http://www.fsmlabs.com/
http://www.aero.polimi.it/~rtai/
http://www.linuxdevices.com/
would be good places to start looking

drogers415
03-17-03, 01:44 PM
Is there a way I can change any interrupts that may be shared b/t graphics card an another card?

merlin42
03-17-03, 02:42 PM
It depends on the motherboard.
Go into your bios setup and explore.
Also, look in your motherboard manual. Generally certain physical slots share irq's with certain other physical slots. As a general rule of thumb the AGP slot shares an irq with the PCI slot closest to it, although I have seen motherborads where it also shared w/ another slot. So try moving things around and see what happens. Remember that if there are too many devices requiring irq's then it is possible that more things will be sharing irq's than is stated in the manual since there isn't enough to go around(many motherboards are designed with only 3 or 4 irq's that can be assigned to agp/pci cards, and often these are shared with buitin devices such as onboard sound/usb/ieee1394 etc ...). Also, if available please use 'IO-APIC' mode since this will usually double the number of available IRQs so that not as many things need to share.
gl hth