cvs commit: src/sys/dev/acpica acpi_pci.c src/sys/dev/pci pci.c
jhb at FreeBSD.org
Wed Sep 17 12:35:43 PDT 2003
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:
>> > 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
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.
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
More information about the cvs-src