qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 0/4] docs/interop/firmware.json: scripts/qapi-gen.py compatibility
@ 2024-07-18 12:21 Thomas Weißschuh
  2024-07-18 12:21 ` [PATCH v5 1/4] docs/interop/firmware.json: add new enum FirmwareFormat Thomas Weißschuh
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Thomas Weißschuh @ 2024-07-18 12:21 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy
  Cc: qemu-devel, Kevin Wolf, Hanna Czenczek, Thomas Weißschuh

docs/interop/firmware.json is currently not usable with qapi-gen.py due
to various non-functional issues.
Fix those issue to provide compatibility.

Sorry for the quick resend, but the series got broken by the just-merged
pull "pull-qapi-2024-07-17" which made the newly introduced patch 3
necessary.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
Changes in v5:
- Add Reviewed-by from Daniel
- Add patch to drop Example section
- Link to v4: https://lore.kernel.org/r/20240718-qapi-firmware-json-v4-0-449ce672db5c@linutronix.de

Changes in v4:
- Update "since" to 9.1
- Add comment to 'member-name-exceptions'
- Document enum members and drop 'documentation-exceptions'
- Link to v3: https://lore.kernel.org/r/20240311-qapi-firmware-json-v3-0-ceea6e35eb4a@linutronix.de

Changes in v3:
- Drop already picked up patches
- Drop include of pragma.json
- Introduce new enums FirmwareFormat and FirmwareArchitecture
- Link to v2: https://lore.kernel.org/r/20240307-qapi-firmware-json-v2-0-3b29eabb9b9a@linutronix.de

Changes in v2:
- Add review tag from Philippe
- Add Fixes tag (Philippe)
- Add testcase (Philippe)
- Link to v1: https://lore.kernel.org/r/20240306-qapi-firmware-json-v1-0-619f7122a249@linutronix.de

---
Thomas Weißschuh (4):
      docs/interop/firmware.json: add new enum FirmwareFormat
      docs/interop/firmware.json: add new enum FirmwareArchitecture
      docs/interop/firmware.json: convert "Example" section
      docs: add test for firmware.json QAPI

 docs/interop/firmware.json | 48 +++++++++++++++++++++++++++++++++++++++++-----
 docs/meson.build           |  5 +++++
 2 files changed, 48 insertions(+), 5 deletions(-)
---
base-commit: d74ec4d7dda6322bcc51d1b13ccbd993d3574795
change-id: 20240306-qapi-firmware-json-6fb1213936dd

Best regards,
-- 
Thomas Weißschuh <thomas.weissschuh@linutronix.de>



^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v5 1/4] docs/interop/firmware.json: add new enum FirmwareFormat
  2024-07-18 12:21 [PATCH v5 0/4] docs/interop/firmware.json: scripts/qapi-gen.py compatibility Thomas Weißschuh
@ 2024-07-18 12:21 ` Thomas Weißschuh
  2024-07-18 13:09   ` Markus Armbruster
  2024-07-18 12:21 ` [PATCH v5 2/4] docs/interop/firmware.json: add new enum FirmwareArchitecture Thomas Weißschuh
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 14+ messages in thread
From: Thomas Weißschuh @ 2024-07-18 12:21 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy
  Cc: qemu-devel, Kevin Wolf, Hanna Czenczek, Thomas Weißschuh

Only a small subset of all blockdev drivers make sense for firmware
images. Introduce and use a new enum to represent this.

This also reduces the dependency on firmware.json from the global qapi
definitions.

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
 docs/interop/firmware.json | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json
index 54a1fc6c1041..a26fe81bf2fe 100644
--- a/docs/interop/firmware.json
+++ b/docs/interop/firmware.json
@@ -15,7 +15,6 @@
 ##
 
 { 'include' : 'machine.json' }
-{ 'include' : 'block-core.json' }
 
 ##
 # @FirmwareOSInterface:
@@ -200,6 +199,20 @@
              'enrolled-keys', 'requires-smm', 'secure-boot',
              'verbose-dynamic', 'verbose-static' ] }
 
+##
+# @FirmwareFormat:
+#
+# Formats that are supported for firmware images.
+#
+# @raw: Raw disk image format.
+#
+# @qcow2: QEMU image format.
+#
+# Since: 9.1
+##
+{ 'enum': 'FirmwareFormat',
+  'data': [ 'raw', 'qcow2' ] }
+
 ##
 # @FirmwareFlashFile:
 #
