Re: 2.5.9 -- OOPS in IDE code (symbolic dump and boot log included)

Martin Dalecki
2002-04-24T14:47:32Z

Uz.ytkownik rwhron@earthlink.net napisa?:
>>>>>Oops on 2.5.9 at boot time.
>>>>
>
>>Look, the problem is easy. Backout the changes to ide_cdrom_do_request()
>>and cdrom_start_read(), then re-add the
>>
>> HWGROUP(drive)->rq->special = NULL;
>>
>>in cdrom_end_request() before calling ide_end_request()
>>
>>Something ala, completely untested (not even compiled). See the thread
>>about the ide-cd changes being broken.
>
>
> That works! Applied to 2.5.10, compiled and booted.
> Mounted a cdrom and that works too.
>
> Thanks!

Yes but if you look at ide_start_dma() in ide-dma.c you will notice
that the if (!ar) path is taken, which will cause fallback from
DMA to PIO transfer:

/*
* Start DMA engine.
*/
int ide_start_dma(struct ata_channel *hwif, ide_drive_t *drive, ide_dma_action_t
func)
{
unsigned int reading = 0, count;
unsigned long dma_base = hwif->dma_base;
struct ata_request *ar = IDE_CUR_AR(drive);

/* This can happen with drivers abusing the special request field.
*/

if (!ar) {
printk(KERN_ERR "DMA without ATA request\n");

return 1;
}

--
- phone: +49 214 8656 283
- job: eVision-Ventures AG, LEV .de (MY OPINIONS ARE MY OWN!)
- langs: de_DE.ISO8859-1, en_US, pl_PL.ISO8859-2, last ressort: ru_RU.KOI8-R