[PATCH v2 20/27] conf: Introduce virtio-mem <memory/> model

Peter Krempa pkrempa at redhat.com
Fri Dec 4 12:29:58 UTC 2020


On Fri, Dec 04, 2020 at 13:17:52 +0100, Peter Krempa wrote:
> On Thu, Dec 03, 2020 at 13:36:23 +0100, Michal Privoznik wrote:
> > QEMU gained this new virtio-mem model. It's similar to pc-dimm
> > in a sense that guest uses it as memory, but in a sense very
> > different from it as it can dynamically change allocation,
> > without need for hotplug. More specifically, the device has two
> > attributes more (it has more of course, but these two are
> > important here):
> > 
> >  1) block-size - the granularity of the device. You can imagine
> >     the device being divided into blocks, each 'block-size' long.
> > 
> >  2) requested-size - the portion of the device that is in use by
> >     the guest.
> > 
> > And it all works like this: at guest startup/hotplug both
> > block-size and requested-size are specified. When sysadmin wants
> > to give some more memory to the guest, or take some back, they
> > change the 'requested-size' attribute which is propagated to the
> > guest where virtio-mem module takes corresponding action.
> > This means, that 'requested-size' must be a whole number product
> > of 'block-size' and of course has to be in rage [0, max-size]
> > (including). The 'max-size' is yet another attribute but if not
> > set it's "inherited" from corresponding memory-backend-* object.
> > 
> > Therefore, two new elements are introduced under <target/>, to
> > reflect these attributes:
> > 
> >   <memory model='virtio'>
> >     <target>
> >       <size unit='KiB'>4194304</size>
> >       <node>0</node>
> >       <block unit='KiB'>2048</block>
> >       <requested unit='KiB'>524288</requested>
> >     </target>
> >     <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
> >   </memory>
> > 
> > The intent here is that <requested/> will be allowed to change
> > via virDomainUpdateDeviceFlags() API.
> > 
> > Note, QEMU does inform us about success of allocation via an
> > event - this is covered in next patches.
> > 
> > Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> > ---
> >  docs/formatdomain.rst                         |  22 ++++
> >  docs/schemas/domaincommon.rng                 |  10 ++
> >  src/conf/domain_conf.c                        | 103 ++++++++++++++++--
> >  src/conf/domain_conf.h                        |   5 +
> >  .../memory-hotplug-virtio-mem.xml             |  78 +++++++++++++
> >  ...emory-hotplug-virtio-mem.x86_64-latest.xml |   1 +
> >  tests/qemuxml2xmltest.c                       |   1 +
> >  7 files changed, 213 insertions(+), 7 deletions(-)
> >  create mode 100644 tests/qemuxml2argvdata/memory-hotplug-virtio-mem.xml
> >  create mode 120000 tests/qemuxml2xmloutdata/memory-hotplug-virtio-mem.x86_64-latest.xml

Disregard any comments about size being actual size ...




More information about the libvir-list mailing list