@@ -219,7 +232,7 @@
 ##
 { 'struct' : 'FirmwareFlashFile',
   'data'   : { 'filename' : 'str',
-               'format'   : 'BlockdevDriver' } }
+               'format'   : 'FirmwareFormat' } }
 
 
 ##

-- 
2.45.2



^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v5 2/4] docs/interop/firmware.json: add new enum FirmwareArchitecture
  2024-07-18 12:21 [PATCH v5 0/4] docs/interop/firmware.json: scripts/qapi-gen.py compatibility Thomas Weißschuh
  2024-07-18 12:21 ` [PATCH v5 1/4] docs/interop/firmware.json: add new enum FirmwareFormat Thomas Weißschuh
@ 2024-07-18 12:21 ` Thomas Weißschuh
  2024-07-18 13:18   ` Markus Armbruster
  2024-07-18 12:21 ` [PATCH v5 3/4] docs/interop/firmware.json: convert "Example" section Thomas Weißschuh
  2024-07-18 12:21 ` [PATCH v5 4/4] docs: add test for firmware.json QAPI Thomas Weißschuh
  3 siblings, 1 reply; 14+ messages in thread
From: Thomas Weißschuh @ 2024-07-18 12:21 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy
  Cc: qemu-devel, Kevin Wolf, Hanna Czenczek, Thomas Weißschuh

Only a small subset of all architectures supported by qemu make use of
firmware files. Introduce and use a new enum to represent this.

This also removes the dependency to machine.json from the global qapi
definitions.

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
 docs/interop/firmware.json | 29 +++++++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json
index a26fe81bf2fe..2eb0be11d595 100644
--- a/docs/interop/firmware.json
+++ b/docs/interop/firmware.json
@@ -14,7 +14,10 @@
 # = Firmware
 ##
 
-{ 'include' : 'machine.json' }
+{ 'pragma': {
+    'member-name-exceptions': [
+        'FirmwareArchitecture' # x86_64
+    ] } }
 
 ##
 # @FirmwareOSInterface:
@@ -59,6 +62,28 @@
 { 'enum' : 'FirmwareDevice',
   'data' : [ 'flash', 'kernel', 'memory' ] }
 
+##
+# @FirmwareArchitecture:
+#
+# Enumerations of architectures for which Qemu uses additional firmware files.
+# The values are a subset of the enum SysEmuTarget.
+#
+# @aarch64: 64-bit Arm.
+#
+# @arm: 32-bit Arm.
+#
+# @i386: 32-bit x86.
+#
+# @loongarch64: 64-bit LoongArch.
+#
+# @x86_64: 64-bit x86.
+#
+# Since: 9.1
+##
+{ 'enum' : 'FirmwareArchitecture',
+  'data' : [ 'aarch64', 'arm', 'i386', 'loongarch64', 'x86_64' ] }
+
+
 ##
 # @FirmwareTarget:
 #
@@ -80,7 +105,7 @@
 # Since: 3.0
 ##
 { 'struct' : 'FirmwareTarget',
-  'data'   : { 'architecture' : 'SysEmuTarget',
+  'data'   : { 'architecture' : 'FirmwareArchitecture',
                'machines'     : [ 'str' ] } }
 
 ##

-- 
2.45.2



^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v5 3/4] docs/interop/firmware.json: convert "Example" section
  2024-07-18 12:21 [PATCH v5 0/4] docs/interop/firmware.json: scripts/qapi-gen.py compatibility Thomas Weißschuh
  2024-07-18 12:21 ` [PATCH v5 1/4] docs/interop/firmware.json: add new enum FirmwareFormat Thomas Weißschuh
  2024-07-18 12:21 ` [PATCH v5 2/4] docs/interop/firmware.json: add new enum FirmwareArchitecture Thomas Weißschuh
@ 2024-07-18 12:21 ` Thomas Weißschuh
  2024-07-18 12:30   ` Daniel P. Berrangé
  2024-07-18 13:19   ` Markus Armbruster
  2024-07-18 12:21 ` [PATCH v5 4/4] docs: add test for firmware.json QAPI Thomas Weißschuh
  3 siblings, 2 replies; 14+ messages in thread
From: Thomas Weißschuh @ 2024-07-18 12:21 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy
  Cc: qemu-devel, Kevin Wolf, Hanna Czenczek, Thomas Weißschuh

Since commit 3c5f6114d9ff ("qapi: remove "Example" doc section")
the "Example" section is not valid anymore.
It has been replaced by the "qmp-example" role.

This was not detected earlier as firmware.json was not validated.
As this validation is about to be added, adapt firmware.json.

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
 docs/interop/firmware.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json
index 2eb0be11d595..eea82eef3a07 100644
--- a/docs/interop/firmware.json
+++ b/docs/interop/firmware.json
@@ -471,7 +471,7 @@
 #
 # Since: 3.0
 #
-# Examples:
+# .. qmp-example::
 #
 #     {
 #         "description": "SeaBIOS",

-- 
2.45.2



^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v5 4/4] docs: add test for firmware.json QAPI
  2024-07-18 12:21 [PATCH v5 0/4] docs/interop/firmware.json: scripts/qapi-gen.py compatibility Thomas Weißschuh
                   ` (2 preceding siblings ...)
  2024-07-18 12:21 ` [PATCH v5 3/4] docs/interop/firmware.json: convert "Example" section Thomas Weißschuh
@ 2024-07-18 12:21 ` Thomas Weißschuh
  3 siblings, 0 replies; 14+ messages in thread
