mbox series

[0/5] qapi: Restrict machine (and migration) specific commands

Message ID 20201002133923.1716645-1-philmd@redhat.com
Headers show
Series qapi: Restrict machine (and migration) specific commands | expand

Message

Philippe Mathieu-Daudé Oct. 2, 2020, 1:39 p.m. UTC
Reduce the machine code pulled into qemu-storage-daemon.

Philippe Mathieu-Daudé (5):
  qapi: Restrict 'inject-nmi' command to machine code
  qapi: Restrict 'system wakeup/reset/powerdown' commands to
    machine.json
  qapi: Restrict '(p)memsave' command to machine code
  qapi: Restrict 'query-kvm' command to machine code
  qapi: Restrict Xen migration commands to migration.json

 qapi/machine.json      | 168 +++++++++++++++++++++++++++++++++
 qapi/migration.json    |  41 ++++++++
 qapi/misc.json         | 209 -----------------------------------------
 accel/stubs/xen-stub.c |   2 +-
 hw/i386/xen/xen-hvm.c  |   2 +-
 migration/savevm.c     |   1 -
 softmmu/cpus.c         |   1 +
 ui/gtk.c               |   1 +
 ui/cocoa.m             |   1 +
 9 files changed, 214 insertions(+), 212 deletions(-)

Comments

Dr. David Alan Gilbert Oct. 2, 2020, 5:04 p.m. UTC | #1
* Philippe Mathieu-Daudé (philmd@redhat.com) wrote:
> Restricting xen-set-global-dirty-log and xen-load-devices-state
> commands migration.json pulls slightly less QAPI-generated code
> into user-mode and tools.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Looks OK; for migration


Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  qapi/migration.json    | 41 +++++++++++++++++++++++++++++++++++++++++
>  qapi/misc.json         | 41 -----------------------------------------
>  accel/stubs/xen-stub.c |  2 +-
>  hw/i386/xen/xen-hvm.c  |  2 +-
>  migration/savevm.c     |  1 -
>  5 files changed, 43 insertions(+), 44 deletions(-)
> 
> diff --git a/qapi/migration.json b/qapi/migration.json
> index 7f5e6fd681..cb30f4c729 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -1551,6 +1551,47 @@
>  { 'command': 'xen-save-devices-state',
>    'data': {'filename': 'str', '*live':'bool' } }
>  
> +##
> +# @xen-set-global-dirty-log:
> +#
> +# Enable or disable the global dirty log mode.
> +#
> +# @enable: true to enable, false to disable.
> +#
> +# Returns: nothing
> +#
> +# Since: 1.3
> +#
> +# Example:
> +#
> +# -> { "execute": "xen-set-global-dirty-log",
> +#      "arguments": { "enable": true } }
> +# <- { "return": {} }
> +#
> +##
> +{ 'command': 'xen-set-global-dirty-log', 'data': { 'enable': 'bool' } }
> +
> +##
> +# @xen-load-devices-state:
> +#
> +# Load the state of all devices from file. The RAM and the block devices
> +# of the VM are not loaded by this command.
> +#
> +# @filename: the file to load the state of the devices from as binary
> +#            data. See xen-save-devices-state.txt for a description of the binary
> +#            format.
> +#
> +# Since: 2.7
> +#
> +# Example:
> +#
> +# -> { "execute": "xen-load-devices-state",
> +#      "arguments": { "filename": "/tmp/resume" } }
> +# <- { "return": {} }
> +#
> +##
> +{ 'command': 'xen-load-devices-state', 'data': {'filename': 'str'} }
> +
>  ##
>  # @xen-set-replication:
>  #
> diff --git a/qapi/misc.json b/qapi/misc.json
> index 9813893269..afe936b45b 100644
> --- a/qapi/misc.json
> +++ b/qapi/misc.json
> @@ -287,26 +287,6 @@
>    'data': {'device': 'str', 'target': 'str', '*arg': 'str'},
>    'features': [ 'deprecated' ] }
>  
> -##
> -# @xen-set-global-dirty-log:
> -#
> -# Enable or disable the global dirty log mode.
> -#
> -# @enable: true to enable, false to disable.
> -#
> -# Returns: nothing
> -#
> -# Since: 1.3
> -#
> -# Example:
> -#
> -# -> { "execute": "xen-set-global-dirty-log",
> -#      "arguments": { "enable": true } }
> -# <- { "return": {} }
> -#
> -##
> -{ 'command': 'xen-set-global-dirty-log', 'data': { 'enable': 'bool' } }
> -
>  ##
>  # @getfd:
>  #
> @@ -606,24 +586,3 @@
>  ##
>  { 'enum': 'ReplayMode',
>    'data': [ 'none', 'record', 'play' ] }
> -
> -##
> -# @xen-load-devices-state:
> -#
> -# Load the state of all devices from file. The RAM and the block devices
> -# of the VM are not loaded by this command.
> -#
> -# @filename: the file to load the state of the devices from as binary
> -#            data. See xen-save-devices-state.txt for a description of the binary
> -#            format.
> -#
> -# Since: 2.7
> -#
> -# Example:
> -#
> -# -> { "execute": "xen-load-devices-state",
> -#      "arguments": { "filename": "/tmp/resume" } }
> -# <- { "return": {} }
> -#
> -##
> -{ 'command': 'xen-load-devices-state', 'data': {'filename': 'str'} }
> diff --git a/accel/stubs/xen-stub.c b/accel/stubs/xen-stub.c
> index 7ba0b697f4..7054965c48 100644
> --- a/accel/stubs/xen-stub.c
> +++ b/accel/stubs/xen-stub.c
> @@ -7,7 +7,7 @@
>  
>  #include "qemu/osdep.h"
>  #include "sysemu/xen.h"
> -#include "qapi/qapi-commands-misc.h"
> +#include "qapi/qapi-commands-migration.h"
>  
>  bool xen_allowed;
>  
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index f3ababf33b..9519c33c09 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -24,7 +24,7 @@
>  #include "hw/xen/xen-bus.h"
>  #include "hw/xen/xen-x86.h"
>  #include "qapi/error.h"
> -#include "qapi/qapi-commands-misc.h"
> +#include "qapi/qapi-commands-migration.h"
>  #include "qemu/error-report.h"
>  #include "qemu/main-loop.h"
>  #include "qemu/range.h"
> diff --git a/migration/savevm.c b/migration/savevm.c
> index 34e4b71052..1fdf3f76c2 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -42,7 +42,6 @@
>  #include "postcopy-ram.h"
>  #include "qapi/error.h"
>  #include "qapi/qapi-commands-migration.h"
> -#include "qapi/qapi-commands-misc.h"
>  #include "qapi/qmp/qerror.h"
>  #include "qemu/error-report.h"
>  #include "sysemu/cpus.h"
> -- 
> 2.26.2
>
Markus Armbruster Oct. 5, 2020, 8:01 a.m. UTC | #2
Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> Reduce the machine code pulled into qemu-storage-daemon.


