qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 1/2] powerpc/booke: move fdt loading to rom infr


From: Aurelien Jarno
Subject: Re: [Qemu-devel] [PATCH 1/2] powerpc/booke: move fdt loading to rom infrastructure
Date: Sat, 27 Feb 2010 16:33:02 +0100
User-agent: Mutt/1.5.20 (2009-06-14)

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 <address@hidden>
> ---
>  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
address@hidden                 http://www.aurel32.net




reply via email to

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