On 5/5/21 9:41 PM, Eduardo Habkost wrote: > On Wed, May 05, 2021 at 02:57:56PM +0200, Philippe Mathieu-Daudé wrote: >> Introduce the 'query-accels' QMP command which returns a list >> of built-in accelerator names. >> >> - Accelerator is a QAPI enum of all existing accelerators, >> >> - AcceleratorInfo is a QAPI structure providing accelerator >> specific information. Currently the common structure base >> provides the name of the accelerator, while the specific >> part is empty, but each accelerator can expand it. >> >> - 'query-accels' QMP command returns a list of @AcceleratorInfo >> >> For example on a KVM-only build we get: >> >> { "execute": "query-accels" } >> { >> "return": [ >> { >> "name": "qtest" >> }, >> { >> "name": "kvm" >> } >> ] >> } >> >> Note that we can't make the enum values or union branches conditional >> because of target-specific poisoning of accelerator definitions. > > I assume this will be clarified in v8, based on your reply to v5. > I don't understand what "target-specific poisoning of accelerator > definitions" means.
$ git grep poison ... include/exec/poison.h:88:#pragma GCC poison CONFIG_HAX include/exec/poison.h:89:#pragma GCC poison CONFIG_HVF include/exec/poison.h:90:#pragma GCC poison CONFIG_LINUX_USER include/exec/poison.h:91:#pragma GCC poison CONFIG_KVM include/exec/poison.h:92:#pragma GCC poison CONFIG_SOFTMMU include/exec/poison.h:93:#pragma GCC poison CONFIG_WHPX include/exec/poison.h:94:#pragma GCC poison CONFIG_XEN I thought QAPI was target agnostic, but I just found: if module.endswith('-target') qapi_specific_outputs += qapi_module_outputs specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: qapi_files[i]) So instead of adding this to qapi/machine.json I'll see if I can add it to qapi/machine-target.json and use conditionals.