Date: 17 Sep 2003 20:21:29 +0100 From: Doug Rabson <dfr@nlsystems.com> To: John Baldwin <jhb@FreeBSD.org> Cc: Mitsuru IWASAKI <iwasaki@FreeBSD.org> Subject: RE: cvs commit: src/sys/dev/acpica acpi_pci.c src/sys/dev/pci pci.c pci_private.h Message-ID: <1063826489.18459.1.camel@herring.nlsystems.com> In-Reply-To: <XFMail.20030917105850.jhb@FreeBSD.org> References: <XFMail.20030917105850.jhb@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2003-09-17 at 15:58, John Baldwin wrote: > On 17-Sep-2003 Mitsuru IWASAKI wrote: > > iwasaki 2003/09/17 01:32:44 PDT > > > > FreeBSD src repository > > > > Modified files: > > sys/dev/acpica acpi_pci.c > > sys/dev/pci pci.c pci_private.h > > Log: > > Add pci_resume() to reestablish interrupt routing after > > suspend/resume. > > Especially after hibernation, interrupt routing went back to initial > > status on some machines. > > 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?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1063826489.18459.1.camel>