linux-hyperv.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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.

  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).