From owner-freebsd-current@FreeBSD.ORG Mon Jul 11 19:58:31 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 AD30C16A423 for ; Mon, 11 Jul 2005 19:58:31 +0000 (GMT) (envelope-from freebsd-current@m.gmane.org) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by mx1.FreeBSD.org (Postfix) with ESMTP id D683943D48 for ; Mon, 11 Jul 2005 19:58:30 +0000 (GMT) (envelope-from freebsd-current@m.gmane.org) Received: from list by ciao.gmane.org with local (Exim 4.43) id 1Ds4Oj-0001WF-Ns for freebsd-current@freebsd.org; Mon, 11 Jul 2005 21:57:01 +0200 Received: from mulder.f5.com ([205.229.151.150]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 11 Jul 2005 21:57:01 +0200 Received: from atkin901 by mulder.f5.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Mon, 11 Jul 2005 21:57:01 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: freebsd-current@freebsd.org From: othermark Date: Mon, 11 Jul 2005 12:55:54 -0700 Lines: 61 Message-ID: References: <200507111438.08844.jhb@FreeBSD.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7Bit X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: mulder.f5.com User-Agent: KNode/0.9.0 Sender: news Subject: Re: is there a way not to believe the bios' IRQ prog and use the $PIR? 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: Mon, 11 Jul 2005 19:58:31 -0000 John Baldwin wrote: > On Monday 11 July 2005 12:17 pm, othermark wrote: >> Hi, >> >> I believe since the following commit, I have had serious problems with >> interrupts on one class of machines (TYAN S1867 - thunder 2500): >> >> http://article.gmane.org/gmane.os.freebsd.devel.cvs.src/46247/ >> >> Is there a tunable I'm not aware of that I could revert back to >> not believing the BIOS and use the $PIR entries? > > You can override the IRQs for any link device by setting > hw.pci.link.0x12.irq=XX to set link 0x12 to irq XX for example. You could > also modify $PIR to never trust a BIOS value > 16: > > --- //depot/vendor/freebsd/src/sys/i386/pci/pci_pir.c 2005/04/14 18:25:24 > +++ //depot/user/jhb/acpipci/i386/pci/pci_pir.c 2005/07/11 18:13:16 > @@ -327,6 +327,15 @@ > if (irq == PCI_INVALID_IRQ || irq == pci_link->pl_irq) > return; > > + /* Don't trust any BIOS IRQs greater than 15. */ > + if (irq >= NUM_ISA_INTERRUPTS) { > + printf( > + "$PIR: Ignoring invalid BIOS IRQ %d from %d.%d.INT%c for link %#x\n", > + irq, entry->pe_bus, entry->pe_device, pin + 'A', > + pci_link->pl_id); > + return; > + } > + > /* > * If we don't have an IRQ for this link yet, then we trust the > * BIOS, even if it seems invalid from the $PIR entries. > @@ -334,7 +343,7 @@ > if (pci_link->pl_irq == PCI_INVALID_IRQ) { > if (!pci_pir_valid_irq(pci_link, irq)) > printf( > - "$PIR: Using invalid BIOS IRQ %d from %d.%d.INT%c is for link %#x\n", > + "$PIR: Using invalid BIOS IRQ %d from %d.%d.INT%c for link %#x\n", > irq, entry->pe_bus, entry->pe_device, pin + 'A', > pci_link->pl_id); > pci_link->pl_irq = irq; > At first blush this seems to do the trick! My log used to be flooded with the following on this machine, but now under simultaneous load with that patch I get none: Jul 11 18:44:59 consrv kernel: sio17: 171 more interrupt-level buffer overflows(total 5881) Jul 11 18:45:30 consrv kernel: sio17: 26 more interrupt-level buffer overflows (total 5907) Jul 11 18:46:00 consrv kernel: sio17: 48 more interrupt-level buffer overflows (total 5955) -- othermark atkin901 at nospam dot yahoo dot com (!wired)?(coffee++):(wired);