Subject: Re: Not so Ultra-ATA on an Ultra 10
To: Parkes, Lloyd <lloyd.parkes@eds.com>
From: Brian A. Seklecki <lavalamp@spiritual-machines.org>
List: port-sparc64
Date: 10/17/2002 19:46:06
PL> I have a Promise Ultra66/ATA card in my Ultra 10 with a nice new Barracuda
PL> ATA disk, and it still only runs at 33 MB/s. Before I dive into the code,
PL> does anyone know what's going on?
PL>
PL> Here is the dmesg output.
PL>
PL> 	pciide1 at pci2 dev 4 function 0: Promise Ultra66/ATA Bus Master IDE
PL> Accelerator
PL>  (rev. 0x01)
PL> 	pciide1: bus-master DMA support present
PL> 	pciide1: primary channel configured to native-PCI mode
PL> 	pciide1: using ivec 181c for native-PCI interrupt
PL> 	wd0 at pciide1 channel 0 drive 0: <ST380021A>
PL> 	wd0: drive supports 16-sector PIO transfers, LBA addressing
PL> 	wd0: 76319 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x
PL> 156301488 sectors


I just looked at GENERIC32 on sparc64.  It lacks the comments in GENERIC on
i386 that denote how to force a drive into a DMA/PIO mode

-lava

here they are:

# IDE and related devices
# # PCI IDE controllers - see pciide(4) for supported hardware.
# # The 0x0001 flag force the driver to use DMA, even if the driver doesn't
# know
# # how to set up DMA modes for this chip. This may work, or may cause
# # a machine hang with some controllers.
# pciide* at pci? dev ? function ? flags 0x0000


# IDE drives
# # Flags are used only with controllers that support DMA operations
# # and mode settings (e.g. some pciide controllers)
# # The lowest order four bits (rightmost digit) of the flags define the PIO
# # mode to use, the next set of four bits the DMA mode and the third set the
# # UltraDMA mode. For each set of four bits, the 3 lower bits define the
# mode
# # to use, and the last bit must be 1 for this setting to be used.
# # For DMA and UDMA, 0xf (1111) means 'disable'.
# # 0x0fac means 'use PIO mode 4, DMA mode 2, disable UltraDMA'.
# # (0xc=1100, 0xa=1010, 0xf=1111)
# # 0x0000 means "use whatever the drive claims to support".
# wd*     at wdc? channel ? drive ? flags 0x0000
# wd*     at pciide? channel ? drive ? flags 0x0000


PL> 	wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5
PL> (Ultra/100)
PL> 	wd0(pciide1:0:0): using PIO mode 4, Ultra-DMA mode 2 (Ultra/33)
PL> (using DMA data transfers)
PL>
PL>
PL> Cheers,
PL> Lloyd
PL>