[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] RFC: KVM _CREATE_DEVICE considered harmful?
From: |
Christian Borntraeger |
Subject: |
Re: [Qemu-devel] RFC: KVM _CREATE_DEVICE considered harmful? |
Date: |
Wed, 16 Oct 2013 16:23:12 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.0 |
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