[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <45B9E640.4040400@s5r6.in-berlin.de>
Date: Fri, 26 Jan 2007 12:30:08 +0100
From: Stefan Richter <stefanr@...6.in-berlin.de>
To: Kristian Høgsberg <krh@...hat.com>
CC: Pete Zaitcev <zaitcev@...hat.com>, linux-kernel@...r.kernel.org
Subject: Re: Juju
Kristian Høgsberg wrote:
> Another thing that probably makes my explanation a little confusing is that
> there are two types of transactions: FireWire transactions which consists of a
> request followed by a response and are pretty much the smallest interaction
> you can have with a remote device. Then there are SBP-2 transactions, which
> are a higer level sequence layered on top of FireWire transactions.
[...]
Exactly. One SBP-2 transaction is one SCSI task's request and completion
and contains
1. one 1394 write transaction, requested by initiator node,
2. one 1394 read transaction, requested by the target node,
3. zero to many 1394 read or write transactions, requested by the
target node,
4. one 1394 write transaction, requested by the target node
(if everything goes well and if we don't have dynamically appended ORB
lists). So it might be less confusing if we only speak of "1394
transactions" and "SCSI tasks".
BTW, SBP-3 allows to wrap step 2 into step 1. I read that some SBP-2
targets support this SBP-3 feature.
[...]
>> The target wrote an SBP-2 status block into our memory. The status block
>> contains the FireWire bus address of the ORB to which it belongs. Juju's
>> fw-sbp2 does the same as mainline's sbp2: Looking through the pile of
>> unfinished ORBs for one with the same FireWire bus address, which was
>> previously derived from the DMA mapped address.
>
> But the status write actually does carry the address of the ORB it signals the
> completion of. So in theory, we could just read out the ORB address from the
> status write packet and map that back to kernel virtual memory
"Map back to virtual memory" is exactly what we do already, although in
a rather dumb fashion. It would be easier if there was a portable
bus_to_virt() which would do the job for us. This is much more of an
issue if we want to work without OHCI-1394 physical DMA: Then we have to
do this inverse DMA mapping also for arbitrary pieces of all scatter
gather elements of the SCSI data buffer.
[...]
> One thing I want to do (though very low priority) is to allocate the ORBs out
> of a preallocated circular buffer.
Incidentally, one thing I want to do (though at low priority) is to use
a circular ORB buffer... Well, linux1394 has a number of more serious
issues pending at bugzilla.kernel.org, and meanwhile people are eager to
run things like FreeBob or Kino on Juju --- thus it remains to be seen
who of us gets to it first. :-)
--
Stefan Richter
-=====-=-=== ---= ==-=-
http://arcgraph.de/sr/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists