Re: RFC: KVM _CREATE_DEVICE considered harmful?

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

 



dropping valgrind devel since its subscribers only...

On 16/10/13 15:06, Paolo Bonzini wrote:
> Il 16/10/2013 14:59, Christian Borntraeger ha scritto:
>>
>> Now, newer KVMs have the ability to create subdevices of a KVM guest (e.g. an in kernel
>> kvm interrupt controller) with the following ioctl:
>>
>> #define KVM_CREATE_DEVICE         _IOWR(KVMIO,  0xe0, struct kvm_create_device)
>>
>> qemu can then work on these devices with the ioctls 
>>
>> /* ioctls for fds returned by KVM_CREATE_DEVICE */
>> #define KVM_SET_DEVICE_ATTR       _IOW(KVMIO,  0xe1, struct kvm_device_attr)
>> #define KVM_GET_DEVICE_ATTR       _IOW(KVMIO,  0xe2, struct kvm_device_attr)
>> #define KVM_HAS_DEVICE_ATTR       _IOW(KVMIO,  0xe3, struct kvm_device_attr)
>>
>> 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 */
>> };
> 
> Would it work to simply add an "__u64 size;" field to kvm_device_attr,
> that is filled on exit by KVM_GET/HAS_DEVICE_ADDR, and filled on entry
> to KVM_SET_DEVICE_ADDR?

That would work, but it would change the ioctl number of KVM_*_DEVICE_ADDR,
due to the changed size of struct kvm_device_attr. We would then need compat
 handlers in the kernel.

If we could encode it in the existing interface the impact would be smaller.
e.g. 

#define ATTR_ATTR_MASK 0xffffffffULL
#define ATTR_LEN_MASK 0xffffffff00000000ULL


    switch (attr->attr) {
---> 
    switch (attr->attr & ATTR_ATTR_MASK) {

Then we could keep the device model abstraction.

Just thinking here..better proposals are welcome

Christian

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux