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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).