Date: Wed, 17 Sep 2003 10:58:50 -0400 (EDT) From: John Baldwin <jhb@FreeBSD.org> To: Mitsuru IWASAKI <iwasaki@FreeBSD.org> Cc: cvs-all@FreeBSD.org Subject: RE: cvs commit: src/sys/dev/acpica acpi_pci.c src/sys/dev/pci pci.c pci_private.h Message-ID: <XFMail.20030917105850.jhb@FreeBSD.org> In-Reply-To: <200309170832.h8H8Wii8043278@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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. -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20030917105850.jhb>