From: Thomas Weißschuh @ 2024-07-18 12:21 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy
  Cc: qemu-devel, Kevin Wolf, Hanna Czenczek, Thomas Weißschuh

To make sure that the QAPI description stays valid add a testcase.

Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Link: https://lore.kernel.org/qemu-devel/d9ce0234-4beb-4b90-b14c-76810d3b81d7@linaro.org/
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
 docs/meson.build | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/docs/meson.build b/docs/meson.build
index 9040f860ae1a..bcca45a342a3 100644
--- a/docs/meson.build
+++ b/docs/meson.build
@@ -99,3 +99,8 @@ if build_docs
   alias_target('html', sphinxdocs)
   alias_target('man', sphinxmans)
 endif
+
+test('QAPI firmware.json regression tests', python,
+     args: [qapi_gen.full_path(), '-o', meson.current_build_dir() / 'qapi',
+            meson.current_source_dir() / 'interop/firmware.json'],
+     env: test_env, suite: ['qapi-schema', 'qapi-interop'])

-- 
2.45.2



^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH v5 3/4] docs/interop/firmware.json: convert "Example" section
  2024-07-18 12:21 ` [PATCH v5 3/4] docs/interop/firmware.json: convert "Example" section Thomas Weißschuh
@ 2024-07-18 12:30   ` Daniel P. Berrangé
  2024-07-18 13:19   ` Markus Armbruster
  1 sibling, 0 replies; 14+ messages in thread
From: Daniel P. Berrangé @ 2024-07-18 12:30 UTC (permalink / raw)
  To: Thomas Weißschuh
  Cc: Philippe Mathieu-Daudé, Kashyap Chamarthy, qemu-devel,
	Kevin Wolf, Hanna Czenczek

On Thu, Jul 18, 2024 at 02:21:47PM +0200, Thomas Weißschuh wrote:
> Since commit 3c5f6114d9ff ("qapi: remove "Example" doc section")
> the "Example" section is not valid anymore.
> It has been replaced by the "qmp-example" role.
> 
> This was not detected earlier as firmware.json was not validated.
> As this validation is about to be added, adapt firmware.json.
> 
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> ---
>  docs/interop/firmware.json | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v5 1/4] docs/interop/firmware.json: add new enum FirmwareFormat
  2024-07-18 12:21 ` [PATCH v5 1/4] docs/interop/firmware.json: add new enum FirmwareFormat Thomas Weißschuh