I'm leaving review to Eduardo and Marcel for PATCH 1-4, and to David and
Juan for PATCH 5.  David already ACKed.

Can do the pull request.
Paolo Bonzini Oct. 5, 2020, 8:46 a.m. UTC | #3
On 05/10/20 10:01, Markus Armbruster wrote:
> Philippe Mathieu-Daudé <philmd@redhat.com> writes:

> 

>> Reduce the machine code pulled into qemu-storage-daemon.

> I'm leaving review to Eduardo and Marcel for PATCH 1-4, and to David and

> Juan for PATCH 5.  David already ACKed.

> 

> Can do the pull request.

> 


If it counts, :) for patch 1-4:

Acked-by: Paolo Bonzini <pbonzini@redhat.com>


Generally these patches to remove code from user-mode emulators
fall into the "if it builds it's fine" bucket, since I assume
we want the "misc" subschema to be as small as possible.

Paolo
Markus Armbruster Oct. 5, 2020, 10:55 a.m. UTC | #4
Paolo Bonzini <pbonzini@redhat.com> writes:

> On 05/10/20 10:01, Markus Armbruster wrote:
>> Philippe Mathieu-Daudé <philmd@redhat.com> writes:
>> 
>>> Reduce the machine code pulled into qemu-storage-daemon.
>> I'm leaving review to Eduardo and Marcel for PATCH 1-4, and to David and
>> Juan for PATCH 5.  David already ACKed.
>> 
>> Can do the pull request.
>> 
>
> If it counts, :) for patch 1-4:
>
> Acked-by: Paolo Bonzini <pbonzini@redhat.com>
>
> Generally these patches to remove code from user-mode emulators
> fall into the "if it builds it's fine" bucket, since I assume
> we want the "misc" subschema to be as small as possible.

Moving stuff out of qapi/misc.json is good as long as the new home makes
sense.  So, if it builds *and* the maintainers of the new home think it
makes sense to have it there, it's fine.

I don't think we should aim for eliminating every last bit of unused
generated code from every program.  We should aim for a sensible split
into sub-modules.  Unused generated code in a program can be a sign for
a less than sensible split.