Quantcast Laptop Forums and Notebook Computer Discussion - View Single Post - *HP 2510p Owners Lounge*
View Single Post
Old 11-14-2009, 11:45 AM   #279 (permalink)
nando4
Kopi Luwak Cafe
 
nando4's Avatar
 
Join Date: Dec 2008
Location: YellowBrickRd.AU
Posts: 7,422
Rep Power: 41 nando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond reputenando4 has a reputation beyond repute
Default Re: 2510p - SATA SSD/HDD & CPU upgrades?

INFO: Undo the slave PATA 30MB/s sequential write speed capping
The cause of this slowdown appears to be a combination of two things:

(i) the bios writes 0x3033 to 0/31/1 54h, implying the master and slave should be running full 66Mhz/ATA100 timings with 80 cable connector. Running Linux's 'setpci -s 0:31.1 54.l' or checking in grub2 confirms this to be the case. This should theoretically set the fastest timings for both channels but my testing found this not to be the case. 0/31/1 54h must be 0x1033 for the fast 66Mhz timings on both channels. Seems the ICH8M is reading bit 13 reversed (slave timings) so it needs to be 0.

(ii) the Windows IDE driver changes the bios set 0x3033 to 0x1011.

The net result is the ICH8M slave channel uses 33Mhz rather than 66Mhz internal timings. I used baredit to manually set the 66Mhz timing by writing 0x1033. Upon the very next run of Crystaldiskmark with my 500GB HDD as slave, without any need for a reboot sees 60MB/s writes as seen on the master channel. Up from the ~20MB seen in the 33Mhz mode. I simulated the result on the 64GB Runcore ProIV ZIF SSD on the master channel and we see it too has < 30MB/s sequential writes when running in 33Mhz mode as seen by the Crystaldiskmark results.

Right: baredit image of 2510P 0/31/1 54h. Info as extracted from ICH8M I/O datasheet.
33Mhz master+slave66Mhz master+slave





How to set the slave channel into 66Mhz mode for the faster write performance?

Quote:
1. Download Baredit
2. Navigate to 0/31/1, byte 54, change it from 0x1011 to 0x1033
3. Click "write"-> Save. Test with CrystalDiskmark to confirm the fast writes.
4. If satisfied, repeat 1-3, click Apply on Startup. c:\bar_save\baredit will be
added to your Startup using c:\bar_save\bar-edit.ini for it's parameters
A resume-from-standby will lose this setting, so need the following to run after a resume. Can use the resume-setfsb.vbs script that runs in a loop infinitely looking for a resume event. Just need to add c:\barsave\baredit in the script to run when it detects a resume event.

There must be a registry setting somewhere to prevent the driver from running 33Mhz mode, but where??
To see the same faster writes in Linux, ensure add a 'setpci -s 0:1f.1 54.l=1033' into /etc/gdm/PostLogin/Default as well as create an entry in /etc/pm/sleep.d like shown in the post above this one.

UPDATE: Root cause analysis

The reason why the Windows driver is switching slave into the 40pin 33Mhz mode is because the ATAPI data against the HDD is set to 40pin cable mode. It would seem the bios sets this in the drive. hdparm doesn't have an option to change it either. See below:


Last edited by nando4 : 09-16-2011 at 08:04 PM.
nando4 is online now   Reply With Quote