From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753154AbaIKDK0 (ORCPT ); Wed, 10 Sep 2014 23:10:26 -0400 Received: from mail-pa0-f51.google.com ([209.85.220.51]:50496 "EHLO mail-pa0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752186AbaIKDKX (ORCPT ); Wed, 10 Sep 2014 23:10:23 -0400 Date: Thu, 11 Sep 2014 05:10:20 +0200 From: Christoffer Dall To: Eric Auger Cc: eric.auger@st.com, marc.zyngier@arm.com, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, alex.williamson@redhat.com, joel.schopp@amd.com, kim.phillips@freescale.com, paulus@samba.org, gleb@kernel.org, pbonzini@redhat.com, linux-kernel@vger.kernel.org, patches@linaro.org, will.deacon@arm.com, a.motakis@virtualopensystems.com, a.rigo@virtualopensystems.com, john.liuli@huawei.com Subject: Re: [RFC v2 7/9] KVM: KVM-VFIO: add new VFIO external API hooks Message-ID: <20140911031020.GH2784@lvm> References: <1409575968-5329-1-git-send-email-eric.auger@linaro.org> <1409575968-5329-8-git-send-email-eric.auger@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1409575968-5329-8-git-send-email-eric.auger@linaro.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Sep 01, 2014 at 02:52:46PM +0200, Eric Auger wrote: > add functions that implement the gateway to the extended Capital letter when beginning a new sentence. Also the reference to 'the extended VFIO API' feels a bit weird. Can't you make your commit message a little more descriptive of this patch, something along the lines of: Provide wrapper functions that allows KVM-VFIO device code to get an external handle on a struct vfio_device based on a vfio device file descriptor. We provide this through three new functions: (assuming I got this right). > external VFIO API: > - kvm_vfio_device_get_external_user > - kvm_vfio_device_put_external_user > - kvm_vfio_external_base_device > > Signed-off-by: Eric Auger > > --- > > v1 -> v2: > - kvm_vfio_external_get_base_device renamed into > kvm_vfio_external_base_device > - kvm_vfio_external_get_type removed > --- > arch/arm/include/asm/kvm_host.h | 5 +++++ > virt/kvm/vfio.c | 45 +++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 50 insertions(+) > > diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h > index 6dfb404..1aee6bb 100644 > --- a/arch/arm/include/asm/kvm_host.h > +++ b/arch/arm/include/asm/kvm_host.h > @@ -171,6 +171,11 @@ void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); > unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu); > int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *indices); > > +struct vfio_device; > +struct vfio_device *kvm_vfio_device_get_external_user(struct file *filep); > +void kvm_vfio_device_put_external_user(struct vfio_device *vdev); > +struct device *kvm_vfio_external_base_device(struct vfio_device *vdev); > + > /* We do not have shadow page tables, hence the empty hooks */ > static inline int kvm_age_hva(struct kvm *kvm, unsigned long hva) > { > diff --git a/virt/kvm/vfio.c b/virt/kvm/vfio.c > index ba1a93f..76dc7a1 100644 > --- a/virt/kvm/vfio.c > +++ b/virt/kvm/vfio.c > @@ -59,6 +59,51 @@ static void kvm_vfio_group_put_external_user(struct vfio_group *vfio_group) > symbol_put(vfio_group_put_external_user); > } > > +struct vfio_device *kvm_vfio_device_get_external_user(struct file *filep) > +{ > + struct vfio_device *vdev; > + struct vfio_device *(*fn)(struct file *); > + > + fn = symbol_get(vfio_device_get_external_user); > + if (!fn) > + return ERR_PTR(-EINVAL); > + > + vdev = fn(filep); > + > + symbol_put(vfio_device_get_external_user); > + > + return vdev; > +} > + > +void kvm_vfio_device_put_external_user(struct vfio_device *vdev) > +{ > + void (*fn)(struct vfio_device *); > + > + fn = symbol_get(vfio_device_put_external_user); > + if (!fn) > + return; > + > + fn(vdev); > + > + symbol_put(vfio_device_put_external_user); > +} > + > +struct device *kvm_vfio_external_base_device(struct vfio_device *vdev) > +{ > + struct device *(*fn)(struct vfio_device *); > + struct device *dev; > + > + fn = symbol_get(vfio_external_base_device); > + if (!fn) > + return NULL; > + > + dev = fn(vdev); > + > + symbol_put(vfio_external_base_device); > + > + return dev; > +} > + > static bool kvm_vfio_group_is_coherent(struct vfio_group *vfio_group) > { > long (*fn)(struct vfio_group *, unsigned long); > -- > 1.9.1 > otherwise looks good to me! -Christoffer From mboxrd@z Thu Jan 1 00:00:00 1970 From: christoffer.dall@linaro.org (Christoffer Dall) Date: Thu, 11 Sep 2014 05:10:20 +0200 Subject: [RFC v2 7/9] KVM: KVM-VFIO: add new VFIO external API hooks In-Reply-To: <1409575968-5329-8-git-send-email-eric.auger@linaro.org> References: <1409575968-5329-1-git-send-email-eric.auger@linaro.org> <1409575968-5329-8-git-send-email-eric.auger@linaro.org> Message-ID: <20140911031020.GH2784@lvm> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Mon, Sep 01, 2014 at 02:52:46PM +0200, Eric Auger wrote: > add functions that implement the gateway to the extended Capital letter when beginning a new sentence. Also the reference to 'the extended VFIO API' feels a bit weird. Can't you make your commit message a little more descriptive of this patch, something along the lines of: Provide wrapper functions that allows KVM-VFIO device code to get an external handle on a struct vfio_device based on a vfio device file descriptor. We provide this through three new functions: (assuming I got this right). > external VFIO API: > - kvm_vfio_device_get_external_user > - kvm_vfio_device_put_external_user > - kvm_vfio_external_base_device > > Signed-off-by: Eric Auger > > --- > > v1 -> v2: > - kvm_vfio_external_get_base_device renamed into > kvm_vfio_external_base_device > - kvm_vfio_external_get_type removed > --- > arch/arm/include/asm/kvm_host.h | 5 +++++ > virt/kvm/vfio.c | 45 +++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 50 insertions(+) > > diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h > index 6dfb404..1aee6bb 100644 > --- a/arch/arm/include/asm/kvm_host.h > +++ b/arch/arm/include/asm/kvm_host.h > @@ -171,6 +171,11 @@ void kvm_set_spte_hva(struct kvm *kvm, unsigned long hva, pte_t pte); > unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu); > int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *indices); > > +struct vfio_device; > +struct vfio_device *kvm_vfio_device_get_external_user(struct file *filep); > +void kvm_vfio_device_put_external_user(struct vfio_device *vdev); > +struct device *kvm_vfio_external_base_device(struct vfio_device *vdev); > + > /* We do not have shadow page tables, hence the empty hooks */ > static inline int kvm_age_hva(struct kvm *kvm, unsigned long hva) > { > diff --git a/virt/kvm/vfio.c b/virt/kvm/vfio.c > index ba1a93f..76dc7a1 100644 > --- a/virt/kvm/vfio.c > +++ b/virt/kvm/vfio.c > @@ -59,6 +59,51 @@ static void kvm_vfio_group_put_external_user(struct vfio_group *vfio_group) > symbol_put(vfio_group_put_external_user); > } > > +struct vfio_device *kvm_vfio_device_get_external_user(struct file *filep) > +{ > + struct vfio_device *vdev; > + struct vfio_device *(*fn)(struct file *); > + > + fn = symbol_get(vfio_device_get_external_user); > + if (!fn) > + return ERR_PTR(-EINVAL); > + > + vdev = fn(filep); > + > + symbol_put(vfio_device_get_external_user); > + > + return vdev; > +} > + > +void kvm_vfio_device_put_external_user(struct vfio_device *vdev) > +{ > + void (*fn)(struct vfio_device *); > + > + fn = symbol_get(vfio_device_put_external_user); > + if (!fn) > + return; > + > + fn(vdev); > + > + symbol_put(vfio_device_put_external_user); > +} > + > +struct device *kvm_vfio_external_base_device(struct vfio_device *vdev) > +{ > + struct device *(*fn)(struct vfio_device *); > + struct device *dev; > + > + fn = symbol_get(vfio_external_base_device); > + if (!fn) > + return NULL; > + > + dev = fn(vdev); > + > + symbol_put(vfio_external_base_device); > + > + return dev; > +} > + > static bool kvm_vfio_group_is_coherent(struct vfio_group *vfio_group) > { > long (*fn)(struct vfio_group *, unsigned long); > -- > 1.9.1 > otherwise looks good to me! -Christoffer