From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWQoO-0007FM-Nm for qemu-devel@nongnu.org; Wed, 16 Oct 2013 09:06:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VWQoI-0003sh-Dd for qemu-devel@nongnu.org; Wed, 16 Oct 2013 09:06:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:8464) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWQoI-0003sW-5W for qemu-devel@nongnu.org; Wed, 16 Oct 2013 09:06:46 -0400 Message-ID: <525E8F53.3090603@redhat.com> Date: Wed, 16 Oct 2013 15:06:27 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <525E8DC3.70409@borntraeger.net> In-Reply-To: <525E8DC3.70409@borntraeger.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] RFC: KVM _CREATE_DEVICE considered harmful? List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Christian Borntraeger Cc: KVM list , Gleb Natapov , Valgrind Developers , "qemu-devel@nongnu.org" , Alexander Graf , Jens Freimann 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? Paolo