[Top][All Lists]
[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