qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 3/3] net: Warn about "-net nic" options which we


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH 3/3] net: Warn about "-net nic" options which were ignored
Date: Mon, 23 May 2011 10:34:40 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Peter Maydell <address@hidden> writes:

> Diagnose the case where the user asked for a NIC via "-net nic"
> but the board didn't instantiate that NIC (for example where the
> user asked for two NICs but the board only supports one). Note
> that this diagnostic doesn't apply to NICs created through -device,
> because those are always instantiated.
>
> Signed-off-by: Peter Maydell <address@hidden>
> ---
>  hw/qdev.c |    1 +
>  net.c     |   15 +++++++++++++++
>  net.h     |    3 ++-
>  3 files changed, 18 insertions(+), 1 deletions(-)
>
> diff --git a/hw/qdev.c b/hw/qdev.c
> index 9519f5d..2987901 100644
> --- a/hw/qdev.c
> +++ b/hw/qdev.c
> @@ -468,6 +468,7 @@ void qdev_set_nic_properties(DeviceState *dev, NICInfo 
> *nd)
>          qdev_prop_exists(dev, "vectors")) {
>          qdev_prop_set_uint32(dev, "vectors", nd->nvectors);
>      }
> +    nd->instantiated = 1;
>  }
>  
>  BusState *qdev_get_child_bus(DeviceState *dev, const char *name)
> diff --git a/net.c b/net.c
> index 68c2840..a104976 100644
> --- a/net.c
> +++ b/net.c
> @@ -1304,6 +1304,7 @@ void net_check_clients(void)
>  {
>      VLANState *vlan;
>      VLANClientState *vc;
> +    int i;
>  
>      /* Don't warn about the default network setup that you get if
>       * no command line -net or -netdev options are specified. There
> @@ -1348,6 +1349,20 @@ void net_check_clients(void)
>                      vc->name);
>          }
>      }
> +
> +    /* Check that all NICs requested via -net nic actually got created.
> +     * NICs created via -device don't need to be checked here because
> +     * they are always instantiated.
> +     */
> +    for (i = 0; i < MAX_NICS; i++) {
> +        NICInfo *nd = &nd_table[i];
> +        if (nd->used && !nd->instantiated) {
> +            fprintf(stderr, "Warning: requested NIC (%s, model %s) "
> +                    "was not created (not supported by this machine?)\n",
> +                    nd->name ? nd->name : "anonymous",
> +                    nd->model ? nd->model : "unspecified");
> +        }
> +    }

Nicer message would be possible if NICInfo had a Location for
error_print_loc().  Out of this patch's scope.

>  }
>  
>  static int net_init_client(QemuOpts *opts, void *dummy)
> diff --git a/net.h b/net.h
> index 6ceca50..5b883a9 100644
> --- a/net.h
> +++ b/net.h
> @@ -133,7 +133,8 @@ struct NICInfo {
>      char *devaddr;
>      VLANState *vlan;
>      VLANClientState *netdev;
> -    int used;
> +    int used;         /* is this slot in nd_table[] being used? */
> +    int instantiated; /* does this NICInfo correspond to an instantiated 
> NIC? */
>      int nvectors;
>  };



reply via email to

[Prev in Thread] Current Thread [Next in Thread]