From: Eduardo Habkost <ehabkost@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Anthony Green <green@moxielogic.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Alexander Graf <agraf@suse.de>, Max Filippov <jcmvbkbc@gmail.com>,
Greg Ungerer <gerg@uclinux.org>,
Guan Xuetao <gxt@mprc.pku.edu.cn>, Jia Liu <proljc@gmail.com>,
Markus Armbruster <armbru@redhat.com>,
Bharata B Rao <bharata@linux.vnet.ibm.com>,
Richard Henderson <rth@twiddle.net>,
Artyom Tarasenko <atar4qemu@gmail.com>,
Laurent Vivier <lvivier@redhat.com>,
Andrew Jones <drjones@redhat.com>,
Chen Gang <gang.chen.5i5j@gmail.com>, Greg Kurz <groug@kaod.org>,
qemu-arm <qemu-arm@nongnu.org>,
Paolo Bonzini <pbonzini@redhat.com>,
David Gibson <david@gibson.dropbear.id.au>,
Matthew Rosato <mjrosato@linux.vnet.ibm.com>,
Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
Michael Walle <michael@walle.cc>,
"qemu-ppc@nongnu.org" <qemu-ppc@nongnu.org>,
Igor Mammedov <imammedo@redhat.com>,
Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [Qemu-arm] QOM properties vs C functions/fields (was Re: [Qemu-devel] [PATCH v3 2/3] exec: rename cpu_exec_init() as cpu_exec_realizefn())
Date: Wed, 19 Oct 2016 09:11:06 -0200 [thread overview]
Message-ID: <20161019111106.GD5057@thinpad.lan.raisama.net> (raw)
In-Reply-To: <CAFEAcA9Cd0TsLHgBr-GuOwYmrwcPW656YOP2msAGrhghDS3xBw@mail.gmail.com>
On Tue, Oct 18, 2016 at 10:08:21PM +0100, Peter Maydell wrote:
> On 18 October 2016 at 21:49, Eduardo Habkost <ehabkost@redhat.com> wrote:
> > On Tue, Oct 18, 2016 at 09:30:01PM +0100, Peter Maydell wrote:
> >> Lots of stuff in a device's C struct is strictly internal
> >> and not to be messed with. I thought that QOM properties
> >> were essentially how a device defined its public (and
> >> typically settable-only-once) config knobs. QOM properties
> >> shouldn't be user-facing (read: stable, required to be
> >> backwards-compatible) interface in general because
> >> we don't really want to tie ourselves down that much.
> >> In fact almost all our QOM objects are not usefully
> >> user-facing at all.
> >
> > This interpretation surprises me, because it is the opposite of
> > what I have seen us doing. Most of our QOM objects and properties
> > are user-visible and user-configurable using -global, -device,
> > -object, or qom-set (and probably other QMP commands).
>
> Most of the devices I deal with are not and never will
> be sensibly usable with -device. Exposing wiring up
> of IRQ and GPIO lines or MMIO regions to the user is
> never going to make sense. For x86 most devices are
> probably pluggable (and usable with -device), but over
> the whole source tree I think the embedded-style device
> is in the majority. They're all still worth QOMifying
> and having properties for the things board code wants
> to modify, though.
Even if they are not usable with -device, all properties are
configurable using -global. There's no mechanism to avoid letting
the user configure properties for devices. Is this really OK?
If internal-only usage is also an intended use case for QOM
properties, fine. But I believe we need to communicate this more
clearly, based on the previous thread (subject: "QOM: best way
for parents to pass information to children?").
BTW, if most devices aren't supposed to be used with -device,
possibly many of them don't have
cannot_instantiate_with_device_add_yet set properly. On the 2.6.2
binaries in Fedora 24, I see:
* 1671 device types (including CPU types)
* 1011 CPU device types
* 1076 no-user device types (including CPU types)
* 660 non-CPU device types
* 65 no-user non-CPU device types (10% of them)
* 860 type_register_*() lines in the code
(this includes non-TYPE_DEVICE types, though)
* 56 cannot_instantiate_with_device_add_yet=true lines in the code
Commands I used to get the numbers above:
$ for f in /usr/bin/qemu-system-*;do \
(echo 'info qdm';echo quit;) | $f -machine none -nodefaults -monitor stdio -nographic 2>&1 \
done | grep ^name | sort -u > /tmp/devs
$ wc -l /tmp/devs
1671 /tmp/devs
$ grep no-user /tmp/devs | wc -l
1076
$ grep -- '-cpu"' /tmp/devs | wc -l
1011
$ grep -v -- '-cpu"' /tmp/devs | wc -l
660
$ grep -v -- '-cpu"' /tmp/devs | grep no-user | wc -l
65
$
--
Eduardo
WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Habkost <ehabkost@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Anthony Green <green@moxielogic.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Alexander Graf <agraf@suse.de>, Max Filippov <jcmvbkbc@gmail.com>,
Greg Ungerer <gerg@uclinux.org>,
"Edgar E . Iglesias" <edgar.iglesias@gmail.com>,
Guan Xuetao <gxt@mprc.pku.edu.cn>, Jia Liu <proljc@gmail.com>,
Markus Armbruster <armbru@redhat.com>,
Bharata B Rao <bharata@linux.vnet.ibm.com>,
Richard Henderson <rth@twiddle.net>,
Artyom Tarasenko <atar4qemu@gmail.com>,
Laurent Vivier <lvivier@redhat.com>,
Andrew Jones <drjones@redhat.com>,
Chen Gang <gang.chen.5i5j@gmail.com>, Greg Kurz <groug@kaod.org>,
qemu-arm <qemu-arm@nongnu.org>,
Paolo Bonzini <pbonzini@redhat.com>,
David Gibson <david@gibson.dropbear.id.au>,
Matthew Rosato <mjrosato@linux.vnet.ibm.com>,
Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
Michael Walle <michael@walle.cc>,
"qemu-ppc@nongnu.org" <qemu-ppc@nongnu.org>,
Igor Mammedov <imammedo@redhat.com>,
Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [Qemu-devel] QOM properties vs C functions/fields (was Re: [PATCH v3 2/3] exec: rename cpu_exec_init() as cpu_exec_realizefn())
Date: Wed, 19 Oct 2016 09:11:06 -0200 [thread overview]
Message-ID: <20161019111106.GD5057@thinpad.lan.raisama.net> (raw)
Message-ID: <20161019111106.W2dRbIZFY3GDZVnX5gNjGF-hKIS_K35dr7RXzKjLTaE@z> (raw)
In-Reply-To: <CAFEAcA9Cd0TsLHgBr-GuOwYmrwcPW656YOP2msAGrhghDS3xBw@mail.gmail.com>
On Tue, Oct 18, 2016 at 10:08:21PM +0100, Peter Maydell wrote:
> On 18 October 2016 at 21:49, Eduardo Habkost <ehabkost@redhat.com> wrote:
> > On Tue, Oct 18, 2016 at 09:30:01PM +0100, Peter Maydell wrote:
> >> Lots of stuff in a device's C struct is strictly internal
> >> and not to be messed with. I thought that QOM properties
> >> were essentially how a device defined its public (and
> >> typically settable-only-once) config knobs. QOM properties
> >> shouldn't be user-facing (read: stable, required to be
> >> backwards-compatible) interface in general because
> >> we don't really want to tie ourselves down that much.
> >> In fact almost all our QOM objects are not usefully
> >> user-facing at all.
> >
> > This interpretation surprises me, because it is the opposite of
> > what I have seen us doing. Most of our QOM objects and properties
> > are user-visible and user-configurable using -global, -device,
> > -object, or qom-set (and probably other QMP commands).
>
> Most of the devices I deal with are not and never will
> be sensibly usable with -device. Exposing wiring up
> of IRQ and GPIO lines or MMIO regions to the user is
> never going to make sense. For x86 most devices are
> probably pluggable (and usable with -device), but over
> the whole source tree I think the embedded-style device
> is in the majority. They're all still worth QOMifying
> and having properties for the things board code wants
> to modify, though.
Even if they are not usable with -device, all properties are
configurable using -global. There's no mechanism to avoid letting
the user configure properties for devices. Is this really OK?
If internal-only usage is also an intended use case for QOM
properties, fine. But I believe we need to communicate this more
clearly, based on the previous thread (subject: "QOM: best way
for parents to pass information to children?").
BTW, if most devices aren't supposed to be used with -device,
possibly many of them don't have
cannot_instantiate_with_device_add_yet set properly. On the 2.6.2
binaries in Fedora 24, I see:
* 1671 device types (including CPU types)
* 1011 CPU device types
* 1076 no-user device types (including CPU types)
* 660 non-CPU device types
* 65 no-user non-CPU device types (10% of them)
* 860 type_register_*() lines in the code
(this includes non-TYPE_DEVICE types, though)
* 56 cannot_instantiate_with_device_add_yet=true lines in the code
Commands I used to get the numbers above:
$ for f in /usr/bin/qemu-system-*;do \
(echo 'info qdm';echo quit;) | $f -machine none -nodefaults -monitor stdio -nographic 2>&1 \
done | grep ^name | sort -u > /tmp/devs
$ wc -l /tmp/devs
1671 /tmp/devs
$ grep no-user /tmp/devs | wc -l
1076
$ grep -- '-cpu"' /tmp/devs | wc -l
1011
$ grep -v -- '-cpu"' /tmp/devs | wc -l
660
$ grep -v -- '-cpu"' /tmp/devs | grep no-user | wc -l
65
$
--
Eduardo
WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Habkost <ehabkost@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Andrew Jones <drjones@redhat.com>,
Anthony Green <green@moxielogic.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Alexander Graf <agraf@suse.de>, Max Filippov <jcmvbkbc@gmail.com>,
Greg Ungerer <gerg@uclinux.org>,
"Edgar E . Iglesias" <edgar.iglesias@gmail.com>,
Guan Xuetao <gxt@mprc.pku.edu.cn>,
Chen Gang <gang.chen.5i5j@gmail.com>, Jia Liu <proljc@gmail.com>,
Markus Armbruster <armbru@redhat.com>,
Bharata B Rao <bharata@linux.vnet.ibm.com>,
David Gibson <david@gibson.dropbear.id.au>,
Artyom Tarasenko <atar4qemu@gmail.com>,
Laurent Vivier <lvivier@redhat.com>, Greg Kurz <groug@kaod.org>,
qemu-arm <qemu-arm@nongnu.org>,
Igor Mammedov <imammedo@redhat.com>,
Richard Henderson <rth@twiddle.net>,
Matthew Rosato <mjrosato@linux.vnet.ibm.com>,
Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
Michael Walle <michael@walle.cc>,
"qemu-ppc@nongnu.org" <qemu-ppc@nongnu.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [Qemu-devel] QOM properties vs C functions/fields (was Re: [PATCH v3 2/3] exec: rename cpu_exec_init() as cpu_exec_realizefn())
Date: Wed, 19 Oct 2016 09:11:06 -0200 [thread overview]
Message-ID: <20161019111106.GD5057@thinpad.lan.raisama.net> (raw)
In-Reply-To: <CAFEAcA9Cd0TsLHgBr-GuOwYmrwcPW656YOP2msAGrhghDS3xBw@mail.gmail.com>
On Tue, Oct 18, 2016 at 10:08:21PM +0100, Peter Maydell wrote:
> On 18 October 2016 at 21:49, Eduardo Habkost <ehabkost@redhat.com> wrote:
> > On Tue, Oct 18, 2016 at 09:30:01PM +0100, Peter Maydell wrote:
> >> Lots of stuff in a device's C struct is strictly internal
> >> and not to be messed with. I thought that QOM properties
> >> were essentially how a device defined its public (and
> >> typically settable-only-once) config knobs. QOM properties
> >> shouldn't be user-facing (read: stable, required to be
> >> backwards-compatible) interface in general because
> >> we don't really want to tie ourselves down that much.
> >> In fact almost all our QOM objects are not usefully
> >> user-facing at all.
> >
> > This interpretation surprises me, because it is the opposite of
> > what I have seen us doing. Most of our QOM objects and properties
> > are user-visible and user-configurable using -global, -device,
> > -object, or qom-set (and probably other QMP commands).
>
> Most of the devices I deal with are not and never will
> be sensibly usable with -device. Exposing wiring up
> of IRQ and GPIO lines or MMIO regions to the user is
> never going to make sense. For x86 most devices are
> probably pluggable (and usable with -device), but over
> the whole source tree I think the embedded-style device
> is in the majority. They're all still worth QOMifying
> and having properties for the things board code wants
> to modify, though.
Even if they are not usable with -device, all properties are
configurable using -global. There's no mechanism to avoid letting
the user configure properties for devices. Is this really OK?
If internal-only usage is also an intended use case for QOM
properties, fine. But I believe we need to communicate this more
clearly, based on the previous thread (subject: "QOM: best way
for parents to pass information to children?").
BTW, if most devices aren't supposed to be used with -device,
possibly many of them don't have
cannot_instantiate_with_device_add_yet set properly. On the 2.6.2
binaries in Fedora 24, I see:
* 1671 device types (including CPU types)
* 1011 CPU device types
* 1076 no-user device types (including CPU types)
* 660 non-CPU device types
* 65 no-user non-CPU device types (10% of them)
* 860 type_register_*() lines in the code
(this includes non-TYPE_DEVICE types, though)
* 56 cannot_instantiate_with_device_add_yet=true lines in the code
Commands I used to get the numbers above:
$ for f in /usr/bin/qemu-system-*;do \
(echo 'info qdm';echo quit;) | $f -machine none -nodefaults -monitor stdio -nographic 2>&1 \
done | grep ^name | sort -u > /tmp/devs
$ wc -l /tmp/devs
1671 /tmp/devs
$ grep no-user /tmp/devs | wc -l
1076
$ grep -- '-cpu"' /tmp/devs | wc -l
1011
$ grep -v -- '-cpu"' /tmp/devs | wc -l
660
$ grep -v -- '-cpu"' /tmp/devs | grep no-user | wc -l
65
$
--
Eduardo
next prev parent reply other threads:[~2016-10-19 11:11 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-14 22:52 [Qemu-arm] [PATCH v3 0/3] Split cpu_exec_init() into an init and a realize part Laurent Vivier
2016-10-14 22:52 ` [Qemu-devel] " Laurent Vivier
2016-10-14 22:52 ` [Qemu-arm] [PATCH v3 1/3] exec: split cpu_exec_init() Laurent Vivier
2016-10-14 22:52 ` [Qemu-devel] " Laurent Vivier
2016-10-17 3:43 ` [Qemu-arm] " David Gibson
2016-10-17 3:43 ` [Qemu-devel] " David Gibson
2016-10-17 11:15 ` [Qemu-arm] " Igor Mammedov
2016-10-17 11:15 ` [Qemu-devel] " Igor Mammedov
2016-10-17 18:46 ` [Qemu-arm] " Eduardo Habkost
2016-10-17 18:46 ` [Qemu-devel] " Eduardo Habkost
2016-10-14 22:52 ` [Qemu-arm] [PATCH v3 2/3] exec: rename cpu_exec_init() as cpu_exec_realizefn() Laurent Vivier
2016-10-14 22:52 ` [Qemu-devel] " Laurent Vivier
2016-10-17 3:43 ` David Gibson
2016-10-17 3:43 ` David Gibson
2016-10-17 11:20 ` [Qemu-arm] " Igor Mammedov
2016-10-17 11:20 ` [Qemu-devel] " Igor Mammedov
2016-10-17 14:03 ` [Qemu-arm] " Eduardo Habkost
2016-10-17 14:03 ` [Qemu-devel] " Eduardo Habkost
2016-10-17 14:25 ` [Qemu-arm] " Laurent Vivier
2016-10-17 14:25 ` [Qemu-devel] " Laurent Vivier
2016-10-17 19:20 ` [Qemu-arm] " Eduardo Habkost
2016-10-17 19:20 ` [Qemu-devel] " Eduardo Habkost
2016-10-18 10:48 ` [Qemu-arm] " Igor Mammedov
2016-10-18 10:48 ` [Qemu-devel] " Igor Mammedov
2016-10-18 13:00 ` [Qemu-arm] " Andrew Jones
2016-10-18 13:00 ` Andrew Jones
2016-10-18 13:18 ` [Qemu-arm] " Eduardo Habkost
2016-10-18 13:18 ` Eduardo Habkost
2016-10-18 14:22 ` Andrew Jones
2016-10-18 14:22 ` Andrew Jones
2016-10-18 15:22 ` [Qemu-arm] " Eduardo Habkost
2016-10-18 15:22 ` Eduardo Habkost
2016-10-18 16:22 ` Andrew Jones
2016-10-18 16:22 ` Andrew Jones
2016-10-18 16:57 ` [Qemu-arm] " Laurent Vivier
2016-10-18 16:57 ` Laurent Vivier
2016-10-18 17:07 ` [Qemu-arm] " Peter Maydell
2016-10-18 17:07 ` Peter Maydell
2016-10-18 17:57 ` [Qemu-arm] " Andrew Jones
2016-10-18 17:57 ` Andrew Jones
2016-10-18 18:12 ` [Qemu-arm] " Peter Maydell
2016-10-18 18:12 ` Peter Maydell
2016-10-18 18:45 ` [Qemu-arm] QOM properties vs C functions/fields (was Re: [Qemu-devel] [PATCH v3 2/3] exec: rename cpu_exec_init() as cpu_exec_realizefn()) Eduardo Habkost
2016-10-18 18:45 ` [Qemu-devel] QOM properties vs C functions/fields (was " Eduardo Habkost
2016-10-18 18:45 ` Eduardo Habkost
2016-10-18 20:30 ` [Qemu-arm] QOM properties vs C functions/fields (was Re: [Qemu-devel] " Peter Maydell
2016-10-18 20:30 ` [Qemu-devel] QOM properties vs C functions/fields (was " Peter Maydell
2016-10-18 20:30 ` Peter Maydell
2016-10-18 20:49 ` [Qemu-arm] QOM properties vs C functions/fields (was Re: [Qemu-devel] " Eduardo Habkost
2016-10-18 20:49 ` [Qemu-devel] QOM properties vs C functions/fields (was " Eduardo Habkost
2016-10-18 20:49 ` Eduardo Habkost
2016-10-18 21:08 ` Peter Maydell
2016-10-18 21:08 ` Peter Maydell
2016-10-18 21:08 ` [Qemu-arm] QOM properties vs C functions/fields (was Re: [Qemu-devel] " Peter Maydell
2016-10-19 11:11 ` Eduardo Habkost [this message]
2016-10-19 11:11 ` [Qemu-devel] QOM properties vs C functions/fields (was " Eduardo Habkost
2016-10-19 11:11 ` Eduardo Habkost
2016-10-19 11:22 ` [Qemu-arm] QOM properties vs C functions/fields (was Re: [Qemu-devel] " Peter Maydell
2016-10-19 11:22 ` [Qemu-devel] QOM properties vs C functions/fields (was " Peter Maydell
2016-10-19 11:22 ` Peter Maydell
2016-10-21 18:26 ` [Qemu-arm] " Markus Armbruster
2016-10-21 18:26 ` Markus Armbruster
2016-10-22 9:31 ` [Qemu-arm] " Peter Maydell
2016-10-22 9:31 ` Peter Maydell
2016-10-24 7:24 ` [Qemu-arm] " Markus Armbruster
2016-10-24 7:24 ` Markus Armbruster
2016-10-14 22:52 ` [Qemu-arm] [PATCH v3 3/3] exec: call cpu_exec_exit() from a CPU unrealize common function Laurent Vivier
2016-10-14 22:52 ` [Qemu-devel] " Laurent Vivier
2016-10-17 3:43 ` David Gibson
2016-10-17 3:43 ` David Gibson
2016-10-17 11:30 ` Igor Mammedov
2016-10-17 11:30 ` Igor Mammedov
2016-10-17 3:44 ` [Qemu-arm] [PATCH v3 0/3] Split cpu_exec_init() into an init and a realize part David Gibson
2016-10-17 3:44 ` [Qemu-devel] " David Gibson
2016-10-17 18:47 ` [Qemu-arm] " Eduardo Habkost
2016-10-17 18:47 ` [Qemu-devel] " Eduardo Habkost
2016-10-17 22:50 ` [Qemu-arm] " David Gibson
2016-10-17 22:50 ` [Qemu-devel] " David Gibson
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=20161019111106.GD5057@thinpad.lan.raisama.net \
--to=ehabkost@redhat.com \
--cc=agraf@suse.de \
--cc=armbru@redhat.com \
--cc=atar4qemu@gmail.com \
--cc=aurelien@aurel32.net \
--cc=bharata@linux.vnet.ibm.com \
--cc=david@gibson.dropbear.id.au \
--cc=drjones@redhat.com \
--cc=gang.chen.5i5j@gmail.com \
--cc=gerg@uclinux.org \
--cc=green@moxielogic.com \
--cc=groug@kaod.org \
--cc=gxt@mprc.pku.edu.cn \
--cc=imammedo@redhat.com \
--cc=jcmvbkbc@gmail.com \
--cc=kbastian@mail.uni-paderborn.de \
--cc=lvivier@redhat.com \
--cc=michael@walle.cc \
--cc=mjrosato@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=proljc@gmail.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=rth@twiddle.net \
/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.