@ 2024-07-18 13:09   ` Markus Armbruster
  2024-07-18 13:25     ` Thomas Weißschuh
  2024-07-18 14:02     ` Kashyap Chamarthy
  0 siblings, 2 replies; 14+ messages in thread
From: Markus Armbruster @ 2024-07-18 13:09 UTC (permalink / raw)
  To: Thomas Weißschuh
  Cc: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy, qemu-devel, Kevin Wolf, Hanna Czenczek

Thomas Weißschuh <thomas.weissschuh@linutronix.de> writes:

> Only a small subset of all blockdev drivers make sense for firmware
> images. Introduce and use a new enum to represent this.
>
> This also reduces the dependency on firmware.json from the global qapi
> definitions.
>
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> ---
>  docs/interop/firmware.json | 17 +++++++++++++++--
>  1 file changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json
> index 54a1fc6c1041..a26fe81bf2fe 100644
> --- a/docs/interop/firmware.json
> +++ b/docs/interop/firmware.json
> @@ -15,7 +15,6 @@
>  ##
>  
>  { 'include' : 'machine.json' }
> -{ 'include' : 'block-core.json' }
>  
>  ##
>  # @FirmwareOSInterface:
> @@ -200,6 +199,20 @@
>               'enrolled-keys', 'requires-smm', 'secure-boot',
>               'verbose-dynamic', 'verbose-static' ] }
>  
> +##
> +# @FirmwareFormat:
> +#
> +# Formats that are supported for firmware images.
> +#
> +# @raw: Raw disk image format.
> +#
> +# @qcow2: QEMU image format.

It's not the only QEMU image format...  Maybe "The QCOW2 image format."
Almost tautological, but I don't have better ideas.

> +#
> +# Since: 9.1

The enum type is indeed since 9.1, but its two members are since 3.0,
and that's what matters.

> +##
> +{ 'enum': 'FirmwareFormat',
> +  'data': [ 'raw', 'qcow2' ] }
> +
>  ##
>  # @FirmwareFlashFile:
>  #
> @@ -219,7 +232,7 @@
>  ##
>  { 'struct' : 'FirmwareFlashFile',
>    'data'   : { 'filename' : 'str',
> -               'format'   : 'BlockdevDriver' } }
> +               'format'   : 'FirmwareFormat' } }
>  
>  
>  ##



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v5 2/4] docs/interop/firmware.json: add new enum FirmwareArchitecture
  2024-07-18 12:21 ` [PATCH v5 2/4] docs/interop/firmware.json: add new enum FirmwareArchitecture Thomas Weißschuh
@ 2024-07-18 13:18   ` Markus Armbruster
  2024-07-18 13:29     ` Thomas Weißschuh
  0 siblings, 1 reply; 14+ messages in thread
From: Markus Armbruster @ 2024-07-18 13:18 UTC (permalink / raw)
  To: Thomas Weißschuh
  Cc: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy, qemu-devel, Kevin Wolf, Hanna Czenczek

Thomas Weißschuh <thomas.weissschuh@linutronix.de> writes:

> Only a small subset of all architectures supported by qemu make use of
> firmware files. Introduce and use a new enum to represent this.
>
> This also removes the dependency to machine.json from the global qapi
> definitions.
>
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> ---
>  docs/interop/firmware.json | 29 +++++++++++++++++++++++++++--
>  1 file changed, 27 insertions(+), 2 deletions(-)
>
> diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json
> index a26fe81bf2fe..2eb0be11d595 100644
> --- a/docs/interop/firmware.json
> +++ b/docs/interop/firmware.json
> @@ -14,7 +14,10 @@
>  # = Firmware
>  ##
>  
> -{ 'include' : 'machine.json' }
> +{ 'pragma': {
> +    'member-name-exceptions': [
> +        'FirmwareArchitecture' # x86_64
> +    ] } }
>  
>  ##
>  # @FirmwareOSInterface:
> @@ -59,6 +62,28 @@
>  { 'enum' : 'FirmwareDevice',
>    'data' : [ 'flash', 'kernel', 'memory' ] }
>  
> +##
> +# @FirmwareArchitecture:
> +#
> +# Enumerations of architectures for which Qemu uses additional firmware files.

docs/devel/qapi-code-gen.rst section "Documentation markup":

    For legibility, wrap text paragraphs so every line is at most 70
    characters long.

> +# The values are a subset of the enum SysEmuTarget.

Will consumers of firmware.json care for this?  Or is it just a reminder
for developers to keep the two enums in sync?

> +#
> +# @aarch64: 64-bit Arm.
> +#
> +# @arm: 32-bit Arm.
> +#
> +# @i386: 32-bit x86.
> +#
> +# @loongarch64: 64-bit LoongArch.
> +#
> +# @x86_64: 64-bit x86.
> +#
> +# Since: 9.1

The enum type is indeed since 9.1, but its members are since 3.0, and
that's what matters.  Except for @loongarch, which is since 7.1.0 (not
documented in qapi/machine.json; I'll fix that).

> +##
> +{ 'enum' : 'FirmwareArchitecture',
> +  'data' : [ 'aarch64', 'arm', 'i386', 'loongarch64', 'x86_64' ] }
> +
> +

Drop one blank line, please.

>  ##
>  # @FirmwareTarget:
>  #
> @@ -80,7 +105,7 @@
>  # Since: 3.0
>  ##
>  { 'struct' : 'FirmwareTarget',
> -  'data'   : { 'architecture' : 'SysEmuTarget',
> +  'data'   : { 'architecture' : 'FirmwareArchitecture',
>                 'machines'     : [ 'str' ] } }
>  
>  ##



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v5 3/4] docs/interop/firmware.json: convert "Example" section
  2024-07-18 12:21 ` [PATCH v5 3/4] docs/interop/firmware.json: convert "Example" section Thomas Weißschuh
  2024-07-18 12:30   ` Daniel P. Berrangé
