Re: pdc202xx_old serious bug with DMA on 2.6.x series

From: Bartlomiej Zolnierkiewicz
Date: Mon Jun 21 2004 - 09:17:38 EST



On Mon, 21 Jun 2004, Adolfo [ISO-8859-1] González Blázquez wrote:

> Well, it seems that problem is solved! I'm now using 2.6.7 without
> problems. Got same perfomance on hard disks as with 2.4.x series.
>
> Disabling LBA48 for pdc20265 just made it work. This is the simple patch
> I applied:

OK, thanks. It works but similar patch went into 2.4.23 and you are
using 2.4.25 without a problems. Can you try this patch instead?

--- linux-2.6.7/drivers/ide/ide-probe.c 2004-06-21 15:25:51.000000000 +0200
+++ linux/drivers/ide/ide-probe.c 2004-06-21 15:29:19.901710936 +0200
@@ -897,7 +897,7 @@
blk_queue_segment_boundary(q, 0xffff);

if (!hwif->rqsize)
- hwif->rqsize = hwif->no_lba48 ? 256 : 65536;
+ hwif->rqsize = 256;
if (hwif->rqsize < max_sectors)
max_sectors = hwif->rqsize;
blk_queue_max_sectors(q, max_sectors);

> diff --unified --recursive --new-file
> linux-2.6.7/drivers/ide/pci/pdc202xx_old.c
> linux/drivers/ide/pci/pdc202xx_old.c
> --- linux-2.6.7/drivers/ide/pci/pdc202xx_old.c 2004-06-16
> 07:20:17.000000000 +0200
> +++ linux/drivers/ide/pci/pdc202xx_old.c 2004-06-21
> 02:53:33.000000000 +0200
> @@ -721,6 +721,10 @@
> hwif->tuneproc = &config_chipset_for_pio;
> hwif->quirkproc = &pdc202xx_quirkproc;
>
> + /* This was present on 2.6.0-test4, maybe here is the bug */
> + if (hwif->pci_dev->device == PCI_DEVICE_ID_PROMISE_20265)
> + hwif->no_lba48 = (hwif->channel) ? 0 : 1;
> +
> if (hwif->pci_dev->device != PCI_DEVICE_ID_PROMISE_20246) {
> hwif->busproc = &pdc202xx_tristate;
> hwif->resetproc = &pdc202xx_reset;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/