All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: kwolf@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 0/8] qom: introduce non-legacy static properties
Date: Fri, 16 Dec 2011 07:54:02 -0600	[thread overview]
Message-ID: <4EEB4D7A.2010203@codemonkey.ws> (raw)
In-Reply-To: <1324036918-2405-1-git-send-email-pbonzini@redhat.com>

On 12/16/2011 06:01 AM, Paolo Bonzini wrote:
> QOM right now does not have a way to communicate values for qdev
> properties except as strings.  This is bad.
>
> This patch improves the Property implementation so that properties
> export a visitor-based interface in addition to the string-based
> interface.  The new interface can then be registered as a "static"
> property.  It's called static because it uses a struct field for
> storage and, as such, should be present in all objects of a given
> class.

Excellent!  See the patches for individual comments but this is definitely a 
good thing to have.

Regards,

Anthony Liguori

>
> Patches 1-3 are bugfixes and patch 4 is a cleanup, so please apply
> those at least.
>
> Example using qmp-shell:
>
> x86_64-softmmu/qemu-system-x86_64 \
>     -hda ~/test.img -snapshot -S \
>     -qmp unix:/tmp/server.sock,server,nowait \
>     -netdev type=user,id=net -device virtio-net-pci,netdev=net,id=net \
>     -net user,vlan=1 -device virtio-net-pci,id=net2,vlan=1 \
>     -chardev id=stdio,backend=stdio -device isa-serial,chardev=stdio,id=serial
>
> Boolean properties:
>
> (QEMU) qom-get path=/i440fx/piix3 property=command_serr_enable
> {u'return': True}
> (QEMU) qom-get path=/i440fx/piix3 property=legacy<command_serr_enable>
> {u'return': u'on'}
>
> PCI address properties (perhaps will disappear later, but not yet):
>
> (QEMU) qom-get path=/i440fx/piix3 property=addr
> {u'return': u'01.0'}
> (QEMU) qom-get path=/i440fx/piix3 property=legacy<addr>
> {u'return': u'01.0'}
>
> String properties (QObject does not have NULL):
>
> (QEMU) qom-get path=/vga property=romfile
> {u'return': u'vgabios-cirrus.bin'}
> (QEMU) qom-get path=/vga property=legacy<romfile>
> {u'return': u'"vgabios-cirrus.bin"'}
> (QEMU) qom-get path=/i440fx/piix3 property=romfile
> {u'return': {}}
> (QEMU) qom-get path=/i440fx/piix3 property=legacy<romfile>
> {u'return': u'<null>'}
>
> MAC properties:
>
> (QEMU) qom-get path=/peripheral/net property=mac
> {u'return': u'52:54:00:12:34:56'}
> (QEMU) qom-get path=/peripheral/net property=legacy<mac>
> {u'return': u'52:54:00:12:34:56'}
> (QEMU) qom-set path=/peripheral/net property=mac value=52-54-00-12-34-57
> {u'error': {u'data': {}, u'class': u'PermissionDenied', u'desc': u'Insufficient permission to perform this operation'}}
>
> Network properties:
>
> (QEMU) qom-get path=/peripheral/net property=netdev
> {u'return': u'net'}
> (QEMU) qom-get path=/peripheral/net property=legacy<netdev>
> {u'return': u'net'}
>
> VLAN properties:
>
> (QEMU) qom-get path=/peripheral/net property=vlan
> {u'return': {}}
> (QEMU) qom-get path=/peripheral/net property=legacy<vlan>
> {u'return': u'<null>'}
> (QEMU) qom-get path=/peripheral/net2 property=vlan
> {u'return': 1}
> (QEMU) qom-get path=/peripheral/net2 property=legacy<vlan>
> {u'return': u'1'}
>
> Chardev properties:
>
> (QEMU) qom-get path=/peripheral/serial property=chardev
> {u'return': u'stdio'}
> (QEMU) qom-get path=/peripheral/serial property=legacy<chardev>
> {u'return': u'stdio'}
>
> Legacy hex32 properties:
>
> (QEMU) qom-get path=/peripheral/serial property=iobase
> {u'return': 1016}
> (QEMU) qom-get path=/peripheral/serial property=legacy<iobase>
> {u'return': u'0x3f8'}
>
> Examples of setting properties (after disabling the DEV_STATE_CREATED
> check for testing only):
>
> (QEMU) qom-set path=/peripheral/net2 property=vlan value=-1
> {u'return': {}}
> (QEMU) qom-get path=/peripheral/net2 property=vlan
> {u'return': {}}
> (QEMU) qom-get path=/peripheral/net2 property=legacy<vlan>
> {u'return': u'<null>'}
>
> (QEMU) qom-set path=/peripheral/serial property=iobase value=760
> {u'return': {}}
> (QEMU) qom-get path=/peripheral/serial property=iobase
> {u'return': 760}
> (QEMU) qom-get path=/peripheral/serial property=legacy<iobase>
> {u'return': u'0x2f8'}
>
> Paolo Bonzini (8):
>    qapi: fix NULL pointer dereference
>    qapi: protect against NULL QObject in qmp_input_get_object
>    qom: fix swapped parameters
>    qom: push permission checks up into qdev_property_add_legacy
>    qom: introduce QERR_PROPERTY_VALUE_OUT_OF_RANGE
>    qom: introduce get/set methods for Property
>    qom: distinguish "legacy" property type name from QOM type name
>    qom: register qdev properties also as non-legacy properties
>
>   hw/qdev-addr.c            |   41 +++++
>   hw/qdev-properties.c      |  360 ++++++++++++++++++++++++++++++++++++++++++++-
>   hw/qdev.c                 |   85 +++++++-----
>   hw/qdev.h                 |   12 +-
>   qapi/qmp-input-visitor.c  |   10 +-
>   qapi/qmp-output-visitor.c |    4 +-
>   qerror.c                  |    5 +
>   qerror.h                  |    3 +
>   8 files changed, 472 insertions(+), 48 deletions(-)
>

      parent reply	other threads:[~2011-12-16 13:54 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-16 12:01 [Qemu-devel] [PATCH 0/8] qom: introduce non-legacy static properties Paolo Bonzini
2011-12-16 12:01 ` [Qemu-devel] [PATCH 1/8] qapi: fix NULL pointer dereference Paolo Bonzini
2011-12-16 13:55   ` Anthony Liguori
2011-12-16 14:00     ` Paolo Bonzini
2011-12-16 14:10       ` Anthony Liguori
2011-12-16 14:22         ` Paolo Bonzini
2011-12-16 14:46           ` Anthony Liguori
2011-12-16 14:49             ` Paolo Bonzini
2011-12-16 14:56               ` Anthony Liguori
2011-12-16 15:03                 ` Paolo Bonzini
2011-12-16 15:05                   ` Anthony Liguori
2011-12-16 15:13                     ` Paolo Bonzini
2011-12-16 15:23                       ` Anthony Liguori
2011-12-16 15:42                         ` Paolo Bonzini
2011-12-16 15:54                           ` Anthony Liguori
2011-12-16 16:17                             ` Paolo Bonzini
2011-12-16 16:24                   ` Gerd Hoffmann
2011-12-16 12:01 ` [Qemu-devel] [PATCH 2/8] qapi: protect against NULL QObject in qmp_input_get_object Paolo Bonzini
2011-12-16 13:56   ` Anthony Liguori
2011-12-16 12:01 ` [Qemu-devel] [PATCH 3/8] qom: fix swapped parameters Paolo Bonzini
2011-12-16 13:57   ` Anthony Liguori
2011-12-16 12:01 ` [Qemu-devel] [PATCH 4/8] qom: push permission checks up into qdev_property_add_legacy Paolo Bonzini
2011-12-16 13:58   ` Anthony Liguori
2011-12-16 12:01 ` [Qemu-devel] [PATCH 5/8] qom: introduce QERR_PROPERTY_VALUE_OUT_OF_RANGE Paolo Bonzini
2011-12-16 14:00   ` Anthony Liguori
2011-12-16 14:01     ` Paolo Bonzini
2011-12-16 17:00       ` Paolo Bonzini
2011-12-16 17:01         ` Anthony Liguori
2011-12-16 12:01 ` [Qemu-devel] [PATCH 6/8] qom: introduce get/set methods for Property Paolo Bonzini
2011-12-16 13:11   ` Gerd Hoffmann
2011-12-16 13:51     ` Paolo Bonzini
2011-12-16 14:05       ` Anthony Liguori
2011-12-16 14:18         ` Paolo Bonzini
2011-12-16 14:44           ` Anthony Liguori
2011-12-16 12:01 ` [Qemu-devel] [PATCH 7/8] qom: distinguish "legacy" property type name from QOM type name Paolo Bonzini
2011-12-16 14:06   ` Anthony Liguori
2011-12-16 14:18     ` Paolo Bonzini
2011-12-16 14:43       ` Anthony Liguori
2011-12-16 12:01 ` [Qemu-devel] [PATCH 8/8] qom: register qdev properties also as non-legacy properties Paolo Bonzini
2011-12-16 13:54 ` Anthony Liguori [this message]

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=4EEB4D7A.2010203@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.