Skip to contentSkip to conversation

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

DISCUSSION [email protected] 2 participants 2 messages Apr 24, 2002

lore
Share & tools
lore
#0 lore raw
Quoted 11 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line

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!

Signature · 1 line
Randy Hron
#1 lore raw

Uz.ytkownik [email protected] napisa?:

Quoted 10 lines
Quoted 10 lines
Quoted 2 lines
Quoted 2 lines
Quoted 1 line

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()

Quoted 8 lines
Quoted 2 lines

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;
	}
Signature · 3 lines
- 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