All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoffer Dall <christoffer.dall@linaro.org>
To: Eric Auger <eric.auger@linaro.org>
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, agraf@suse.de, linux-kernel@vger.kernel.org,
	patches@linaro.org, will.deacon@arm.com,
	a.motakis@virtualopensystems.com, a.rigo@virtualopensystems.com,
	john.liuli@huawei.com, ming.lei@canonical.com, feng.wu@intel.com
Subject: Re: [PATCH v3 6/8] KVM: kvm-vfio: wrapper to VFIO external API device helpers
Date: Sun, 30 Nov 2014 14:01:51 +0100	[thread overview]
Message-ID: <20141130130151.GF82106@macair> (raw)
In-Reply-To: <1416767760-14487-7-git-send-email-eric.auger@linaro.org>

On Sun, Nov 23, 2014 at 07:35:58PM +0100, Eric Auger wrote:
> Provide wrapper functions that allow KVM-VFIO device code to
> interact with a vfio device:
> - kvm_vfio_device_get_external_user gets a handle to a struct
>   vfio_device from the vfio device file descriptor and increments
>   its reference counter,
> - kvm_vfio_device_put_external_user decrements the reference counter
>   to a vfio device,
> - kvm_vfio_external_base_device returns a handle to the struct device
>   of the vfio device.
> 
> The KVM-VFIO device uses the VFIO external API device functions.
> 
> Signed-off-by: Eric Auger <eric.auger@linaro.org>
> 
> ---
> 
> v2 -> v3:
> reword the commit message and title
> 
> 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 53036e2..bca5b79 100644
> --- a/arch/arm/include/asm/kvm_host.h
> +++ b/arch/arm/include/asm/kvm_host.h
> @@ -169,6 +169,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);
> +

why do we add this in kvm_host.h ?

>  /* We do not have shadow page tables, hence the empty hooks */
>  static inline int kvm_age_hva(struct kvm *kvm, unsigned long start,
>  			      unsigned long end)
> diff --git a/virt/kvm/vfio.c b/virt/kvm/vfio.c
> index 620e37f..6f0cc34 100644
> --- a/virt/kvm/vfio.c
> +++ b/virt/kvm/vfio.c
> @@ -60,6 +60,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
> 

WARNING: multiple messages have this Message-ID (diff)
From: christoffer.dall@linaro.org (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 6/8] KVM: kvm-vfio: wrapper to VFIO external API device helpers
Date: Sun, 30 Nov 2014 14:01:51 +0100	[thread overview]
Message-ID: <20141130130151.GF82106@macair> (raw)
In-Reply-To: <1416767760-14487-7-git-send-email-eric.auger@linaro.org>

On Sun, Nov 23, 2014 at 07:35:58PM +0100, Eric Auger wrote:
> Provide wrapper functions that allow KVM-VFIO device code to
> interact with a vfio device:
> - kvm_vfio_device_get_external_user gets a handle to a struct
>   vfio_device from the vfio device file descriptor and increments
>   its reference counter,
> - kvm_vfio_device_put_external_user decrements the reference counter
>   to a vfio device,
> - kvm_vfio_external_base_device returns a handle to the struct device
>   of the vfio device.
> 
> The KVM-VFIO device uses the VFIO external API device functions.
> 
> Signed-off-by: Eric Auger <eric.auger@linaro.org>
> 
> ---
> 
> v2 -> v3:
> reword the commit message and title
> 
> 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 53036e2..bca5b79 100644
> --- a/arch/arm/include/asm/kvm_host.h
> +++ b/arch/arm/include/asm/kvm_host.h
> @@ -169,6 +169,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);
> +

why do we add this in kvm_host.h ?

