From: Jon Doron <arilou@gmail.com>
To: Roman Kagan <rvkagan@yandex-team.ru>,
kvm@vger.kernel.org, linux-hyperv@vger.kernel.org,
vkuznets@redhat.com
Subject: Re: [PATCH v2 0/1] x86/kvm/hyper-v: Add support to SYNIC exit on EOM
Date: Thu, 16 Apr 2020 15:54:30 +0300 [thread overview]
Message-ID: <20200416125430.GL7606@jondnuc> (raw)
In-Reply-To: <20200416120040.GA3745197@rvkaganb>
On 16/04/2020, Roman Kagan wrote:
>On Thu, Apr 16, 2020 at 11:38:46AM +0300, Jon Doron wrote:
>> According to the TLFS:
>> "A write to the end of message (EOM) register by the guest causes the
>> hypervisor to scan the internal message buffer queue(s) associated with
>> the virtual processor.
>>
>> If a message buffer queue contains a queued message buffer, the hypervisor
>> attempts to deliver the message.
>>
>> Message delivery succeeds if the SIM page is enabled and the message slot
>> corresponding to the SINTx is empty (that is, the message type in the
>> header is set to HvMessageTypeNone).
>> If a message is successfully delivered, its corresponding internal message
>> buffer is dequeued and marked free.
>> If the corresponding SINTx is not masked, an edge-triggered interrupt is
>> delivered (that is, the corresponding bit in the IRR is set).
>>
>> This register can be used by guests to poll for messages. It can also be
>> used as a way to drain the message queue for a SINTx that has
>> been disabled (that is, masked)."
>
>Doesn't this work already?
>
Well if you dont have SCONTROL and a GSI associated with the SINT then
it does not...
>> So basically this means that we need to exit on EOM so the hypervisor
>> will have a chance to send all the pending messages regardless of the
>> SCONTROL mechnaisim.
>
>I might be misinterpreting the spec, but my understanding is that
>SCONTROL {en,dis}ables the message queueing completely. What the quoted
>part means is that a write to EOM should trigger the message source to
>push a new message into the slot, regardless of whether the SINT was
>masked or not.
>
>And this (I think, haven't tested) should already work. The userspace
>just keeps using the SINT route as it normally does, posting
>notifications to the corresponding irqfd when posting a message, and
>waiting on the resamplerfd for the message slot to become free. If the
>SINT is masked KVM will skip injecting the interrupt, that's it.
>
>Roman.
That's what I was thinking originally as well, but then i noticed KDNET
as a VMBus client (and it basically runs before anything else) is
working in this polling mode, where SCONTROL is disabled and it just
loops, and if it saw there is a PENDING message flag it will issue an
EOM to indicate it has free the slot.
(There are a bunch of patches i sent on the QEMU mailing list as well
where i CCed you, I will probably revise it a bit but was hoping to get
KVM sorted out first).
Cheers,
-- Jon.
next prev parent reply other threads:[~2020-04-16 12:54 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-16 8:38 [PATCH v2 0/1] x86/kvm/hyper-v: Add support to SYNIC exit on EOM Jon Doron
2020-04-16 8:38 ` [PATCH v2 1/1] " Jon Doron
2020-04-16 12:00 ` [PATCH v2 0/1] " Roman Kagan
2020-04-16 12:54 ` Jon Doron [this message]
2020-04-17 10:42 ` Roman Kagan
2020-04-18 6:41 ` Jon Doron
2020-04-24 12:20 ` Jon Doron
2020-04-24 13:37 ` Roman Kagan
2020-04-25 6:16 ` Jon Doron
2020-05-02 14:47 ` Jon Doron
2020-05-03 19:19 ` Roman Kagan
2020-05-04 15:55 ` Vitaly Kuznetsov
2020-05-05 8:01 ` Roman Kagan
2020-05-05 10:38 ` Jon Doron
2020-05-05 20:00 ` Roman Kagan
2020-05-06 4:49 ` Jon Doron
2020-05-06 8:46 ` Roman Kagan
2020-05-07 3:00 ` Jon Doron
2020-05-08 14:29 ` Jon Doron
2020-05-08 16:56 ` Roman Kagan
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=20200416125430.GL7606@jondnuc \
--to=arilou@gmail.com \
--cc=kvm@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=rvkagan@yandex-team.ru \
--cc=vkuznets@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: 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).