pci buses missing from suspend/resume powerstate

J.R. Oldroyd fbsd at opal.com
Sat Apr 2 15:30:04 UTC 2011


I've been looking at why some devices do not work after ACPI
suspend/resume sequence on a laptop here, and have discovered that two
of the system's four PCI buses are not being powered down and up again
during the ACPI suspend/resume sequence.  This is, I'm guessing, why the
devices on those buses no longer work after the resume.  Devices on the
other PCI buses that are being powered down/up do work OK after the
resume.

Why would entire PCI buses be omitted from the:
	acpi_pci_set_powerstate_method
power down/up sequence?

Laptop has device tree:
nexus0
  ram0
  cryptosoft0
  apic0
  acpi0
    cpu0
      hwpstate0
      acpi_perf0
      cpufreq0
    cpu1
      acpi_perf1
    pcib0
      pci0
        hostb0
        pcib1
          pci1
            vgapci0
              vgapm0
                scpm0
              acpi_video0
              drm0
            hdac1
              pcm2
        pcib2
          pci2
            ath0
        pcib3
          pci3
            re0
              miibus0
                rgephy0

If I instrument acpi_pci_set_powerstate_method, it is being called on
the suspend/resume for pci0 and pci1 but NOT for pci2 or pci3.  After
the resume, devices ath0 and re0 no longer work.

Any thoughts?

Lots more info (devinfo, dmesg, dsdt, verbose boot, pciconf, etc) here:
	http://opal.com/jr/toshiba_l675d/

	-jr


More information about the freebsd-acpi mailing list