qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Aurelien Jarno <aurelien@aurel32.net>
To: Liu Yu <yu.liu@freescale.com>
Cc: qemu-devel@nongnu.org, hollis@penguinppc.org
Subject: Re: [Qemu-devel] [PATCH 1/2] powerpc/booke: move fdt loading to rom infrastructure
Date: Sat, 27 Feb 2010 16:33:02 +0100	[thread overview]
Message-ID: <20100227153302.GH10291@volta.aurel32.net> (raw)
In-Reply-To: <1265100543-15528-1-git-send-email-yu.liu@freescale.com>

On Tue, Feb 02, 2010 at 04:49:02PM +0800, Liu Yu wrote:
> It's convinent to use rom to checking overlap, to reset etc.
> And uImage and ramdisk loading has already moved to it.
> 
> Also, after we add fdt to rom, free it.

This does not build if CONFIG_FDT is not set:

|   CC    ppc-softmmu/ppc440_bamboo.o
| /home/aurel32/git/qemu/hw/ppc440_bamboo.c: In function 'bamboo_load_device_tree':
| /home/aurel32/git/qemu/hw/ppc440_bamboo.c:86: error: 'ret' undeclared (first use in this function)
| /home/aurel32/git/qemu/hw/ppc440_bamboo.c:86: error: (Each undeclared identifier is reported only once
| /home/aurel32/git/qemu/hw/ppc440_bamboo.c:86: error: for each function it appears in.)
| cc1: warnings being treated as errors
| /home/aurel32/git/qemu/hw/ppc440_bamboo.c:36: error: unused variable 'fdt'
| make[1]: *** [ppc440_bamboo.o] Error 1
| make: *** [subdir-ppc-softmmu] Error 2


