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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.