Re: Severe IDE BM-DMA problems.

Richard Lyons (rick@powerup.com.au)
Sat, 7 Nov 1998 00:05:26 +1000 (EST)


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/