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" } }'

No machine option parameters are returned:

    {"return":[{"parameters":[],"option":"machine"}],"id":"libvirt-11"}


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?