From owner-cvs-src@FreeBSD.ORG Thu Sep 18 06:14:37 2003 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 9F4DB16A4B3; Thu, 18 Sep 2003 06:14:37 -0700 (PDT) Received: from locore.org (ns01.locore.org [218.45.21.227]) by mx1.FreeBSD.org (Postfix) with ESMTP id ECAB143FE0; Thu, 18 Sep 2003 06:14:34 -0700 (PDT) (envelope-from iwasaki@jp.FreeBSD.org) Received: from localhost (ns01.locore.org [218.45.21.227]) h8IDDx4l066699; Thu, 18 Sep 2003 22:13:59 +0900 (JST) (envelope-from iwasaki@jp.FreeBSD.org) Date: Thu, 18 Sep 2003 22:14:15 +0900 (JST) Message-Id: <20030918.221415.26537897.iwasaki@jp.FreeBSD.org> To: jhb@FreeBSD.org From: Mitsuru IWASAKI In-Reply-To: References: <1063826489.18459.1.camel@herring.nlsystems.com> X-Mailer: Mew version 2.2 on Emacs 20.7 / Mule 4.0 (HANANOEN) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: dfr@nlsystems.com cc: cvs-all@FreeBSD.org cc: iwasaki@FreeBSD.org Subject: Re: cvs commit: src/sys/dev/acpica acpi_pci.c src/sys/dev/pci pci.c pci_private.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: Thu, 18 Sep 2003 13:14:37 -0000 Hi, John! > On 17-Sep-2003 Doug Rabson wrote: > > On Wed, 2003-09-17 at 15:58, John Baldwin wrote: > >> On 17-Sep-2003 Mitsuru IWASAKI wrote: > >> The values in memory should still be the same, so it should be sufficient > >> simply to write back the already existent intline value back to the > >> register. IOW, you shouldn't hae to call PCI_ASSIGN_INTERRUPT(), but > >> should do something more like: > >> > >> if (cfg->intpin > 0 && PCI_INTERRUPT_VALID(cfg->intline)) > >> pci_write_config(child, PCIR_INTLINE, cfg->intline, 1); > >> > >> Eventually pci_suspend/resume should be saving and restoring all of the > >> header registers and known capability registers for child devices. > > > > How will this re-establish irq routing? The intline register is just > > informative - don't you have to re-program the host chipset via acpi or > > pcibios? > > For the APIC case, there is no programming, it's hardwired on the board. > For actual link devices, I'm inclined to think that they should have their > own suspend/resume methods at the device level for each link device. > This means that the $PIR code would have to be smarter and use link devices > like the ACPI code does though. I thought that acpi_pci_link_resume() restore the PRT entries for ACPI enabled system, but for non-ACPI system we need some sort of PCI suspend/resume methods as John suggested. Yes, my pci_resume code is not smart at all :), but it's enough for my purpose as the first implementation. Please feel free to re-write the code if you get chance. Thanks