lkml.org 
[lkml]   [2002]   [Aug]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: IDE from current bk tree, UDMA and two channels...
On Wed, Jul 31 2002, Marcin Dalecki wrote:
> >Unfortunately, problem is still here: when kernel was in idedisk_do_request
> >performed on channel 0, IRQ for channel 1 arrived, and this irq found
> >channel 1 DMA engine ready, but drive had DRQ set... oops. Shortly after
> >that IRQ for channel 1 arrived again, but as it was unexpected, nothing
> >happened.
> >
> >I hope that i845 is not simplex device, but first (unexpected) IRQ arrived
> >just when channel 0 code wrote new value to its IDE_SELECT_REG register.
> >Now I even disconnected DVD drive, so it is simple two masters, two
> >channels configuration, but it still happens.
>
> One idea and one experiment I was already thinking about is
> to change do_ide_request to actually *not* select delibreately which
> device do handle. (The big for loop found there...)
> One can instead search for a device on the channel which is matching
> the queue for which do_ide_request() was called.
>
> for (unit = 0; unit < MAX_DEVICES; ++unit) {
> ....
> if (tmp->queue == q) {
> drive = tmp;
> break;
> }
> }
> if (!drive)
> BUG();

hey that sucks :-)

seriously, the better way to do this would be to change the q->queuedata
to be a pointer to drive instead of the channel.

that would work, but I think it would seriously starve the other device
on the same channel.

--
Jens Axboe

-
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 13:27    [W:0.434 / U:0.156 seconds]
©2003-2014 Jasper Spaans. Advertise on this site