From: Alex Williamson <alex.williamson@redhat.com>
To: Avi Kivity <avi@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
kvm@vger.kernel.org, ddutile@redhat.com, mst@redhat.com,
chrisw@redhat.com, jan.kiszka@siemens.com
Subject: Re: [RFC PATCH 0/2] Expose available KVM free memory slot count to help avoid aborts
Date: Tue, 25 Jan 2011 07:46:51 -0700 [thread overview]
Message-ID: <1295966811.3230.59.camel@x201> (raw)
In-Reply-To: <4D3EA3D3.2050807@redhat.com>
On Tue, 2011-01-25 at 12:20 +0200, Avi Kivity wrote:
> On 01/24/2011 11:32 AM, Marcelo Tosatti wrote:
> > On Fri, Jan 21, 2011 at 04:48:02PM -0700, Alex Williamson wrote:
> > > When doing device assignment, we use cpu_register_physical_memory() to
> > > directly map the qemu mmap of the device resource into the address
> > > space of the guest. The unadvertised feature of the register physical
> > > memory code path on kvm, at least for this type of mapping, is that it
> > > needs to allocate an index from a small, fixed array of memory slots.
> > > Even better, if it can't get an index, the code aborts deep in the
> > > kvm specific bits, preventing the caller from having a chance to
> > > recover.
> > >
> > > It's really easy to hit this by hot adding too many assigned devices
> > > to a guest (pretty easy to hit with too many devices at instantiation
> > > time too, but the abort is slightly more bearable there).
> > >
> > > I'm assuming it's pretty difficult to make the memory slot array
> > > dynamically sized. If that's not the case, please let me know as
> > > that would be a much better solution.
> >
> > Its not difficult to either increase the maximum number (defined as
> > 32 now in both qemu and kernel) of static slots, or support dynamic
> > increases, if it turns out to be a performance issue.
> >
>
> We can't make it unbounded in the kernel, since a malicious user could
> start creating an infinite amount of memory slots, pinning unbounded
> kernel memory.
>
> If we make the limit much larger, we should start to think about
> efficiency. Every mmio vmexit is currently a linear scan of the memory
> slot table, which is efficient at a small number of slots, but not at a
> large number. We could conceivably encode the "no slot" information
> into a bit in the not-present spte.
On the plus side, very, very few users need more than the current 32
slot limit and the implementation presented likely results in fewer
slots for the majority of the users. We can maybe save efficiency
issues until we start seeing problems there. Thanks,
Alex
next prev parent reply other threads:[~2011-01-25 14:46 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-21 23:48 [RFC PATCH 0/2] Expose available KVM free memory slot count to help avoid aborts Alex Williamson
2011-01-21 23:48 ` [RFC PATCH 1/2] kvm: Allow querying free slots Alex Williamson
2011-01-21 23:48 ` [RFC PATCH 2/2] device-assignment: Count required kvm memory slots Alex Williamson
2011-01-22 22:11 ` [RFC PATCH 0/2] Expose available KVM free memory slot count to help avoid aborts Michael S. Tsirkin
2011-01-24 9:32 ` Marcelo Tosatti
2011-01-24 14:16 ` Jan Kiszka
2011-01-24 15:44 ` Alex Williamson
2011-01-25 5:37 ` Alex Williamson
2011-01-25 7:36 ` Jan Kiszka
2011-01-25 14:41 ` Alex Williamson
2011-01-25 14:45 ` Michael S. Tsirkin
2011-01-25 14:54 ` Avi Kivity
2011-01-25 14:53 ` Avi Kivity
2011-01-25 14:59 ` Michael S. Tsirkin
2011-01-25 17:33 ` Avi Kivity
2011-01-25 17:58 ` Michael S. Tsirkin
2011-01-26 9:17 ` Avi Kivity
2011-01-26 9:20 ` Michael S. Tsirkin
2011-01-26 9:23 ` Avi Kivity
2011-01-26 9:39 ` Michael S. Tsirkin
2011-01-26 9:54 ` Avi Kivity
2011-01-26 12:08 ` Michael S. Tsirkin
2011-01-27 9:21 ` Avi Kivity
2011-01-27 9:26 ` Michael S. Tsirkin
2011-01-27 9:28 ` Avi Kivity
2011-01-27 9:29 ` Michael S. Tsirkin
2011-01-27 9:51 ` Avi Kivity
2011-01-27 9:28 ` Michael S. Tsirkin
2011-01-25 16:35 ` Jan Kiszka
2011-01-25 19:13 ` Alex Williamson
2011-01-26 8:14 ` Jan Kiszka
2011-01-25 10:23 ` Avi Kivity
2011-01-25 14:57 ` Alex Williamson
2011-01-25 17:11 ` Avi Kivity
2011-01-25 17:43 ` Alex Williamson
2011-01-26 9:22 ` Avi Kivity
2011-01-31 19:18 ` Marcelo Tosatti
2011-02-23 21:46 ` Alex Williamson
2011-02-24 12:34 ` Avi Kivity
2011-02-24 12:37 ` Avi Kivity
2011-02-24 18:10 ` Alex Williamson
2011-01-25 10:20 ` Avi Kivity
2011-01-25 14:46 ` Alex Williamson [this message]
2011-01-25 14:56 ` Avi Kivity
2011-01-25 14:55 ` Michael S. Tsirkin
2011-01-25 14:58 ` Avi Kivity
2011-01-25 15:23 ` Michael S. Tsirkin
2011-01-25 17:34 ` Avi Kivity
2011-01-25 18:00 ` Michael S. Tsirkin
2011-01-26 9:25 ` Avi Kivity
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=1295966811.3230.59.camel@x201 \
--to=alex.williamson@redhat.com \
--cc=avi@redhat.com \
--cc=chrisw@redhat.com \
--cc=ddutile@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--cc=mtosatti@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