@ 2024-07-18 13:19   ` Markus Armbruster
  1 sibling, 0 replies; 14+ messages in thread
From: Markus Armbruster @ 2024-07-18 13:19 UTC (permalink / raw)
  To: Thomas Weißschuh
  Cc: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy, qemu-devel, Kevin Wolf, Hanna Czenczek

Thomas Weißschuh <thomas.weissschuh@linutronix.de> writes:

> Since commit 3c5f6114d9ff ("qapi: remove "Example" doc section")
> the "Example" section is not valid anymore.
> It has been replaced by the "qmp-example" role.

Make that "directive" instead of role.

> This was not detected earlier as firmware.json was not validated.

Sorry about that!

> As this validation is about to be added, adapt firmware.json.
>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> ---
>  docs/interop/firmware.json | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json
> index 2eb0be11d595..eea82eef3a07 100644
> --- a/docs/interop/firmware.json
> +++ b/docs/interop/firmware.json
> @@ -471,7 +471,7 @@
>  #
>  # Since: 3.0
>  #
> -# Examples:
> +# .. qmp-example::
>  #
>  #     {
>  #         "description": "SeaBIOS",

Reviewed-by: Markus Armbruster <armbru@redhat.com>



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v5 1/4] docs/interop/firmware.json: add new enum FirmwareFormat
  2024-07-18 13:09   ` Markus Armbruster
@ 2024-07-18 13:25     ` Thomas Weißschuh
  2024-07-18 13:46       ` Markus Armbruster
  2024-07-18 14:02     ` Kashyap Chamarthy
  1 sibling, 1 reply; 14+ messages in thread
From: Thomas Weißschuh @ 2024-07-18 13:25 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy, qemu-devel, Kevin Wolf, Hanna Czenczek

On Thu, Jul 18, 2024 at 03:09:37PM GMT, Markus Armbruster wrote:
> Thomas Weißschuh <thomas.weissschuh@linutronix.de> writes:
> 
> > Only a small subset of all blockdev drivers make sense for firmware
> > images. Introduce and use a new enum to represent this.
> >
> > This also reduces the dependency on firmware.json from the global qapi
> > definitions.
> >
> > Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> > Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> > ---
> >  docs/interop/firmware.json | 17 +++++++++++++++--
> >  1 file changed, 15 insertions(+), 2 deletions(-)
> >
> > diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json
> > index 54a1fc6c1041..a26fe81bf2fe 100644
> > --- a/docs/interop/firmware.json
> > +++ b/docs/interop/firmware.json
> > @@ -15,7 +15,6 @@
> >  ##
> >  
> >  { 'include' : 'machine.json' }
> > -{ 'include' : 'block-core.json' }
> >  
> >  ##
> >  # @FirmwareOSInterface:
> > @@ -200,6 +199,20 @@
> >               'enrolled-keys', 'requires-smm', 'secure-boot',
> >               'verbose-dynamic', 'verbose-static' ] }
> >  
> > +##
> > +# @FirmwareFormat:
> > +#
> > +# Formats that are supported for firmware images.
> > +#
> > +# @raw: Raw disk image format.
> > +#
> > +# @qcow2: QEMU image format.
> 
> It's not the only QEMU image format...  Maybe "The QCOW2 image format."
> Almost tautological, but I don't have better ideas.

I used the wording from qemu-img(1).
If you prefer "The QCOW2 image format", I'll switch to that.

> > +#
> > +# Since: 9.1
> 
> The enum type is indeed since 9.1, but its two members are since 3.0,
> and that's what matters.

Ack.

So I change the Since: of the whole enum?
And not on the individual members?

> > +##
> > +{ 'enum': 'FirmwareFormat',
> > +  'data': [ 'raw', 'qcow2' ] }
> > +
> >  ##
> >  # @FirmwareFlashFile:
> >  #
> > @@ -219,7 +232,7 @@
> >  ##
> >  { 'struct' : 'FirmwareFlashFile',
> >    'data'   : { 'filename' : 'str',
> > -               'format'   : 'BlockdevDriver' } }
> > +               'format'   : 'FirmwareFormat' } }
> >  
> >  
> >  ##
> 


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v5 2/4] docs/interop/firmware.json: add new enum FirmwareArchitecture
  2024-07-18 13:18   ` Markus Armbruster
@ 2024-07-18 13:29     ` Thomas Weißschuh
  2024-07-18 13:48       ` Markus Armbruster
  0 siblings, 1 reply; 14+ messages in thread
