Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 May 1997 23:32:26 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, se@freebsd.org
Cc:        current@freebsd.org, gurney_j@resnet.uoregon.edu
Subject:   Re: cvs commit: src/sys/sys interrupt.h src/sys/kern kern_intr.c
Message-ID:  <199705271332.XAA10911@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> >[Edge sensitive share interrupts]

>> No, the loop is best done in individual drivers.  The low level

>But it doesn't suffice, that each driver loops as long 
>as is responsible for the activation of the interrupt line.

I assumed only one driver per interrupt line.

>I had been hoping that the low level code could be made 
>to check a flag, which if set would require the ICU to be
>queried about the interrupt pin state. But I've got to
>admit, that it has been too long since I programmed an 8259, 
>and that I don't remember if you could read out the level 
>applied to some edge triggered IRQ pin ... (And you seem
>to tell me, that there is no way to do this ... Too bad!)

You can read the state of the IRQ pin from the request latch
if the edge latch is not set.  Otherwise the request latch
is 0.  There is no way to read or write the edge latch
(other than reinitializing the 8259).  Thus the request latch
is perfectly unusable for recovering from edge triggering
braindamage.  It can only be used to determine the IRQ state
of masked interrupts.

>How about adding a second type of interrupt multiplexer,
>which does expect the device's handler to return a status
>indicating whether this device caused the interrupt ...
>This multiplexer would only be installed for edge-triggered
>IRQ lines, and the faster one that just does a single poll
>pass over all devices would be used for PCI/EISA with level
>triggered interrupts ... ?

This can be now done without changing all drivers by returning
the status in the interrupt descriptor instead of directly.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199705271332.XAA10911>