From owner-freebsd-current Tue Mar 21 07:03:12 1995 Return-Path: current-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id HAA21821 for current-outgoing; Tue, 21 Mar 1995 07:03:12 -0800 Received: from FileServ2.MI.Uni-Koeln.DE (FileServ2.MI.Uni-Koeln.DE [134.95.212.2]) by freefall.cdrom.com (8.6.10/8.6.6) with SMTP id HAA21809 for ; Tue, 21 Mar 1995 07:03:04 -0800 Received: by FileServ2.MI.Uni-Koeln.DE id AA11533 (5.67b/IDA-1.5 for current@freebsd.org); Tue, 21 Mar 1995 15:55:57 +0100 Message-Id: <199503211455.AA11533@FileServ2.MI.Uni-Koeln.DE> From: se@MI.Uni-Koeln.DE (Stefan Esser) Date: Tue, 21 Mar 1995 15:55:56 +0100 In-Reply-To: Bruce Evans "Re: Sharing interrupts with PCI devices?" (Mar 21, 15:29) X-Mailer: Mail User's Shell (7.2.5 10/14/92) To: Bruce Evans , current@FreeBSD.org Subject: Re: Sharing interrupts with PCI devices? Sender: current-owner@FreeBSD.org Precedence: bulk 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: Zentrum fuer Paralleles Rechnen Tel: +49 221 4706019 Universitaet zu Koeln FAX: +49 221 4705160 Weyertal 80 50931 Koeln