From: Thomas Weißschuh @ 2024-07-18 13:29 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy, qemu-devel, Kevin Wolf, Hanna Czenczek

On Thu, Jul 18, 2024 at 03:18:07PM GMT, Markus Armbruster wrote:
> Thomas Weißschuh <thomas.weissschuh@linutronix.de> writes:
> 
> > Only a small subset of all architectures supported by qemu make use of
> > firmware files. Introduce and use a new enum to represent this.
> >
> > This also removes the dependency to machine.json from the global qapi
> > definitions.
> >
> > Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> > Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> > ---
> >  docs/interop/firmware.json | 29 +++++++++++++++++++++++++++--
> >  1 file changed, 27 insertions(+), 2 deletions(-)
> >
> > diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json
> > index a26fe81bf2fe..2eb0be11d595 100644
> > --- a/docs/interop/firmware.json
> > +++ b/docs/interop/firmware.json
> > @@ -14,7 +14,10 @@
> >  # = Firmware
> >  ##
> >  
> > -{ 'include' : 'machine.json' }
> > +{ 'pragma': {
> > +    'member-name-exceptions': [
> > +        'FirmwareArchitecture' # x86_64
> > +    ] } }
> >  
> >  ##
> >  # @FirmwareOSInterface:
> > @@ -59,6 +62,28 @@
> >  { 'enum' : 'FirmwareDevice',
> >    'data' : [ 'flash', 'kernel', 'memory' ] }
> >  
> > +##
> > +# @FirmwareArchitecture:
> > +#
> > +# Enumerations of architectures for which Qemu uses additional firmware files.
> 
> docs/devel/qapi-code-gen.rst section "Documentation markup":
> 
>     For legibility, wrap text paragraphs so every line is at most 70
>     characters long.
> 
> > +# The values are a subset of the enum SysEmuTarget.

Ack.

> Will consumers of firmware.json care for this?

Most probably not.

> Or is it just a reminder for developers to keep the two enums in sync?

I guess so.
Should I drop it?

> 
> > +#
> > +# @aarch64: 64-bit Arm.
> > +#
> > +# @arm: 32-bit Arm.
> > +#
> > +# @i386: 32-bit x86.
> > +#
> > +# @loongarch64: 64-bit LoongArch.
> > +#
> > +# @x86_64: 64-bit x86.
> > +#
> > +# Since: 9.1
> 
> The enum type is indeed since 9.1, but its members are since 3.0, and
> that's what matters.  Except for @loongarch, which is since 7.1.0 (not
> documented in qapi/machine.json; I'll fix that).
> 
> > +##
> > +{ 'enum' : 'FirmwareArchitecture',
> > +  'data' : [ 'aarch64', 'arm', 'i386', 'loongarch64', 'x86_64' ] }
> > +
> > +
> 
> Drop one blank line, please.

Ack.

> 
> >  ##
> >  # @FirmwareTarget:
> >  #
> > @@ -80,7 +105,7 @@
> >  # Since: 3.0
> >  ##
> >  { 'struct' : 'FirmwareTarget',
> > -  'data'   : { 'architecture' : 'SysEmuTarget',
> > +  'data'   : { 'architecture' : 'FirmwareArchitecture',
> >                 'machines'     : [ 'str' ] } }
> >  
> >  ##
> 


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v5 1/4] docs/interop/firmware.json: add new enum FirmwareFormat
  2024-07-18 13:25     ` Thomas Weißschuh
@ 2024-07-18 13:46       ` Markus Armbruster
  0 siblings, 0 replies; 14+ messages in thread
From: Markus Armbruster @ 2024-07-18 13:46 UTC (permalink / raw)
  To: Thomas Weißschuh
  Cc: Philippe Mathieu-Daudé, Daniel P. Berrangé,
	Kashyap Chamarthy, qemu-devel, Kevin Wolf, Hanna Czenczek

Thomas Weißschuh <t-8ch@linutronix.de> writes:

