* [PATCH] qapi: Make some ObjectTypes depend on the build settings @ 2021-09-28 16:02 Thomas Huth 2021-09-28 17:39 ` Philippe Mathieu-Daudé ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Thomas Huth @ 2021-09-28 16:02 UTC (permalink / raw) To: qemu-devel, Markus Armbruster, Eric Blake Cc: Paolo Bonzini, Daniel P. Berrangé, Eduardo Habkost Some of the ObjectType entries already depend on CONFIG_* switches. Some others also only make sense with certain configurations, but are currently always listed in the ObjectType enum. Let's make them depend on the correpsonding CONFIG_* switches, too, so that upper layers (like libvirt) have a better way to determine which features are available in QEMU. Signed-off-by: Thomas Huth <thuth@redhat.com> --- qapi/qom.json | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/qapi/qom.json b/qapi/qom.json index a25616bc7a..78b60433a9 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -777,7 +777,8 @@ 'authz-pam', 'authz-simple', 'can-bus', - 'can-host-socketcan', + { 'name': 'can-host-socketcan', + 'if': 'CONFIG_LINUX' }, 'colo-compare', 'cryptodev-backend', 'cryptodev-backend-builtin', @@ -791,20 +792,24 @@ 'filter-replay', 'filter-rewriter', 'input-barrier', - 'input-linux', + { 'name': 'input-linux', + 'if': 'CONFIG_LINUX' }, 'iothread', 'memory-backend-file', { 'name': 'memory-backend-memfd', 'if': 'CONFIG_LINUX' }, 'memory-backend-ram', 'pef-guest', - 'pr-manager-helper', + { 'name': 'pr-manager-helper', + 'if': 'CONFIG_LINUX' }, 'qtest', 'rng-builtin', 'rng-egd', - 'rng-random', + { 'name': 'rng-random', + 'if': 'CONFIG_POSIX' }, 'secret', - 'secret_keyring', + { 'name': 'secret_keyring', + 'if': 'CONFIG_SECRET_KEYRING' }, 'sev-guest', 's390-pv-guest', 'throttle-group', @@ -835,7 +840,8 @@ 'authz-listfile': 'AuthZListFileProperties', 'authz-pam': 'AuthZPAMProperties', 'authz-simple': 'AuthZSimpleProperties', - 'can-host-socketcan': 'CanHostSocketcanProperties', + 'can-host-socketcan': { 'type': 'CanHostSocketcanProperties', + 'if': 'CONFIG_LINUX' }, 'colo-compare': 'ColoCompareProperties', 'cryptodev-backend': 'CryptodevBackendProperties', 'cryptodev-backend-builtin': 'CryptodevBackendProperties', @@ -849,19 +855,23 @@ 'filter-replay': 'NetfilterProperties', 'filter-rewriter': 'FilterRewriterProperties', 'input-barrier': 'InputBarrierProperties', - 'input-linux': 'InputLinuxProperties', + 'input-linux': { 'type': 'InputLinuxProperties', + 'if': 'CONFIG_LINUX' }, 'iothread': 'IothreadProperties', 'memory-backend-file': 'MemoryBackendFileProperties', 'memory-backend-memfd': { 'type': 'MemoryBackendMemfdProperties', 'if': 'CONFIG_LINUX' }, 'memory-backend-ram': 'MemoryBackendProperties', - 'pr-manager-helper': 'PrManagerHelperProperties', + 'pr-manager-helper': { 'type': 'PrManagerHelperProperties', + 'if': 'CONFIG_LINUX' }, 'qtest': 'QtestProperties', 'rng-builtin': 'RngProperties', 'rng-egd': 'RngEgdProperties', - 'rng-random': 'RngRandomProperties', + 'rng-random': { 'type': 'RngRandomProperties', + 'if': 'CONFIG_POSIX' }, 'secret': 'SecretProperties', - 'secret_keyring': 'SecretKeyringProperties', + 'secret_keyring': { 'type': 'SecretKeyringProperties', + 'if': 'CONFIG_SECRET_KEYRING' }, 'sev-guest': 'SevGuestProperties', 'throttle-group': 'ThrottleGroupProperties', 'tls-creds-anon': 'TlsCredsAnonProperties', -- 2.27.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH] qapi: Make some ObjectTypes depend on the build settings 2021-09-28 16:02 [PATCH] qapi: Make some ObjectTypes depend on the build settings Thomas Huth @ 2021-09-28 17:39 ` Philippe Mathieu-Daudé 2021-09-29 6:17 ` Thomas Huth 2021-10-05 8:24 ` Markus Armbruster 2021-10-08 12:01 ` Markus Armbruster 2 siblings, 1 reply; 9+ messages in thread From: Philippe Mathieu-Daudé @ 2021-09-28 17:39 UTC (permalink / raw) To: Thomas Huth, qemu-devel, Markus Armbruster, Eric Blake Cc: Paolo Bonzini, Daniel P. Berrangé, Eduardo Habkost On 9/28/21 18:02, Thomas Huth wrote: > Some of the ObjectType entries already depend on CONFIG_* switches. > Some others also only make sense with certain configurations, but > are currently always listed in the ObjectType enum. Let's make them > depend on the correpsonding CONFIG_* switches, too, so that upper > layers (like libvirt) have a better way to determine which features > are available in QEMU. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > qapi/qom.json | 30 ++++++++++++++++++++---------- > 1 file changed, 20 insertions(+), 10 deletions(-) > > diff --git a/qapi/qom.json b/qapi/qom.json > index a25616bc7a..78b60433a9 100644 > --- a/qapi/qom.json > +++ b/qapi/qom.json > @@ -777,7 +777,8 @@ > 'authz-pam', > 'authz-simple', > 'can-bus', > - 'can-host-socketcan', > + { 'name': 'can-host-socketcan', > + 'if': 'CONFIG_LINUX' }, > 'colo-compare', > 'cryptodev-backend', > 'cryptodev-backend-builtin', > @@ -791,20 +792,24 @@ > 'filter-replay', > 'filter-rewriter', > 'input-barrier', > - 'input-linux', > + { 'name': 'input-linux', > + 'if': 'CONFIG_LINUX' }, > 'iothread', > 'memory-backend-file', > { 'name': 'memory-backend-memfd', > 'if': 'CONFIG_LINUX' }, > 'memory-backend-ram', > 'pef-guest', > - 'pr-manager-helper', > + { 'name': 'pr-manager-helper', > + 'if': 'CONFIG_LINUX' }, > 'qtest', > 'rng-builtin', > 'rng-egd', > - 'rng-random', > + { 'name': 'rng-random', > + 'if': 'CONFIG_POSIX' }, > 'secret', > - 'secret_keyring', > + { 'name': 'secret_keyring', > + 'if': 'CONFIG_SECRET_KEYRING' }, > 'sev-guest', > 's390-pv-guest', > 'throttle-group', > @@ -835,7 +840,8 @@ > 'authz-listfile': 'AuthZListFileProperties', > 'authz-pam': 'AuthZPAMProperties', > 'authz-simple': 'AuthZSimpleProperties', > - 'can-host-socketcan': 'CanHostSocketcanProperties', > + 'can-host-socketcan': { 'type': 'CanHostSocketcanProperties', > + 'if': 'CONFIG_LINUX' }, > 'colo-compare': 'ColoCompareProperties', > 'cryptodev-backend': 'CryptodevBackendProperties', > 'cryptodev-backend-builtin': 'CryptodevBackendProperties', > @@ -849,19 +855,23 @@ > 'filter-replay': 'NetfilterProperties', > 'filter-rewriter': 'FilterRewriterProperties', > 'input-barrier': 'InputBarrierProperties', > - 'input-linux': 'InputLinuxProperties', > + 'input-linux': { 'type': 'InputLinuxProperties', > + 'if': 'CONFIG_LINUX' }, > 'iothread': 'IothreadProperties', > 'memory-backend-file': 'MemoryBackendFileProperties', > 'memory-backend-memfd': { 'type': 'MemoryBackendMemfdProperties', > 'if': 'CONFIG_LINUX' }, > 'memory-backend-ram': 'MemoryBackendProperties', > - 'pr-manager-helper': 'PrManagerHelperProperties', > + 'pr-manager-helper': { 'type': 'PrManagerHelperProperties', > + 'if': 'CONFIG_LINUX' }, > 'qtest': 'QtestProperties', > 'rng-builtin': 'RngProperties', > 'rng-egd': 'RngEgdProperties', > - 'rng-random': 'RngRandomProperties', > + 'rng-random': { 'type': 'RngRandomProperties', > + 'if': 'CONFIG_POSIX' }, > 'secret': 'SecretProperties', > - 'secret_keyring': 'SecretKeyringProperties', > + 'secret_keyring': { 'type': 'SecretKeyringProperties', > + 'if': 'CONFIG_SECRET_KEYRING' }, > 'sev-guest': 'SevGuestProperties', > 'throttle-group': 'ThrottleGroupProperties', > 'tls-creds-anon': 'TlsCredsAnonProperties', > I quickly opened qapi/qom.json and spotted another one: --- a/qapi/qom.json +++ b/qapi/qom.json @@ -870,3 +870,4 @@ 'tls-cipher-suites': 'TlsCredsProperties', - 'x-remote-object': 'RemoteObjectProperties' + 'x-remote-object': { 'type': 'RemoteObjectProperties', + 'if': 'CONFIG_MULTIPROCESS' }, } } While your change is correct, this isn't maintainable long term. Not sure how we could improve that :/ But having to handle similar information in 3 different places (configure, meson.build, qapi json) is error prone. Thoughts? ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] qapi: Make some ObjectTypes depend on the build settings 2021-09-28 17:39 ` Philippe Mathieu-Daudé @ 2021-09-29 6:17 ` Thomas Huth 2021-09-29 11:41 ` Markus Armbruster 0 siblings, 1 reply; 9+ messages in thread From: Thomas Huth @ 2021-09-29 6:17 UTC (permalink / raw) To: Philippe Mathieu-Daudé, qemu-devel, Markus Armbruster, Eric Blake Cc: Paolo Bonzini, Daniel P. Berrangé, Eduardo Habkost On 28/09/2021 19.39, Philippe Mathieu-Daudé wrote: > On 9/28/21 18:02, Thomas Huth wrote: >> Some of the ObjectType entries already depend on CONFIG_* switches. >> Some others also only make sense with certain configurations, but >> are currently always listed in the ObjectType enum. Let's make them >> depend on the correpsonding CONFIG_* switches, too, so that upper >> layers (like libvirt) have a better way to determine which features >> are available in QEMU. >> >> Signed-off-by: Thomas Huth <thuth@redhat.com> >> --- >> qapi/qom.json | 30 ++++++++++++++++++++---------- >> 1 file changed, 20 insertions(+), 10 deletions(-) >> >> diff --git a/qapi/qom.json b/qapi/qom.json >> index a25616bc7a..78b60433a9 100644 >> --- a/qapi/qom.json >> +++ b/qapi/qom.json >> @@ -777,7 +777,8 @@ >> 'authz-pam', >> 'authz-simple', >> 'can-bus', >> - 'can-host-socketcan', >> + { 'name': 'can-host-socketcan', >> + 'if': 'CONFIG_LINUX' }, >> 'colo-compare', >> 'cryptodev-backend', >> 'cryptodev-backend-builtin', >> @@ -791,20 +792,24 @@ >> 'filter-replay', >> 'filter-rewriter', >> 'input-barrier', >> - 'input-linux', >> + { 'name': 'input-linux', >> + 'if': 'CONFIG_LINUX' }, >> 'iothread', >> 'memory-backend-file', >> { 'name': 'memory-backend-memfd', >> 'if': 'CONFIG_LINUX' }, >> 'memory-backend-ram', >> 'pef-guest', >> - 'pr-manager-helper', >> + { 'name': 'pr-manager-helper', >> + 'if': 'CONFIG_LINUX' }, >> 'qtest', >> 'rng-builtin', >> 'rng-egd', >> - 'rng-random', >> + { 'name': 'rng-random', >> + 'if': 'CONFIG_POSIX' }, >> 'secret', >> - 'secret_keyring', >> + { 'name': 'secret_keyring', >> + 'if': 'CONFIG_SECRET_KEYRING' }, >> 'sev-guest', >> 's390-pv-guest', >> 'throttle-group', >> @@ -835,7 +840,8 @@ >> 'authz-listfile': 'AuthZListFileProperties', >> 'authz-pam': 'AuthZPAMProperties', >> 'authz-simple': 'AuthZSimpleProperties', >> - 'can-host-socketcan': 'CanHostSocketcanProperties', >> + 'can-host-socketcan': { 'type': 'CanHostSocketcanProperties', >> + 'if': 'CONFIG_LINUX' }, >> 'colo-compare': 'ColoCompareProperties', >> 'cryptodev-backend': 'CryptodevBackendProperties', >> 'cryptodev-backend-builtin': 'CryptodevBackendProperties', >> @@ -849,19 +855,23 @@ >> 'filter-replay': 'NetfilterProperties', >> 'filter-rewriter': 'FilterRewriterProperties', >> 'input-barrier': 'InputBarrierProperties', >> - 'input-linux': 'InputLinuxProperties', >> + 'input-linux': { 'type': 'InputLinuxProperties', >> + 'if': 'CONFIG_LINUX' }, >> 'iothread': 'IothreadProperties', >> 'memory-backend-file': 'MemoryBackendFileProperties', >> 'memory-backend-memfd': { 'type': 'MemoryBackendMemfdProperties', >> 'if': 'CONFIG_LINUX' }, >> 'memory-backend-ram': 'MemoryBackendProperties', >> - 'pr-manager-helper': 'PrManagerHelperProperties', >> + 'pr-manager-helper': { 'type': 'PrManagerHelperProperties', >> + 'if': 'CONFIG_LINUX' }, >> 'qtest': 'QtestProperties', >> 'rng-builtin': 'RngProperties', >> 'rng-egd': 'RngEgdProperties', >> - 'rng-random': 'RngRandomProperties', >> + 'rng-random': { 'type': 'RngRandomProperties', >> + 'if': 'CONFIG_POSIX' }, >> 'secret': 'SecretProperties', >> - 'secret_keyring': 'SecretKeyringProperties', >> + 'secret_keyring': { 'type': 'SecretKeyringProperties', >> + 'if': 'CONFIG_SECRET_KEYRING' }, >> 'sev-guest': 'SevGuestProperties', >> 'throttle-group': 'ThrottleGroupProperties', >> 'tls-creds-anon': 'TlsCredsAnonProperties', >> > > I quickly opened qapi/qom.json and spotted another one: > > --- a/qapi/qom.json > +++ b/qapi/qom.json > @@ -870,3 +870,4 @@ > 'tls-cipher-suites': 'TlsCredsProperties', > - 'x-remote-object': 'RemoteObjectProperties' > + 'x-remote-object': { 'type': 'RemoteObjectProperties', > + 'if': 'CONFIG_MULTIPROCESS' }, > } } No, CONFIG_MULTIPROCESS is in config-poison.h (it's target specific), so that won't work here. We can only use the CONFIG switches from config-host.h here. > While your change is correct, this isn't maintainable long term. > Not sure how we could improve that :/ But having to handle similar > information in 3 different places (configure, meson.build, qapi json) > is error prone. Thoughts? The current situation is just that bad since we didn't have these 'if:' statements in the past. For future code, I think we just have to be more careful during code review... (and for configure vs. meson.build the answer is clear: Move more stuff from the configure script into meson.build, so that configure finally is only a stupid simple wrapper script) Thomas ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] qapi: Make some ObjectTypes depend on the build settings 2021-09-29 6:17 ` Thomas Huth @ 2021-09-29 11:41 ` Markus Armbruster 2021-10-05 6:49 ` Thomas Huth 0 siblings, 1 reply; 9+ messages in thread From: Markus Armbruster @ 2021-09-29 11:41 UTC (permalink / raw) To: Thomas Huth Cc: Daniel P. Berrangé, Eduardo Habkost, Philippe Mathieu-Daudé, qemu-devel, Paolo Bonzini, Eric Blake Thomas Huth <thuth@redhat.com> writes: > On 28/09/2021 19.39, Philippe Mathieu-Daudé wrote: >> I quickly opened qapi/qom.json and spotted another one: >> --- a/qapi/qom.json >> +++ b/qapi/qom.json >> @@ -870,3 +870,4 @@ >> 'tls-cipher-suites': 'TlsCredsProperties', >> - 'x-remote-object': 'RemoteObjectProperties' >> + 'x-remote-object': { 'type': 'RemoteObjectProperties', >> + 'if': 'CONFIG_MULTIPROCESS' }, >> } } > > No, CONFIG_MULTIPROCESS is in config-poison.h (it's target specific), > so that won't work here. We can only use the CONFIG switches from > config-host.h here. Target-specific conditions are available in qapi/*-target.json only. The generated qapi-*-target.h are only usable from target-specific code. Moving stuff to qapi/*-target.json may necessitate compiling much more code per target. Care is advised. >> While your change is correct, this isn't maintainable long term. >> Not sure how we could improve that :/ But having to handle similar >> information in 3 different places (configure, meson.build, qapi json) >> is error prone. Thoughts? > > The current situation is just that bad since we didn't have these > 'if:' statements in the past. For future code, I think we just have to > be more careful during code review... In my opinion, use of CONFIG_FOO in QAPI schemata is no worse than using them in C type definitions. In both cases, we have a choice: compile out stuff this build doesn't need with compile-time conditionals, or leave it in unused. In C, we sometimes have to compile out stuff, say when it depends on headers we don't have. In QAPI, we sometimes want to compile out stuff to make introspection more useful. This can be a killer argument. > (and for configure vs. meson.build the answer is clear: Move more > stuff from the configure script into meson.build, so that configure > finally is only a stupid simple wrapper script) > > Thomas ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] qapi: Make some ObjectTypes depend on the build settings 2021-09-29 11:41 ` Markus Armbruster @ 2021-10-05 6:49 ` Thomas Huth 0 siblings, 0 replies; 9+ messages in thread From: Thomas Huth @ 2021-10-05 6:49 UTC (permalink / raw) To: Markus Armbruster Cc: Daniel P. Berrangé, Eduardo Habkost, Philippe Mathieu-Daudé, qemu-devel, Paolo Bonzini, Eric Blake On 29/09/2021 13.41, Markus Armbruster wrote: [...] > In my opinion, use of CONFIG_FOO in QAPI schemata is no worse than using > them in C type definitions. > > In both cases, we have a choice: compile out stuff this build doesn't > need with compile-time conditionals, or leave it in unused. > > In C, we sometimes have to compile out stuff, say when it depends on > headers we don't have. > > In QAPI, we sometimes want to compile out stuff to make introspection > more useful. This can be a killer argument. So what's your opinion on this patch here? Good to go? Needs a rework? Or should I simply forget about it? Thomas ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] qapi: Make some ObjectTypes depend on the build settings 2021-09-28 16:02 [PATCH] qapi: Make some ObjectTypes depend on the build settings Thomas Huth 2021-09-28 17:39 ` Philippe Mathieu-Daudé @ 2021-10-05 8:24 ` Markus Armbruster 2021-10-08 12:01 ` Markus Armbruster 2 siblings, 0 replies; 9+ messages in thread From: Markus Armbruster @ 2021-10-05 8:24 UTC (permalink / raw) To: Thomas Huth Cc: Daniel P. Berrangé, Paolo Bonzini, Eric Blake, qemu-devel, Eduardo Habkost Thomas Huth <thuth@redhat.com> writes: > Some of the ObjectType entries already depend on CONFIG_* switches. > Some others also only make sense with certain configurations, but > are currently always listed in the ObjectType enum. Let's make them > depend on the correpsonding CONFIG_* switches, too, so that upper > layers (like libvirt) have a better way to determine which features > are available in QEMU. > > Signed-off-by: Thomas Huth <thuth@redhat.com> All these look good to me. I didn't look for more. Reviewed-by: Markus Armbruster <armbru@redhat.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] qapi: Make some ObjectTypes depend on the build settings 2021-09-28 16:02 [PATCH] qapi: Make some ObjectTypes depend on the build settings Thomas Huth 2021-09-28 17:39 ` Philippe Mathieu-Daudé 2021-10-05 8:24 ` Markus Armbruster @ 2021-10-08 12:01 ` Markus Armbruster 2021-10-08 17:13 ` Paolo Bonzini 2 siblings, 1 reply; 9+ messages in thread From: Markus Armbruster @ 2021-10-08 12:01 UTC (permalink / raw) To: Thomas Huth Cc: Daniel P. Berrangé, Paolo Bonzini, Eric Blake, qemu-devel, Eduardo Habkost Paolo, do you have something for QOM queued up already? If not, I'm happy to take this through my tree. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] qapi: Make some ObjectTypes depend on the build settings 2021-10-08 12:01 ` Markus Armbruster @ 2021-10-08 17:13 ` Paolo Bonzini 2021-10-09 12:51 ` Markus Armbruster 0 siblings, 1 reply; 9+ messages in thread From: Paolo Bonzini @ 2021-10-08 17:13 UTC (permalink / raw) To: Markus Armbruster, Thomas Huth Cc: Daniel P. Berrangé, Eric Blake, qemu-devel, Eduardo Habkost On 08/10/21 14:01, Markus Armbruster wrote: > Paolo, do you have something for QOM queued up already? If not, I'm > happy to take this through my tree. > I don't but I have enough stuff that I'll be sending a pull request shortly. So, queued, and while at it I also made memory-backend-epc depend on CONFIG_LINUX (more strictly it depends on CONFIG_SGX, which depends on CONFIG_KVM, which depends on CONFIG_LINUX; but the other two are target-dependent so we have to do with CONFIG_LINUX). Paolo ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH] qapi: Make some ObjectTypes depend on the build settings 2021-10-08 17:13 ` Paolo Bonzini @ 2021-10-09 12:51 ` Markus Armbruster 0 siblings, 0 replies; 9+ messages in thread From: Markus Armbruster @ 2021-10-09 12:51 UTC (permalink / raw) To: Paolo Bonzini Cc: Daniel P. Berrangé, Thomas Huth, Eric Blake, qemu-devel, Eduardo Habkost Paolo Bonzini <pbonzini@redhat.com> writes: > On 08/10/21 14:01, Markus Armbruster wrote: >> Paolo, do you have something for QOM queued up already? If not, I'm >> happy to take this through my tree. >> > > I don't but I have enough stuff that I'll be sending a pull request > shortly. So, queued, and while at it I also made memory-backend-epc > depend on CONFIG_LINUX (more strictly it depends on CONFIG_SGX, which > depends on CONFIG_KVM, which depends on CONFIG_LINUX; but the other > two are target-dependent so we have to do with CONFIG_LINUX). Thanks! Could you throw in this one? Subject: [PATCH] monitor: Tidy up find_device_state() Date: Thu, 16 Sep 2021 13:17:07 +0200 Message-Id: <20210916111707.84999-1-armbru@redhat.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-10-09 12:52 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-09-28 16:02 [PATCH] qapi: Make some ObjectTypes depend on the build settings Thomas Huth 2021-09-28 17:39 ` Philippe Mathieu-Daudé 2021-09-29 6:17 ` Thomas Huth 2021-09-29 11:41 ` Markus Armbruster 2021-10-05 6:49 ` Thomas Huth 2021-10-05 8:24 ` Markus Armbruster 2021-10-08 12:01 ` Markus Armbruster 2021-10-08 17:13 ` Paolo Bonzini 2021-10-09 12:51 ` Markus Armbruster
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).