Re: Severe IDE BM-DMA problems.

Andre M. Hedrick (hedrick@astro.dyer.vanderbilt.edu)
Fri, 6 Nov 1998 23:18:00 -0600 (CST)


Rick and Erik,

Does this solve the problem for all cases?

I have noted that Award Bios based mainboards do not load the add-on bios;
however, most AMI based mainboards do this correctly.
The force enable was based on a general concern that off-board chipsets
are depended on the ROMS for features.

The reason for stroking the rom is to force it on.
Since the Promise card in all releases (Ultra/Defender/FastTrak)
all require that the rom be enabled, or the (U)DMA will not be enabled by
default. Note that FastTrak with always have its bios enabled by default.

I am currently working on making the FastTrak become automatic RAID 1.
I have two booting successful RAID 1 Mirror systems up now,
but here is the catch:

There is something the config space to be stroked/set that the "UltraTune"
utility does, or in the "hwif->dma_extra" 16 ioports beyond the busmaster
base.

On Sat, 7 Nov 1998, Richard Lyons wrote:

>
> On Thu, 5 Nov 1998, Erik Arjan Hendriks wrote:
>
> > Hi,
> > BM-IDE doesn't work for me on all recent (at least these kernels
> > 2.1.119-2.1.127p3). The kernel either fails and returns to PIO mode
> > or crashes depending on which interface I'm playing with.
>
> Try this:
>
> diff -rc linux-2.1.125/drivers/block/ide-pci.c linux/drivers/block/ide-pci.c
> *** linux-2.1.125/drivers/block/ide-pci.c Tue Sep 29 04:09:52 1998
> --- linux/drivers/block/ide-pci.c Sat Oct 24 16:40:44 1998
> ***************
> *** 158,177 ****
> */
> __initfunc(static unsigned int ide_special_settings (struct pci_dev *dev, const char *name))
> {
> - unsigned int addressbios = 0;
> -
> - pci_read_config_dword(dev, PCI_ROM_ADDRESS, &addressbios);
> -
> switch(dev->device) {
> case PCI_DEVICE_ID_ARTOP_ATP850UF:
> case PCI_DEVICE_ID_PROMISE_20246:
> ! pci_write_config_byte(dev, PCI_ROM_ADDRESS, PCI_ROM_ADDRESS_ENABLE);
> ! printk("%s: ROM enabled ", name);
> !
> ! if (!addressbios) {
> ! printk("but no address\n");
> ! } else {
> ! printk("at 0x%08x\n", addressbios);
> }
>
> if ((dev->class >> 8) == PCI_CLASS_STORAGE_RAID) {
> --- 158,171 ----
> */
> __initfunc(static unsigned int ide_special_settings (struct pci_dev *dev, const char *name))
> {
> switch(dev->device) {
> case PCI_DEVICE_ID_ARTOP_ATP850UF:
> case PCI_DEVICE_ID_PROMISE_20246:
> ! if (dev->rom_address) {
> ! pci_write_config_dword(dev, PCI_ROM_ADDRESS,
> ! dev->rom_address | PCI_ROM_ADDRESS_ENABLE);
> ! printk("%s: ROM enabled at 0x%08lx\n",
> ! name, dev->rom_address);
> }
>
> if ((dev->class >> 8) == PCI_CLASS_STORAGE_RAID) {
>
>
>
> Cheers,
> Rick.
>
>
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.rutgers.edu
> Please read the FAQ at http://www.tux.org/lkml/
>

Cheers,
Andre Hedrick
The IDE-FNG for Linux
The APC UPS Specialist for Linux

http://www.dyer.vanderbilt.edu/server/udma/
http://www.dyer.vanderbilt.edu/server/apcupsd/apcupsd-3.5.0.bin.tar.gz

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/