From owner-freebsd-current@FreeBSD.ORG Fri Jun 6 11:37:10 2003 Return-Path: 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 BE24837B401; Fri, 6 Jun 2003 11:37:10 -0700 (PDT) Received: from harmony.village.org (rover.bsdimp.com [204.144.255.66]) by mx1.FreeBSD.org (Postfix) with ESMTP id A9B8443FAF; Fri, 6 Jun 2003 11:37:08 -0700 (PDT) (envelope-from imp@bsdimp.com) Received: from localhost (warner@rover2.village.org [10.0.0.1]) by harmony.village.org (8.12.8/8.12.3) with ESMTP id h56Ib8kA041079; Fri, 6 Jun 2003 12:37:08 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Fri, 06 Jun 2003 12:36:54 -0600 (MDT) Message-Id: <20030606.123654.96603092.imp@bsdimp.com> To: jhb@FreeBSD.org From: "M. Warner Losh" In-Reply-To: References: X-Mailer: Mew version 2.1 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit cc: current@FreeBSD.org Subject: Re: [PATCH] Tweak re-routing of PCI interrupts X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 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: Fri, 06 Jun 2003 18:37:11 -0000 In message: John Baldwin writes: : I have a small tweak to the PCI code that re-routes PCI interrupts. : Basically, it does two things, 1) make the comment less ia64-specific : and 2) if the interrupt route returns an invalid IRQ (i.e. 255), then : we don't change the intline. In other words, if we can't route the : interrupt, we just assume that the firmware knows more than we do and : go with the value it stuck in the register. 1) is a no-brainer, but : I wonder what people think about 2). Patch below: I think #2 isn't so good. #1 is a no-brainer :-) : #if ... ... : + irq = PCIB_ROUTE_INTERRUPT(pcib, dev, cfg->intpin); : + if (PCI_INTERRUPT_VALID(irq)) : + cfg->intline = irq; : + else : #endif : + irq = cfg->intline; : + resource_list_add(rl, SYS_RES_IRQ, 0, irq, irq, 1); : } : } The part I don't like is that if we can't route an interrupt, we assume that the interrupt that was written there before is good and routed. This strikes me as an unwise assumption. Also, we haven't recorded our info in the underlying pci register. Don't know if that will matter for other OSes that are booted after we are. Warner