linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Wu, Feng" <feng.wu@intel.com>
To: "Zhang, Yang Z" <yang.z.zhang@intel.com>,
	Jiang Liu <jiang.liu@linux.intel.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	Ingo Molnar <mingo@kernel.org>,
	"H. Peter Anvin" <hpa@linux.intel.com>,
	"x86@kernel.org" <x86@kernel.org>, Gleb Natapov <gleb@kernel.org>,
	"dwmw2@infradead.org" <dwmw2@infradead.org>,
	"joro@8bytes.org" <joro@8bytes.org>,
	Alex Williamson <alex.williamson@redhat.com>
Cc: "iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	KVM list <kvm@vger.kernel.org>,
	Eric Auger <eric.auger@linaro.org>,
	"Wu, Feng" <feng.wu@intel.com>
Subject: RE: [v3 06/26] iommu, x86: No need to migrating irq for VT-d Posted-Interrupts
Date: Wed, 24 Dec 2014 03:08:39 +0000	[thread overview]
Message-ID: <E959C4978C3B6342920538CF579893F0023159E3@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <A9667DDFB95DB7438FA9D7D576C3D87E0AC06E9B@SHSMSX104.ccr.corp.intel.com>



> -----Original Message-----
> From: Zhang, Yang Z
> Sent: Wednesday, December 24, 2014 10:33 AM
> To: Jiang Liu; Paolo Bonzini; Wu, Feng; Thomas Gleixner; Ingo Molnar; H. Peter
> Anvin; x86@kernel.org; Gleb Natapov; dwmw2@infradead.org;
> joro@8bytes.org; Alex Williamson
> Cc: iommu@lists.linux-foundation.org; linux-kernel@vger.kernel.org; KVM list;
> Eric Auger
> Subject: RE: [v3 06/26] iommu, x86: No need to migrating irq for VT-d
> Posted-Interrupts
> 
> Jiang Liu wrote on 2014-12-24:
> > On 2014/12/24 9:38, Zhang, Yang Z wrote:
> >> Paolo Bonzini wrote on 2014-12-23:
> >>>
> >>>
> >>> On 23/12/2014 10:07, Wu, Feng wrote:
> >>>>> On 23/12/2014 01:37, Zhang, Yang Z wrote:
> >>>>>> I don't quite understand it. If user set an interrupt's affinity
> >>>>>> to a CPU, but he still see the interrupt delivers to other CPUs in host.
> >>>>>> Do you think it is a right behavior?
> >>>>>
> >>>>> No, the interrupt is not delivered at all in the host.  Normally you'd
> have:
> >>>>>
> >>>>> - interrupt delivered to CPU from host affinity
> >>>>>
> >>>>> - VFIO interrupt handler writes to irqfd
> >>>>>
> >>>>> - interrupt delivered to vCPU from guest affinity
> >>>>>
> >>>>> Here, you just skip the first two steps.  The interrupt is
> >>>>> delivered to the thread that is running the vCPU directly, so the
> >>>>> host affinity is bypassed entirely.
> >>>>>
> >>>>> ... unless you are considering the case where the vCPU is blocked
> >>>>> and the host is processing the posted interrupt wakeup vector.
> >>>>> In that case yes, it would be better to set NDST to a CPU
> >>>>> matching the host
> > affinity.
> >>>>
> >>>> In my understanding, wakeup vector should have no relationship
> >>>> with the host affinity of the irq. Wakeup notification event
> >>>> should be delivered to the pCPU which the vCPU was blocked on. And
> >>>> in kernel's point of view, the irq is not associated with the wakeup vector,
> right?
> >>>
> >>> That is correct indeed.  It is not associated to the wakeup vector,
> >>> hence this patch is right, I think.
> >>>
> >>> However, the wakeup vector has the same function as the VFIO
> >>> interrupt handler, so you could argue that it is tied to the host
> >>> affinity rather than the guest.  Let's wait for Yang to answer.
> >>
> >> Actually, that's my original question too. I am wondering what
> >> happens if the
> > user changes the assigned device's affinity in host's /proc/irq/? If
> > ignore it is acceptable, then this patch is ok. But it seems the
> > discussion out of my scope, need some experts to tell us their idea since it will
> impact the user experience.
> > Hi Yang,
> 
> Hi Jiang,
> 
> > 	Originally we have a proposal to return failure when user sets IRQ
> > affinity through native OS interfaces if an IRQ is in PI mode. But
> > that proposal will break CPU hot-removal because OS needs to migrate
> > away all IRQs binding to the CPU to be offlined. Then we propose
> > saving user IRQ affinity setting without changing hardware
> > configuration (keeping PI configuration). Later when PI mode is
> > disabled, the cached affinity setting will be used to setup IRQ
> > destination for native OS. On the other hand, for IRQ in PI mode, it
> > won't be delivered to native OS, so user may not sense that the IRQ is
> delivered to CPUs other than those in the affinity set.
> 
> The IRQ is still there but will be delivered to host in the form of PI event(if the
> VCPU is running in root-mode). I am not sure whether those interrupts should
> be reflected in /proc/interrupts? If the answer is yes, then which entries should
> be used, a new PI entry or use the original IRQ entry?

