diff -u -r linux-2.5.44-vanilla/drivers/ide/ide-dma.c linux-2.5.44/drivers/ide/ide-dma.c --- linux-2.5.44-vanilla/drivers/ide/ide-dma.c 2002-10-21 08:02:49.000000000 -0500 +++ linux-2.5.44/drivers/ide/ide-dma.c 2002-10-21 08:56:49.000000000 -0500 @@ -905,7 +905,12 @@ request_region(base+16, hwif->cds->extra, hwif->cds->name); hwif->dma_extra = hwif->cds->extra; } - hwif->dma_master = (hwif->channel) ? hwif->mate->dma_base : base; + if(!hwif->mate && hwif->channel){ + hwif->dma_master=base; + } + else{ + hwif->dma_master = (hwif->channel) ? hwif->mate->dma_base : base; + } if (hwif->dma_base2) { if (!check_mem_region(hwif->dma_base2, ports)) request_mem_region(hwif->dma_base2, ports, hwif->name); @@ -925,8 +930,13 @@ if ((hwif->cds->extra) && (hwif->channel == 0)) { request_region(base+16, hwif->cds->extra, hwif->cds->name); hwif->dma_extra = hwif->cds->extra; + } + if(!hwif->mate && hwif->channel){ + hwif->dma_master=base; + } + else{ + hwif->dma_master = (hwif->channel) ? hwif->mate->dma_base : base; } - hwif->dma_master = (hwif->channel) ? hwif->mate->dma_base : base; if (hwif->dma_base2) { if (!request_region(hwif->dma_base2, ports, hwif->name)) {