>  /* We do not have shadow page tables, hence the empty hooks */
>  static inline int kvm_age_hva(struct kvm *kvm, unsigned long start,
>  			      unsigned long end)
> diff --git a/virt/kvm/vfio.c b/virt/kvm/vfio.c
> index 620e37f..6f0cc34 100644
> --- a/virt/kvm/vfio.c
> +++ b/virt/kvm/vfio.c
> @@ -60,6 +60,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
> 

  parent reply	other threads:[~2014-11-30 13:01 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-23 18:35 [PATCH v3 0/8] KVM-VFIO IRQ forward control Eric Auger
2014-11-23 18:35 ` Eric Auger
2014-11-23 18:35 ` Eric Auger
2014-11-23 18:35 ` [PATCH v3 1/8] KVM: arm: Enable the KVM-VFIO device Eric Auger
2014-11-23 18:35   ` Eric Auger
2014-11-23 18:35 ` [PATCH v3 2/8] KVM: arm64: " Eric Auger
2014-11-23 18:35   ` Eric Auger
2014-11-30 12:14   ` Christoffer Dall
2014-11-30 12:14     ` Christoffer Dall
2014-12-01 14:55     ` Eric Auger
2014-12-01 14:55       ` Eric Auger
2014-11-23 18:35 ` [PATCH v3 3/8] VFIO: platform: forwarded state tested when selecting IRQ handler Eric Auger
2014-11-23 18:35   ` Eric Auger
2014-11-23 18:35   ` Eric Auger
2014-11-30 12:47   ` Christoffer Dall
2014-11-30 12:47     ` Christoffer Dall
2014-12-01 14:39     ` Eric Auger
2014-12-01 14:39       ` Eric Auger
2014-12-01 20:10       ` Christoffer Dall
2014-12-01 20:10         ` Christoffer Dall
2014-12-01 21:15         ` Eric Auger
2014-12-01 21:15           ` Eric Auger
2014-11-23 18:35 ` [PATCH v3 4/8] KVM: kvm-vfio: User API for IRQ forwarding Eric Auger
2014-11-23 18:35   ` Eric Auger
2014-11-30 12:53   ` Christoffer Dall
2014-11-30 12:53     ` Christoffer Dall
2014-12-01 14:46     ` Eric Auger
2014-12-01 14:46       ` Eric Auger
2014-11-23 18:35 ` [PATCH v3 5/8] VFIO: External user API device helpers Eric Auger
2014-11-23 18:35   ` Eric Auger
2014-11-23 18:35 ` [PATCH v3 6/8] KVM: kvm-vfio: wrapper to VFIO external " Eric Auger
2014-11-23 18:35   ` Eric Auger
2014-11-24 20:56   ` Alex Williamson
2014-11-24 20:56     ` Alex Williamson
2014-11-30 13:01   ` Christoffer Dall [this message]
2014-11-30 13:01     ` Christoffer Dall
2014-11-23 18:35 ` [PATCH v3 7/8] KVM: kvm-vfio: generic forwarding control Eric Auger
2014-11-23 18:35   ` Eric Auger
2014-11-24 20:56   ` Alex Williamson
2014-11-24 20:56     ` Alex Williamson
2014-11-25 18:20     ` Eric Auger
2014-11-25 18:20       ` Eric Auger
2014-11-25 19:00       ` Alex Williamson
2014-11-25 19:00         ` Alex Williamson
2014-12-08 12:22         ` Eric Auger
2014-12-08 12:22           ` Eric Auger
2014-12-08 16:54           ` Alex Williamson
2014-12-08 16:54             ` Alex Williamson
2014-12-08 17:13             ` Eric Auger
2014-12-08 17:13               ` Eric Auger
2014-12-09 16:19     ` Eric Auger
2014-12-09 16:19       ` Eric Auger
2014-12-09 17:20       ` Alex Williamson
2014-12-09 17:20         ` Alex Williamson
2014-11-25  4:33   ` Wu, Feng
2014-11-25  4:33     ` Wu, Feng
2014-11-25  4:33     ` Wu, Feng
2014-11-25 13:39     ` Eric Auger
2014-11-25 13:39       ` Eric Auger
2014-11-25 13:39       ` Eric Auger
2014-11-23 18:36 ` [PATCH v3 8/8] KVM: arm: kvm-vfio: " Eric Auger
2014-11-23 18:36   ` Eric Auger
2014-11-24 20:56   ` Alex Williamson
2014-11-24 20:56     ` Alex Williamson
2014-11-24  8:14 ` [PATCH v3 0/8] KVM-VFIO IRQ forward control Wu, Feng
2014-11-24  8:14   ` Wu, Feng
2014-11-24  8:14   ` Wu, Feng
2014-11-24  8:27   ` Eric Auger
2014-11-24  8:27     ` Eric Auger
2014-11-24  8:27     ` Eric Auger
2014-11-24  8:34     ` Wu, Feng
2014-11-24  8:34       ` Wu, Feng
2014-11-24  8:34       ` Wu, Feng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141130130151.GF82106@macair \
    --to=christoffer.dall@linaro.org \
    --cc=a.motakis@virtualopensystems.com \
    --cc=a.rigo@virtualopensystems.com \
    --cc=agraf@suse.de \
    --cc=alex.williamson@redhat.com \
    --cc=eric.auger@linaro.org \
    --cc=eric.auger@st.com \
    --cc=feng.wu@intel.com \
    --cc=gleb@kernel.org \
    --cc=joel.schopp@amd.com \
    --cc=john.liuli@huawei.com \
    --cc=kim.phillips@freescale.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=ming.lei@canonical.com \
    --cc=patches@linaro.org \
    --cc=paulus@samba.org \
    --cc=pbonzini@redhat.com \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.