> On Thu, Jul 18, 2024 at 03:09:37PM GMT, Markus Armbruster wrote:
>> Thomas Weißschuh <thomas.weissschuh@linutronix.de> writes:
>> 
>> > Only a small subset of all blockdev drivers make sense for firmware
>> > images. Introduce and use a new enum to represent this.
>> >
>> > This also reduces the dependency on firmware.json from the global qapi
>> > definitions.
>> >
>> > Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
>> > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>> > Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
>> > ---
>> >  docs/interop/firmware.json | 17 +++++++++++++++--
>> >  1 file changed, 15 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json
>> > index 54a1fc6c1041..a26fe81bf2fe 100644
>> > --- a/docs/interop/firmware.json
>> > +++ b/docs/interop/firmware.json
>> > @@ -15,7 +15,6 @@
>> >  ##
>> >  
>> >  { 'include' : 'machine.json' }
>> > -{ 'include' : 'block-core.json' }
>> >  
>> >  ##
>> >  # @FirmwareOSInterface:
>> > @@ -200,6 +199,20 @@
>> >               'enrolled-keys', 'requires-smm', 'secure-boot',
>> >               'verbose-dynamic', 'verbose-static' ] }
>> >  
>> > +##
>> > +# @FirmwareFormat:
>> > +#
>> > +# Formats that are supported for firmware images.
>> > +#
>> > +# @raw: Raw disk image format.
>> > +#
>> > +# @qcow2: QEMU image format.
>> 
>> It's not the only QEMU image format...  Maybe "The QCOW2 image format."
>> Almost tautological, but I don't have better ideas.
>
> I used the wording from qemu-img(1).

Interesting, wasn't aware.

> If you prefer "The QCOW2 image format", I'll switch to that.

Up to you, unless Kevin or Hanna have a preference.

>> > +#
>> > +# Since: 9.1
>> 
>> The enum type is indeed since 9.1, but its two members are since 3.0,
>> and that's what matters.
>
> Ack.
>
> So I change the Since: of the whole enum?
> And not on the individual members?

Whole enum is simpler, so that's what I'd do.  Perhaps with a brief
explanation in the commit message.  Here's my try:

    Claim "Since: 3.0" for the new enum, because that's correct for its
    members, and the members are what matters in the interface.

>> > +##
>> > +{ 'enum': 'FirmwareFormat',
>> > +  'data': [ 'raw', 'qcow2' ] }
>> > +
>> >  ##
>> >  # @FirmwareFlashFile:
>> >  #
>> > @@ -219,7 +232,7 @@
>> >  ##
>> >  { 'struct' : 'FirmwareFlashFile',
>> >    'data'   : { 'filename' : 'str',
>> > -               'format'   : 'BlockdevDriver' } }
>> > +               'format'   : 'FirmwareFormat' } }
>> >  
>> >  
>> >  ##
>> 



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v5 2/4] docs/interop/firmware.json: add new enum FirmwareArchitecture
  2024-07-18 13:29     ` Thomas Weißschuh
@ 2024-07-18 13:48       ` Markus Armbruster
  0 siblings, 0 replies; 14+ messages in thread
From: Markus Armbruster @ 2024-07-18 13:48 UTC (permalink / raw)
  To: Thomas Weißschuh
  Cc: Markus Armbruster, Philippe Mathieu-Daudé,
	Daniel P. Berrangé, Kashyap Chamarthy, qemu-devel,
	Kevin Wolf, Hanna Czenczek

Thomas Weißschuh <t-8ch@linutronix.de> writes:

> On Thu, Jul 18, 2024 at 03:18:07PM GMT, Markus Armbruster wrote:
>> Thomas Weißschuh <thomas.weissschuh@linutronix.de> writes:
>> 
>> > Only a small subset of all architectures supported by qemu make use of
>> > firmware files. Introduce and use a new enum to represent this.
>> >
>> > This also removes the dependency to machine.json from the global qapi
>> > definitions.
>> >
>> > Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
>> > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>> > Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
>> > ---
>> >  docs/interop/firmware.json | 29 +++++++++++++++++++++++++++--
>> >  1 file changed, 27 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/docs/interop/firmware.json b/docs/interop/firmware.json
>> > index a26fe81bf2fe..2eb0be11d595 100644
>> > --- a/docs/interop/firmware.json
>> > +++ b/docs/interop/firmware.json
>> > @@ -14,7 +14,10 @@
>> >  # = Firmware
>> >  ##
>> >  
>> > -{ 'include' : 'machine.json' }
>> > +{ 'pragma': {
>> > +    'member-name-exceptions': [
>> > +        'FirmwareArchitecture' # x86_64
>> > +    ] } }
>> >  
>> >  ##
>> >  # @FirmwareOSInterface:
>> > @@ -59,6 +62,28 @@
>> >  { 'enum' : 'FirmwareDevice',
>> >    'data' : [ 'flash', 'kernel', 'memory' ] }
>> >  
>> > +##
>> > +# @FirmwareArchitecture:
>> > +#
>> > +# Enumerations of architectures for which Qemu uses additional firmware files.
>> 
>> docs/devel/qapi-code-gen.rst section "Documentation markup":
>> 
>>     For legibility, wrap text paragraphs so every line is at most 70
>>     characters long.
>> 
>> > +# The values are a subset of the enum SysEmuTarget.
>
> Ack.
>
>> Will consumers of firmware.json care for this?
>
> Most probably not.
>
>> Or is it just a reminder for developers to keep the two enums in sync?
>
> I guess so.
> Should I drop it?

