[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] RFC: Creation of virtual bus, hook-up of Xen devices

On Thu, 2005-02-10 at 00:17 +0000, Christian Limpach wrote:
>On Tue, Feb 01, 2005 at 09:20:20PM -0500, Jeremy Katz wrote:
>> > > > What information would be exported under devices/netN and
>> > > > devices/blkN?
>> > 
>> > Do you know yet what information would be exported?  Or is the existence
>> > of the netN/blkN devices sufficient for your immediate usage?
>> Existence is good enough for _my_ immediate needs, but it's probably not
>> the best in general or for the longer term.  If things can get to where
>> there's a unique identifier for every virtual device (which is probably
>> the better long term option), then a cleaner arrangement would probably
>> be
>>  /sys/bus/xen/devices
>>    devid1/
>>       class (file containing a class id for net, block, usb, ...)
>>       handle
>>       evtchn
>>       irq
>>       driver -> driver dir if driver is loaded
>> Then it can parallel other actual hardware buses a little bit more
>> closely.
>OK, sounds good.

After getting some work done, one problem is there's not a
device-type-independent device id for each device (or if so, I'm missing
it entirely :).  I can get type + index to get an identifier, but that's
not generic across all the devices.  That's not a huge stumbling block,
though, as it's at least _a_ unique identifier.  

I'm also not sure how things interact as far as device indexing after
suspend of a guest since that's not working in -unstable.

>> > > > - wouldn't /sys/bus/xen be a better name than /sys/bus/x?
>> > > > - same for exported functions, x_register_driver et al. are IMHO too
>> > > > general and pollute the namespace -- I'd suggest prefixing everything
>> > > > with xenbus, incl the structs which get defined in xbus.h (xenbus.h).
>> > > 
>> > > s/x/xen/ is easy enough to do.  Although not as xen leaves it more open
>> > > for other virtualization frameworks to eventually use the same model.
>> > > The idea of sub_x_bus also came up just from the nice anagram it would
>> > > give :-)
>> > 
>> > I see.  x is just so very unspecific.  We're certainly happy with xen ;-)
>> > Maybe vmm would make sense?
>> Or maybe vmmio to be a little bit more descriptive.  Since I don't think
>> that things like memory, cpus, etc make sense on there and so it's
>> mostly for IO devices.
>Actually, we might want to add memory and cpus, or is there another
>abstraction to represent hotplug cpus and memory?  I think xen or vmm
>would be good names, I've used hypervisor in NetBSD.

I think the general handling of hotplug cpus and memory in Linux right
now falls into the category of "poor".  :-)   I'll go with vmm, though,
to keep it generic enough for exposing cpu and memory via it if that
makes sense in the future.  

>> That could work, although if the end direction is something akin to the
>> above, then it may make less sense to do this as an intermediate step.
>> If not, then it shouldn't be too hard to do. 
>I'm not 100% sure what you mean by end direction?  Do you mean the change
>to a probe only enumeration call?  I think that would be a simple change
>since the call would be very similar on the client side, but it would
>allow the backend to skip any changes which are only required when the
>device is actually brought up.

Yes, changing to probe only doing the enumeration of devices.  And then,
loading the driver really only has to connect to the devices and set
their status.  You're right on it not being that difficult once I got a
better feeling of my way around the maze of calls in xend and how they

This also adds the advantage that instead of having to do a complete
rescan for adding a new device (right now, adding a device ends up
sending an INTERFACE_CHANGED message and the burden is then on the
frontend drivers to determine exactly what that entails), you can just
send a message that says "new block device, index 2" and that gets
matched to a driver and the driver only needs to change things for that

>I think you want to query each backend and find out what devices it has.
>I'm not sure if the enumeration function should be generic or
>device-specific.  Our current device-specific approach could probably be
>changed to be generic but in a first instance it would be quickest to
>implement this using the existing "queries" since there are only two
>device types.

Well, there are three now with USB.  And requiring the guest kernels to
know it all seems silly.  It's actually pretty simple to do in a generic

>Have you made any progress on this?

Not as much as I would _like_ to have, just due to some other things
keeping me busy but I am making slow but steady progress.  My plan is to
try to work on it some more tonight and hopefully get a next iteration
out for more comments in the next day or so.


SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.