Re: [patch] voluntary-preempt-2.6.9-rc2-mm1-S1

From: Ingo Molnar
Date: Tue Sep 21 2004 - 02:32:19 EST



* Shane Shrybman <shrybman@xxxxxx> wrote:

> I am having what appears to be IDE DMA problems with 2.6.9-rc2-mm1-S1.
> 2.6.9-rc2-mm1 does not show this problem and runs fine. Before this I
> was happily using 2.6.8-rc3-O5.
>
> I tried booting with acpi=off but was unable to enter my user name at
> the login prompt, it just hung with no response to sysreq. I also
> tried turning off irq threading for that irq but it made no
> difference.

does undoing (patch -R) the attached patch fix this IDE problem?

Ingo
--- linux/drivers/ide/ide-io.c.orig
+++ linux/drivers/ide/ide-io.c
@@ -114,6 +114,9 @@ static int __ide_end_request(ide_drive_t
int ret = 1;

BUG_ON(!(rq->flags & REQ_STARTED));
+ spin_unlock(&ide_lock);
+ if (drive->unmask)
+ local_irq_enable();

/*
* if failfast is set on a request, override number of sectors and
@@ -135,6 +138,7 @@ static int __ide_end_request(ide_drive_t
}

if (!end_that_request_first(rq, uptodate, nr_sectors)) {
+ spin_lock_irq(&ide_lock);
add_disk_randomness(rq->rq_disk);

if (blk_rq_tagged(rq))
@@ -144,7 +148,8 @@ static int __ide_end_request(ide_drive_t
HWGROUP(drive)->rq = NULL;
end_that_request_last(rq);
ret = 0;
- }
+ } else
+ spin_lock_irq(&ide_lock);
return ret;
}