Re: Port of 3c575_cb to 2.3.43pre8

From: Richard B. Johnson (root@chaos.analogic.com)
Date: Mon Feb 14 2000 - 09:10:26 EST


On Mon, 14 Feb 2000, Alan Cox wrote:

> > IRQ7 has always been connected to the printer port. The interrupt
> > controller handles it just like all the other PWB traces going
> > to it. It is not an "unknown" interrupt.
>
> IRQ7 is also raised to indicate a spurious interrupt (ie nobody owning up
> to having requested it). That is one reason its used for the parallel port
> on a PC - the odd extra irq does no harm
>

This is not possible. Hardware interrupts are created by hardware.
There are only two interrupt bits going to the Intel CPUs, one is
maskable and comes from the first interrupt controller and/or APIC, the
second interrupt controller is connected to the first (cascaded) because
only the first is connected to the CPU. The non-maskable interrupt
comes from the parity error detection if it exists.

All of the traces (bits) connected to the interrupt controllers are
treated exactly the same way, defined by the programming of the
interrupt controllers. They have a certain priority (programmable) and
they can be masked (enabled or disabled). They also set an internal
latch which can be reset either with a specific EOI or a non-specific
EOI.

Neither the controllers nor the CPU have any notion of "spurious"
interrupts. They are all real. IRQ7 is the lowest priority interrupt
when the controller is programmed in the usual way without rotating
priority. The Centronics printer port does not require any interrupts
to function in the PC/XT-AT environment. This is why the lowest priority
bit was connected there. It could be used to signal a problem such as
"paper out", but in the PC/XT-AT BIOS environment, it was not used at all.

It is commonplace to provide an interrupt service routine for any
unallocated interrupts. Such a routine may print a "unknown interrupt"
message. The presence of such a routine has nothing specific to do with
IRQ7. If IRQ7 was not allocated, and the printer control port had bit
4 set to enable its IRQ line, and then the -ACK bit was set from true
to false, then such an "unallocated interrupt" would occur. Considering
the trouble one must go through to do this, it is hardly "spurious" nor
"unknown".

Cheers,
Dick Johnson

Penguin : Linux version 2.3.41 on an i686 machine (800.63 BogoMips).

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Feb 15 2000 - 21:00:27 EST