From owner-freebsd-current@FreeBSD.ORG Wed Dec 7 23:12:14 2005 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2F45616A425; Wed, 7 Dec 2005 23:12:14 +0000 (GMT) (envelope-from darren.pilgrim@bitfreak.org) Received: from mail.bitfreak.org (mail.bitfreak.org [65.75.198.146]) by mx1.FreeBSD.org (Postfix) with ESMTP id E21D143D46; Wed, 7 Dec 2005 23:11:51 +0000 (GMT) (envelope-from darren.pilgrim@bitfreak.org) Received: from smiley (mail.bitfreak.org [65.75.198.146]) by mail.bitfreak.org (Postfix) with ESMTP id 3578119F2C; Wed, 7 Dec 2005 15:11:47 -0800 (PST) From: "Darren Pilgrim" To: "'John Baldwin'" , Date: Wed, 7 Dec 2005 15:11:41 -0800 Message-ID: <001801c5fb83$987529f0$642a15ac@smiley> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook, Build 10.0.6626 In-Reply-To: <200512070906.05117.jhb@freebsd.org> X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 Importance: Normal Cc: Subject: RE: can someone explain...[ PCI interrupts] X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 07 Dec 2005 23:12:14 -0000 From: John Baldwin >=20 > No, PCI interrupts are level triggered. Individual APIC pins > can be programmed to be edge-triggered, sure. However, then > interrupts stop working if 2 devices are sharing a line and > one interrupts after the other has already interrupted and > after the second device's ISR has already run. In this case, > the ithread will finish and go back to sleep waiting for an > interrupt. However, since the ISR for the second device > wasn't run after that device asserted its interrupt pin, the > second device will keep the pin pulled low forever, so there > will never be a hi -> low transition that the APIC pin would > post an interrupt for and that intpin and all attached > devices are effectively dead. What if the APIC was programmed to be edge-triggered just before the = ithread runs and programmed back to level-trigger when the ithread completes?