From: "rkrcmar@redhat.com" <rkrcmar@redhat.com>
To: Yang Zhang <yang.zhang.wz@gmail.com>
Cc: "Wu, Feng" <feng.wu@intel.com>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: Re: [PATCH v3 1/4] KVM: Recover IRTE to remapped mode if the interrupt is not single-destination
Date: Wed, 27 Jan 2016 16:05:28 +0100 [thread overview]
Message-ID: <20160127150528.GI21252@potion.brq.redhat.com> (raw)
In-Reply-To: <56A82670.50506@gmail.com>
2016-01-27 10:07+0800, Yang Zhang:
> On 2016/1/27 2:22, rkrcmar@redhat.com wrote:
>>2016-01-26 09:44+0800, Yang Zhang:
>>>On 2016/1/25 21:59, rkrcmar@redhat.com wrote:
>>>>>> Also, if wakeup vector were used for wakeup and multicast, we'd be
>>>>>> uselessly doing work, because we can't tell which reason triggered the
>>>>>> interrupt before finishing one part -- using separate vectors for that
>>>>>> would be a bit nicer.
>>>>
>>>>(imprecise -- we would always have to check for ON bit of all PIDs from
>>>> blocked VCPUs, for the original meaning of wakeup vector, and always
>>>> either read the PIRR or check for ON bit of all PIDs that encode
>>>> multicast interrupts; then we have to clear ON bits for multicasts.)
>>>
>>>Also, most part of work is covered by current logic except checking the
>>>multicast.
>>
>>We could reuse the setup that gets us to wakeup_handler, but there is
>>nothing to share in the handler itself. Sharing a handler means that we
>>always have to execute both parts.
>
> I don't quite understand it. There is nothing need to be modified for wakeup
> logic. The only thing we need to do is add the checking before the vcpu pick
> up the pending interrupt(This is happened in VCPU context, not in handler).
I see, there are few problems with that.
>>We must create new PID anyway and compared to the extra work needed for
>>multicast handling, a new vector + handler is a relatively small code
>>investment that adds clarity to the design (and performance).
>
> No new PID is needed. If the target vcpu is running, no additional work is
> required in wakeup handler. If target vcpu is not running, the current logic
> will wake up the vcpu, then let vcpu itself to check whether pending
> interrupt is a multicast and handle it in vcpu's context.
We do need a new PID. The existing VCPU PID switches between wakeup
vector and notification vector, so if the VCPU was running when the
device triggered an interrupt, we'd deliver the posted interrupt without
exiting, but we need to handle the interrupt in the host.
=> We need at least one PID that is never set to notification vector.
Reusing VCPU's PIRR is in new PID(s) is not doable.
Parsing PIRR would be our only option of recognizing multicast
interrupts and if the guest configured many sources to send the same
vector, we'd have to do unacceptable things to tell which one was
triggered.
=> We also need at least on one new PIRR.
Handling the interrupt in VCPU context doesn't pose any advantage and we
even want to do it outside, because all VCPUs can be running when the
interrupt arrives and can therefore be posted further.
I hope I covered other disadvantages of PIDs and PIRRs earlier.
next prev parent reply other threads:[~2016-01-27 15:05 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-20 1:42 [PATCH v3 0/4] VT-d posted-interrupts follow ups Feng Wu
2016-01-20 1:42 ` [PATCH v3 1/4] KVM: Recover IRTE to remapped mode if the interrupt is not single-destination Feng Wu
2016-01-21 3:05 ` Yang Zhang
2016-01-21 3:14 ` Wu, Feng
2016-01-21 3:34 ` Yang Zhang
2016-01-21 4:42 ` Wu, Feng
2016-01-21 4:54 ` Tian, Kevin
2016-01-21 4:59 ` Yang Zhang
2016-01-21 5:07 ` Wu, Feng
2016-01-21 5:35 ` Yang Zhang
2016-01-21 5:41 ` Wu, Feng
2016-01-21 5:44 ` Yang Zhang
2016-01-21 16:35 ` rkrcmar
2016-01-22 2:03 ` Yang Zhang
2016-01-22 13:31 ` rkrcmar
2016-01-25 1:49 ` Yang Zhang
2016-01-25 13:59 ` rkrcmar
2016-01-26 1:44 ` Yang Zhang
2016-01-26 18:22 ` rkrcmar
2016-01-27 2:07 ` Yang Zhang
2016-01-27 15:05 ` rkrcmar [this message]
2016-01-21 16:19 ` Radim Krčmář
2016-01-22 1:49 ` Wu, Feng
2016-01-22 13:05 ` Radim Krcmár
2016-01-25 12:22 ` Paolo Bonzini
2016-01-25 12:26 ` Wu, Feng
2016-01-25 12:38 ` Paolo Bonzini
2016-01-25 12:48 ` Wu, Feng
2016-01-25 14:05 ` Radim Krcmár
2016-01-26 0:57 ` Wu, Feng
2016-01-20 1:42 ` [PATCH v3 2/4] KVM: x86: Use vector-hashing to deliver lowest-priority interrupts Feng Wu
2016-01-21 5:23 ` Yang Zhang
2016-01-21 5:33 ` Wu, Feng
2016-01-21 5:42 ` Yang Zhang
2016-01-21 5:46 ` Wu, Feng
2016-01-21 5:57 ` Yang Zhang
2016-01-21 6:02 ` Wu, Feng
2016-01-21 6:07 ` Yang Zhang
2016-01-21 17:21 ` rkrcmar
2016-01-22 2:01 ` Wu, Feng
2016-01-22 4:00 ` Yang Zhang
2016-01-22 13:49 ` rkrcmar
2016-01-21 19:49 ` Radim Krčmář
2016-01-22 5:12 ` Wu, Feng
2016-01-22 14:01 ` Radim Krcmár
2016-01-25 12:25 ` Paolo Bonzini
2016-01-25 15:20 ` Radim Krcmár
2016-01-25 16:14 ` Paolo Bonzini
2016-01-26 1:10 ` Wu, Feng
2016-01-20 1:42 ` [PATCH v3 3/4] KVM: x86: Add lowest-priority support for vt-d posted-interrupts Feng Wu
2016-01-21 20:16 ` Radim Krčmář
2016-01-22 5:12 ` Wu, Feng
2016-01-22 14:07 ` Radim Krcmár
2016-01-20 1:42 ` [PATCH v3 4/4] KVM/VMX: Add host irq information in trace event when updating IRTE for posted interrupts Feng Wu
2016-01-21 20:19 ` Radim Krčmář
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=20160127150528.GI21252@potion.brq.redhat.com \
--to=rkrcmar@redhat.com \
--cc=feng.wu@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=yang.zhang.wz@gmail.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).