Hi Jeff, For several times I tried libata on small machines equipped with either CompactFlash or IDE DOM (Disk-On-Module). All those machines with small flashes (<= 256 MB) were about 35-40% slower under libata than under the plain old IDE driver. I realized that all the slower ones were running PIO only. Today I had time to investigate the issue on a Geode LX board. At first I thought it was the pata_cs5536 driver which would have incorrect timings, but this was not the case. I finally noticed that under IDE, my flashes were running in 32-bit mode while I could not enable 32-bit with libata. Reading ata_data_xfer() made it obvious that transfers were only 16-bit wide. Thus, I have implemented the 32-bit mode to bring the performance back to the level of the old IDE driver. I jumped from 1.5 MB/s to 2.5 MB/s, which is an important difference at this level of performance, especially when large files are read. The 32-bit mode is enabled using the ioctl which is already implemented but only accepts a null value. I'm joining two patches which I hope you'll consider for inclusion. I've updated them to latest Linus' git. Best regards, Willy --
| hooanon05 | [PATCH 67/67] merge aufs |
| Greg Kroah-Hartman | [PATCH 008/196] Chinese: add translation of volatile-considered-harmful.txt |
| monstr | [PATCH 33/52] [microblaze] bug headers files |
| Oliver Pinter | Re: x86: 4kstacks default |
git: | |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| David Miller | [GIT]: Networking |
| Natalie Protasevich | [BUG] New Kernel Bugs |
