Bill Holler wrote: > >Hi Aubrey, > >This is very interesting news. It is even more important on >server systems which generally never have any USB devices >attached (except perhaps a console keyboard/mouse).
Yeah, keyboard/mouse usually work as the UHCI devices, also impact idle power. > >Would it be possible to update the Solaris USB drivers to save >this power instead of disabling USB completely? Windows >USB drivers must have fixed this issue in software to be able >to save this power. USB team is working on this issue, they probably have a solution soon. Thanks, -Aubrey > >Thank you, >Bill > > >On 04/27/10 20:07, Li, Aubrey wrote: >> Solaris was known to have a gap of power between other OSes, so we >recently >> did some comparison between Solaris and other OSes on Intel NHM >platform. We >> found in idle, the gap can be filled by killing USB. We saw up to ~40w >power >> saving in idle at the worst case, and so, after fix that, we have the >same >> power meter readout in idle as windows. >> >> Thanks USB team to offer an workaround quickly. I shared it below. >> Usually, there are EHCI and UHCI host controllers on the platform. >> >> [EHCI] >> >> 1. EHCI configurations >> EHCI has *asynchronous schedule* and "periodic schedule" >configuration. These >> two lists processing will cause DMA operations and hurt idle power. >Usually, >> if there is no pipe opened(aka, usb devices attached), EHCI driver >will never >> enable those two processing, like the following: >> #prtconf -D >> ----snip---- >> pci8086,34de, instance #0 (driver name: ehci) >> ----snip---- >> >> But there could be an on-board device attached, like this: >> #prtconf -D >> ----snip---- >> pci8086,34de, instance #1 (driver name: ehci) >> storage, instance #0 (driver name: scsa2usb) >> disk, instance #1 (driver name: sd) >> ----snip---- >> >> 2. The way to check the configurations: >> #scanpci -v >> ----snip---- >> pci bus 0x0000 cardnum 0x1d function 0x07: vendor 0x8086 device >0x3a3a >> Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1 >> CardVendor 0x15d9 card 0x10a7 (Super Micro Computer Inc, Card >unknown) >> STATUS 0x0290 COMMAND 0x0146 >> CLASS 0x0c 0x03 0x20 REVISION 0x00 >> BIST 0x00 HEADER 0x00 LATENCY 0x00 CACHE 0x00 >> BASE0 0xfbf22000 SIZE 1024 MEM >> BASEROM 0x00000000 addr 0x00000000 >> MAX_LAT 0x00 MIN_GNT 0x00 INT_PIN 0x01 INT_LINE 0x0a >> ----snip--- >> >> # pcitool /p...@0,0 -d bdf=0.1d.07,bar0 -o 0x20 -s 4 -r >> 0x10031 (EHCI USBCMD - USB command register) >> >> if bit4, bit5 are set, that means asynchronous schedule and periodic >schedule >> are enabled to do the DMA operations in idle when there is no actual >USB >> operations, or even if there is no USB device connected at all. >> >> 3. Kill EHCI. >> We can either turn asynchronous schedule and periodic schedule off >or stop the >> controller. The following command will turn the two bits off. >> # pcitool /p...@0,0 -d bdf=0.1d.07,bar0 -o 0x20 -s 4 -w 0x10001 -r >> 0x10001 (EHCI USBCMD - USB command register). >> >> There should be several EHCI controller on the board, after kill all, >we saw ~30W >> power saving in idle. >> >> >> [UHCI] >> >> UHCI is simpler than EHCI, it has no asynchronous schedule and >periodic schedule >> setting, but it also hurts idle power when enabled. We can't control >the UHCI TD >> list, but in a similar way as EHCI, we can use pcitool to stop the >controller. >> >> 1. check UHCI setting. >> #scanpci -v >> ----snip---- >> pci bus 0x0000 cardnum 0x1a function 0x00: vendor 0x8086 device >0x3a37 >> Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4 >> CardVendor 0x15d9 card 0x10a7 (Super Micro Computer Inc, Card >unknown) >> STATUS 0x0290 COMMAND 0x0005 >> CLASS 0x0c 0x03 0x00 REVISION 0x00 >> BIST 0x00 HEADER 0x80 LATENCY 0x00 CACHE 0x00 >> BASE4 0x0000f0c0 SIZE 32 I/O >> BASEROM 0x00000000 addr 0x00000000 >> MAX_LAT 0x00 MIN_GNT 0x00 INT_PIN 0x01 INT_LINE 0x0b >> ----snip---- >> >> #pcitool /p...@0,0 -d bdf=0.1a.0,bar4 -o 0x0 -s 2 -r >> 0xc1 (UHCI USBCMD - USB command register) >> >> 2. Kill UHCI. >> # pcitool /p...@0,0 -d bdf=0.1a.0,bar4 -o 0x0 -s 2 -w 0xc0 -r >> 0xc0 (UHCI USBCMD - USB command register) >> >> After all the UHCI host controllers are stopped, we saw ~10W power >saving when idle. >> >> >> If you have a BIOS option to turn off USB at all, that would be great, >but make >> sure you have a PS/2 port to keep your system controllable. >> >> Thanks, >> -Aubrey >> _______________________________________________ >> pm-discuss mailing list >> [email protected] >> http://mail.opensolaris.org/mailman/listinfo/pm-discuss >> _______________________________________________ pm-discuss mailing list [email protected] http://mail.opensolaris.org/mailman/listinfo/pm-discuss
