[Open-graphics] Video interrupt enable/disable
James Richard Tyrer
tyrerj at acm.org
Sun May 6 19:24:06 EDT 2007
Jean-Baptiste Note wrote:
> Hello,
>
>> Yes, I know that. The point I was trying to make was that the CPU can
>> only do one thing at once and that a shared interrupt can not be
>> serviced while the CPU is still servicing another of the interrupts that
>> shares the hardware interrupt. I don't know what the latency is -- you
>> can't predict the latency on a non-RTS.
>
> You're obviously coming with a RTS background, and you're asking for
> the same level of control that you get on an ARM processor by writing
> custom code and making use of IRQ/FIQ and interrupt priority.
Actually, I come from a hardware background but that is about the same
thing.
> I've not checked the numbers for the interrupt latencies needed for
> your "sync" interrupt. But essentially, you *cannot* get the
> fine-grained control you have with a RT system by working with linux
> on a general purpose computer.
I know nothing about Linux's implementation of RTS, but I understand
that the Kernel I am currently upgrading to has some RT capability.
Something to consider.
> For instance, it's customary to disable
> *all* (not selectively !) IRQ processing under linux in critical code
> sections,
It is that way in all OSes, even PC-DOS did that. The question is how
often this is done.
> so you'll hit the latency of *other* code... Which you don't
> have control over. Most drivers were *not* written with low latency in
> mind.
IIUC, they way *NIX works is that there is a short interrupt service
routine, the only purpose of which is to start the process that actually
services the interrupt or communicate with it. I presume that this
might disable all interrupts but it is certain that it disables any
further service of the hardware interrupt that called it until it is done.
>
> The point i'm trying to make is that you cannot design the whole
> operating system and hardware implementation around OGP and its
> latency requirements. So OGP needs to be designed so that it does not
> require RT control of its signal. And various already existing
> graphics card implementation show that this should be possible without
> too much headache :)
I believe that you have it backwards. If we have two interrupts, then
we can have them serviced separately. It doesn't mean that they must be
serviced separately. The simple logical point that S->P does not mean
that P->S
> So my question to you is: what is the current maximum latency allowed
> by the current OGP design ? And is it critical in a typical x86 system
> ?
In a typical x86 system, the video board has one dedicated hardware
interrupt. This goes back all the way to the IBM AT although I don't
know how a system with PCI and no AGP works. With a more modern system
(AGP) it is possible for the mother board to supply two hardware
interrupts to the video board but I think that this would require a
motherboard with APIC. My older K-6 III system has only one hardware
interrupt for the video slot so if the video board has two, they they
share that one hardware interrupt (sound familiar?).
So, the typical x86 PC doesn't have a video card on a PCI bus.
What I can say with certainty is that my Hard Disks could certainly use
some more hardware interrupts. They do screw up and I get Kernel error
messages about missed interrupts. Obviously, this isn't as large a
problem with the Hard Disks because they just try again and the user
probably doesn't notice.
I was also thinking that if all of the information transfered to the
video board is done by DMA that we could do this backwards and have the
CPU interrupt the video board when more information was ready. The CPU
would probably have to check to see if the video board's DMA was idle first.
--
JRT
More information about the Open-graphics
mailing list