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/

Reply via email to