diff mbox

[qemu,RFC,v3,1/3] qapi: add SysEmuTarget to "common.json"

Message ID 20180420231246.23130-2-lersek@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Laszlo Ersek April 20, 2018, 11:12 p.m. UTC
We'll soon need an enumeration type that lists all the softmmu targets
that QEMU (the project) supports. Introduce @SysEmuTarget to
"common.json".

Cc: "Daniel P. Berrange" <berrange@redhat.com>
Cc: David Gibson <dgibson@redhat.com>
Cc: Eric Blake <eblake@redhat.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Kashyap Chamarthy <kchamart@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Thomas Huth <thuth@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---

Notes:
    RFCv3:
    
    - The patch is new in this version. [Dan, Markus]
    
    - The original idea was to call the new enum @Target; however, @Target
      generates exactly the TARGET_AARCH64, TARGET_ALPHA, TARGET_ARM, ...
      enumeration constants that conflict with the poisoned preprocessing
      macros of the same names. Hence @SysEmuTarget -- it's more accurate
      anyway, since we want it to stand for system emulation targets.
    
    - Also, we discussed defining the new type in either "common.json" or
      "misc.json". "misc.json" turned out to be a problem: "firmware.json"
      would then include "misc.json" for the new type's sake, but that
      inclusion would become the first appearance of "misc.json" -- within
      "firmware.json". That messed up the generated documentation. By adding
      the new type to "common.json", "misc.json" (see the 2nd patch) and
      "firmware.json" (see the 3rd patch) can both consume the new type
      without problems.

 qapi/common.json | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

Comments

Markus Armbruster April 23, 2018, 9:52 a.m. UTC | #1
Laszlo Ersek <lersek@redhat.com> writes:

> We'll soon need an enumeration type that lists all the softmmu targets
> that QEMU (the project) supports. Introduce @SysEmuTarget to
> "common.json".
>
> Cc: "Daniel P. Berrange" <berrange@redhat.com>
> Cc: David Gibson <dgibson@redhat.com>
> Cc: Eric Blake <eblake@redhat.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Kashyap Chamarthy <kchamart@redhat.com>
> Cc: Markus Armbruster <armbru@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Laszlo Ersek <lersek@redhat.com>

Reviewed-by: Markus Armbruster <armbru@redhat.com>
Laszlo Ersek April 23, 2018, 6:45 p.m. UTC | #2
On 04/23/18 11:52, Markus Armbruster wrote:
> Laszlo Ersek <lersek@redhat.com> writes:
> 
>> We'll soon need an enumeration type that lists all the softmmu targets
>> that QEMU (the project) supports. Introduce @SysEmuTarget to
>> "common.json".
>>
>> Cc: "Daniel P. Berrange" <berrange@redhat.com>
>> Cc: David Gibson <dgibson@redhat.com>
>> Cc: Eric Blake <eblake@redhat.com>
>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>> Cc: Kashyap Chamarthy <kchamart@redhat.com>
>> Cc: Markus Armbruster <armbru@redhat.com>
>> Cc: Paolo Bonzini <pbonzini@redhat.com>
>> Cc: Thomas Huth <thuth@redhat.com>
>> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
> 
> Reviewed-by: Markus Armbruster <armbru@redhat.com>
> 

Thanks! I think I'll post a PATCH (not RFC) series next, with patches #1
and #2 from this set (addressing your comments for patch #2), and I'll
try to add patch #3 for your earlier comments here:

http://mid.mail-archive.com/87k1t1sujh.fsf@dusky.pond.sub.org

And we can keep the firmware.json RFC separate, and dependent on that set.

Thanks!
Laszlo
Kashyap Chamarthy April 24, 2018, 8:04 a.m. UTC | #3
On Sat, Apr 21, 2018 at 01:12:44AM +0200, Laszlo Ersek wrote:
> We'll soon need an enumeration type that lists all the softmmu targets
> that QEMU (the project) supports. Introduce @SysEmuTarget to
> "common.json".

[...]

> Notes:
>     RFCv3:
>     
>     - The patch is new in this version. [Dan, Markus]
>     
>     - The original idea was to call the new enum @Target; however, @Target
>       generates exactly the TARGET_AARCH64, TARGET_ALPHA, TARGET_ARM, ...
>       enumeration constants that conflict with the poisoned preprocessing
>       macros of the same names. Hence @SysEmuTarget -- it's more accurate
>       anyway, since we want it to stand for system emulation targets.
>     
>     - Also, we discussed defining the new type in either "common.json" or
>       "misc.json". "misc.json" turned out to be a problem: "firmware.json"
>       would then include "misc.json" for the new type's sake, but that
>       inclusion would become the first appearance of "misc.json" -- within
>       "firmware.json". That messed up the generated documentation. By adding
>       the new type to "common.json", "misc.json" (see the 2nd patch) and
>       "firmware.json" (see the 3rd patch) can both consume the new type
>       without problems.

The last two points are interesting enough (for me) to still to keep in
the commit message, but that's minor :-)

>  qapi/common.json | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)

FWIW:

Reviewed-by: Kashyap Chamarthy <kchamart@redhat.com>

[...]
diff mbox

Patch

diff --git a/qapi/common.json b/qapi/common.json
index d9b14dd429f3..1fd63172754a 100644
--- a/qapi/common.json
+++ b/qapi/common.json
@@ -126,3 +126,22 @@ 
 ##
 { 'enum': 'OffAutoPCIBAR',
   'data': [ 'off', 'auto', 'bar0', 'bar1', 'bar2', 'bar3', 'bar4', 'bar5' ] }
+
+##
+# @SysEmuTarget:
+#
+# The comprehensive enumeration of QEMU system emulation ("softmmu")
+# targets. Run "./configure --help" in the project root directory, and
+# look for the *-softmmu targets near the "--target-list" option. The
+# individual target constants are not documented here, for the time
+# being.
+#
+# Since: 2.13
+##
+{ 'enum' : 'SysEmuTarget',
+  'data' : [ 'aarch64', 'alpha', 'arm', 'cris', 'hppa', 'i386', 'lm32',
+             'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64',
+             'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc',
+             'ppc64', 'ppcemb', 'riscv32', 'riscv64', 's390x', 'sh4',
+             'sh4eb', 'sparc', 'sparc64', 'tricore', 'unicore32',
+             'x86_64', 'xtensa', 'xtensaeb' ] }