From: Markus Armbruster <armbru@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Anthony Green <green@moxielogic.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Max Filippov <jcmvbkbc@gmail.com>,
Greg Ungerer <gerg@uclinux.org>,
Guan Xuetao <gxt@mprc.pku.edu.cn>,
Chen Gang <gang.chen.5i5j@gmail.com>, Jia Liu <proljc@gmail.com>,
Alexander Graf <agraf@suse.de>,
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>,
Andrew Jones <drjones@redhat.com>,
Eduardo Habkost <ehabkost@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-arm] [Qemu-devel] QOM properties vs C functions/fields (was Re: [PATCH v3 2/3] exec: rename cpu_exec_init() as cpu_exec_realizefn())
Date: Fri, 21 Oct 2016 20:26:09 +0200 [thread overview]
Message-ID: <87d1iteeym.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <CAFEAcA9Cd0TsLHgBr-GuOwYmrwcPW656YOP2msAGrhghDS3xBw@mail.gmail.com> (Peter Maydell's message of "Tue, 18 Oct 2016 22:08:21 +0100")
Peter Maydell <peter.maydell@linaro.org> writes:
> 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.
"Device not pluggable" does not imply "device has no configuration knobs
a user may legitimately want to mess with". Plenty of onboard devices
have such knobs.
Right now, users configure these mostly via board-agnostic options like
-serial. Anything that doesn't fit the mold can't be configured that
way.
However, A fully mature QOM as I envisage it would provide users access
to QOM properties for onboard devices, too. Not with -device,
obviously, but with qom-set and similar, as Eduardo said. If any of
these properties are not for users, they should be marked as such. Just
like for pluggable devices.
Perhaps non-pluggable devices tend to have more "not for users" QOM
properties than pluggable ones, I don't know. But that would be a
*quantitative* difference, not a *qualitative* one.
WARNING: multiple messages have this Message-ID (diff)
From: Markus Armbruster <armbru@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Eduardo Habkost <ehabkost@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>, Jia Liu <proljc@gmail.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: Fri, 21 Oct 2016 20:26:09 +0200 [thread overview]
Message-ID: <87d1iteeym.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <CAFEAcA9Cd0TsLHgBr-GuOwYmrwcPW656YOP2msAGrhghDS3xBw@mail.gmail.com> (Peter Maydell's message of "Tue, 18 Oct 2016 22:08:21 +0100")
Peter Maydell <peter.maydell@linaro.org> writes:
> 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.
"Device not pluggable" does not imply "device has no configuration knobs
a user may legitimately want to mess with". Plenty of onboard devices
have such knobs.
Right now, users configure these mostly via board-agnostic options like
-serial. Anything that doesn't fit the mold can't be configured that
way.
However, A fully mature QOM as I envisage it would provide users access
to QOM properties for onboard devices, too. Not with -device,
obviously, but with qom-set and similar, as Eduardo said. If any of
these properties are not for users, they should be marked as such. Just
like for pluggable devices.
Perhaps non-pluggable devices tend to have more "not for users" QOM
properties than pluggable ones, I don't know. But that would be a
*quantitative* difference, not a *qualitative* one.
next prev parent reply other threads:[~2016-10-21 18:26 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
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 ` Markus Armbruster [this message]
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=87d1iteeym.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=agraf@suse.de \
--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=ehabkost@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.