Re: [2.1.79] sound and IDE DMA

Gadi Oxman (gadio@netvision.net.il)
Wed, 14 Jan 1998 10:56:59 +0300 (IST)


On Tue, 13 Jan 1998, B. James Phillippe wrote:

> Second problem is that my Western Digital caviar 3G EIDE drive doesn't
> come up in DMA mode anymore, even though I answered yes to IDE-PCI and
> IDE-DMA support. My chipset is a Intel 430FX. When I use hdparm -d1, it
> says "Operation not permitted" (even though I'm root).

Old versions of Linux used to work around a BIOS problem in the detection
of multi-function PCI devices on first generation 430FX boards. As far as
we know, the problem remains only with the Intel Advanced/ZP board and BIOS
revisions <= 1.04.

If you are using that board, a new flash BIOS upgrade on

ftp://ftp.intel.com/pub/bios/10006bs0.exe

will fix the problem.

Perhaps we should re-introduce the work-around, though -- does the
following patch solve the problem on your system?

Gadi

--- linux/drivers/block/ide-pci.c.old Wed Jan 14 10:42:15 1998
+++ linux/drivers/block/ide-pci.c Wed Jan 14 10:47:22 1998
@@ -24,6 +24,7 @@

#include "ide.h"

+#define DEVID_82371_0 ((ide_pci_devid_t){PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371FB_0})
#define DEVID_PIIX ((ide_pci_devid_t){PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371FB_1})
#define DEVID_PIIX3 ((ide_pci_devid_t){PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371SB_1})
#define DEVID_PIIX4 ((ide_pci_devid_t){PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB})
@@ -360,6 +361,8 @@
|| IDE_PCI_DEVID_EQ(devid, IDE_PCI_DEVID_NULL)
|| pcibios_read_config_dword(bus, fn, 0x08, &ccode))
return;
+ if (!hedt && IDE_PCI_DEVID_EQ(devid, DEVID_82371_0))
+ hedt = 0x80;
for (d = ide_pci_chipsets; d->devid.vid && !IDE_PCI_DEVID_EQ(d->devid, devid); ++d);
if (d->init_hwif == IDE_IGNORE)
printk("%s: ignored by ide_scan_pci_device() (uses own driver)\n", d->name);