[libvirt] [PATCH] qxl: return 16M instead of 64M in virDomainVideoDefaultRAM

Pavel Hrdina phrdina at redhat.com
Mon Jul 27 09:19:34 UTC 2015


On Mon, Jul 27, 2015 at 03:26:52PM +0800, Lin Ma wrote:
> 
> 在 2015年07月27日 14:37, Martin Kletzander 写道:
> > On Mon, Jul 27, 2015 at 02:19:11PM +0800, Lin Ma wrote:
> >>
> >> 在 2015年07月27日 13:34, Martin Kletzander 写道:
> >>> On Mon, Jul 27, 2015 at 12:48:50PM +0800, Lin Ma wrote:
> >>>> Return 16M for qxl because QEMU uses 16MB as the default video ram 
> >>>> size
> >>>> for qxl device since pc-1.2.
> >>>>
> >>>
> >>> NACK, that function is not meant to return the default video ram size
> >>> of QEMU, but rather video ram size that libvirt will set by default.
> >> For qxl, The return value of that function is used to set ram and vram
> >> attributes which
> >> qemu doesn't care of. The proper and effective attribute is vgamem
> >> which was set
> >> to 16M already(commit#0e50246).

The QXL video device is complicated than just simply setting *vgamem* to some
value.  There are some restriction and rules how it works and QEMU does care
about the *ram* and *vram* values.  For example, ram >= 2*vgamem.

QXL device has two basic memory regions, *ram* and *vram*.  The *ram* region
contains VGA framebuffer and it's size can be modified by *vgamem* attribute.
In addition the *ram* region contains some other information.

All the values are required to properly set parameters of QXL video device.

You can check this document [1], on page 4 there is detailed description of QXL
memory layout.


[1] http://www.rachacuca.org/~fidencio/VirtioQXL%20-%20a%20virtio%20video%20device%20for%20para%20virtualized%20KVM%20guests.pdf

> >>
> >> It causes the strange attribute list in guest xml:
> >>  <video>
> >>      <model type='qxl' ram='65536' vram='65536' vgamem='16384' 
> >> heads='1'/>
> >>      ......
> >>   </video>
> >>
> >> and virt-manager also shows the inproper video ram size for qxl, It
> >> shows 64MB
> >> qxl video ram size in guest detailed page, but guest reports only 16MB.

Virt-manager shows 64MB video ram because all other video devices uses only
*vram* to set the video ram.  To let virt-manager show the correct framebuffer
size of each video device, we need to add an exception for QXL to get the value
from *vgamem* attribute if it's available.

> >>
> >> So should I keep 64MB in virDomainVideoDefaultRAM and set vgamem by
> >> virDomainVideoDefaultRAM?
> >> Or something else?

There is noting to do in libvirt.  NACK to this patch.

> >>
> >
> > Well, in this case, I think the aim was to set everything to 64MB, but
> > I remember some migration problems needed to be taken care of.  So
> > maybe we need to keep it for some reason.  To be sure, I'll let Pavel
> > handle this as he dealt with all the stuff related.  But we need to be
> > consistent and be able to migrate from older versions that had these
> > attributes set.  Also if this change needs to be done for QEMU, it
> > should be somewhere in src/qemu and not in src/conf where it changes
> > behaviour for all drivers.
> Thanks, Let's wait Pave's suggestion.
> >
> >>>
> >>>> Signed-off-by: Lin Ma <lma at suse.com>
> >>>> ---
> >>>> src/conf/domain_conf.c | 6 ++++--
> >>>> 1 file changed, 4 insertions(+), 2 deletions(-)
> >>>>
> >>>> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> >>>> index 6b557d1..8efc973 100644
> >>>> --- a/src/conf/domain_conf.c
> >>>> +++ b/src/conf/domain_conf.c
> >>>> @@ -11651,8 +11651,10 @@ virDomainVideoDefaultRAM(const
> >>>> virDomainDef *def,
> >>>>        return 4 * 1024;
> >>>>
> >>>>    case VIR_DOMAIN_VIDEO_TYPE_QXL:
> >>>> -        /* QEMU use 64M as the minimal video memory for qxl device */
> >>>> -        return 64 * 1024;
> >>>> +        /* By default, QEMU uses 16MB as video memory size
> >>>> +         * for qxl device since pc-1.2
> >>>> +         */
> >>>> +        return 16 * 1024;
> >>>>
> >>>>    default:
> >>>>        return 0;
> >>>> -- 
> >>>> 2.1.4
> >>>>
> >>>> -- 
> >>>> libvir-list mailing list
> >>>> libvir-list at redhat.com
> >>>> https://www.redhat.com/mailman/listinfo/libvir-list
> >>
> >> -- 
> >> libvir-list mailing list
> >> libvir-list at redhat.com
> >> https://www.redhat.com/mailman/listinfo/libvir-list
> >
> >
> > --
> > libvir-list mailing list
> > libvir-list at redhat.com
> > https://www.redhat.com/mailman/listinfo/libvir-list
> 




More information about the libvir-list mailing list