> Signed-off-by: Liu Yu <yu.liu@freescale.com>
> ---
>  hw/ppc440_bamboo.c     |   15 ++++++++-------
>  hw/ppce500_mpc8544ds.c |   17 ++++++++++-------
>  2 files changed, 18 insertions(+), 14 deletions(-)
> 
> diff --git a/hw/ppc440_bamboo.c b/hw/ppc440_bamboo.c
> index 1ab9872..9d95417 100644
> --- a/hw/ppc440_bamboo.c
> +++ b/hw/ppc440_bamboo.c
> @@ -27,7 +27,7 @@
>  
>  #define BINARY_DEVICE_TREE_FILE "bamboo.dtb"
>  
> -static void *bamboo_load_device_tree(target_phys_addr_t addr,
> +static int bamboo_load_device_tree(target_phys_addr_t addr,
>                                       uint32_t ramsize,
>                                       target_phys_addr_t initrd_base,
>                                       target_phys_addr_t initrd_size,
> @@ -42,11 +42,13 @@ static void *bamboo_load_device_tree(target_phys_addr_t addr,
>  
>      filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, BINARY_DEVICE_TREE_FILE);
>      if (!filename) {
> +        ret = -1;
>          goto out;
>      }
>      fdt = load_device_tree(filename, &fdt_size);
>      qemu_free(filename);
>      if (fdt == NULL) {
> +        ret = -1;
>          goto out;
>      }
>  
> @@ -75,12 +77,13 @@ static void *bamboo_load_device_tree(target_phys_addr_t addr,
>      if (kvm_enabled())
>          kvmppc_fdt_update(fdt);
>  
> -    cpu_physical_memory_write (addr, (void *)fdt, fdt_size);
> +    ret = rom_add_blob_fixed(BINARY_DEVICE_TREE_FILE, fdt, fdt_size, addr);
> +    qemu_free(fdt);
>  
>  out:
>  #endif
>  
> -    return fdt;
> +    return ret;
>  }
>  
>  static void bamboo_init(ram_addr_t ram_size,
> @@ -101,7 +104,6 @@ static void bamboo_init(ram_addr_t ram_size,
>      target_ulong initrd_base = 0;
>      target_long initrd_size = 0;
>      target_ulong dt_base = 0;
> -    void *fdt;
>      int i;
>  
>      /* Setup CPU. */
> @@ -153,9 +155,8 @@ static void bamboo_init(ram_addr_t ram_size,
>          else
>              dt_base = kernel_size + loadaddr;
>  
> -        fdt = bamboo_load_device_tree(dt_base, ram_size,
> -                                      initrd_base, initrd_size, kernel_cmdline);
> -        if (fdt == NULL) {
> +        if (bamboo_load_device_tree(dt_base, ram_size,
> +                        initrd_base, initrd_size, kernel_cmdline) < 0) {
>              fprintf(stderr, "couldn't load device tree\n");
>              exit(1);
>          }
> diff --git a/hw/ppce500_mpc8544ds.c b/hw/ppce500_mpc8544ds.c
> index ea30816..9a5654b 100644
> --- a/hw/ppce500_mpc8544ds.c
> +++ b/hw/ppce500_mpc8544ds.c
> @@ -72,7 +72,7 @@ out:
>  }
>  #endif
>  
> -static void *mpc8544_load_device_tree(target_phys_addr_t addr,
> +static int mpc8544_load_device_tree(target_phys_addr_t addr,
>                                       uint32_t ramsize,
>                                       target_phys_addr_t initrd_base,
>                                       target_phys_addr_t initrd_size,
> @@ -87,11 +87,13 @@ static void *mpc8544_load_device_tree(target_phys_addr_t addr,
>  
>      filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, BINARY_DEVICE_TREE_FILE);
>      if (!filename) {
> +        ret = -1;
>          goto out;
>      }
>      fdt = load_device_tree(filename, &fdt_size);
>      qemu_free(filename);
>      if (fdt == NULL) {
> +        ret = -1;
>          goto out;
>      }
>  
> @@ -123,6 +125,7 @@ static void *mpc8544_load_device_tree(target_phys_addr_t addr,
>  
>          if ((dp = opendir("/proc/device-tree/cpus/")) == NULL) {
>              printf("Can't open directory /proc/device-tree/cpus/\n");
> +            ret = -1;
>              goto out;
>          }
>  
> @@ -136,6 +139,7 @@ static void *mpc8544_load_device_tree(target_phys_addr_t addr,
>          closedir(dp);
>          if (buf[0] == '\0') {
>              printf("Unknow host!\n");
> +            ret = -1;
>              goto out;
>          }
>  
> @@ -143,12 +147,13 @@ static void *mpc8544_load_device_tree(target_phys_addr_t addr,
>          mpc8544_copy_soc_cell(fdt, buf, "timebase-frequency");
>      }
>  
> -    cpu_physical_memory_write (addr, (void *)fdt, fdt_size);
> +    ret = rom_add_blob_fixed(BINARY_DEVICE_TREE_FILE, fdt, fdt_size, addr);
> +    qemu_free(fdt);
>  
>  out:
>  #endif
>  
> -    return fdt;
> +    return ret;
>  }
>  
>  static void mpc8544ds_init(ram_addr_t ram_size,
> @@ -168,7 +173,6 @@ static void mpc8544ds_init(ram_addr_t ram_size,
>      target_ulong dt_base=DTB_LOAD_BASE;
>      target_ulong initrd_base=INITRD_LOAD_BASE;
>      target_long initrd_size=0;
> -    void *fdt;
>      int i=0;
>      unsigned int pci_irq_nrs[4] = {1, 2, 3, 4};
>      qemu_irq *irqs, *mpic, *pci_irqs;
> @@ -254,9 +258,8 @@ static void mpc8544ds_init(ram_addr_t ram_size,
>  
>      /* If we're loading a kernel directly, we must load the device tree too. */
>      if (kernel_filename) {
> -        fdt = mpc8544_load_device_tree(dt_base, ram_size,
> -                                      initrd_base, initrd_size, kernel_cmdline);
> -        if (fdt == NULL) {
> +        if (mpc8544_load_device_tree(dt_base, ram_size,
> +                    initrd_base, initrd_size, kernel_cmdline) < 0) {
>              fprintf(stderr, "couldn't load device tree\n");
>              exit(1);
>          }
> -- 
> 1.6.4
> 
> 
> 
> 

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

  parent reply	other threads:[~2010-02-27 15:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-02  8:49 [Qemu-devel] [PATCH 1/2] powerpc/booke: move fdt loading to rom infrastructure Liu Yu
2010-02-02  8:49 ` [Qemu-devel] [PATCH 2/2] powerpc/e500: adjust fdt and ramdisk loading addr Liu Yu
2010-02-27 15:33 ` Aurelien Jarno [this message]
2010-02-27 18:49   ` [Qemu-devel] [PATCH 1/2] powerpc/booke: move fdt loading to rom infrastructure Aurelien Jarno

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=20100227153302.GH10291@volta.aurel32.net \
    --to=aurelien@aurel32.net \
    --cc=hollis@penguinppc.org \
    --cc=qemu-devel@nongnu.org \
    --cc=yu.liu@freescale.com \
    /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).