[lkml]   [2002]   [Aug]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    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
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:27    [W:0.025 / U:11.392 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site