[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 2/5] machine: introduce get_fw_dev_path() callback
From: |
Alexey Kardashevskiy |
Subject: |
Re: [Qemu-ppc] [PATCH 2/5] machine: introduce get_fw_dev_path() callback |
Date: |
Tue, 26 Nov 2013 15:55:06 +1100 |
User-agent: |
Mozilla/5.0 (X11; Linux i686 on x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.1 |
Hi!
btw there is a problem with this patch - it does not compile for
"linux-user" as there is no current-machine global variable defined in vl.c
which is not compiled for linux-user.
How to solve this problem correctly?
On 11/25/2013 06:27 PM, Alexey Kardashevskiy wrote:
> QEMU supports firmware names for all devices in the QEMU tree but
> sometime the exact format differs from what sPAPR platform uses.
>
> This introduces a callback to let a machine fix device tree path names.
>
> Signed-off-by: Alexey Kardashevskiy <address@hidden>
> ---
> hw/core/qdev.c | 15 ++++++++++++++-
> include/hw/boards.h | 1 +
> 2 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index e374a93..7347483 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -26,6 +26,7 @@
> this API directly. */
>
> #include "hw/qdev.h"
> +#include "hw/boards.h"
> #include "sysemu/sysemu.h"
> #include "qapi/error.h"
> #include "qapi/qmp/qerror.h"
> @@ -497,6 +498,15 @@ static char *bus_get_fw_dev_path(BusState *bus,
> DeviceState *dev)
> return NULL;
> }
>
> +static char *machine_get_fw_dev_path(BusState *bus, DeviceState *dev)
> +{
> + if (current_machine->get_fw_dev_path) {
> + return current_machine->get_fw_dev_path(bus, dev);
> + }
> +
> + return NULL;
> +}
> +
> static int qdev_get_fw_dev_path_helper(DeviceState *dev, char *p, int size)
> {
> int l = 0;
> @@ -504,7 +514,10 @@ static int qdev_get_fw_dev_path_helper(DeviceState *dev,
> char *p, int size)
> if (dev && dev->parent_bus) {
> char *d;
> l = qdev_get_fw_dev_path_helper(dev->parent_bus->parent, p, size);
> - d = bus_get_fw_dev_path(dev->parent_bus, dev);
> + d = machine_get_fw_dev_path(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);
> diff --git a/include/hw/boards.h b/include/hw/boards.h
> index 5a7ae9f..50ff24a 100644
> --- a/include/hw/boards.h
> +++ b/include/hw/boards.h
> @@ -43,6 +43,7 @@ typedef struct QEMUMachine {
> GlobalProperty *compat_props;
> struct QEMUMachine *next;
> const char *hw_version;
> + char *(*get_fw_dev_path)(BusState *bus, DeviceState *dev);
> } QEMUMachine;
>
> int qemu_register_machine(QEMUMachine *m);
>
--
Alexey
- [Qemu-ppc] [RFC PATCH 0/5] spapr: support bootindex, Alexey Kardashevskiy, 2013/11/25
- [Qemu-ppc] [PATCH 4/5] spapr-vio: fix firmware names, Alexey Kardashevskiy, 2013/11/25
- [Qemu-ppc] [PATCH 5/5] spapr: define get_fw_dev_path() callback, Alexey Kardashevskiy, 2013/11/25
- [Qemu-ppc] [PATCH 3/5] spapr-llan: add to boot device list, Alexey Kardashevskiy, 2013/11/25
- [Qemu-ppc] [PATCH 1/5] boot: extend get_boot_devices_list() to ignore suffixes, Alexey Kardashevskiy, 2013/11/25
- [Qemu-ppc] [PATCH 2/5] machine: introduce get_fw_dev_path() callback, Alexey Kardashevskiy, 2013/11/25
- Re: [Qemu-ppc] [PATCH 2/5] machine: introduce get_fw_dev_path() callback,
Alexey Kardashevskiy <=