From owner-cvs-src@FreeBSD.ORG Wed Aug 11 14:52:50 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D664F16A4CE; Wed, 11 Aug 2004 14:52:50 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id CA8F343D1F; Wed, 11 Aug 2004 14:52:50 +0000 (GMT) (envelope-from njl@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id i7BEqofo071669; Wed, 11 Aug 2004 14:52:50 GMT (envelope-from njl@repoman.freebsd.org) Received: (from njl@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id i7BEqoNN071668; Wed, 11 Aug 2004 14:52:50 GMT (envelope-from njl) Message-Id: <200408111452.i7BEqoNN071668@repoman.freebsd.org> From: Nate Lawson Date: Wed, 11 Aug 2004 14:52:50 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/dev/acpica acpi_pci_link.c acpi_pcib.c acpi_pcib_acpi.c acpi_pcib_pci.c acpi_pcibvar.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Aug 2004 14:52:51 -0000 njl 2004-08-11 14:52:50 UTC FreeBSD src repository Modified files: sys/dev/acpica acpi_pci_link.c acpi_pcib.c acpi_pcib_acpi.c acpi_pcib_pci.c acpi_pcibvar.h Log: Re-work ACPI PCI IRQ routing (_PRT, link devices). The old approach was incomplete in that the PRT routing was not aware of link programming. Fix this by doing all routing through the link devices. The new algorithm for setting up links is: 1. Read _CRS to get current setting. If invalid (not in _PRS), then set to 0. 2. Attempt to call _DIS on the link. If successful, mark the link as not routed. Otherwise, assume it still is. Then when a routing request occurs: 3. Update weights for all IRQs 4. Attempt to route the initial IRQ if valid 5. If that fails, walk through the sorted list, attempting to route IRQs. 6. Configure the trigger/polarity based on _PRS. Other changes: * Add acpi_pci_find_prt() to look up the PRT entry for a given device and acpi_pci_link_route() to select/route the best IRQ for it. * Remove duplicated code in acpi_pcib_route_interrupt() that picked the first IRQ from _PRS. * Remove unneeded arguments from acpi_pcib_resume() and friends. * Ignore _STA on link devices but report if it seems strange. * Add a prt_source handle to the PRT structure since the ACPI struct ACPI_PCI_ROUTING_TABLE uses a fixed-size entry for it. We'll need to dynamically size this object if we want to use it the same way ACPI-CA does. Null-terminate the source. Tested by: Luo Hong , Jeffrey Katcher Info from: jhb, Len Brown (Intel) Revision Changes Path 1.19 +242 -201 src/sys/dev/acpica/acpi_pci_link.c 1.47 +48 -264 src/sys/dev/acpica/acpi_pcib.c 1.39 +2 -6 src/sys/dev/acpica/acpi_pcib_acpi.c 1.10 +2 -3 src/sys/dev/acpica/acpi_pcib_pci.c 1.3 +35 -4 src/sys/dev/acpica/acpi_pcibvar.h