[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [qemu devel] disable shared memory is not available wit
From: |
Marcel Apfelbaum |
Subject: |
Re: [Qemu-devel] [qemu devel] disable shared memory is not available with this QEMU binary |
Date: |
Wed, 01 Apr 2015 09:54:54 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 |
On 03/31/2015 05:21 PM, Tony Krowiak wrote:
Commit 49d2e648e8087d154d8bf8b91f27c8e05e79d5a6 removed the QemuOptDesc
elements from the
*desc* field of the *qemu_machine_opts *array defined in vl.c. Since applying
that patch to qemu
on my system, I can not start a guest from libvirt when certain machine options
are configured
for the guest domain. For example, if I configure the following for my guest
domain:
<memoryBacking>
...
<nosharepages>
...
</memoryBacking>
I get the following libvirt error when I try to start the guest:
error: unsupported configuration: disable shared memory is not available
with this QEMU binary
The *nosharepages *element generates the *-machine* option *mem-merge=off* on
the QEMU command line. The error is
thrown by libvirt because the QMP *query-command-line-options* command does not
return *mem-merge* in the machine
options parameter list. In fact, if I issue the *query-command-line-options*
command via virsh as follows:
virsh qemu-monitor-command guest_c2aa '{ "execute": "query-command-line-options", "arguments":
{ "option": "machine" } }'
Hi Tony,
Thank you for finding this bug.
No machine option parameters are returned:
{"return":[{"parameters":[],"option":"machine"}],"id":"libvirt-11"}
Indeed, we have a problem here.
This is the first object for which QemuOps are defined per
sub-type and are not global (if you don't take "object" under consideration).
I saw others as well, like netdev, but I am not sure what happens there.
Once the QemuOpts are parsed, the only place we can find those options
is the machine object itself (as QOM properties).
I see a few options here:
1. Add a feature to QemuOpts: "Look for options in QOM properties of this obj"
2. Add a callback to QEMU opts that supplies the options (have machine supply
the callback)
3. Have the machine object fill in the corresponding QemuOpts on init.
Any thoughts?
Thanks,
Marcel
I took a look at the *qmp_query_command_line_options* function in
*util/qemu-config.c*. The function derives the
option parameters to return with the the query response from the QemuOptDesc
elements contained in the
*desc* field of the *qemu_machine_opts *array defined in vl.c. It appears that
removing the
QemuOptDesc elements broke the *qmp_query_command_line_options* function. If I
restore the QemuOptDesc
elements removed by commit 49d2e648e8087d154d8bf8b91f27c8e05e79d5a6, I can
start the guest with
*nosharepages* configured.
It would appear that a bug was introduced with commit
49d2e648e8087d154d8bf8b91f27c8e05e79d5a6,
what say you?
- Re: [Qemu-devel] [qemu devel] disable shared memory is not available with this QEMU binary,
Marcel Apfelbaum <=
Re: [Qemu-devel] [qemu devel] disable shared memory is not available with this QEMU binary, Markus Armbruster, 2015/04/01