From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 1 13:37:25 2004 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AAEC516A4CE for ; Tue, 1 Jun 2004 13:37:25 -0700 (PDT) Received: from mail5.speakeasy.net (mail5.speakeasy.net [216.254.0.205]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8276243D5F for ; Tue, 1 Jun 2004 13:37:25 -0700 (PDT) (envelope-from jhb@FreeBSD.org) Received: (qmail 13979 invoked from network); 1 Jun 2004 20:37:25 -0000 Received: from dsl027-160-063.atl1.dsl.speakeasy.net (HELO server.baldwin.cx) ([216.27.160.63]) (envelope-sender ) encrypted SMTP for ; 1 Jun 2004 20:37:24 -0000 Received: from 10.50.41.233 (gw1.twc.weather.com [216.133.140.1]) by server.baldwin.cx (8.12.11/8.12.11) with ESMTP id i51KbLN5059085; Tue, 1 Jun 2004 16:37:22 -0400 (EDT) (envelope-from jhb@FreeBSD.org) From: John Baldwin To: freebsd-acpi@FreeBSD.org Date: Tue, 1 Jun 2004 16:38:04 -0400 User-Agent: KMail/1.6 References: <200406011531.09077.jhb@FreeBSD.org> <20040601131817.N29571@root.org> In-Reply-To: <20040601131817.N29571@root.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200406011638.04400.jhb@FreeBSD.org> X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on server.baldwin.cx cc: acpi@FreeBSD.org cc: marcel@FreeBSD.org Subject: Re: Patch: Defer bus_config_intr() until bus_alloc_resource().. X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Jun 2004 20:37:25 -0000 On Tuesday 01 June 2004 04:25 pm, Nate Lawson wrote: > On Tue, 1 Jun 2004, John Baldwin wrote: > > I need the patch below in order to turn on bus_config_intr() when using > > the I/O APICs. The original problem is that the _CRS of link devices is > > configured which is the PIC IRQ and thus screws up intpins when using the > > APIC. It basically takes bus_config_intr() out of the resource parsing > > code and does the config when an IRQ is allocated via > > bus_alloc_resource() for normal devices, and when a PCI IRQ is routed for > > PCI link devices. > > I appreciate what you're trying to do but I don't like this approach. > Deferring half the parsing to alloc time and moving it from > acpi_resource.c results in a lot of unnecessary duplication and layering > violation. The real issue you're trying to work around is that you want > to defer the actual config_intr until you're sure which intr you're going > to use. Well, arguably it exposes an improper layering violation when bus_config_intr() was added. bus_config_intr() was probably added in the place that it is now simply because it was easier to do so. That doesn't mean it's in the correct place. I don't really consider having an ACPI-specific routine understand ACPI-specific resources. One possibility though might be to add a wrapper function to acpi_resource.c that does the bus_config_intr() on a passed-in pointer to an ACPI resource. That might reduce at least some of the duplication. > Some suggestions... Make polarity and trigger real resource types > (sys/i386/include/resource.h) and do a bus_set_resource of them in the > resource parsing code. Then in the alloc code do a bus_get_resource for > them and then call BUS_CONFIG_INTR. Additionally, instead of doing the > deferred BUS_CONFIG_INTR in the alloc code, it should actually be done in > the MD code for bus_setup_intr(). This seems cleaner since allocating an > irq resource shouldn't poke the hw until bus_setup_intr(). *sigh* Trigger and polarity are not resources, they are a property of the IRQ resource perhaps. Unfortunately, our rman(9) interface doesn't support type-specific resource attributes and I'm really not up for chainsawing rman(9) enough to get that into place. Getting this bug fixed is holding up a lot of other work. -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org