qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] linux-user: remove nmi.c and fw-path-provider.c


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH] linux-user: remove nmi.c and fw-path-provider.c
Date: Tue, 7 Nov 2017 13:48:47 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0

On 03/11/2017 20:38, Laurent Vivier wrote:
> linux-user binaries don't need firmware and NMI,
> so don't add them in this case, move QDEV
> firmware functions to qdev-fw.c
> 
> Signed-off-by: Laurent Vivier <address@hidden>

Acked-by: Paolo Bonzini <address@hidden>

> ---
>  hw/core/Makefile.objs |  5 +--
>  hw/core/qdev-fw.c     | 96 
> +++++++++++++++++++++++++++++++++++++++++++++++++++
>  hw/core/qdev.c        | 77 -----------------------------------------
>  3 files changed, 99 insertions(+), 79 deletions(-)
>  create mode 100644 hw/core/qdev-fw.c
> 
> diff --git a/hw/core/Makefile.objs b/hw/core/Makefile.objs
> index f8d7a4aaed..1240728c87 100644
> --- a/hw/core/Makefile.objs
> +++ b/hw/core/Makefile.objs
> @@ -1,11 +1,12 @@
>  # core qdev-related obj files, also used by *-user:
>  common-obj-y += qdev.o qdev-properties.o
>  common-obj-y += bus.o reset.o
> -common-obj-y += fw-path-provider.o
> +common-obj-$(CONFIG_SOFTMMU) += qdev-fw.o
> +common-obj-$(CONFIG_SOFTMMU) += fw-path-provider.o
>  # irq.o needed for qdev GPIO handling:
>  common-obj-y += irq.o
>  common-obj-y += hotplug.o
> -common-obj-y += nmi.o
> +common-obj-$(CONFIG_SOFTMMU) += nmi.o
>  
>  common-obj-$(CONFIG_EMPTY_SLOT) += empty_slot.o
>  common-obj-$(CONFIG_XILINX_AXI) += stream.o
> diff --git a/hw/core/qdev-fw.c b/hw/core/qdev-fw.c
> new file mode 100644
> index 0000000000..aa35e9d0ac
> --- /dev/null
> +++ b/hw/core/qdev-fw.c
> @@ -0,0 +1,96 @@
> +/*
> + *  qdev fw helpers
> + *
> + *  This program is free software; you can redistribute it and/or modify
> + *  it under the terms of the GNU General Public License as published by
> + *  the Free Software Foundation; either version 2 of the License,
> + *  or (at your option) any later version.
> + *
> + *  This program is distributed in the hope that it will be useful,
> + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *  GNU General Public License for more details.
> + *
> + *  You should have received a copy of the GNU General Public License
> + *  along with this program; if not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#include "qemu/osdep.h"
> +#include "hw/qdev.h"
> +#include "hw/fw-path-provider.h"
> +
> +const char *qdev_fw_name(DeviceState *dev)
> +{
> +    DeviceClass *dc = DEVICE_GET_CLASS(dev);
> +
> +    if (dc->fw_name) {
> +        return dc->fw_name;
> +    }
> +
> +    return object_get_typename(OBJECT(dev));
> +}
> +
> +static char *bus_get_fw_dev_path(BusState *bus, DeviceState *dev)
> +{
> +    BusClass *bc = BUS_GET_CLASS(bus);
> +
> +    if (bc->get_fw_dev_path) {
> +        return bc->get_fw_dev_path(dev);
> +    }
> +
> +    return NULL;
> +}
> +
> +static char *qdev_get_fw_dev_path_from_handler(BusState *bus, DeviceState 
> *dev)
> +{
> +    Object *obj = OBJECT(dev);
> +    char *d = NULL;
> +
> +    while (!d && obj->parent) {
> +        obj = obj->parent;
> +        d = fw_path_provider_try_get_dev_path(obj, bus, dev);
> +    }
> +    return d;
> +}
> +
> +char *qdev_get_own_fw_dev_path_from_handler(BusState *bus, DeviceState *dev)
> +{
> +    Object *obj = OBJECT(dev);
> +
> +    return fw_path_provider_try_get_dev_path(obj, bus, dev);
> +}
> +
> +static int qdev_get_fw_dev_path_helper(DeviceState *dev, char *p, int size)
> +{
> +    int l = 0;
> +
> +    if (dev && dev->parent_bus) {
> +        char *d;
> +        l = qdev_get_fw_dev_path_helper(dev->parent_bus->parent, p, size);
> +        d = qdev_get_fw_dev_path_from_handler(dev->parent_bus, dev);
> +        if (!d) {
> +            d = bus_get_fw_dev_path(dev->parent_bus, dev);
> +        }
> +        if (d) {
> +            l += snprintf(p + l, size - l, "%s", d);
> +            g_free(d);
> +        } else {
> +            return l;
> +        }
> +    }
> +    l += snprintf(p + l , size - l, "/");
> +
> +    return l;
> +}
> +
> +char *qdev_get_fw_dev_path(DeviceState *dev)
> +{
> +    char path[128];
> +    int l;
> +
> +    l = qdev_get_fw_dev_path_helper(dev, path, 128);
> +
> +    path[l - 1] = '\0';
> +
> +    return g_strdup(path);
> +}
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index 11112951a5..49df62ba8c 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -27,7 +27,6 @@
>  
>  #include "qemu/osdep.h"
>  #include "hw/qdev.h"
> -#include "hw/fw-path-provider.h"
>  #include "sysemu/sysemu.h"
>  #include "qapi/qmp/qerror.h"
>  #include "qapi/visitor.h"
> @@ -48,17 +47,6 @@ const VMStateDescription *qdev_get_vmsd(DeviceState *dev)
>      return dc->vmsd;
>  }
>  
> -const char *qdev_fw_name(DeviceState *dev)
> -{
> -    DeviceClass *dc = DEVICE_GET_CLASS(dev);
> -
> -    if (dc->fw_name) {
> -        return dc->fw_name;
> -    }
> -
> -    return object_get_typename(OBJECT(dev));
> -}
> -
>  static void bus_remove_child(BusState *bus, DeviceState *child)
>  {
>      BusChild *kid;
> @@ -619,71 +607,6 @@ DeviceState *qdev_find_recursive(BusState *bus, const 
> char *id)
>      return NULL;
>  }
>  
> -static char *bus_get_fw_dev_path(BusState *bus, DeviceState *dev)
> -{
> -    BusClass *bc = BUS_GET_CLASS(bus);
> -
> -    if (bc->get_fw_dev_path) {
> -        return bc->get_fw_dev_path(dev);
> -    }
> -
> -    return NULL;
> -}
> -
> -static char *qdev_get_fw_dev_path_from_handler(BusState *bus, DeviceState 
> *dev)
> -{
> -    Object *obj = OBJECT(dev);
> -    char *d = NULL;
> -
> -    while (!d && obj->parent) {
> -        obj = obj->parent;
> -        d = fw_path_provider_try_get_dev_path(obj, bus, dev);
> -    }
> -    return d;
> -}
> -
> -char *qdev_get_own_fw_dev_path_from_handler(BusState *bus, DeviceState *dev)
> -{
> -    Object *obj = OBJECT(dev);
> -
> -    return fw_path_provider_try_get_dev_path(obj, bus, dev);
> -}
> -
> -static int qdev_get_fw_dev_path_helper(DeviceState *dev, char *p, int size)
> -{
> -    int l = 0;
> -
> -    if (dev && dev->parent_bus) {
> -        char *d;
> -        l = qdev_get_fw_dev_path_helper(dev->parent_bus->parent, p, size);
> -        d = qdev_get_fw_dev_path_from_handler(dev->parent_bus, dev);
> -        if (!d) {
> -            d = bus_get_fw_dev_path(dev->parent_bus, dev);
> -        }
> -        if (d) {
> -            l += snprintf(p + l, size - l, "%s", d);
> -            g_free(d);
> -        } else {
> -            return l;
> -        }
> -    }
> -    l += snprintf(p + l , size - l, "/");
> -
> -    return l;
> -}
> -
> -char* qdev_get_fw_dev_path(DeviceState *dev)
> -{
> -    char path[128];
> -    int l;
> -
> -    l = qdev_get_fw_dev_path_helper(dev, path, 128);
> -
> -    path[l-1] = '\0';
> -
> -    return g_strdup(path);
> -}
> -
>  char *qdev_get_dev_path(DeviceState *dev)
>  {
>      BusClass *bc;
> 




reply via email to

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