Even though, setting the affinity of the IRQ in host should not affect the destination of the
PI event (normal notification event of wakeup notification event), because the destination
of the PI event is determined in NDST field of Posted-interrupts descriptor and PI notification
vector is global. Just had a discussion with Jiang offline, maybe we can add the statistics
information for the notification vector in /proc/interrupts just like any other global
interrupts.

Thanks,
Feng

> 
> > In that aspect, I think it's acceptable:) Regards!
> 
> Yes, if all of you guys(especially the IRQ maintainer) are think it is acceptable
> then we can follow current implementation and document it.
> 
> > Gerry
> >>
> >>>
> >>> Paolo
> >>
> >>
> >> Best regards,
> >> Yang
> >>
> >>
> 
> 
> Best regards,
> Yang
> 


  reply	other threads:[~2014-12-24  3:08 UTC|newest]

Thread overview: 140+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-12 15:14 [v3 00/26] Add VT-d Posted-Interrupts support Feng Wu
2014-12-12 15:14 ` [v3 01/26] genirq: Introduce irq_set_vcpu_affinity() to target an interrupt to a VCPU Feng Wu
2014-12-12 15:14 ` [v3 02/26] iommu: Add new member capability to struct irq_remap_ops Feng Wu
2015-01-28 15:22   ` David Woodhouse
2015-01-29  8:34     ` Wu, Feng
2014-12-12 15:14 ` [v3 03/26] iommu, x86: Define new irte structure for VT-d Posted-Interrupts Feng Wu
2015-01-28 15:26   ` David Woodhouse
2014-12-12 15:14 ` [v3 04/26] iommu, x86: Implement irq_set_vcpu_affinity for intel_ir_chip Feng Wu
2015-01-28 15:26   ` David Woodhouse
2015-01-29  7:55     ` Wu, Feng
2014-12-12 15:14 ` [v3 05/26] x86, irq: Implement irq_set_vcpu_affinity for pci_msi_ir_controller Feng Wu
2014-12-12 15:14 ` [v3 06/26] iommu, x86: No need to migrating irq for VT-d Posted-Interrupts Feng Wu
2014-12-18 14:26   ` Zhang, Yang Z
2014-12-19  1:40     ` Wu, Feng
2014-12-19  1:46       ` Zhang, Yang Z
2014-12-19 11:59         ` Paolo Bonzini
2014-12-23  0:37           ` Zhang, Yang Z
2014-12-23  8:47             ` Paolo Bonzini
2014-12-23  9:07               ` Wu, Feng
2014-12-23  9:34                 ` Paolo Bonzini
2014-12-24  1:38                   ` Zhang, Yang Z
2014-12-24  2:12                     ` Jiang Liu
2014-12-24  2:32                       ` Zhang, Yang Z
2014-12-24  3:08                         ` Wu, Feng [this message]
2014-12-24  4:04                           ` Zhang, Yang Z
2014-12-24  4:54                         ` Jiang Liu
2015-01-28 15:29   ` David Woodhouse
2014-12-12 15:14 ` [v3 07/26] iommu, x86: Add cap_pi_support() to detect VT-d PI capability Feng Wu
2015-01-28 15:32   ` David Woodhouse
2014-12-12 15:14 ` [v3 08/26] iommu, x86: Add intel_irq_remapping_capability() for Intel Feng Wu
2015-01-28 15:37   ` David Woodhouse
2015-01-29  8:57     ` Wu, Feng
2014-12-12 15:14 ` [v3 09/26] iommu, x86: define irq_remapping_cap() Feng Wu
2014-12-12 15:14 ` [v3 10/26] KVM: change struct pi_desc for VT-d Posted-Interrupts Feng Wu
2014-12-12 15:14 ` [v3 11/26] KVM: Add some helper functions for Posted-Interrupts Feng Wu
2014-12-12 15:14 ` [v3 12/26] KVM: Initialize VT-d Posted-Interrupts Descriptor Feng Wu
2014-12-18 15:19   ` Zhang, Yang Z
2014-12-12 15:14 ` [v3 13/26] KVM: Define a new interface kvm_find_dest_vcpu() for VT-d PI Feng Wu
2014-12-18 14:49   ` Zhang, Yang Z
2014-12-18 16:58     ` Paolo Bonzini
2014-12-19  1:13       ` Zhang, Yang Z
2014-12-19  1:30         ` Wu, Feng
2014-12-19  1:30       ` Wu, Feng
2014-12-19  1:47         ` Zhang, Yang Z
2014-12-19 11:59         ` Paolo Bonzini
2014-12-19 23:48           ` Wu, Feng
2014-12-20 13:16             ` Paolo Bonzini
2014-12-22  4:48               ` Wu, Feng
2014-12-22  9:27                 ` Paolo Bonzini
2014-12-22 11:04                   ` Wu, Feng
2014-12-22 11:06                     ` Paolo Bonzini
2014-12-22 11:17                       ` Wu, Feng
2014-12-22 11:23                         ` Paolo Bonzini
2014-12-22 14:13                           ` Yong Wang
2015-01-09 14:54   ` Radim Krčmář
2015-01-09 14:56     ` Paolo Bonzini
2015-01-09 15:12       ` Radim Krčmář
2015-01-09 15:18         ` Paolo Bonzini
2015-01-09 15:47           ` Radim Krčmář
2015-01-13  0:27       ` Wu, Feng
2015-01-13 16:17         ` Radim Kr?má?
2015-01-14  1:27           ` Wu, Feng
2015-01-14 13:02             ` Paolo Bonzini
2015-01-14 16:59             ` Radim Kr?má?
2015-01-20 21:04               ` Nadav Amit
2015-01-21 21:16                 ` Radim Kr?má?
2014-12-12 15:14 ` [v3 14/26] KVM: Get Posted-Interrupts descriptor address from struct kvm_vcpu Feng Wu
2014-12-12 15:14 ` [v3 15/26] KVM: add interfaces to control PI outside vmx Feng Wu
2014-12-12 15:14 ` [v3 16/26] KVM: Make struct kvm_irq_routing_table accessible Feng Wu
2014-12-17 16:17   ` Paolo Bonzini
2014-12-19  2:19     ` Wu, Feng
2014-12-19 11:59       ` Paolo Bonzini
2014-12-19 23:39         ` Wu, Feng
2014-12-12 15:14 ` [v3 17/26] KVM: make kvm_set_msi_irq() public Feng Wu
2014-12-17 17:32   ` Paolo Bonzini
2014-12-12 15:14 ` [v3 18/26] KVM: kvm-vfio: User API for VT-d Posted-Interrupts Feng Wu
2014-12-12 15:14 ` [v3 19/26] KVM: kvm-vfio: implement the VFIO skeleton " Feng Wu
2014-12-12 15:14 ` [v3 20/26] KVM: x86: kvm-vfio: VT-d posted-interrupts setup Feng Wu
2014-12-12 15:14 ` [v3 21/26] x86, irq: Define a global vector for VT-d Posted-Interrupts Feng Wu
2014-12-18 14:54   ` Zhang, Yang Z
2014-12-19  0:52     ` Wu, Feng
2015-01-30 18:18   ` H. Peter Anvin
2015-02-02  1:06     ` Wu, Feng
2015-02-23 22:04   ` Marcelo Tosatti
2014-12-12 15:14 ` [v3 22/26] KVM: Define a wakeup worker thread for vCPU Feng Wu
2014-12-12 15:14 ` [v3 23/26] KVM: Update Posted-Interrupts Descriptor when vCPU is preempted Feng Wu
2014-12-17 17:11   ` Paolo Bonzini
2014-12-18  3:15     ` Wu, Feng
2014-12-18  8:32       ` Paolo Bonzini
2014-12-19  2:09         ` Wu, Feng
2015-02-23 22:21   ` Marcelo Tosatti
2015-03-02  9:12     ` Wu, Feng
2014-12-12 15:14 ` [v3 24/26] KVM: Update Posted-Interrupts Descriptor when vCPU is blocked Feng Wu
2014-12-17 17:09   ` Paolo Bonzini
2014-12-18  3:16     ` Wu, Feng
2014-12-18  8:37       ` Paolo Bonzini
2014-12-19  2:51         ` Wu, Feng
2015-02-25 21:50   ` Marcelo Tosatti
2015-02-26  8:08     ` Wu, Feng
2015-02-26 23:41       ` Marcelo Tosatti
2015-02-26 23:40   ` Marcelo Tosatti
2015-03-02 13:36     ` Wu, Feng
2015-03-04 12:06       ` Marcelo Tosatti
2015-03-06  6:51         ` Wu, Feng
2015-03-12  1:15           ` Marcelo Tosatti
2015-03-16 11:42             ` Wu, Feng
2015-03-25 23:17               ` Marcelo Tosatti
2015-03-27  6:34                 ` Wu, Feng
2015-03-27 19:30                   ` Marcelo Tosatti
2015-03-30  4:46                     ` Wu, Feng
2015-03-30 23:55                       ` Marcelo Tosatti
2015-03-31  1:13                         ` Wu, Feng
2015-04-14  7:37                         ` Wu, Feng
2015-06-05 21:59                           ` Marcelo Tosatti
2015-06-08  1:43                             ` Wu, Feng
2014-12-12 15:14 ` [v3 25/26] KVM: Suppress posted-interrupt when 'SN' is set Feng Wu
2014-12-17 17:42   ` Paolo Bonzini
2014-12-18  3:14     ` Wu, Feng
2014-12-18  8:38       ` Paolo Bonzini
2014-12-18 15:09         ` Zhang, Yang Z
2014-12-19  2:58           ` Wu, Feng
2014-12-19  3:32             ` Zhang, Yang Z
2014-12-19  4:34               ` Wu, Feng
2014-12-19  4:44                 ` Zhang, Yang Z
2014-12-19  4:49                   ` Wu, Feng
2014-12-19  5:25                     ` Zhang, Yang Z
2014-12-19  5:46                       ` Wu, Feng
2014-12-19  7:04                         ` Zhang, Yang Z
2014-12-19 12:00                       ` Paolo Bonzini
2014-12-19 23:34                         ` Wu, Feng
2014-12-12 15:15 ` [v3 26/26] iommu/vt-d: Add a command line parameter for VT-d posted-interrupts Feng Wu
2015-01-28 15:39   ` David Woodhouse
2014-12-16  9:04 ` [v3 00/26] Add VT-d Posted-Interrupts support Wu, Feng
2015-01-06  1:10 ` Wu, Feng
2015-01-09 12:46   ` joro
2015-01-09 13:58     ` Wu, Feng
2015-01-21  2:25 ` Wu, Feng
2015-01-28  3:01   ` Wu, Feng
2015-01-28  3:44     ` Alex Williamson
2015-01-28  4:44       ` 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=E959C4978C3B6342920538CF579893F0023159E3@SHSMSX104.ccr.corp.intel.com \
    --to=feng.wu@intel.com \
    --cc=alex.williamson@redhat.com \
    --cc=dwmw2@infradead.org \
    --cc=eric.auger@linaro.org \
    --cc=gleb@kernel.org \
    --cc=hpa@linux.intel.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=jiang.liu@linux.intel.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=yang.z.zhang@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).