PATCH: power down acpi and pci devices in suspend/resume

Nate Lawson nate at
Wed Nov 24 17:25:06 PST 2004

Kevin Oberman wrote:
>>From: Nate Lawson <nate at>
>>Kevin Oberman wrote:
>>>I have tried the new set of ACPI power patches and they are better. Now
>>>the system almost works after resume. Only the cbb fails:
>>>cbb0: bad Vcc request. ctrl=0xffffff88, status=0xffffffff
>>>cbb_power: 0V
>>>tdkphy0: detached
>>Apologies, I just found what was causing this.  My patch to perform 
>>suspending before powering down devices didn't get merged with this tree 
>>where I was implementing powerstates.  I fixed this and unified pci/acpi 
>>power on suspend behavior under the tunable/sysctl "debug.suspend_power".
>>Please test the attached patch.  If it works well, I'll commit it as 
>>shown to get testing in -current.  If it causes trouble, the default for 
>>debug.suspend_power can be set to 0.
> The new patch removed the annoying "bad Vcc request" messages, but
> that's all it improved.  With the new patch I still lose cbb1 and
> anything connected to it. I see no real difference in the log other than
> the disappearance of the Vcc messages, but that is a good thing.
> If I set debug.suspend_power to '0', everything works as it did
> before. All PCI and CardBus devices seem to work fine after resume.

I have a hypothesis that your PCI-Cardbus bridge is losing its 
configuration on being set to D3.  Mine happens to retain it, hence it 
working fine.  The solution is to restore bridge device config registers 
(non-type 0) in pci_cfg_save/restore().  I'll check with Warner to see 
if he's working on that, if not, I may.


More information about the freebsd-acpi mailing list