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

From: Adolfo González Blázquez
Date: Mon Jun 21 2004 - 10:23:06 EST


Your patch works perfect! I hope this is the end of this issue.

Maybe you can answer other question i have about pdc202xx_old driver.
Altough the pdc bios shows it is on mode udma5, /proc/ide/pdc202xx shows
the controller is on dma mode UDMA4. hdparm shows disks are on udma5.
This is a bug or is normal behaviour?

Thanks again for your help!!

This is what proc says about pdc202xx:
fito@soho:~$ cat /proc/ide/pdc202xx

Ultra100 on M/B Chipset.
------------------------------- General Status
---------------------------------
Burst Mode : enabled
Host Mode : Normal
Bus Clocking : 66 External
IO pad select : 10 mA
Status Polling Period : 0
Interrupt Check Status Polling Delay : 0
--------------- Primary Channel ---------------- Secondary Channel
-------------
enabled enabled
66 Clocking disabled disabled
Mode PCI Mode PCI
FIFO Empty FIFO Empty
--------------- drive0 --------- drive1 -------- drive0 ----------
drive1 ------
DMA enabled: yes yes no no
DMA Mode: UDMA 4 UDMA 4 NOTSET
NOTSET
PIO Mode: PIO 4 PIO 4 NOTSET
NOTSET


El lun, 21-06-2004 a las 16:14, Bartlomiej Zolnierkiewicz escribió:
> 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/

-
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/