Hi,
I have a system based on the Nforce2 chipset which uses the amd7xx
driver for it's IDE support, and I noticed that one of the drives was
performing very slowly. I looked into it a bit more and it seems the
drive was operating as UDMA33 instead of UDMA100 for some reason.
The affected drive was getting about 20-25Mb/sec sequential read (dumb
hdparm test) while a similar drive on the other channel was getting
about 45-50 Mb/sec. The drive on the other channel was operating at
UDMA100. Both drives are attached using the proper 80-wire cable.
Kernel is 2.6.13-rc4
If I go into the bios and twiddle an "IDE Master" setting from the
"none" to the "auto" setting then the driver operates at the expected
speed.
I'm confused though why the driver never correctly set up that IDE
channel? It claims in the kernel log that it detected the BIOS
borkage:
NFORCE2: IDE controller at PCI slot 0000:00:09.0
NFORCE2: chipset revision 162
NFORCE2: not 100% native mode: will probe irqs later
NFORCE2: BIOS didn't set cable bits correctly. Enabling workaround.
NFORCE2: 0000:00:09.0 (rev a2) UDMA133 controller
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:DMA, hdd:DMA
Shouldn't the driver set the channel to UDMA100 after it detects the BIOS
set up the chip improperly, or am I mistaken about this behavior? Isn't
that the "workaround" or does that mean something else?
Here is the output of /proc/ide/amd74xx:
----------AMD BusMastering IDE Configuration----------------
Driver Version: 2.13
South Bridge: 0000:00:09.0
Revision: IDE 0xa2
Highest DMA rate: UDMA133
BM-DMA base: 0xf000
PCI clock: 33.3MHz
-----------------------Primary IDE-------Secondary IDE------
Prefetch Buffer: yes yes
Post Write Buffer: yes yes
Enabled: yes yes
Simplex only: no no
Cable Type: 40w 80w
-------------------drive0----drive1----drive2----drive3-----
Transfer Mode: UDMA DMA UDMA DMA
Address Setup: 30ns 90ns 30ns 90ns
Cmd Active: 90ns 90ns 90ns 90ns
Cmd Recovery: 30ns 30ns 30ns 30ns
Data Active: 90ns 330ns 90ns 330ns
Data Recovery: 30ns 270ns 30ns 270ns
Cycle Time: 60ns 600ns 20ns 600ns
Transfer Rate: 33.3MB/s 3.3MB/s 99.9MB/s 3.3MB/s
If I change all of my BIOS settings to "auto" then the drive operates
at UDMA100 as expected and /proc/ide/amd74xx reports the 80-wire cable
correctly and reports the transfer rates for drive0 correctly.
This isn't a major issue since I can fix it in the BIOS, but I just
wanted to alert the maintainers.
Thanks in advance,
Sonny
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
|
|