lkml.org 
[lkml]   [2004]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patches in this message
    /
    From
    SubjectRe: PROBLEM: Oops when using both channels of the PDC20262
    Date
    On Sunday 25 of April 2004 02:20, Sebastian Witt wrote:
    > Bartlomiej Zolnierkiewicz wrote:
    > > There were some change in pdc202xx_old.c driver in 2.6.2.
    > > Please revert this patch and report if it helps.
    >
    > I've tested 2.6.2 with the reverted patch and it seems to work.
    > Normally it takes <1min to crash the system when I access the discs
    > on the controller, with the patched driver it works >1 hour without a
    > error.

    Ok, so now I know I screwed something but don't know what (yet). :-)

    Please return back to 2.6.5 and try this patch, it disables PIO autotune.
    It fixed hangs for people disabling Promise BIOS but...

    linux-2.6.6-rc2-bk1-bzolnier/drivers/ide/pci/pdc202xx_old.c | 2 +-
    1 files changed, 1 insertion(+), 1 deletion(-)

    diff -puN drivers/ide/pci/pdc202xx_old.c~pdc_old_notune drivers/ide/pci/pdc202xx_old.c
    --- linux-2.6.6-rc2-bk1/drivers/ide/pci/pdc202xx_old.c~pdc_old_notune 2004-04-25 03:25:49.962088200 +0200
    +++ linux-2.6.6-rc2-bk1-bzolnier/drivers/ide/pci/pdc202xx_old.c 2004-04-25 03:26:59.749478904 +0200
    @@ -728,7 +728,7 @@ static void __init init_hwif_pdc202xx (i

    hwif->speedproc = &pdc202xx_tune_chipset;

    - hwif->drives[0].autotune = hwif->drives[1].autotune = 1;
    +// hwif->drives[0].autotune = hwif->drives[1].autotune = 1;

    hwif->ultra_mask = 0x3f;
    hwif->mwdma_mask = 0x07;
    _

    If it doesn't help try this one instead
    (reverts old way of setting 66MHz clock):

    linux-2.6.6-rc2-bk1-bzolnier/drivers/ide/pci/pdc202xx_old.c | 13 ++++++------
    1 files changed, 7 insertions(+), 6 deletions(-)
    diff -puN drivers/ide/pci/pdc202xx_old.c~pdc_old_fix drivers/ide/pci/pdc202xx_old.c
    --- linux-2.6.6-rc2-bk1/drivers/ide/pci/pdc202xx_old.c~pdc_old_fix 2004-04-25 03:09:26.692567888 +0200
    +++ linux-2.6.6-rc2-bk1-bzolnier/drivers/ide/pci/pdc202xx_old.c 2004-04-25 03:21:30.607516088 +0200
    @@ -405,10 +405,15 @@ static int config_chipset_for_dma (ide_d
    if (ultra_66 && cable) {
    printk(KERN_WARNING "Warning: %s channel requires an 80-pin cable for operation.\n", hwif->channel ? "Secondary":"Primary");
    printk(KERN_WARNING "%s reduced to Ultra33 mode.\n", drive->name);
    + pdc_old_disable_66MHz_clock(drive->hwif);
    }

    - if (dev->device != PCI_DEVICE_ID_PROMISE_20246)
    - pdc_old_disable_66MHz_clock(drive->hwif);
    + if (ultra_66 && !cable) {
    + if (hwif->drives[!(drive->dn%2)].id->dma_ultra & 0x0078)
    + pdc_old_enable_66MHz_clock(drive->hwif);
    + else
    + pdc_old_disable_66MHz_clock(drive->hwif);
    + }

    drive_pci = 0x60 + (drive->dn << 2);
    pci_read_config_dword(dev, drive_pci, &drive_conf);
    @@ -507,8 +512,6 @@ static int pdc202xx_quirkproc (ide_drive

    static int pdc202xx_old_ide_dma_begin(ide_drive_t *drive)
    {
    - if (drive->current_speed > XFER_UDMA_2)
    - pdc_old_enable_66MHz_clock(drive->hwif);
    if (drive->addressing == 1) {
    struct request *rq = HWGROUP(drive)->rq;
    ide_hwif_t *hwif = HWIF(drive);
    @@ -542,8 +545,6 @@ static int pdc202xx_old_ide_dma_end(ide_
    clock = hwif->INB(high_16 + 0x11);
    hwif->OUTB(clock & ~(hwif->channel ? 0x08:0x02), high_16+0x11);
    }
    - if (drive->current_speed > XFER_UDMA_2)
    - pdc_old_disable_66MHz_clock(drive->hwif);
    return __ide_dma_end(drive);
    }

    _

    Thanks,
    Bartlomiej

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:02    [W:5.695 / U:0.272 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site