You can drop it.

If you think it's useful for developers, you can instead make it a
non-doc comment, like ...

>> 
>> > +#
>> > +# @aarch64: 64-bit Arm.
>> > +#
>> > +# @arm: 32-bit Arm.
>> > +#
>> > +# @i386: 32-bit x86.
>> > +#
>> > +# @loongarch64: 64-bit LoongArch.
>> > +#
>> > +# @x86_64: 64-bit x86.
>> > +#
>> > +# Since: 9.1
>> 
>> The enum type is indeed since 9.1, but its members are since 3.0, and
>> that's what matters.  Except for @loongarch, which is since 7.1.0 (not
>> documented in qapi/machine.json; I'll fix that).
>> 
>> > +##
>> > +{ 'enum' : 'FirmwareArchitecture',
>> > +  'data' : [ 'aarch64', 'arm', 'i386', 'loongarch64', 'x86_64' ] }

... here:

      # The values are a subset of the enum SysEmuTarget defined in
      # qapi/machine.json.

If you do, consider adding a similar note to FirmwareFormat in the
previous patch.

>> > +
>> > +
>> 
>> Drop one blank line, please.
>
> Ack.
>
>> 
>> >  ##
>> >  # @FirmwareTarget:
>> >  #
>> > @@ -80,7 +105,7 @@
>> >  # Since: 3.0
>> >  ##
>> >  { 'struct' : 'FirmwareTarget',
>> > -  'data'   : { 'architecture' : 'SysEmuTarget',
>> > +  'data'   : { 'architecture' : 'FirmwareArchitecture',
>> >                 'machines'     : [ 'str' ] } }
>> >  
>> >  ##
>> 



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v5 1/4] docs/interop/firmware.json: add new enum FirmwareFormat
  2024-07-18 13:09   ` Markus Armbruster
  2024-07-18 13:25     ` Thomas Weißschuh
@ 2024-07-18 14:02     ` Kashyap Chamarthy
  1 sibling, 0 replies; 14+ messages in thread
From: Kashyap Chamarthy @ 2024-07-18 14:02 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: Thomas Weißschuh, Philippe Mathieu-Daudé,
	Daniel P. Berrangé, qemu-devel, Kevin Wolf, Hanna Czenczek

On Thu, Jul 18, 2024 at 03:09:37PM +0200, Markus Armbruster wrote:
> Thomas Weißschuh <thomas.weissschuh@linutronix.de> writes:

[...]

> > +#
> > +# @raw: Raw disk image format.
> > +#
> > +# @qcow2: QEMU image format.
> 
> It's not the only QEMU image format...  Maybe "The QCOW2 image format."
> Almost tautological, but I don't have better ideas.

For slightly less tautology, not sure these are any better:

    @raw: Disk image format that's plain and unstructured.

    @qcow2: Disk image format with support for copy-on-write and more.

[...]

-- 
/kashyap



^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-07-18 14:05 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-18 12:21 [PATCH v5 0/4] docs/interop/firmware.json: scripts/qapi-gen.py compatibility Thomas Weißschuh
2024-07-18 12:21 ` [PATCH v5 1/4] docs/interop/firmware.json: add new enum FirmwareFormat Thomas Weißschuh
2024-07-18 13:09   ` Markus Armbruster
2024-07-18 13:25     ` Thomas Weißschuh
2024-07-18 13:46       ` Markus Armbruster
2024-07-18 14:02     ` Kashyap Chamarthy
2024-07-18 12:21 ` [PATCH v5 2/4] docs/interop/firmware.json: add new enum FirmwareArchitecture Thomas Weißschuh
2024-07-18 13:18   ` Markus Armbruster
2024-07-18 13:29     ` Thomas Weißschuh
2024-07-18 13:48       ` Markus Armbruster
2024-07-18 12:21 ` [PATCH v5 3/4] docs/interop/firmware.json: convert "Example" section Thomas Weißschuh
2024-07-18 12:30   ` Daniel P. Berrangé
2024-07-18 13:19   ` Markus Armbruster
2024-07-18 12:21 ` [PATCH v5 4/4] docs: add test for firmware.json QAPI Thomas Weißschuh

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).