From owner-freebsd-current@FreeBSD.ORG Sun Apr 10 06:22:23 2005 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 3E01516A4CE; Sun, 10 Apr 2005 06:22:23 +0000 (GMT) Received: from carver.gumbysoft.com (carver.gumbysoft.com [66.220.23.50]) by mx1.FreeBSD.org (Postfix) with ESMTP id CD3BB43D46; Sun, 10 Apr 2005 06:22:22 +0000 (GMT) (envelope-from dwhite@gumbysoft.com) Received: by carver.gumbysoft.com (Postfix, from userid 1000) id BFF6B72DE5; Sat, 9 Apr 2005 23:22:22 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by carver.gumbysoft.com (Postfix) with ESMTP id BAF0F72DE4; Sat, 9 Apr 2005 23:22:22 -0700 (PDT) Date: Sat, 9 Apr 2005 23:22:22 -0700 (PDT) From: Doug White To: John Baldwin In-Reply-To: <200504081656.51917.jhb@FreeBSD.org> Message-ID: <20050409231647.Y74901@carver.gumbysoft.com> References: <20050406233405.O47071@carver.gumbysoft.com> <200504081656.51917.jhb@FreeBSD.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: freebsd-current@FreeBSD.org Subject: Re: Potential source of interrupt aliasing 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: Sun, 10 Apr 2005 06:22:23 -0000 On Fri, 8 Apr 2005, John Baldwin wrote: > > A quick hack would be to blacklist intpin 16 on the first IOAPIC and bump > > any PCI devices that ACPI says are claiming that interrupt. I don't know > > how difficult this is to do with ACPI. How to handle this for ATPIC mode > > is a little difficult since the boot interrupt either gets routed to IRQ9 > > or ends up as a stray on IRQ7 (on my SCB2 at least -- other boards may > > vary). > > You can't just move APIC interrupts around. They are physically wired that > way. ATPIC mode won't matter. If there is a way to disable this in > hardware, then it needs to be done in the _PIC method of the BIOS for ACPI. > I don't think there's any way to allow for this for non-ACPI though as the > MPTable spec only mentions the IMCR which these boards don't implement. I didn't think so, at least in the general case. It may be possible to reprogram ICH registers to have usb use other INT lines if they're coming up through SERIRQ and aren't physically wired to the pin, but I haven't dug through the docs for that. For fun, I put together this one-liner to at least test the theory: http://people.freebsd.org/~dwhite/intr_machdep.c.20050409.patch This makes the aliased interrupts go away at the cost of hitting sched_lock for each ithread interrupt. I'm trying to dream up a way of telling if the ithread is active or scheduled so we don't need to bump it again with setrunqueue(). I think I can use the it_need sparkplug to at least save mutex grabs on interrupts that fire much faster than their ithread handlers cycle. I'd like better granularity, though, but I'm not sure that setting a flag that is cleared just before mi_switch() in ithread_loop() and set just after won't race against an interrupt checking it to see if it needs to setrunqueue() the ithread. Maybe clear the flag before trying to grab sched_lock? I'm also not sure how much this change affects system performance. I guess I should hit up rwatson for some info on MUTEX_PROFILING. :) -- Doug White | FreeBSD: The Power to Serve dwhite@gumbysoft.com | www.FreeBSD.org