Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Mar 1995 15:55:56 +0100
From:      se@MI.Uni-Koeln.DE (Stefan Esser)
To:        Bruce Evans <bde@zeta.org.au>, current@FreeBSD.org
Subject:   Re: Sharing interrupts with PCI devices?
Message-ID:  <199503211455.AA11533@FileServ2.MI.Uni-Koeln.DE>
In-Reply-To: Bruce Evans <bde@zeta.org.au> "Re: Sharing interrupts with PCI devices?" (Mar 21, 15:29)

next in thread | previous in thread | raw e-mail | index | archive | help
On Mar 21, 15:29, Bruce Evans wrote:
} Subject: Re: Sharing interrupts with PCI devices?
} >This results in low overhead operation 
} >in the non shared case, and in interrupts
} >masked for as short a period of time as
} >possible in the shared case.
} 
} >*** *** *** *** *** *** *** *** *** *** ***
} 
} >I will apply the PCI SHARED INTERRUPT patch
} >tomorrow. All PCI device drivers will have 
} >been checked to conform to the return value 
} >convention described above !
} 
} This results in a higher overhead operation
} in the non-shared case :-].  What about
} generic drivers like isa/bt742a.c?  Does
} the new requirement give higher overhead
} in the non-shared ISA (VLB) case?

Hmm, you are talking about the overhead
of returning a '0' or '1' ?
That's just one or two cycles ...

But to support any multiple PCI device cards, 
we just have to support shared interrupts!

(The interrupt handler exit code is necessary
to deal with shared EDGE triggered interrupts,
and to avoid deadlocks in case of misconfigured
level triggered interrupts.)

} The overheads are relatively _very_ small for
} devices that transfer large blocks so I'm not
} worried about the overheads for bt742a.

ONLY devices that will be used with shared ints
have to return some value. In fact, this could
be reduced to devices that use shared edge 
triggered interrupts, but it would make the 
central interrupt handler code more complex
and not necessarily any faster.

There will be a new function to register a 
(possibly) shared interrupt.
The device will have to supply a "tag" to the 
register_interrupt() call, to allow to uninstall
its handler at a later time.
Such an interrupt handler must return a '1', if 
this device requested the interrupt.

All other devices can use the current interrupt
scheme unmodified, and there is no run time 
penalty.

The code will first be used for PCI only.
But it's designed with ISA and EISA in mind.


Regards, Stefan

-- 
 Stefan Esser				Internet:	<se@ZPR.Uni-Koeln.DE>
 Zentrum fuer Paralleles Rechnen	Tel:		+49 221 4706019
 Universitaet zu Koeln			FAX:		+49 221 4705160
 Weyertal 80
 50931 Koeln



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