Re: [RFC PATCH v3 1/6] kvm: add device control API

Scott Wood
2013-04-04T23:47:45Z

On 04/04/2013 05:41:35 AM, Gleb Natapov wrote:
> On Tue, Apr 02, 2013 at 08:57:48PM -0500, Scott Wood wrote:
> > +struct kvm_device_attr {
> > + __u32 flags; /* no flags currently defined */
> > + __u32 group; /* device-defined */
> > + __u64 attr; /* group-defined */
> > + __u64 addr; /* userspace address of attr data */
> > +};
> > +
> Since now each device has its own fd is it an advantage to enforce
> common interface between different devices?

I think so, even if only to avoid repeating the various pains
surrounding adding ioctls. Not necessarily "enforce", just enable. If
a device has some sort of command that does not fit neatly into the
"set or get" model, it could still add a new ioctl.

> If we do so though why not handle file creation, ioctl and file
> descriptor lifetime in the
> common code. Common code will have "struct kvm_device" with "struct
> kvm_device_arch" and "struct kvm_device_ops" members. Instead of
> kvm_mpic_ioctl there will be kvm_device_ioctl which will despatch
> ioctls
> to a device using kvm_device->ops->(set|get|has)_attr pointers.

So make it more like the pre-fd version, except for the actual fd
usage? It would make destruction a bit simpler (assuming there's no
need for vcpu destruction code to access a device). Hopefully nobody
asks me to change it back again, though. :-)

-Scott