From owner-freebsd-hackers Tue Aug 6 22:31: 7 2002 Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7230637B400 for ; Tue, 6 Aug 2002 22:31:00 -0700 (PDT) Received: from heaven.gigo.com (heaven.gigo.com [64.57.102.22]) by mx1.FreeBSD.org (Postfix) with ESMTP id B6DB043E42 for ; Tue, 6 Aug 2002 22:30:59 -0700 (PDT) (envelope-from lioux@brturbo.com) Received: from 200-193-225-182-bsace7003.dsl.telebrasilia.net.br (200-193-225-182-bsace7003.dsl.telebrasilia.net.br [200.193.225.182]) by heaven.gigo.com (Postfix) with ESMTP id 75B81B8B6 for ; Tue, 6 Aug 2002 22:30:51 -0700 (PDT) Received: (qmail 96741 invoked by uid 1001); 7 Aug 2002 05:07:25 -0000 Message-ID: <20020807050725.96740.qmail@exxodus.fedaykin.here> Date: Wed, 7 Aug 2002 02:07:03 -0300 From: Mario Sergio Fujikawa Ferreira To: freebsd-hackers@FreeBSD.org Cc: Michael Nottebrock , Terry Lambert , Gary Jennejohn , Aaron Seelyes Subject: Cooling idle Athlon/Duron processors? (vcool) Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4i X-Operating-System: FreeBSD 4.6-STABLE X-Disclaimer: I hope you find what you are looking for... in life :) Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Hi, I know that this surfaces every once in a while. However, I thought I could try to add more information. I did a little digging on the issue. This is related to the following thread: Subject: AMD low power hacks http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=utf-8&threadm=ai6g47%242aat%241%40FreeBSD.csie.NCTU.edu.tw&rnum=1&prev=/groups%3Fq%3Dfreebsd%2Bpciconf%2Bvcool%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3Dutf-8%26selm%3Dai6g47%25242aat%25241%2540FreeBSD.csie.NCTU.edu.tw%26rnum%3D1 Well, I have been using this nice utility VCool under Windows for quite some time. It has been able to decrease my CPU temperatures from 60C to <50C. So, it's more than 10C decrease. VCool is available at http://vcool.occludo.net/. There is even a Linux version there at http://vcool.occludo.net/VC_Linux.html. Of course, the Linux version does not have all the features of the Windows version but the main feature which is temperature decrease exists. Here goes a little summary of what I could understand of both how and why VCool works: -------------- (Begin - From VCool homepage) - Requirements: Chipset with a VT8371, VT82C691/693A/694 or VT8363 Northbridge and a VT82C686x Southbridge (VIA KT133x or KX133) - limited support for AMD 761 ------- - How it works: The Athlon (or Duron) enters a lower power state only when its system bus is disconnected. However the (VIA-)Northbridge will only disconnect the bus if its "Bus Disconnect Enable" bit is set and the CPU is in STPGNT state. VCool allows you to enable this bit so your CPU can relax when there's nothing to do. Setting this bit might not be enough on some systems as the idle loop provided with the OS will not put the CPU into the STPGNT state recognized by the Northbridge. For those cases VCool includes an internal idle loop that forces the CPU into the STPGNT mode required by the Northbridge to initiate a bus disconnect. ------- - I see no cooling effect: (this is important for those testing the idea or questioning why this would work better than any ACPI support we already have) 1) Make sure your system is idle when VCool is not running: Software coolers will have no effect on busy systems. Use the task manager (W2K) or Wintop (W98) to see if there are any threads eating up time (e.g. SETI@home). 2) Start VCool and set the NB Cool Bit but deactivate the loop. Check again that your system is still idle. 3) Still no temperature drop? Then enable the idle loop. When you check utilization you should see that VCool eats up most of the CPU time now. On newer systems the Halt Detect PCI option is often required to achieve cooling. You can configure VCool to use this option instead of the cool bit or even both. NOTE: In some cases the idle loop might actually increase the temperature with Halt Detect enabled, so try try deactivating the loop. If you still don't see any cooling effect, VCool doesn't work on your system. -------------- (End - From VCool homepage) A Linux version of VCool can be found at http://vcool.occludo.net/VC_Linux.html . This version neither supports AMD761 correctly NOR has Halt Detect PCI option. Here is a summary of how the Linux version works. Detailed information on how it all should work can be found in http://vcool.occludo.net/VC_Theory.html 1) Check if CPU is either Atlhon or Duron AMD. Proceed if it is. Otherwise, stop; 2) Detect NorthBridge chipset 2.1) Set VIA=0, if it's neither 0x03051106, 0x03911106 nor 0x06861106 (Gigabyte GA-7DXR -> AMD761+VIA686); 2.2) Otherwise, VIA=1; 3) If (VIA==1) 3.1) Detect SouthBridge 3.1.1) If chipset is neither 0x30571106 nor 0x30571106, set VIA=0; 4) If (VIA==0) 4.1) Look all the possible addresses where either NorthBridge and SouthBridge could be; 4.1.1) If chip is either 0x03051106 or 0x03911106, found VIA NorthBridge; 4.1.2) If chip is 0x30571106, found VIA SouthBridge; 4.2) If found both NorthBridge and SouthBridge chips, proceed. Otherwise, stop; 5) SouthBridge, enable ACPI and find I/O-Space; 6) NorthBridge, enable "Bus Disconnect when STPGNT detected" bit; 7) Enter idle loop. Well, as you can notice, the AMD761 NorthBridge chipset is not supported since (4.2) will obviously never detect both NorthBridge and SouthBridge VIA chips. Also, there is no support for "Halt Detect PCI" option. Furthermore, since some systems cool better WITHOUT the idle loop as noted in the information from VCool homepage, this design is not optimal. Well, what we need to fix... Wishlist: 1) AMD761 NorthBridge has specific support to disconnect the bus when entering either HLT or GRANT/STOP states 1.1) According to "AMD-761 System Controller Software/BIOS Design Guide" page 62 http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/24081.pdf "BIU0 Status/Control (Dev0:F0:0x60) Bit 18 controls this" "Bit 18 - Halt_Discon_En - Halt Disconnect Enable 0 = No AMD Athlon system bus disconnect is performed following HALT 1 = AMD Athlon system bus disconnects after receiving a HALT special cycle." "Bit 17 - Stp_Grant_ Discon_En - Stop Grant Disconnect Enable 0 = No AMD Athlon processor system bus disconnect is performed following STOP/GRANT. 1 = AMD Athlon processor system bus disconnects after receiving a STOP/GRANT special" We need to set bits both 17 and 18 to 1. Then proceed to SouthBridge as usual. 2) Add "Halt Detect PCI" option Have no idea about this. Anyone? Actually, what does this option mean? 3) Optional idle loop Just add a command line option to either idle or not 4) Add option to either enable or disable the "cool" bit since it is possible that this bit might have adverse effects on system behavior. Good for testing Anyone up for this? I think this is a nice addition for AMD processor owners. Regards, * Related information: - AMD-761 System Controller Revision Guide - talks about problems with ACPI modes, HLT, STOP, GRANT http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/23613.pdf -- Mario S F Ferreira - DF - Brazil - "I guess this is a signature." Computer Science Undergraduate | FreeBSD Committer | CS Developer flames to beloved devnull@someotherworldbeloworabove.org feature, n: a documented bug | bug, n: an undocumented feature To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message