Philippe Mathieu-Daudé <phi...@redhat.com> writes: > On 3/16/21 10:02 AM, Philippe Mathieu-Daudé wrote: >> On 3/16/21 7:51 AM, Markus Armbruster wrote: >>> Eric Blake <ebl...@redhat.com> writes: >>> >>>> On 3/11/21 5:11 PM, Philippe Mathieu-Daudé wrote: >>> [...] >>>>> diff --git a/accel/accel-qmp.c b/accel/accel-qmp.c >>>>> new file mode 100644 >>>>> index 00000000000..f16e49b8956 >>>>> --- /dev/null >>>>> +++ b/accel/accel-qmp.c >>>>> @@ -0,0 +1,47 @@ >>>>> +/* >>>>> + * QEMU accelerators, QMP commands >>>>> + * >>>>> + * Copyright (c) 2021 Red Hat Inc. >>>>> + * >>>>> + * SPDX-License-Identifier: GPL-2.0-or-later >>>>> + */ >>>>> + >>>>> +#include "qemu/osdep.h" >>>>> +#include "qapi/qapi-commands-machine.h" >>>>> + >>>>> +static const Accelerator accel_list[] = { >>>>> + ACCELERATOR_QTEST, >>>>> +#ifdef CONFIG_TCG >>>>> + ACCELERATOR_TCG, >>>>> +#endif >>>>> +#ifdef CONFIG_KVM >>>>> + ACCELERATOR_KVM, >>>>> +#endif >>>> >>>> ...would it be worth compiling the enum to only list enum values that >>>> were actually compiled in? That would change it to: >>>> >>>> { 'enum': 'Accelerator', >>>> 'data': [ 'qtest', >>>> { 'name': 'tcg', 'if': 'defined(CONFIG_TCG)' }, >>>> ... >> >> These accelerator definitions are supposed to be poisoned in generic >> code... But I like the simplicity of your suggestion, so I'll give it >> a try and see what happens with removing the poisoned definitions. > > This is actually quite interesting :) Accelerator definitions are > declared in config-target.h, but acceleration is host specific... > > We certainly don't want to make qapi target-specific.
We certainly don't want to make all the generated QAPI headers target-specific. We have made *selected* QAPI sub-modules target-specific, namely the ones ending with "-target", currently qapi/machine-target.json and qapi/misc-target.json. Only these may use poisoned symbols in 'if' conditions. Example: { 'command': 'query-sev', 'returns': 'SevInfo', 'if': 'defined(TARGET_I386)' }