From: Harry Butterworth <harry@hebutterworth.freeserve.co.uk>
To: Muli Ben-Yehuda <mulix@mulix.org>
Cc: keir.fraser@cl.cam.ac.uk, xen-devel@lists.xensource.com
Subject: Re: latest USB code including Xenidc documentation
Date: Fri, 16 Dec 2005 19:00:28 +0000 [thread overview]
Message-ID: <1134759628.4801.42.camel@localhost> (raw)
In-Reply-To: <20051216173859.GG14690@granada.merseine.nu>
On Fri, 2005-12-16 at 19:38 +0200, Muli Ben-Yehuda wrote:
> On Fri, Dec 16, 2005 at 05:23:51PM +0000, Harry Butterworth wrote:
>
> > I can do the 17 patches I posted before. They were smaller and
> > incremental in that the code would compile cleanly when patches 1-n were
> > applied for n = 1 to 17.
> >
> > Is that what you are looking for?
>
> I'm afraid not. What I would like to see (and I imagine others as
> well) is a set of incremental patches, each of which is a good step
> forward on its own. Continuing to compile cleanly is a prerequisite,
> but not sufficient to be useful.
The 17 patches are each fairly self contained and provided an
incremental bit of function each time which is useful in its own right.
So, for example by the time you get to patch 3 you have a framework for
supporting different types of local memory and different types of
interdomain transfers.
> Do the USB drivers need all of the current XenIDC code to be
> functional,
Yes. I only implemented the bits of xenidc that were required to
support the USB driver. If you remove any of it, the USB driver will
cease to function (or in one instance slow down :-).
> or can you post a tiny USB frontend/backend driver that
> uses the minimal ammount of XenIDC code (or none at all at first, that
> would be even better)?
The code won't work without some way to set up the comms channel and get
the command blocks and data from the FE to the BE. At the moment this
is xenidc which is expressed in a way that is reusable between different
drivers and extensible to support different kinds of data transfers.
The whole point of the xenidc patch is to demonstrate one kind of
interdomain communication infrastructure we could have if we wanted.
I could factor out the xenidc code and put all the comms code back into
the USB driver so it was like the block and net drivers and contained
its own copy of bespoke code for messaging, data transfer and set-up but
this would entirely defeat the point of the xenidc patch.
I'm happy to do that for the USB driver if that's what people decide
they want but I'm reluctant to do it without people having first
considered the idea of having a higher level interdomain communication
API and thought about xenidc as a possible option.
> If that's possible, the next step would be to
> add useful IDC and USB driver functionality one small incremental
> patch at a time. That makes the review and submission process much
> easier, since each patch can be discussed on its own merits and
> accepted or reworked. The way the code stands right now, it's an all
> or nothing deal.
I think you are looking at it the wrong way. The code isn't really all
that important immediately. The most important question is do we want
the split drivers to use the low level grant-table and event-channel
APIs directly and each have their own version of code to do the required
set-up and tear-down, manipulations for buffers bigger than individual
pages and all that cruft or do we want a higher-level API that is more
convenient to use, less coupled to the intricate implementation details
and therefore better for maintenance and IMHO generally a better way.
Xenidc, the API documentation and the working USB driver serve as an
example of the kind of infrastructure we could have. Whether we want
the end goal or not should decide how I prepare the code for
integration. If we don't want the end goal then I can factor all the
xenidc stuff out. If the end goal looks like a good thing, we can
discuss how to best incorporate it incrementally.
Did you read the API documentation? Do you think it's worthwhile to try
to achieve a high level inter-domain communication API which allows
different split drivers to reuse the channel set-up, messaging,
interrupt handling, flow-control and bulk data transfer code?
Harry.
>
> Cheers,
> Muli
--
Harry Butterworth <harry@hebutterworth.freeserve.co.uk>
next prev parent reply other threads:[~2005-12-16 19:00 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-16 16:51 latest USB code including Xenidc documentation Harry Butterworth
2005-12-16 17:01 ` Muli Ben-Yehuda
2005-12-16 17:23 ` Harry Butterworth
2005-12-16 17:38 ` Muli Ben-Yehuda
2005-12-16 19:00 ` Harry Butterworth [this message]
2005-12-16 20:13 ` Anthony Liguori
2005-12-16 20:45 ` Harry Butterworth
2005-12-17 8:16 ` Muli Ben-Yehuda
2005-12-19 10:54 ` Harry Butterworth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1134759628.4801.42.camel@localhost \
--to=harry@hebutterworth.freeserve.co.uk \
--cc=keir.fraser@cl.cam.ac.uk \
--cc=mulix@mulix.org \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.