Hi, I am happy to announce the first public version of my PCISLEEP
tool. You can get it at:
http://www.coli.uni-sb.de/~eric/stuff/soft/pcisleep-21jan2005.zip
Functions of this (2.5-3.5 kB / 1000 lines NASM) new creation:
- /L mode shows a (mostly numeric) PCI device listing, including
information about bridges and power management capabilities, as
well as a human-readable description of the device class
- /S mode puts all devices which support power management idle or
halted states into those low-energy states and waits for a key
press. Then it returns the devices to normal on state...
- /V mode works as /S mode, but it also saves the full PCI (or AGP)
config state of the active VGA card (I tried to make this work on
multi-VGA systems, too) and completely suspends the VGA card (if
D3 mode supported by power management for it). Plus it activates
boring DPMS monitor off energy saving screen saver. When you press
a key, the PCI config state is restored, the VGA BIOS is called
(will look as if you had rebooted) and the monitor turned on again
The /L (listing) mode shows a quick overview of your devices, but
of course lspci -vv would show up to 20 lines per device while my
tool shows only 1 line per device... Tyler sent a sample output:
...
Fields: bus.device(.function) [vendor:model] classcode(/iface) class [details]
Interfaces: 10 is OHCI for USB/FireWire, 20 is EHCI for USB 2.0, etc.
Bridges: [00-02(02)] means 'from bus 0 to bus 2'
Power Management: [D1+D2-D3+] means 'D1 and D3 supported'
(D1 is idle, D2 is halt, D3 is soft-off)
BusDevF vend:type class description ...
00.00 [8086:7180] 0600CPU host bridge
00.01 [8086:7181] 0604PCI bridge [00-01(01)]
00.0f [9004:6078] 0100SCSI controller [D1-D2-D3+]
00.10 [0e11:b011] 0280network
00.14.0 [8086:7110] 0601ISA bridge
00.14.1 [8086:7111] 0101/80 IDE controller
00.14.2 [8086:7112] 0c03USB controller
00.14.3 [8086:7113] 0680southbridge / ACPI?
01.00 [102b:051f] 0300VGA graphics
PCI bus scan done.
As you can see, only his SCSI controller supports power management,
but because D3 mode requires re-loading the BIOS / drivers on return
to awake D0 mode, PCISLEEP would actually have NO energy saving
effect on his computer (D3 is only used for VGA, and his VGA does
not support any Dn mode except D0, on). The vendor id 8086 is Intel.
Very creative of those guys ;-).
QUESTIONS: Does the /V option work for you on a system for which
the VGA graphics do support D3? Or do you get a crash and have to
reboot to get control over the screen output again? Do you think
that the /S option really saves energy on your system (only works
if D1 or D2 is supported by some of your devices in class 0{1,2,3,4,7}xx,
as PCISLEEP does not dare to put other devices to sleep...)? Does
PCISLEEP fail to list some of your devices which other tools, like
Linux lspci, do properly detect? Should I change some of the class
descriptions / are some class descriptions too vague for your system?
Because PCISLEEP is quite big, I would prefer not to make it part of
FDAPM... Notice that there is no cache flush or disk spindown in
PCISLEEP, but you can always run FDAPM before PCISLEEP for that.
Enjoy, and please test :-).
PS: I uploaded a small FDAPM upload - Fox told me that APM 1.1 is
enough to power off a system, while FDAPM before 21jan2005 insisted
on having APM 1.2 for that. A far more interesting QUESTION: Can
you power off systems with
http://www.coli.uni-sb.de/~eric/pnpoff.zip (temporary location,
simple tool without cache flush...) for which FDAPM fails to power
them off? I am in particular interested in Athlon systems with a
BIOS which has no APM support. PnPOFF uses PnP BIOS calls, but first
tests indicate that only BIOSes which support APM anyway support the
used Power Off message of PnP BIOS - so adding PNPOFF to FDAPM might
be pointless.
PPS: Check www.oldskool.org/pc/throttle/ and home.arcor.de/g.s/ scsispdn
for two other interesting tools, ACPI CPU clock throttling and SCSI spin
down (the latter requires ASPI drivers). By the way, tssc.de has DOS
drivers for things like ATA/IDE drives on all kinds of modern busses,
like PCMCIA and FireWire, but their stuff is quite non-cheap. Found their
site because they have Win3.x PCI tools as well. ACPI is very complex,
about 70k for the parser/vm, but simple power management (e.g. power off
(S5) and standby (S1) and suspend (S3/S4) and throttling require no big
parsing of data structures, but I have ZERO idea how much of Sn mode is
done by BIOS - e.g. S4 suspend to disk is usually not done by BIOS...
And where is P_CNT / P_BLK throttle reg? At PM control reg + 10h maybe?
THROTTLE uses PCI tables to find P_CNT... Hints and testers wanted!)
... should be possible without too much hassle. ACPI votes please X-).
Eric
---
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting