INFO: Enabling 3Gbps mode on the ICH8M SATA Controller
Images from left
1) Parameters required to be found using screencap provided by T61 user running in AHCI (native) mode here
ICHM8-M datasheet with sections relating to 3GBps mode
2) Sections 184.108.40.206 (Native SATA)
3,4) 220.127.116.11(capabilities register - 2 pages)
5) 18.104.22.168 (emulated IDE). Also has revised updates to section 12.3.2 here, removing section 22.214.171.124 altogether! Both versions might be useful??
ICH8 EDS Spec. Device ID on baredit's top left corner can ID if it's running in AHCI mode.
Suggested steps to implement 3Gbps mode
1. Ensure Native SATA (AHCI) mode is enabled. Do you have a bios setting for that? May also require installation of the Intel Chipset Utility.
2. Shortcut to check CAP.ISS - indicates if there is a bios imposed 1.5Gbps cap applied
Follow steps above using baredit screenshot on far left, which on a T61p show ABAR=FE226000h. CAP.ISS=ABAR+00h-03h (4 bytes). So check bits 23:20 at CAP.ISS=FE226000 and see if it's either 0001(1h - 1.5Gbs) or 0010 (2h - 3Gbps). Screenshots showing the difference in CAP.ISS values: ICH8M T61P (1.5Gbps).
3. Access the variable of interest using baredit
Datasheet spec for CAP.ISS suggests the default ABAR=DE127F06h?? Identifying if it's this, or something else, will be your greatest challenge. Once known, then just add the hex value of the variables of interest to ABAR as shown below, then alter the relevant bits to enable 3Gbps mode. Experiment to see if steps (2) and (5) are required noting datasheet says step 4 may result in undefined behaviour if step 2 not used. Memory offsets are summarised from the above datasheet images for Native SATA mode.
In baredit, try memory addresses for SATA controller:
- Configuration Space "Bus.0 Dev.31 Fct.2" | Memory Address=[variable's calculated address, eg: CAP.ISS=ABAR+00h-03h]. Alter variables below, ensure is set to 32-bit before clicking "write".
- It may be an absolute memory address not tied to the SATA controller, so try: "By Memory Address" | Memory Address=[address, eg DE127F03h] . Alter variables below, ensure is set to 32-bit before clicking "write". See this for a graphical representation of this step.
UPDATE: HWDIRECT may be a better tool to do this as has a lot more access options, and the Registers appear to be labelled.
1) CAP.ISS=ABAR+00h-03h (default DE127F03h) bit 23:20
CAP.ISS=2h [sets maximum speed supported by controller on it's ports to 3Gbps]
2) PxCMD.ST=ABAR+118h/198h/218h/298h bit 0 [ obtained from datasheet ]
PxCMD.ST=0 [do not process command list. Put SATA port in idle state]
3) PxSCTL.SPD=ABAR+12CH/1ACH/22Ch bit 7:4
PxSCTL.SPD=2h [set highest allowable speed on port to 3Gbps]
4) PxSCTL.DET=ABAR+12CH/1ACH/22Ch bit 3:0
PxSCTL.DET=1h [perform device detection and link negotiation between port and drive]
5) PxCMD.ST=ABAR+118h/198h/218h/298h bit 0 [ obtained from datasheet ]
PxCMD.ST=1 [enable SATA port command list processing]
6) Repeat 2-5 for all the SATA ports of interest. The dividing line (/)
indicating the SATA port (0, 1 ,2) you wish to access. Eg: port 0
likely the primary SATA HDD you are interested in.
If not completely sure of what to do, could use baredit to compare ICH8M Bus.0 Dev.31 Fct.2 configuration data between another 3Gbps link mode enabled system and a T61p, then try and set the bits to match? A bit of a blind approach that just *might* yield results.
Getting this to work as an automated solution
The bits to set 3Gbps mode are a workaround to the link being set to 1.5GBps by the bios. So would require an automated setup to make it transparent. The way to do that is to within Baredit click "save" after altering the bits and check "Startup". The "Startup" check meaning Baredit would save the parameters to C:\Bar_save and run baredit in Windows startup.
A hibernate/standby followed by resume would also reset the link back to 1.5Gbps but can re-jigg this vbs script that runs infinitely to detect the resume-from-hibernate/standby to run c:\Bar_save\baredit and set the 3Gbps mode in the background. Once all done, could be released to the T61 community for automated, set-and-forget 3Gbps mode setting which the average user can setup and enjoy.
I was asked to input on this subject because of my post enabling an unused SATA controller on a 2510P by toggling ICH8M bits using baredit here. The suggestions in this post are theoretical because I don't have a Thinkpad to confirm them with.
Saying that, I believe the information above, together with baredit and, if needed, the complete ICH8M datasheet and update should be enough to enable 3Gbps mode. Baredit can save and apply these settings on startup, or could petition Lenovo for a bios update if confirmed to work. Enabling 3GBps SATA link speed together with a fast 220+MB/s SSD (X25-M/X25-E/OCZ Vertex) being a great performance upgrade. Storage typically being the the slowest component on a system.
Note: This information has been cross inked to the Lenovo forum to give greatest coverage in finding a solution.
AHCI spec and the Linux developers who made the AHCI/ATA drivers could perhaps give better instructions on accessing SATA configuration registers given they use them for the drivers.
The author of the Universal ATA Driver for Windows could potentially incorporate a similar set of steps to enable ICH8M 3Gbps mode into his SATA driver. Might be an idea to pose the question by emailing Alter aka Alexander A. Telyatnikov at email@example.com
Speculation mode on ====================================
This being a separator between the technical reasoning for this from the commercial reasons.
I've read the lamenting by Thinkpad's users at being capped to 1.5Gbps with predominantly Santa Rosa ICH8M chipset Lenovo products. SSD has been a big hit and the 220+MB/s we are seeing from the OCZ Vertex/G.Skill Falcon/X25-M products was unheard of when these older thinkpads were designed in 2006/2007. We can see above that the chipset does support 3Gbps mode.
Lenovo's excuse doesn't make sense (or does it make cents?)
Mark_Lenovo (Admin)'s last word on the issue appears that Lenovo do not wish to explore this issue further. Mark_Lenovo's comment copied below, is incorrect.
The Lenovo position is that the system is working as designed and performing to specification.
Let's evaluate the official response here. Lenovo tells us they went to the following measures to standardize operation at 1.5Gbps "more reliable" mode, catering specifically to ensure the HDD would work in the ultrabay adapter:
- the Lenovo 2.5" SATA HDD's firmware is set to run in slower 1.5Gbps mode
- the 2.5" SATA primary interface is capped to 1.5Gbps (CAP.ISS=1h)
The ultrabay adapter connects using the optical bay's PATA interface so uses a Marvell sata-to-pata bridge chip as shown here. The Marvell chip does link negotiation and would have set a 1.5Gbps connection to the HDD because of (1). This makes sense. A 3Gbps link to the HDD in the ultrabay is unnecessary as the PATA optical bay interface is speed capped to ATA100/UDMA5 speeds of 100MB/s (about 87MB/s read in real life). Their root motivation of "standarising 1.5Gbps mode" across the board because of this is however questionable. You can test if there "reliability issues" as Lenovo they claim by using a non-Lenovo 2.5" HDD in the ultrabay adapter that default to 3Gbps mode, eg: WD5000BEVT, Hitachi 5k500.b, Seagate 7200.4, WD3200BJKT amongst others.
The point is: Lenovo DID NOT need to do (2) because they have already done (1). (2) means the primary 2.5" SATA HDD bay has been capped to 1.5Gbps. The SATA primary HDD bay is completely independent of the PATA ultrabay interface and the sata-to-pata bridge chip The 2.5" SATA HDD bay is capable of 3Gbps as is shown in this post.
The *ONLY* valid reason I could see Lenovo doing (2) to disable 3Gbps mode enabled is so users wouldn't experience reliability issues with *aftermarket* SSD/HDDs used on the primary HDD bay, then switching them into the ultrabay. Such a support issue could be easily resolved by Lenovo saying we don't support use of aftermarket 2.5" HDDs in the T61... Users could simply look for 1.5Gbps jumperable HDDs to have the option of using *both* in the 2.5" HDD bay or the ultrabay, or otherwise be confined to using the 3Gbps aftermarket HDD only in the 2.5" primary HDD bay. Though the suggestion that the Marvell sata-to-pata bridge chip having a problem with HDDs operating in 3Gbps link mode itself sounds a bit lame to me, given that users are running Mtron SSDs in ultrabay adapters as shown here. Mtrons SSD likely to default to 3GBps transfer mode, which can be confirmed with CrystalDiskInfo.
Only other reason I could see Lenovo hard setting the primary bay SATA link speed to 1.5Gbps being it is more battery efficient. eg: Fujitsu quote an active 1.3W for 1.5Gbps mode and 1.4W for 3Gbps mode. 0.01W is miniscule, perhaps giving an extra 1-3 minutes battery life. The current OCZ Vertex/G.Skill Falcon both offering far lower idle/active power consumption than HDDs. A 3Gbps primary HDD link speed meaning it can spend more time in idle and less in active mode giving further battery life increases which is where you'd find significant gains in battery life.
Lenovo's position smells to me of built-in performance redundancy.
Petition Lenovo to do a T61p 3Gbps-enabled SATA primary bay bios update
Armed with info from this thread, I would suggest you approach Lenovo showing them their bios is setting CAP.ISS=01 (1.5GBps) which is unreasonable, unnecessary and smells of built-in performance redundancy. If Lenovo did not explicitly state their primary HDD channel is capped to 1.5Gbps in their product brochure, then it can be considered misleading advertising as Intel do not have such a default cap on their ICH8M I/O controller. ICH7M or newer I/O chipsets had added a SATA 3GBps mode, a drawcard to upgrade from older ICH5M/ICH6M systems as shown here. The consumer may have fairly assumed it was 3Gbps SATA-II capable based on the Intel information but have been supplied underperforming equipment.
It's a 5 minute fix for them if that and the chipset clearly supports 3Gbps mode.
Furthermore Lenovo's technical reason for capping of the primary SATA interface IS NOT valid since they are already capping their HDD firmware to 1.5Gbps for overall standardisation/stability for function of HDD in primary bay AND the ultrabay slot.
Why a Lenovo bios update is the collective best interest of all
Users may wish to request refund on their T61p purchase price, or a free T400/T500 replacement IF Lenovo did not explicity state their primary drive bay was capped to 1.5Gbps in their product advertising. A bios update a far cheaper way to rectify misleading advertising. Could consider signatures, forum polls, whatever is needed to get a cooperative response.
I don't have a T61p, but share somewhat similar, if not worse, frustrations with a HP 2510P relating to bios downgrades (HP provide the bios, but their hpqflash/rompaq flash utility won't allow downgrade!!), bios being encrypted and ICH8M SATA ports being locked down with no connectors provided.
Ideas presented to perhaps mobilised the T61p community into action to resolve this dispute with Lenovo.
In the interim, using baredit/hwdirect to configure 3Gbps mode may allow you to get around Lenovo's resistence such that you could enjoy full 220MB+/s data streaming with their OCZ/G.Skill or Intel SSD