[RFC kvmtool 04/31] Add --nocompat option to disable compat warnings

Alexandru Elisei alexandru.elisei at arm.com
Fri Jan 27 04:19:22 PST 2023


Hi,

On Fri, Jan 27, 2023 at 11:39:05AM +0000, Suzuki K Poulose wrote:
> From: Alexandru Elisei <alexandru.elisei at arm.com>
> 
> Commit e66942073035 ("kvm tools: Guest kernel compatability") added the
> functionality that enables devices to print a warning message if the device
> hasn't been initialized by the time the VM is destroyed. The purpose of
> these messages is to let the user know if the kernel hasn't been built with
> the correct Kconfig options to take advantage of the said devices (all
> using virtio).
> 
> Since then, kvmtool has evolved and now supports loading different payloads
> (like firmware images), and having those warnings even when it is entirely
> intentional for the payload not to touch the devices can be confusing for
> the user and makes the output unnecessarily verbose in those cases.
> 
> Add the --nocompat option to disable the warnings; the warnings are still
> enabled by default.

I had a conversation with Will regarding this some time ago, we settled on
a different approach, by using --loglevel=<level>, similar to what Linux
does.  I'll put that on my TODO list and try to send patches soon-ish.

Thanks,
Alex

> 
> Reported-by: Christoffer Dall <christoffer.dall at arm.com>
> Signed-off-by: Alexandru Elisei <alexandru.elisei at arm.com>
> Signed-off-by: Suzuki K Poulose <suzuki.poulose at arm.com>
> ---
>  builtin-run.c            | 5 ++++-
>  guest_compat.c           | 1 +
>  include/kvm/kvm-config.h | 1 +
>  3 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/builtin-run.c b/builtin-run.c
> index bb7e6e8d..f8edfb3f 100644
> --- a/builtin-run.c
> +++ b/builtin-run.c
> @@ -183,6 +183,8 @@ static int mem_parser(const struct option *opt, const char *arg, int unset)
>  	OPT_BOOLEAN('\0', "nodefaults", &(cfg)->nodefaults, "Disable"   \
>  			" implicit configuration that cannot be"	\
>  			" disabled otherwise"),				\
> +	OPT_BOOLEAN('\0', "nocompat", &(cfg)->nocompat, "Disable"	\
> +			" compat warnings"),				\
>  	OPT_CALLBACK('\0', "9p", NULL, "dir_to_share,tag_name",		\
>  		     "Enable virtio 9p to share files between host and"	\
>  		     " guest", virtio_9p_rootdir_parser, kvm),		\
> @@ -797,7 +799,8 @@ static int kvm_cmd_run_work(struct kvm *kvm)
>  
>  static void kvm_cmd_run_exit(struct kvm *kvm, int guest_ret)
>  {
> -	compat__print_all_messages();
> +	if (!kvm->cfg.nocompat)
> +		compat__print_all_messages();
>  
>  	init_list__exit(kvm);
>  
> diff --git a/guest_compat.c b/guest_compat.c
> index fd4704b2..a413c12c 100644
> --- a/guest_compat.c
> +++ b/guest_compat.c
> @@ -88,6 +88,7 @@ int compat__print_all_messages(void)
>  
>  		printf("\n  # KVM compatibility warning.\n\t%s\n\t%s\n",
>  			msg->title, msg->desc);
> +		printf("\tTo stop seeing this warning, use the --nocompat option.\n");
>  
>  		list_del(&msg->list);
>  		compat__free(msg);
> diff --git a/include/kvm/kvm-config.h b/include/kvm/kvm-config.h
> index 368e6c7d..88df7cc2 100644
> --- a/include/kvm/kvm-config.h
> +++ b/include/kvm/kvm-config.h
> @@ -30,6 +30,7 @@ struct kvm_config {
>  	u64 vsock_cid;
>  	bool virtio_rng;
>  	bool nodefaults;
> +	bool nocompat;
>  	int active_console;
>  	int debug_iodelay;
>  	int nrcpus;
> -- 
> 2.34.1
> 



More information about the linux-arm-kernel mailing list