From: Eric Auger <eric.auger@linaro.org> To: eric.auger@st.com, eric.auger@linaro.org, christoffer.dall@linaro.org, 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 Cc: 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: [RFC v2 7/9] KVM: KVM-VFIO: add new VFIO external API hooks Date: Mon, 1 Sep 2014 14:52:46 +0200 [thread overview] Message-ID: <1409575968-5329-8-git-send-email-eric.auger@linaro.org> (raw) In-Reply-To: <1409575968-5329-1-git-send-email-eric.auger@linaro.org> add functions that implement the gateway to the extended 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 <eric.auger@linaro.org> --- 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
WARNING: multiple messages have this Message-ID (diff)
From: eric.auger@linaro.org (Eric Auger) To: linux-arm-kernel@lists.infradead.org Subject: [RFC v2 7/9] KVM: KVM-VFIO: add new VFIO external API hooks Date: Mon, 1 Sep 2014 14:52:46 +0200 [thread overview] Message-ID: <1409575968-5329-8-git-send-email-eric.auger@linaro.org> (raw) In-Reply-To: <1409575968-5329-1-git-send-email-eric.auger@linaro.org> add functions that implement the gateway to the extended 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 <eric.auger@linaro.org> --- 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
next prev parent reply other threads:[~2014-09-01 12:53 UTC|newest] Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-09-01 12:52 [RFC v2 0/9] KVM-VFIO IRQ forward control Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-01 12:52 ` [RFC v2 1/9] KVM: ARM: VGIC: fix multiple injection of level sensitive forwarded IRQ Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-11 3:09 ` Christoffer Dall 2014-09-11 3:09 ` Christoffer Dall 2014-09-11 18:17 ` Eric Auger 2014-09-11 18:17 ` Eric Auger 2014-09-11 22:14 ` Christoffer Dall 2014-09-11 22:14 ` Christoffer Dall 2014-09-01 12:52 ` [RFC v2 2/9] KVM: ARM: VGIC: add forwarded irq rbtree lock Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-11 3:09 ` Christoffer Dall 2014-09-11 3:09 ` Christoffer Dall 2014-09-11 17:31 ` Eric Auger 2014-09-11 17:31 ` Eric Auger 2014-09-01 12:52 ` [RFC v2 3/9] ARM: KVM: Enable the KVM-VFIO device Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-01 12:52 ` [RFC v2 4/9] VFIO: platform: handler tests whether the IRQ is forwarded Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 8:44 ` Eric Auger 2014-09-11 8:44 ` Eric Auger 2014-09-11 17:05 ` Christoffer Dall 2014-09-11 17:05 ` Christoffer Dall 2014-09-11 18:07 ` Alex Williamson 2014-09-11 18:07 ` Alex Williamson 2014-09-11 17:08 ` Antonios Motakis 2014-09-11 17:08 ` Antonios Motakis 2014-09-01 12:52 ` [RFC v2 5/9] KVM: KVM-VFIO: update user API to program forwarded IRQ Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 8:49 ` Eric Auger 2014-09-11 8:49 ` Eric Auger 2014-09-11 17:08 ` Christoffer Dall 2014-09-11 17:08 ` Christoffer Dall 2014-09-01 12:52 ` [RFC v2 6/9] VFIO: Extend external user API Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 8:50 ` Eric Auger 2014-09-11 8:50 ` Eric Auger 2014-09-01 12:52 ` Eric Auger [this message] 2014-09-01 12:52 ` [RFC v2 7/9] KVM: KVM-VFIO: add new VFIO external API hooks Eric Auger 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 8:51 ` Eric Auger 2014-09-11 8:51 ` Eric Auger 2014-09-01 12:52 ` [RFC v2 8/9] KVM: KVM-VFIO: generic KVM_DEV_VFIO_DEVICE command and IRQ forwarding control Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 5:05 ` Alex Williamson 2014-09-11 5:05 ` Alex Williamson 2014-09-11 5:05 ` Alex Williamson 2014-09-11 12:04 ` Eric Auger 2014-09-11 12:04 ` Eric Auger 2014-09-11 15:59 ` Alex Williamson 2014-09-11 15:59 ` Alex Williamson 2014-09-11 17:24 ` Christoffer Dall 2014-09-11 17:24 ` Christoffer Dall 2014-09-11 17:22 ` Christoffer Dall 2014-09-11 17:22 ` Christoffer Dall 2014-09-11 17:10 ` Christoffer Dall 2014-09-11 17:10 ` Christoffer Dall 2014-09-11 18:14 ` Alex Williamson 2014-09-11 18:14 ` Alex Williamson 2014-09-11 21:59 ` Christoffer Dall 2014-09-11 21:59 ` Christoffer Dall 2014-09-11 9:35 ` Eric Auger 2014-09-11 9:35 ` Eric Auger 2014-09-11 15:47 ` Alex Williamson 2014-09-11 15:47 ` Alex Williamson 2014-09-11 15:47 ` Alex Williamson 2014-09-11 17:32 ` Christoffer Dall 2014-09-11 17:32 ` Christoffer Dall 2014-09-01 12:52 ` [RFC v2 9/9] KVM: KVM-VFIO: ARM " Eric Auger 2014-09-01 12:52 ` Eric Auger 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 3:10 ` Christoffer Dall 2014-09-02 21:05 ` [RFC v2 0/9] KVM-VFIO IRQ forward control Alex Williamson 2014-09-02 21:05 ` Alex Williamson 2014-09-05 12:52 ` Eric Auger 2014-09-05 12:52 ` Eric Auger 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 3:10 ` Christoffer Dall 2014-09-11 5:09 ` Alex Williamson 2014-09-11 5:09 ` Alex Williamson 2014-11-17 11:25 ` Wu, Feng 2014-11-17 11:25 ` Wu, Feng 2014-11-17 11:25 ` Wu, Feng 2014-11-17 13:41 ` Eric Auger 2014-11-17 13:41 ` Eric Auger 2014-11-17 13:41 ` Eric Auger 2014-11-17 13:45 ` Wu, Feng 2014-11-17 13:45 ` Wu, Feng 2014-11-17 13:45 ` 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=1409575968-5329-8-git-send-email-eric.auger@linaro.org \ --to=eric.auger@linaro.org \ --cc=a.motakis@virtualopensystems.com \ --cc=a.rigo@virtualopensystems.com \ --cc=alex.williamson@redhat.com \ --cc=christoffer.dall@linaro.org \ --cc=eric.auger@st.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=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: linkBe 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.