RE: cvs commit: src/sys/dev/acpica acpi_pci.c src/sys/dev/pci pci.c pci_private.h

From: Doug Rabson <dfr_at_nlsystems.com>
Date: 17 Sep 2003 20:21:29 +0100
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?
Received on Wed Sep 17 2003 - 12:21:56 UTC