From: "Michael S. Tsirkin" <mst@redhat.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: jasowang@redhat.com, Paolo Bonzini <pbonzini@redhat.com>,
vkuznets@redhat.com, qemu-devel@nongnu.org
Subject: Re: [PATCH v2 0/3] exclude hyperv synic sections from vhost
Date: Tue, 14 Jan 2020 02:17:07 -0500 [thread overview]
Message-ID: <20200114021633-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20200113184931.GB3155@work-vm>
On Mon, Jan 13, 2020 at 06:58:30PM +0000, Dr. David Alan Gilbert wrote:
> * Paolo Bonzini (pbonzini@redhat.com) wrote:
> > On 13/01/20 18:36, Dr. David Alan Gilbert (git) wrote:
> > >
> > > Hyperv's synic (that we emulate) is a feature that allows the guest
> > > to place some magic (4k) pages of RAM anywhere it likes in GPA.
> > > This confuses vhost's RAM section merging when these pages
> > > land over the top of hugepages.
> >
> > Can you explain what is the confusion like? The memory API should just
> > tell vhost to treat it as three sections (RAM before synIC, synIC
> > region, RAM after synIC) and it's not clear to me why postcopy breaks
> > either.
>
> There's two separate problems:
> a) For vhost-user there's a limited size for the 'mem table' message
> containing the number of regions to send; that's small - so an
> attempt is made to coalesce regions that all refer to the same
> underlying RAMblock. If things split the region up you use more
> slots. (it's why the coalescing code was originally there.)
>
> b) With postcopy + vhost-user life gets more complex because of
> userfault. We require that the vhost-user client can mmap the
> memory areas on host page granularity (i.e. hugepage granularity
> if it's hugepage backed). To do that we tweak the aggregation code
> to align the blocks to page size boundaries and then perform
> aggregation - as long as nothing else important gets in the way
> we're OK.
> In this case the guest is programming synic to land at the 512k
> boundary (in 16 separate 4k pages next to each other). So we end
> up with 0-512k (stretched to 0..2MB alignment) - then we see
> synic (512k-+4k ...) then we see RAM at 640k - and when we try
> to align that we error because we realise the synic mapping is in
> the way and we can't merge the 640k ram chunk with the base 0-512k
> aligned chunk.
>
> Note the reported failure here is kernel vhost, not vhost-user;
> so actually it probably doesn't need the alignment,
Yea vhost in the kernel just does copy from/to user. No alignment
requirements.
> and vhost-user would
> probably filter out the synic mappings anyway due to the fact they've
> not got an fd ( vhost_user_mem_section_filter ). But the alignment
> code always runs.
>
> Dave
>
>
>
> > Paolo
> >
> > > Since they're not normal RAM, and they shouldn't have vhost DMAing
> > > into them, exclude them from the vhost set.
> >
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2020-01-14 7:17 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-13 17:36 [PATCH v2 0/3] exclude hyperv synic sections from vhost Dr. David Alan Gilbert (git)
2020-01-13 17:36 ` [PATCH v2 1/3] vhost: Add names to section rounded warning Dr. David Alan Gilbert (git)
2020-01-13 17:36 ` [PATCH v2 2/3] memory: Allow a MemoryRegion to be marked no_vhost Dr. David Alan Gilbert (git)
2020-01-14 7:19 ` Michael S. Tsirkin
2020-01-14 11:26 ` Dr. David Alan Gilbert
2020-01-14 14:52 ` Michael S. Tsirkin
2020-01-14 15:02 ` Alex Williamson
2020-01-13 17:36 ` [PATCH v2 3/3] hyperv/synic: Mark regions as no vhost Dr. David Alan Gilbert (git)
2020-01-13 18:13 ` [PATCH v2 0/3] exclude hyperv synic sections from vhost Paolo Bonzini
2020-01-13 18:58 ` Dr. David Alan Gilbert
2020-01-14 7:17 ` Michael S. Tsirkin [this message]
2020-01-17 12:35 ` Dr. David Alan Gilbert
2020-01-15 12:12 ` 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=20200114021633-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=dgilbert@redhat.com \
--cc=jasowang@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--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).