From: Feng Wu <feng.wu@intel.com> To: pbonzini@redhat.com, alex.williamson@redhat.com, joro@8bytes.org, mtosatti@redhat.com Cc: eric.auger@linaro.org, kvm@vger.kernel.org, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, Feng Wu <feng.wu@intel.com> Subject: [PATCH v8 00/13] Add VT-d Posted-Interrupts support Date: Wed, 16 Sep 2015 16:49:56 +0800 [thread overview] Message-ID: <1442393409-2623-1-git-send-email-feng.wu@intel.com> (raw) VT-d Posted-Interrupts is an enhancement to CPU side Posted-Interrupt. With VT-d Posted-Interrupts enabled, external interrupts from direct-assigned devices can be delivered to guests without VMM intervention when guest is running in non-root mode. You can find the VT-d Posted-Interrtups Spec. in the following URL: http://www.intel.com/content/www/us/en/intelligent-systems/intel-technology/vt-directed-io-spec.html v8: refer to the changelog in each patch v7: * Define two weak irq bypass callbacks: - kvm_arch_irq_bypass_start() - kvm_arch_irq_bypass_stop() * Remove the x86 dummy implementation of the above two functions. * Print some useful information instead of WARN_ON() when the irq bypass consumer unregistration fails. * Fix an issue when calling pi_pre_block and pi_post_block. v6: * Rebase on 4.2.0-rc6 * Rebase on https://lkml.org/lkml/2015/8/6/526 and http://www.gossamer-threads.com/lists/linux/kernel/2235623 * Make the add_consumer and del_consumer callbacks static * Remove pointless INIT_LIST_HEAD to 'vdev->ctx[vector].producer.node)' * Use dev_info instead of WARN_ON() when irq_bypass_register_producer fails * Remove optional dummy callbacks for irq producer v4: * For lowest-priority interrupt, only support single-CPU destination interrupts at the current stage, more common lowest priority support will be added later. * Accoring to Marcelo's suggestion, when vCPU is blocked, we handle the posted-interrupts in the HLT emulation path. * Some small changes (coding style, typo, add some code comments) v3: * Adjust the Posted-interrupts Descriptor updating logic when vCPU is preempted or blocked. * KVM_DEV_VFIO_DEVICE_POSTING_IRQ --> KVM_DEV_VFIO_DEVICE_POST_IRQ * __KVM_HAVE_ARCH_KVM_VFIO_POSTING --> __KVM_HAVE_ARCH_KVM_VFIO_POST * Add KVM_DEV_VFIO_DEVICE_UNPOST_IRQ attribute for VFIO irq, which can be used to change back to remapping mode. * Fix typo v2: * Use VFIO framework to enable this feature, the VFIO part of this series is base on Eric's patch "[PATCH v3 0/8] KVM-VFIO IRQ forward control" * Rebase this patchset on git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git, then revise some irq logic based on the new hierarchy irqdomain patches provided by Jiang Liu <jiang.liu@linux.intel.com> Feng Wu (13): KVM: Extend struct pi_desc for VT-d Posted-Interrupts KVM: Add some helper functions for Posted-Interrupts KVM: Define a new interface kvm_intr_is_single_vcpu() KVM: Make struct kvm_irq_routing_table accessible KVM: make kvm_set_msi_irq() public vfio: Register/unregister irq_bypass_producer KVM: x86: Update IRTE for posted-interrupts KVM: Implement IRQ bypass consumer callbacks for x86 KVM: Add an arch specific hooks in 'struct kvm_kernel_irqfd' KVM: Update Posted-Interrupts Descriptor when vCPU is preempted KVM: Update Posted-Interrupts Descriptor when vCPU is blocked KVM: Warn if 'SN' is set during posting interrupts by software iommu/vt-d: Add a command line parameter for VT-d posted-interrupts Documentation/kernel-parameters.txt | 1 + arch/x86/include/asm/kvm_host.h | 24 +++ arch/x86/kvm/Kconfig | 1 + arch/x86/kvm/irq_comm.c | 99 +++++++++- arch/x86/kvm/lapic.c | 5 +- arch/x86/kvm/lapic.h | 2 + arch/x86/kvm/trace.h | 33 ++++ arch/x86/kvm/vmx.c | 361 +++++++++++++++++++++++++++++++++++- arch/x86/kvm/x86.c | 106 ++++++++++- drivers/iommu/irq_remapping.c | 12 +- drivers/vfio/pci/Kconfig | 1 + drivers/vfio/pci/vfio_pci_intrs.c | 9 + drivers/vfio/pci/vfio_pci_private.h | 2 + include/linux/kvm_host.h | 19 ++ virt/kvm/eventfd.c | 31 +++- virt/kvm/irqchip.c | 10 - virt/kvm/kvm_main.c | 3 + 17 files changed, 687 insertions(+), 32 deletions(-) -- 2.1.0
WARNING: multiple messages have this Message-ID (diff)
From: Feng Wu <feng.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> To: pbonzini-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org, mtosatti-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org Cc: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, eric.auger-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org Subject: [PATCH v8 00/13] Add VT-d Posted-Interrupts support Date: Wed, 16 Sep 2015 16:49:56 +0800 [thread overview] Message-ID: <1442393409-2623-1-git-send-email-feng.wu@intel.com> (raw) VT-d Posted-Interrupts is an enhancement to CPU side Posted-Interrupt. With VT-d Posted-Interrupts enabled, external interrupts from direct-assigned devices can be delivered to guests without VMM intervention when guest is running in non-root mode. You can find the VT-d Posted-Interrtups Spec. in the following URL: http://www.intel.com/content/www/us/en/intelligent-systems/intel-technology/vt-directed-io-spec.html v8: refer to the changelog in each patch v7: * Define two weak irq bypass callbacks: - kvm_arch_irq_bypass_start() - kvm_arch_irq_bypass_stop() * Remove the x86 dummy implementation of the above two functions. * Print some useful information instead of WARN_ON() when the irq bypass consumer unregistration fails. * Fix an issue when calling pi_pre_block and pi_post_block. v6: * Rebase on 4.2.0-rc6 * Rebase on https://lkml.org/lkml/2015/8/6/526 and http://www.gossamer-threads.com/lists/linux/kernel/2235623 * Make the add_consumer and del_consumer callbacks static * Remove pointless INIT_LIST_HEAD to 'vdev->ctx[vector].producer.node)' * Use dev_info instead of WARN_ON() when irq_bypass_register_producer fails * Remove optional dummy callbacks for irq producer v4: * For lowest-priority interrupt, only support single-CPU destination interrupts at the current stage, more common lowest priority support will be added later. * Accoring to Marcelo's suggestion, when vCPU is blocked, we handle the posted-interrupts in the HLT emulation path. * Some small changes (coding style, typo, add some code comments) v3: * Adjust the Posted-interrupts Descriptor updating logic when vCPU is preempted or blocked. * KVM_DEV_VFIO_DEVICE_POSTING_IRQ --> KVM_DEV_VFIO_DEVICE_POST_IRQ * __KVM_HAVE_ARCH_KVM_VFIO_POSTING --> __KVM_HAVE_ARCH_KVM_VFIO_POST * Add KVM_DEV_VFIO_DEVICE_UNPOST_IRQ attribute for VFIO irq, which can be used to change back to remapping mode. * Fix typo v2: * Use VFIO framework to enable this feature, the VFIO part of this series is base on Eric's patch "[PATCH v3 0/8] KVM-VFIO IRQ forward control" * Rebase this patchset on git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git, then revise some irq logic based on the new hierarchy irqdomain patches provided by Jiang Liu <jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> Feng Wu (13): KVM: Extend struct pi_desc for VT-d Posted-Interrupts KVM: Add some helper functions for Posted-Interrupts KVM: Define a new interface kvm_intr_is_single_vcpu() KVM: Make struct kvm_irq_routing_table accessible KVM: make kvm_set_msi_irq() public vfio: Register/unregister irq_bypass_producer KVM: x86: Update IRTE for posted-interrupts KVM: Implement IRQ bypass consumer callbacks for x86 KVM: Add an arch specific hooks in 'struct kvm_kernel_irqfd' KVM: Update Posted-Interrupts Descriptor when vCPU is preempted KVM: Update Posted-Interrupts Descriptor when vCPU is blocked KVM: Warn if 'SN' is set during posting interrupts by software iommu/vt-d: Add a command line parameter for VT-d posted-interrupts Documentation/kernel-parameters.txt | 1 + arch/x86/include/asm/kvm_host.h | 24 +++ arch/x86/kvm/Kconfig | 1 + arch/x86/kvm/irq_comm.c | 99 +++++++++- arch/x86/kvm/lapic.c | 5 +- arch/x86/kvm/lapic.h | 2 + arch/x86/kvm/trace.h | 33 ++++ arch/x86/kvm/vmx.c | 361 +++++++++++++++++++++++++++++++++++- arch/x86/kvm/x86.c | 106 ++++++++++- drivers/iommu/irq_remapping.c | 12 +- drivers/vfio/pci/Kconfig | 1 + drivers/vfio/pci/vfio_pci_intrs.c | 9 + drivers/vfio/pci/vfio_pci_private.h | 2 + include/linux/kvm_host.h | 19 ++ virt/kvm/eventfd.c | 31 +++- virt/kvm/irqchip.c | 10 - virt/kvm/kvm_main.c | 3 + 17 files changed, 687 insertions(+), 32 deletions(-) -- 2.1.0
next reply other threads:[~2015-09-16 9:04 UTC|newest] Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-09-16 8:49 Feng Wu [this message] 2015-09-16 8:49 ` [PATCH v8 00/13] Add VT-d Posted-Interrupts support Feng Wu 2015-09-16 8:49 ` [PATCH v8 01/13] KVM: Extend struct pi_desc for VT-d Posted-Interrupts Feng Wu 2015-09-16 8:49 ` Feng Wu 2015-09-16 8:49 ` [PATCH v8 02/13] KVM: Add some helper functions for Posted-Interrupts Feng Wu 2015-09-16 8:49 ` Feng Wu 2015-09-16 8:49 ` [PATCH v8 03/13] KVM: Define a new interface kvm_intr_is_single_vcpu() Feng Wu 2015-09-16 8:49 ` Feng Wu 2015-09-16 9:23 ` Paolo Bonzini 2015-09-16 9:23 ` Paolo Bonzini 2015-09-17 3:17 ` Wu, Feng 2015-09-17 3:17 ` Wu, Feng 2015-09-17 9:42 ` Paolo Bonzini 2015-09-17 13:36 ` Wu, Feng 2015-09-17 13:36 ` Wu, Feng 2015-09-17 14:24 ` Paolo Bonzini 2015-09-17 14:24 ` Paolo Bonzini 2015-09-17 15:58 ` Radim Krčmář 2015-09-17 16:00 ` Paolo Bonzini 2015-09-17 16:00 ` Paolo Bonzini 2015-09-17 23:18 ` Wu, Feng 2015-09-17 23:18 ` Wu, Feng 2015-09-18 16:16 ` Radim Krčmář 2015-09-18 16:16 ` Radim Krčmář 2015-09-18 16:17 ` Paolo Bonzini 2015-09-18 16:17 ` Paolo Bonzini 2015-09-17 23:15 ` Wu, Feng 2015-09-17 23:15 ` Wu, Feng 2015-09-16 8:50 ` [PATCH v8 04/13] KVM: Make struct kvm_irq_routing_table accessible Feng Wu 2015-09-16 8:50 ` Feng Wu 2015-09-16 8:50 ` [PATCH v8 05/13] KVM: make kvm_set_msi_irq() public Feng Wu 2015-09-16 8:50 ` Feng Wu 2015-09-16 8:50 ` [PATCH v8 06/13] vfio: Register/unregister irq_bypass_producer Feng Wu 2015-09-16 8:50 ` Feng Wu 2015-09-16 8:50 ` [PATCH v8 07/13] KVM: x86: Update IRTE for posted-interrupts Feng Wu 2015-09-16 8:50 ` Feng Wu 2015-09-16 8:50 ` [PATCH v8 08/13] KVM: Implement IRQ bypass consumer callbacks for x86 Feng Wu 2015-09-16 8:50 ` Feng Wu 2015-09-16 8:50 ` [PATCH v8 09/13] KVM: Add an arch specific hooks in 'struct kvm_kernel_irqfd' Feng Wu 2015-09-16 8:50 ` Feng Wu 2015-09-16 9:27 ` Paolo Bonzini 2015-09-16 9:27 ` Paolo Bonzini 2015-09-17 1:51 ` Wu, Feng 2015-09-17 1:51 ` Wu, Feng 2015-09-17 9:38 ` Paolo Bonzini 2015-09-17 9:38 ` Paolo Bonzini 2015-09-16 8:50 ` [PATCH v8 10/13] KVM: Update Posted-Interrupts Descriptor when vCPU is preempted Feng Wu 2015-09-16 8:50 ` Feng Wu 2015-09-16 9:29 ` Paolo Bonzini 2015-09-16 9:29 ` Paolo Bonzini 2015-09-16 8:50 ` [PATCH v8 11/13] KVM: Update Posted-Interrupts Descriptor when vCPU is blocked Feng Wu 2015-09-16 8:50 ` Feng Wu 2015-09-16 9:32 ` Paolo Bonzini 2015-09-16 9:32 ` Paolo Bonzini 2015-09-16 8:50 ` [PATCH v8 12/13] KVM: Warn if 'SN' is set during posting interrupts by software Feng Wu 2015-09-16 8:50 ` Feng Wu 2015-09-16 9:32 ` Paolo Bonzini 2015-09-16 9:32 ` Paolo Bonzini 2015-09-16 8:50 ` [PATCH v8 13/13] iommu/vt-d: Add a command line parameter for VT-d posted-interrupts Feng Wu 2015-09-16 8:50 ` Feng Wu 2015-09-16 9:34 ` [PATCH v8 00/13] Add VT-d Posted-Interrupts support Paolo Bonzini 2015-09-16 9:34 ` Paolo Bonzini
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=1442393409-2623-1-git-send-email-feng.wu@intel.com \ --to=feng.wu@intel.com \ --cc=alex.williamson@redhat.com \ --cc=eric.auger@linaro.org \ --cc=iommu@lists.linux-foundation.org \ --cc=joro@8bytes.org \ --cc=kvm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mtosatti@redhat.com \ --cc=pbonzini@redhat.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.