Commit c1f0e653 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] PIIX5 Doesn't work on IA64

From: Peter Chubb <peterc@gelato.unsw.edu.au>

The PIIX5 IDE controller on I2000 IA64 boxen using the 460GX chipset will
hang on startup if an ordinary harddrive is plugged into it (it seems to
workj for the LSI120 and the CDROM drives).

This is because the 460GX chipset contains a PCI expanssion bridge that
works like the 450NX PXB, and has the same PCI ID (but a later revision).
The PIIX driver, to work around interactions between PIIX4 and the 450NX
PXB, tries to disable DMA.

Unfortunately, the way it tries to disable DMA doesn't work, and the higher
layers think that DMA is still on, and so timeout waiting for DMA, and then
hang on bootup.

A simple workaround is to tighten the check for the buggy chipset, as in
the attached patch.  However, someone with more time (and who actually
*understands* the IDE subsystem) needs to fix the real bug as well.
parent 8179c97e
...@@ -768,8 +768,8 @@ static void __init piix_check_450nx(void) ...@@ -768,8 +768,8 @@ static void __init piix_check_450nx(void)
/* Only on the original revision: IDE DMA can hang */ /* Only on the original revision: IDE DMA can hang */
if(rev == 0x00) if(rev == 0x00)
no_piix_dma = 1; no_piix_dma = 1;
/* On all revisions PXB bus lock must be disabled for IDE */ /* On all revisions below 5 PXB bus lock must be disabled for IDE */
else if(cfg & (1<<14)) else if(cfg & (1<<14) && rev < 5)
no_piix_dma = 2; no_piix_dma = 2;
} }
if(no_piix_dma) if(no_piix_dma)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment