Re: Fighting for the power.
"M. Warner Losh" <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.acpi,gmane.os.freebsd.current,gmane.os.freebsd.devel.mobile |
|---|---|
| Message-ID | <[email protected]> |
In message: <[email protected]> "Paul B. Mahol" <[email protected]> writes: : On 5/7/09, M. Warner Losh <[email protected]> wrote: : > In message: <[email protected]> : > "Paul B. Mahol" <[email protected]> writes: : > : On 5/4/09, Alexander Motin <[email protected]> wrote: : > : > 2. PCI devices : > : > PCI bus provides method to control device power. For example, I have : > : > completely no use for my FireWire controller and most of time - EHCI USB : > : > controller. Disabling them allows me to save about 3W of power. To : > : > disable all unneeded PCI devices you should build kernel without their : > : > drivers and add to loader.conf: : > : > hw.pci.do_power_nodriver=3 : > : > To enable devices back all you need to do is just load their drivers as : > : > modules. : > : : > : Unloading modules doesnt put them back into into D3 state. : > : You are forced to load some another module again to put wanted device : > : into D3 state. : > : > It should. If it isn't, that's a bug. : : It's a bug. : : On machine resume(pci_resume), pci_cfg_restore() is called causing D3 -> D0 for : all devices(including not attached ones). : Unloading module/detaching device doesn't call pci_cfg_save. : : Should device_detach routine be used or new one like : pci_driver_removed() implemented? No. device_detach shouldn't be used for this. This should happen all in the PCI bus code when do_power_nodriver is > 0. Warner