From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: David Gibson <david@gibson.dropbear.id.au>,
agraf@suse.de, crosthwaite.peter@gmail.com
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [RFC for-2.7 09/11] pseries: Consolidate construction of /chosen device tree node
Date: Thu, 21 Apr 2016 15:32:46 +1000 [thread overview]
Message-ID: <571865FE.8000208@ozlabs.ru> (raw)
In-Reply-To: <1461119601-4936-10-git-send-email-david@gibson.dropbear.id.au>
On 04/20/2016 12:33 PM, David Gibson wrote:
> For historical reasons construction of the /chosen node in the device tree
> (amongst others) is split into several places. This patch brings these
> pieces back together to make things clearer.
>
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
> hw/ppc/spapr.c | 59 ++++++++++++++++++++--------------------------
> hw/ppc/spapr_vio.c | 16 +++----------
> include/hw/ppc/spapr_vio.h | 2 +-
> 3 files changed, 30 insertions(+), 47 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index d04d403..a000056 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -707,9 +707,7 @@ static void *spapr_build_fdt(sPAPRMachineState *spapr,
> MachineState *machine = MACHINE(spapr);
> sPAPRMachineClass *smc = SPAPR_MACHINE_GET_CLASS(machine);
> const char *boot_device = machine->boot_order;
> - int ret, i;
> - size_t cb = 0;
> - char *bootlist;
> + int ret;
> void *fdt;
> sPAPRPHBState *phb;
> char *buf;
> @@ -759,6 +757,8 @@ static void *spapr_build_fdt(sPAPRMachineState *spapr,
> /* /chosen */
> {
> QDTNode *chosen = qdt_add_subnode(root, "chosen");
> + char *bootlist;
> + size_t cb = 0, i;
>
> /* Set Form1_affinity */
> qdt_setprop_bytes(chosen, "ibm,architecture-vec-5",
> @@ -782,6 +782,29 @@ static void *spapr_build_fdt(sPAPRMachineState *spapr,
> qdt_setprop_cells(chosen, "qemu,graphic-width", graphic_width);
> qdt_setprop_cells(chosen, "qemu,graphic-height", graphic_height);
> qdt_setprop_cells(chosen, "qemu,graphic-depth", graphic_depth);
> +
> + bootlist = get_boot_devices_list(&cb, true);
> + if (cb && bootlist) {
> + for (i = 0; i < cb; i++) {
> + if (bootlist[i] == '\n') {
> + bootlist[i] = ' ';
> + }
> +
> + }
> + qdt_setprop_string(chosen, "qemu,boot-list", bootlist);
> + }
> + g_free(bootlist);
> +
> + if (boot_device && strlen(boot_device)) {
> + qdt_setprop_string(chosen, "qemu,boot-device", boot_device);
> + }
> +
> + if (!spapr->has_graphics) {
> + char *stdout = spapr_vio_stdout_path(spapr->vio_bus);
> +
> + qdt_setprop_string(chosen, "linux,stdout-path", stdout);
> + g_free(stdout);
> + }
> }
>
> /* RTAS */
> @@ -933,40 +956,10 @@ static void *spapr_build_fdt(sPAPRMachineState *spapr,
> /* cpus */
> spapr_populate_cpus_dt_node(fdt, spapr);
>
> - bootlist = get_boot_devices_list(&cb, true);
> - if (cb && bootlist) {
> - int offset = fdt_path_offset(fdt, "/chosen");
> - if (offset < 0) {
> - exit(1);
> - }
> - for (i = 0; i < cb; i++) {
> - if (bootlist[i] == '\n') {
> - bootlist[i] = ' ';
> - }
> -
> - }
> - ret = fdt_setprop_string(fdt, offset, "qemu,boot-list", bootlist);
> - }
> -
> - if (boot_device && strlen(boot_device)) {
> - int offset = fdt_path_offset(fdt, "/chosen");
> -
> - if (offset < 0) {
> - exit(1);
> - }
> - fdt_setprop_string(fdt, offset, "qemu,boot-device", boot_device);
> - }
> -
> - if (!spapr->has_graphics) {
> - spapr_populate_chosen_stdout(fdt, spapr->vio_bus);
> - }
> -
> if (smc->dr_lmb_enabled) {
> _FDT(spapr_drc_populate_dt(fdt, 0, NULL, SPAPR_DR_CONNECTOR_TYPE_LMB));
> }
>
> - g_free(bootlist);
> -
> /* Build memory reserve map */
> if (spapr->kernel_size) {
> _FDT((fdt_add_mem_rsv(fdt, KERNEL_LOAD_ADDR, spapr->kernel_size)));
> diff --git a/hw/ppc/spapr_vio.c b/hw/ppc/spapr_vio.c
> index 8aa021f..18b07e0 100644
> --- a/hw/ppc/spapr_vio.c
> +++ b/hw/ppc/spapr_vio.c
> @@ -679,28 +679,18 @@ out:
> return ret;
> }
>
> -int spapr_populate_chosen_stdout(void *fdt, VIOsPAPRBus *bus)
> +gchar *spapr_vio_stdout_path(VIOsPAPRBus *bus)
> {
> VIOsPAPRDevice *dev;
> char *name, *path;
> - int ret, offset;
>
> dev = spapr_vty_get_default(bus);
> if (!dev)
> - return 0;
> -
> - offset = fdt_path_offset(fdt, "/chosen");
> - if (offset < 0) {
> - return offset;
> - }
> + return NULL;
>
> name = spapr_vio_get_dev_name(DEVICE(dev));
> path = g_strdup_printf("/vdevice/%s", name);
> -
> - ret = fdt_setprop_string(fdt, offset, "linux,stdout-path", path);
> -
> g_free(name);
> - g_free(path);
>
> - return ret;
> + return path;
> }
> diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h
> index c9733e7..ea00c3b 100644
> --- a/include/hw/ppc/spapr_vio.h
> +++ b/include/hw/ppc/spapr_vio.h
> @@ -82,7 +82,7 @@ struct VIOsPAPRBus {
> extern VIOsPAPRBus *spapr_vio_bus_init(void);
> extern VIOsPAPRDevice *spapr_vio_find_by_reg(VIOsPAPRBus *bus, uint32_t reg);
> extern int spapr_populate_vdevice(VIOsPAPRBus *bus, void *fdt);
> -extern int spapr_populate_chosen_stdout(void *fdt, VIOsPAPRBus *bus);
> +gchar *spapr_vio_stdout_path(VIOsPAPRBus *bus);
>
> extern int spapr_vio_signal(VIOsPAPRDevice *dev, target_ulong mode);
>
>
--
Alexey
next prev parent reply other threads:[~2016-04-21 5:32 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-20 2:33 [Qemu-devel] [RFC for-2.7 00/11] A new infrastructure for guest device trees David Gibson
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 01/11] qdt: IEEE1275-style device tree utility code David Gibson
2016-04-21 6:01 ` Alexey Kardashevskiy
2016-04-22 4:15 ` David Gibson
2016-04-26 11:00 ` Thomas Huth
2016-04-27 6:02 ` David Gibson
2016-04-27 6:43 ` Markus Armbruster
2016-04-27 7:06 ` Thomas Huth
2016-04-27 7:28 ` Markus Armbruster
2016-04-27 7:56 ` Thomas Huth
2016-04-27 8:36 ` Markus Armbruster
2016-04-27 23:49 ` David Gibson
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 02/11] pseries: Split device tree construction from device tree load David Gibson
2016-04-20 18:15 ` Thomas Huth
2016-04-21 5:31 ` Alexey Kardashevskiy
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 03/11] pseries: Remove rtas_addr and fdt_addr fields from machinestate David Gibson
2016-04-20 18:19 ` Thomas Huth
2016-04-21 5:32 ` Alexey Kardashevskiy
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 04/11] pseries: Make spapr_create_fdt_skel() get information from machine state David Gibson
2016-04-21 5:32 ` Alexey Kardashevskiy
2016-04-26 17:41 ` Thomas Huth
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 05/11] pseries: Build device tree only at reset time David Gibson
2016-04-21 5:32 ` Alexey Kardashevskiy
2016-04-26 18:13 ` Thomas Huth
2016-04-27 6:07 ` David Gibson
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 06/11] pseries: Consolidate RTAS loading David Gibson
2016-04-21 5:32 ` Alexey Kardashevskiy
2016-04-27 9:12 ` Thomas Huth
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 07/11] pseries: Move adding of fdt reserve map entries David Gibson
2016-04-21 5:14 ` Alexey Kardashevskiy
2016-04-21 5:52 ` David Gibson
2016-04-21 6:03 ` Alexey Kardashevskiy
2016-04-22 4:22 ` David Gibson
2016-04-27 9:19 ` Thomas Huth
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 08/11] pseries: Start using qdt library for building device tree David Gibson
2016-04-21 4:04 ` Alexey Kardashevskiy
2016-04-27 6:13 ` David Gibson
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 09/11] pseries: Consolidate construction of /chosen device tree node David Gibson
2016-04-21 5:32 ` Alexey Kardashevskiy [this message]
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 10/11] pseries: Consolidate construction of /rtas " David Gibson
2016-04-21 5:32 ` Alexey Kardashevskiy
2016-04-20 2:33 ` [Qemu-devel] [RFC for-2.7 11/11] pseries: Remove unused callbacks from sPAPR VIO bus state David Gibson
2016-04-21 5:31 ` Alexey Kardashevskiy
2016-04-27 6:22 ` David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=571865FE.8000208@ozlabs.ru \
--to=aik@ozlabs.ru \
--cc=agraf@suse.de \
--cc=crosthwaite.peter@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.