[RFC 1/2] virtio: Add AMBA bus driver for virtio device

Pawel Moll pawel.moll at arm.com
Mon Sep 12 12:45:56 EDT 2011


On Mon, 2011-09-12 at 11:01 +0930, Rusty Russell wrote:
> Cool work!  I like the concept, but a few implementation notes below:

Glad to hear that it makes any sense :-)

I'll post the RFC v2 in a second - it's a platform bus driver now, so
it's not ARM specific any more...

> > + * offset width name          description
> > + * ------ ----- ------------- -----------------
> > + *
> > + *  0x000   32  HostFeatures  Features supported by the host
> > + *  0x004   32  GuestFeatures Features activated by the guest
> 
> You need to make these at least 64 bits.  Lguest makes them variable
> width, in fact.

No problem, I've reserved 128 bits in the modified registers layout (see
RFC v2), I can even change it into "offset/value" interface, which would
give you variable width. One thing I don't get is how to access feature
bits > 31? The get_features() seems
to be limited to 32:

struct virtio_config_ops {
<...>
	u32 (*get_features)(struct virtio_device *vdev);
<...>
}

> > + *  0x008   32  QueuePFN      PFN for the currently selected queue
> > + *  0x00c   32  QueueNum      Queue size for the currently selected queue
> 
> You should, I believe, seriously consider allowing the guest to set the
> queue size, rather than the host (perhaps the host could suggest one,
> but the guest should be able to override it).

I guess the QueueNum could be simply a read/write register - guest can
read suggestion and override it writing it back. The same question
though - how can guest change it? (I mean some API?)

> Anthony or Michael might suggest other changes, since they are most
> familiar with virtio_pci limitations...

I've added them on the RFC v2 Cc as well - all feedback more then
welcome!

Cheers!

Paweł




More information about the linux-arm-kernel mailing list